/* 柏悦物流国内 PDA · 海外版视觉对齐层 只覆盖视觉 tokens、布局和交互状态,不参与业务逻辑。 */ :root { --pda-blue: #0a66d8; --pda-blue-deep: #084faa; --pda-blue-soft: #eaf3ff; --pda-ink: #344054; --pda-muted: #667085; --pda-bg: #f2f4f7; --pda-surface: #fff; --pda-line: #e4e7ec; --pda-success: #087a62; --pda-success-soft: #e8f7f2; --pda-warning: #a75b0b; --pda-warning-soft: #fff3e3; --pda-danger: #b42318; --pda-danger-soft: #fff0ee; --pda-shadow-soft: 0 2px 8px rgba(16,24,40,.06); --pda-shadow: 0 8px 24px rgba(16,24,40,.08); --pda-focus: rgba(10,102,216,.24); } html { background: #e7ebf0; } body { background: var(--pda-bg); color: var(--pda-ink); font-size: 15px; line-height: 1.45; } button, input, select { font-family: inherit; } button { transition: background-color .16s ease, border-color .16s ease, box-shadow .16s ease, transform .16s ease, opacity .16s ease; } button:active:not(:disabled) { transform: scale(.985); } button:focus-visible, input:focus-visible, select:focus-visible { outline: 3px solid var(--pda-focus); outline-offset: 2px; } /* 登录 / 工作台 */ .login-page { justify-content: center; min-height: 100dvh; padding: 24px 18px; background: linear-gradient(160deg, #eaf3ff 0%, #f2f4f7 54%, #f2f4f7 100%); } .login-logo { width: min(430px, 100%); margin: 0 auto; padding: 28px 24px 24px; border-radius: 18px 18px 0 0; background: linear-gradient(140deg, var(--pda-blue-deep), var(--pda-blue)); } .login-logo-icon { width: 54px; height: 54px; border-radius: 14px; background: rgba(255,255,255,.15); border: 1px solid rgba(255,255,255,.18); } .login-logo-title { font-size: 20px; letter-spacing: 0; } .login-status { margin-top: 20px; } .login-card { width: min(430px, 100%); margin: 0 auto; padding: 24px; border: 1px solid var(--pda-line); border-top: 0; border-radius: 0 0 18px 18px; background: var(--pda-surface); box-shadow: var(--pda-shadow); } .login-card-title { font-size: 20px; color: #1d2939; } .login-card-desc { color: var(--pda-muted); line-height: 1.55; } .login-field-label { color: #475467; } .login-field-input { height: 50px; border-color: #d0d5dd; border-radius: 11px; background: #fff; font-size: 16px; } .login-field-input:focus { border-color: var(--pda-blue); box-shadow: 0 0 0 3px var(--pda-blue-soft); } .login-btn { height: 50px; border-radius: 11px; background: var(--pda-blue); box-shadow: 0 6px 14px rgba(10,102,216,.2); font-weight: 750; } .login-btn:hover { background: var(--pda-blue-deep); } .login-demo-tip { border-radius: 9px; background: #f8fafc; color: var(--pda-muted); } .login-accounts { border-color: var(--pda-line); } .login-quick-btn { min-height: 56px; border-color: var(--pda-line); border-radius: 10px; background: #f8fafc; } .login-quick-btn:hover { border-color: #b8d2f7; background: var(--pda-blue-soft); } .app-shell { background: var(--pda-bg); } .app-topbar { padding: 12px 16px 18px; border-radius: 0; background: var(--pda-surface); color: var(--pda-ink); box-shadow: var(--pda-shadow-soft); } .app-topbar-row { min-height: 44px; } .app-brand-mark { width: 40px; height: 40px; border-radius: 11px; color: #fff; background: var(--pda-blue); box-shadow: 0 4px 10px rgba(10,102,216,.2); } .app-brand-title { color: #1d2939; font-size: 16px; } .app-brand-sub { color: var(--pda-muted); opacity: 1; } .profile-entry { width: 44px; height: 44px; border: 1px solid #d8e8ff; border-radius: 50%; color: var(--pda-blue); background: var(--pda-blue-soft); } .profile-entry:hover { background: #dcecff; } .welcome-card { align-items: flex-start; margin-top: 18px; padding: 18px; border-radius: 16px; color: #fff; background: linear-gradient(140deg, var(--pda-blue-deep), var(--pda-blue)); box-shadow: 0 8px 20px rgba(10,102,216,.18); } .welcome-kicker, .welcome-meta { color: rgba(255,255,255,.82); opacity: 1; } .welcome-name { font-size: 23px; } .shift-badge { min-height: 32px; padding: 7px 10px; border: 1px solid rgba(255,255,255,.22); border-radius: 9px; background: rgba(255,255,255,.12); } .today-panel { gap: 8px; margin: 14px 0 20px; } .today-stat { min-height: 88px; padding: 13px 10px; border-color: var(--pda-line); border-radius: 13px; background: var(--pda-surface); box-shadow: none; } .today-stat-num { color: #1d2939; font-size: 25px; } .today-stat-label { color: var(--pda-muted); font-size: 12px; } .section-heading { margin: 22px 2px 10px; } .section-heading-title { color: #1d2939; font-size: 16px; } .section-heading-title::before { width: 4px; height: 16px; border-radius: 4px; background: var(--pda-blue); } .module-card { padding: 0; border: 0; background: transparent; box-shadow: none; } .module-grid { gap: 10px; } .module-item, .module-item.active-menu { min-height: 116px; margin: 0; padding: 14px; border: 1px solid var(--pda-line); border-radius: 14px; color: #344054; background: var(--pda-surface); box-shadow: var(--pda-shadow-soft); } .module-item:hover { border-color: #b8d2f7; background: #fbfdff; } .module-icon { width: 42px; height: 42px; margin: 0 auto 10px; border-radius: 12px; color: var(--pda-blue); background: var(--pda-blue-soft); box-shadow: none; font-size: 21px; } .module-name { color: #475467; font-size: 13px; font-weight: 700; } .module-badge { top: 10px; right: 10px; min-width: 22px; height: 22px; border-radius: 99px; background: var(--pda-warning); font-size: 10px; line-height: 22px; } /* 个人中心 */ .profile-cover { height: 150px; background: linear-gradient(140deg, var(--pda-blue-deep), var(--pda-blue)); } .profile-cover .page-back { color: #fff; background: rgba(255,255,255,.14); } .profile-card { margin: -58px 14px 14px; border-radius: 16px; box-shadow: var(--pda-shadow); } .profile-avatar { border-radius: 20px; background: var(--pda-blue-soft); color: var(--pda-blue); } .profile-name { color: #1d2939; } .profile-role, .profile-list-value { color: var(--pda-muted); } .profile-list { margin: 12px 14px; border-color: var(--pda-line); border-radius: 14px; box-shadow: none; } .profile-list-item { min-height: 60px; padding: 13px 0; color: #475467; border-color: #edf1f5; } .profile-list-icon { border-radius: 10px; background: var(--pda-blue-soft); } .profile-logout { width: calc(100% - 28px); margin: 6px 14px 24px; min-height: 48px; border-radius: 11px; color: var(--pda-danger); background: var(--pda-surface); } /* 入库 / 合托公共工作面 */ .page-topbar { height: 62px; padding: 8px 14px; border-color: var(--pda-line); background: rgba(255,255,255,.96); box-shadow: var(--pda-shadow-soft); backdrop-filter: saturate(160%) blur(16px); } .page-back { width: 44px; height: 44px; border-radius: 10px; color: var(--pda-blue); background: transparent; font-size: 30px; line-height: 1; } .page-back:hover { background: var(--pda-blue-soft); } .page-title { color: #1d2939; font-size: 18px; font-weight: 750; } .page-user { width: 44px; height: 44px; border: 1px solid #d8e8ff; border-radius: 50%; color: var(--pda-blue); background: var(--pda-blue-soft); } .inbound-content { padding: 18px 14px calc(28px + env(safe-area-inset-bottom)); } .inbound-card { margin-bottom: 10px; padding: 16px; border-color: var(--pda-line); border-radius: 14px; background: var(--pda-surface); box-shadow: none; } .inbound-card-title { color: #1d2939; font-size: 16px; } .inbound-card-sub, .inbound-grid span, .inbound-sku-row span { color: var(--pda-muted); } .inbound-status { padding: 6px 9px; border-radius: 99px; color: var(--pda-warning); background: var(--pda-warning-soft); } .inbound-status.good { color: var(--pda-success); background: var(--pda-success-soft); } .inbound-grid div { border-color: #edf1f5; } .inbound-grid strong { color: #344054; } .inbound-btn { min-height: 46px; border-radius: 10px; background: var(--pda-blue); } .inbound-btn:hover { background: var(--pda-blue-deep); } .inbound-btn.secondary { color: var(--pda-blue); background: var(--pda-blue-soft); } .inbound-scan { margin-top: 14px; } .inbound-scan input, .consolidation-field select, .consolidation-field input { height: 48px; border-color: #d0d5dd; border-radius: 10px; background: #fff; font-size: 16px; } .inbound-scan input:focus, .consolidation-field select:focus, .consolidation-field input:focus { border-color: var(--pda-blue); box-shadow: 0 0 0 3px var(--pda-blue-soft); outline: 0; } .inbound-scan button { width: 48px; border-radius: 10px; background: var(--pda-blue); } .inbound-notice { border-radius: 10px; color: var(--pda-warning); background: var(--pda-warning-soft); } .inbound-notice.error { color: var(--pda-danger); background: var(--pda-danger-soft); } .consolidation-footer { border-color: var(--pda-line); background: rgba(255,255,255,.96); box-shadow: 0 -4px 14px rgba(16,24,40,.06); } /* 集装箱拣货工作面 */ .header { padding: 12px 14px 14px; border-radius: 0 0 16px 16px; background: linear-gradient(140deg, var(--pda-blue-deep), var(--pda-blue)); box-shadow: 0 8px 20px rgba(10,102,216,.18); } .header-title { font-size: 18px; } .header-badge { padding: 6px 9px; border-radius: 99px; } .box-select-wrap, .scan-section, .info-cards, .progress-section, .pick-list { margin-left: 14px; margin-right: 14px; } .box-select-btn { min-height: 48px; border-color: #c7dbf7; border-radius: 11px; background: var(--pda-surface); color: #174d91; box-shadow: var(--pda-shadow-soft); } .scan-section, .info-card, .progress-section, .pick-item { border-color: var(--pda-line); border-radius: 14px; box-shadow: none; } .scan-section { padding: 14px; background: var(--pda-surface); } .scan-input { height: 48px; border-color: #d0d5dd; border-radius: 10px; background: #fff; } .scan-btn { width: 48px; height: 48px; border-radius: 10px; background: var(--pda-blue); } .progress-bar-fill { background: var(--pda-success); } .pick-item { padding: 15px; } .pick-item.active { border-left-color: var(--pda-blue); box-shadow: 0 3px 12px rgba(10,102,216,.1); } .pick-btn { min-height: 44px; border-radius: 9px; } .pick-btn-confirm { background: var(--pda-success); } .pick-btn-partial { color: var(--pda-blue); background: var(--pda-blue-soft); border-color: #9ebcec; } .submit-section { box-shadow: 0 -4px 14px rgba(16,24,40,.07); } .submit-btn { min-height: 50px; border-radius: 10px; background: var(--pda-blue); } @media (max-width: 360px) { .login-page { padding-inline: 14px; } .login-logo { padding-inline: 18px; } .login-card { padding-inline: 18px; } .module-item, .module-item.active-menu { min-height: 104px; padding-inline: 8px; } .module-name { font-size: 12px; } .inbound-content { padding-inline: 12px; } }