.filing-footer{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px 22px;padding:16px;color:var(--muted);font-size:12px;line-height:1.6;text-align:center}
.filing-footer a{display:inline-flex;align-items:center;justify-content:center;gap:6px;color:inherit;text-decoration:none;cursor:pointer;max-width:100%;overflow-wrap:anywhere}
.filing-footer a:hover,.filing-footer a:focus-visible{color:var(--teal);text-decoration:underline}
.filing-footer a:active{color:var(--ink)}
.filing-footer img{flex:none;object-fit:contain}
main>.filing-footer{margin-top:auto}
@media print{.filing-footer{display:none}}
:root {
  --ink: #14233c;
  --ink-2: #223756;
  --paper: #f5f7f5;
  --surface: #ffffff;
  --mobile-paper: #edf2f0;
  --line: #dce3e2;
  --muted: #6d7b80;
  --teal: #1c8b82;
  --teal-soft: #dcefeb;
  --amber: #d9872d;
  --amber-soft: #fff0d9;
  --red: #bf4c47;
  --red-soft: #fae7e5;
  --shadow: 0 16px 45px rgba(20,35,60,.11);
  --radius: 14px;
  font-family: "Microsoft YaHei UI", "PingFang SC", sans-serif;
  color: var(--ink);
  background: var(--paper);
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: var(--paper); }
button,input,select,textarea { font: inherit; }
button { cursor: pointer; }
.hidden { display: none !important; }
.eyebrow { margin: 0 0 8px; font: 700 11px/1.4 Consolas, monospace; letter-spacing: .16em; color: var(--teal); text-transform: uppercase; }
.muted { color: var(--muted); }
.context-menu{position:fixed;inset:auto;margin:0;padding:6px;min-width:156px;max-width:calc(100vw - 16px);max-height:calc(100vh - 16px);overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}
.context-menu-title{max-width:240px;padding:6px 10px;color:var(--muted);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.context-menu button{display:block;width:100%;padding:10px;text-align:left;border:0;border-radius:6px;background:transparent;color:var(--ink);font-weight:700}
.context-menu button:hover,.context-menu button:focus-visible{background:var(--teal-soft);color:var(--teal);outline:2px solid var(--teal);outline-offset:-2px}
.context-menu button.danger{color:var(--red)}
.context-menu button.danger:hover,.context-menu button.danger:focus-visible{background:var(--red-soft);color:var(--red);outline-color:var(--red)}
.partner-actions{display:flex;flex-wrap:wrap;gap:6px;min-width:180px}
.partner-actions .button{white-space:nowrap}
.partner-rename-review{border:1px solid var(--line);border-radius:10px;padding:14px;min-width:0}
.partner-review-record{padding:14px 0;border-top:1px solid var(--line);overflow-wrap:anywhere}
.partner-review-record select{width:100%;min-width:0;max-width:100%}
.login-shell { min-height: 100vh; display: grid; grid-template-columns: 1.15fr .85fr; background: var(--ink); }
.login-story { color: white; padding: clamp(36px,7vw,100px); display: flex; flex-direction: column; justify-content: center; position: relative; overflow: hidden; }
.login-story::after { content:""; position:absolute; width:520px; height:520px; border:1px solid rgba(255,255,255,.08); border-radius:50%; left:-140px; bottom:-260px; box-shadow:0 0 0 80px rgba(255,255,255,.025),0 0 0 160px rgba(255,255,255,.018); }
.brand-mark { width:62px; height:62px; border:1px solid rgba(255,255,255,.35); border-radius:18px 18px 18px 4px; display:grid; place-items:center; margin-bottom:56px; position:relative; }
.brand-mark span { font: 700 26px/1 serif; }
.brand-mark i { position:absolute; width:17px; height:8px; border:2px solid #66c2b4; border-bottom:0; border-radius:16px 16px 0 0; transform:rotate(36deg); right:-8px; top:5px; }
.brand-mark.small { width:42px;height:42px;margin:0;background:var(--ink);color:white;border-radius:12px 12px 12px 3px; }
.brand-mark.small span { font-size:20px; }
.login-story h1 { margin:0; font-family:"STSong","SimSun",serif; font-size:clamp(42px,5vw,72px); font-weight:600; line-height:1.18; letter-spacing:-.04em; }
.login-story .eyebrow { color:#66c2b4; }
.login-copy { max-width:490px; margin:28px 0 54px; color:#bdc9d5; font-size:17px; line-height:1.8; }
.trace-preview { display:flex;align-items:center;gap:12px;font:600 12px Consolas,monospace;color:#dbe8e7;position:relative;z-index:1; }
.trace-preview span { padding:8px 12px;border:1px solid rgba(102,194,180,.45);border-radius:20px;white-space:nowrap; }
.trace-preview b { width:34px;height:1px;background:#66c2b4;position:relative; }
.trace-preview b::after { content:"";position:absolute;right:-1px;top:-3px;border-left:5px solid #66c2b4;border-top:3px solid transparent;border-bottom:3px solid transparent; }
.login-card { background:var(--surface);margin:auto;width:min(420px,calc(100% - 48px));padding:46px;border-radius:22px;display:grid;gap:23px;box-shadow:var(--shadow); }
.login-card h2 { margin:0;font-size:30px;letter-spacing:-.04em; }
.login-card p { margin-top:6px; }
.password-field{position:relative}.password-field input{padding-right:62px}.password-field button{position:absolute;right:5px;top:50%;transform:translateY(-50%);height:34px;padding:0 10px;border:0;border-radius:7px;background:transparent;color:var(--teal);font-weight:700;cursor:pointer}.password-field button:hover{background:var(--teal-soft)}.password-field button:active{background:#cce9e4}.password-field button:focus-visible{outline:2px solid var(--teal);outline-offset:1px}
label { display:grid;gap:8px;font-size:13px;font-weight:700;color:var(--ink-2); }
input,select,textarea { width:100%;border:1px solid var(--line);background:white;color:var(--ink);border-radius:10px;padding:11px 12px;outline:none;transition:.18s; }
input:focus,select:focus,textarea:focus { border-color:var(--teal);box-shadow:0 0 0 3px rgba(28,139,130,.13); }
textarea { min-height:86px;resize:vertical; }
.button { border:0;border-radius:10px;padding:10px 15px;font-weight:700;background:#e9edee;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;gap:8px; }
.button:hover { filter:brightness(.97);transform:translateY(-1px); }
.button.primary { background:var(--teal);color:white; }
.button.ink { background:var(--ink);color:white; }
.button.danger { background:var(--red-soft);color:var(--red); }
.button.ghost { background:transparent;border:1px solid var(--line); }
.button.large { padding:14px 18px;justify-content:space-between; }
.button.small { font-size:12px;padding:7px 10px; }
.button:active { transform:translateY(0); }
.button:disabled { opacity:.55;cursor:not-allowed;transform:none; }
.login-divider { display:flex;align-items:center;gap:12px;color:var(--muted);font-size:12px; }
.login-divider::before,.login-divider::after { content:"";height:1px;background:var(--line);flex:1; }
.qr-login-panel { border:1px solid var(--line);border-radius:12px;padding:12px;background:#fafbfa; }
.qr-panel-head { display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;font-size:13px; }
.qr-panel-head button { width:30px;height:30px;border:0;border-radius:50%;background:#edf2f1;color:var(--ink);font-size:19px;line-height:1;cursor:pointer; }
.qr-panel-head button:hover { background:#e3eae8;color:var(--teal); }
.qr-tabs { display:grid;grid-template-columns:1fr 1fr;background:#edf2f1;border-radius:9px;padding:3px;margin-bottom:12px; }
.qr-tabs button { border:0;border-radius:7px;padding:8px;background:transparent;color:var(--muted);font-weight:700; }
.qr-tabs button:hover { color:var(--ink);background:rgba(255,255,255,.6); }
.qr-tabs button.active { background:white;color:var(--teal);box-shadow:0 1px 4px rgba(20,35,60,.1); }
.qr-code { display:grid;place-items:center;text-align:center;gap:5px; }
.qr-code svg { width:min(210px,100%);height:auto;background:white;border-radius:8px; }
.qr-code strong { font-size:13px; }
.qr-code small { color:var(--muted);font-size:11px;max-width:100%;overflow-wrap:anywhere; }
.qr-confirm { display:grid;place-items:center;text-align:center;gap:9px;padding:10px 0; }
.qr-confirm p { margin:0; }
.qr-device { width:54px;height:54px;display:grid;place-items:center;border-radius:14px;background:var(--teal-soft);color:var(--teal);font-size:25px; }
.app-shell { min-height:100vh;display:grid;grid-template-columns:226px 1fr; }
.sidebar { background:var(--surface);border-right:1px solid var(--line);padding:24px 16px;display:flex;flex-direction:column;position:fixed;inset:0 auto 0 0;width:226px;z-index:10; }
.sidebar-brand { display:flex;align-items:center;gap:12px;padding:0 8px 25px;border-bottom:1px solid var(--line); }
.sidebar-brand strong { display:block;font-size:18px;letter-spacing:.08em; }.sidebar-brand small{color:var(--muted);font-size:11px;}
.sidebar nav { display:grid;gap:6px;padding:22px 0; }
.sidebar nav button { border:0;background:transparent;border-radius:10px;padding:11px 13px;text-align:left;color:#5e6d78;font-weight:700;display:flex;align-items:center;gap:12px;position:relative; }
.sidebar nav button span { width:22px;text-align:center;font-size:18px; }.sidebar nav button:hover{background:var(--paper);color:var(--ink)}
.sidebar nav button.active { background:var(--ink);color:white;box-shadow:0 9px 20px rgba(20,35,60,.16); }
.nav-badge { margin-left:auto;background:var(--amber);color:white;font-style:normal;font-size:10px;min-width:20px;padding:2px 5px;text-align:center;border-radius:10px; }
.sidebar-foot { margin-top:auto;padding:16px 0 0;border-top:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:5px;align-items:center; }
.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot strong{font-size:13px}.sidebar-foot small{font-size:11px;color:var(--muted);margin-top:2px}.sidebar-foot button{border:0;background:none;color:var(--muted);}
.sidebar-account-entry { min-width:0;display:grid;grid-template-columns:38px minmax(0,1fr) 14px;gap:9px;align-items:center;text-align:left;padding:6px;border-radius:10px;color:var(--ink)!important; }
.sidebar-account-entry:not(:disabled):hover { background:var(--paper); }
.sidebar-account-entry:not(:disabled):active { background:#e8eeec; }
.sidebar-account-entry:disabled { cursor:default;opacity:1; }
.sidebar-account-entry i { font-style:normal;font-size:20px;color:var(--teal); }
.sidebar-logout { height:38px;padding:0 6px;border-radius:8px!important;font-size:11px;font-weight:700; }
.sidebar-logout:hover { background:var(--paper)!important;color:var(--ink)!important; }
.user-avatar { width:38px;height:38px;border-radius:12px;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;font-weight:800; }
main { grid-column:2;min-width:0; }
.topbar { height:112px;background:rgba(245,247,245,.94);backdrop-filter:blur(8px);position:sticky;top:0;z-index:5;padding:24px clamp(24px,4vw,58px);display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(220,227,226,.75); }
.topbar h1 { margin:0;font:600 27px/1.2 "STSong","SimSun",serif;letter-spacing:-.02em; }
.top-actions { display:flex;align-items:center;gap:16px; }.top-actions>span{font-size:12px;color:var(--muted)}
.content { padding:28px clamp(24px,4vw,58px) 70px;max-width:1500px;margin:auto; }
.metric-grid { display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:26px; }
.metric-card { background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;position:relative;overflow:hidden;min-height:126px; }
.metric-card::before { content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal); }
.metric-card.warn::before{background:var(--amber)}.metric-card.danger::before{background:var(--red)}
.metric-card span { color:var(--muted);font-size:12px; }.metric-card strong{display:block;font:700 29px/1.2 Consolas,monospace;margin:18px 0 4px;letter-spacing:-.04em}.metric-card small{color:var(--muted);font-size:11px}
.dashboard-period{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:16px}.dashboard-period>div>span{display:block;margin-bottom:6px;color:var(--muted);font-size:11px;font-weight:700}.dashboard-period>p{margin:0 0 10px;color:var(--muted);font-size:12px}.month-switcher{display:grid;grid-template-columns:42px minmax(160px,210px) 42px;border:1px solid var(--line);border-radius:11px;overflow:hidden;background:var(--surface)}.month-switcher button{border:0;background:var(--surface);color:var(--ink);font-size:22px}.month-switcher button:hover{background:var(--paper)}.month-switcher input{height:42px;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);border-radius:0;background:var(--surface);padding:0 12px;font-weight:700;color:var(--ink)}.sales-visual-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(320px,.75fr);gap:20px;margin-bottom:20px;align-items:start}.sales-side-stack{display:grid;gap:20px}.sales-trend-panel .panel-head>strong{font:700 18px Consolas;color:var(--teal)}.sales-trend-chart{padding:8px 16px 12px}.sales-trend-chart svg{display:block;width:100%;height:auto;overflow:visible}.chart-grid-line{stroke:var(--line);stroke-width:1}.chart-axis-label{fill:var(--muted);font:11px "Microsoft YaHei UI",sans-serif}.chart-area{fill:var(--teal-soft);opacity:.75}.chart-line{fill:none;stroke:var(--teal);stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.chart-point{fill:var(--surface);stroke:var(--teal);stroke-width:3}.settlement-chart{display:grid;grid-template-columns:130px minmax(0,1fr);align-items:center;gap:16px;padding:18px}.settlement-ring{width:124px;aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--teal) 0 var(--settled-angle),var(--amber-soft) var(--settled-angle) 360deg);position:relative}.settlement-ring::after{content:"";position:absolute;inset:15px;border-radius:50%;background:var(--surface)}.settlement-ring>div{position:relative;z-index:1;text-align:center}.settlement-ring strong,.settlement-ring span{display:block}.settlement-ring strong{font:700 25px Consolas}.settlement-ring span{margin-top:3px;color:var(--muted);font-size:11px}.settlement-legend{display:grid;gap:13px}.settlement-legend>div{display:grid;grid-template-columns:8px 1fr;gap:3px 8px;align-items:center}.settlement-legend i{width:8px;height:8px;border-radius:50%;background:var(--teal)}.settlement-legend i.outstanding{background:var(--amber)}.settlement-legend span{font-size:12px;color:var(--muted)}.settlement-legend strong{grid-column:2;font:700 14px Consolas}.customer-ranking{display:grid;gap:14px;padding:17px 18px 20px}.customer-ranking>div{display:grid;grid-template-columns:20px minmax(82px,.8fr) minmax(70px,1fr) auto;gap:8px;align-items:center}.customer-ranking b{width:20px;height:20px;display:grid;place-items:center;border-radius:6px;background:var(--paper);font:700 11px Consolas;color:var(--muted)}.customer-ranking span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.customer-ranking>div>div{height:7px;border-radius:10px;background:var(--paper);overflow:hidden}.customer-ranking i{display:block;height:100%;min-width:2px;border-radius:inherit;background:var(--teal)}.customer-ranking strong{font:700 12px Consolas;text-align:right}.dashboard-operations{margin-top:0}.dashboard-loading{min-height:320px}
.split-grid { display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,.75fr);gap:20px;align-items:start; }
.recent-stack { display:grid;gap:20px;min-width:0; }
.panel { background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden; }
.panel-head { min-height:62px;padding:15px 18px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:16px; }
.panel-head h2 { margin:0;font-size:15px; }.panel-head p{margin:4px 0 0;font-size:11px;color:var(--muted)}
.table-wrap { overflow:auto; }
table { width:100%;border-collapse:collapse;font-size:13px; }
th { text-align:left;font-size:11px;letter-spacing:.05em;color:var(--muted);background:#fafbfa;padding:11px 14px;white-space:nowrap; }
td { padding:13px 14px;border-top:1px solid #edf0ef;white-space:nowrap;vertical-align:middle; }
tr:hover td { background:#fbfcfc; }.num{font-family:Consolas,monospace;text-align:right}.strong{font-weight:800}
.compact-table th:nth-child(6),.compact-table td:nth-child(6),.compact-table th:nth-child(7),.compact-table td:nth-child(7){display:none}
.status { display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:20px;font-size:11px;font-weight:700;background:#eef1f1;color:#607076; }
.status::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status.approved,.status.ok{background:var(--teal-soft);color:var(--teal)}.status.submitted,.status.warn{background:var(--amber-soft);color:#a5651f}.status.danger{background:var(--red-soft);color:var(--red)}
.rejection-note{padding:14px 16px;margin-bottom:18px;border-radius:10px;background:var(--red-soft);color:var(--red)}.rejection-note strong,.rejection-note p,.rejection-note small{display:block}.rejection-note p{margin:6px 0;color:var(--ink)}.review-history{display:grid;gap:8px}.review-history>div{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:10px}.review-history time{color:var(--muted);font-size:12px}.review-history p{grid-column:2/-1;margin:0;color:var(--ink)}
.quick-list { padding:6px 10px 10px; }.quick-item{width:100%;display:grid;grid-template-columns:1fr auto auto;gap:12px;text-align:left;align-items:center;padding:13px 9px;border:0;border-bottom:1px solid var(--line);background:transparent;color:var(--ink);border-radius:8px;}.quick-item:last-child{border-bottom:0}.quick-item:hover{background:var(--paper)}.quick-item:active{background:#e8eeec}.quick-item strong{font-size:13px}.quick-item small{display:block;color:var(--muted);margin-top:3px}.quick-item b{font:700 13px Consolas;color:var(--teal)}.quick-item i{font-style:normal;color:var(--muted)}
.login-log-panel { margin-top:18px; }
.device-cell { max-width:190px;overflow:hidden;text-overflow:ellipsis; }
.partner-history-summary { display:flex;gap:10px;flex-wrap:wrap;margin-bottom:16px; }
.partner-history-summary>div { min-width:150px;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#fafbfa; }
.partner-history-summary span { display:block;color:var(--muted);font-size:11px;margin-bottom:5px; }
.partner-history-summary strong { font-size:15px; }
.history-table { min-width:980px; }
.history-time { font-variant-numeric:tabular-nums; }
.invoice-cell { display:flex;align-items:center;gap:8px; }
.invoice-files { display:flex;align-items:center;gap:6px; }
.invoice-thumb { width:58px;padding:3px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);display:grid;gap:2px;place-items:center; }
.invoice-thumb:hover { border-color:var(--teal);background:var(--teal-soft); }
.invoice-thumb:active { transform:scale(.98); }
.invoice-thumb img { width:48px;height:38px;display:block;object-fit:cover;border-radius:4px;background:var(--paper); }
.invoice-thumb span { font-size:9px;white-space:nowrap; }
.invoice-thumb.image-error img { display:none; }
.finance-tabs { display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:10px;margin-bottom:18px; }
.finance-tabs button { border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:14px 18px;text-align:left;font-weight:800; }
.finance-tabs button.active { border-color:var(--teal);background:var(--teal-soft);color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal); }
.finance-metrics { display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px; }
.finance-metrics article { position:relative;overflow:hidden;background:white;border:1px solid var(--line);border-radius:14px;padding:17px 18px;min-height:126px;display:flex;flex-direction:column;justify-content:center; }
.finance-metrics article::before { content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--teal); }
.finance-metrics article.warn::before { background:var(--amber); }.finance-metrics article.danger::before { background:var(--red); }
.finance-metrics span,.finance-metrics small { color:var(--muted); }.finance-metrics strong { margin:8px 0 5px;font-size:25px;font-variant-numeric:tabular-nums; }
.finance-toolbar { margin-bottom:14px; }.finance-toolbar .toolbar-group:first-child { flex:1; }.finance-toolbar input[type="search"] { min-width:190px; }
.received-money { color:var(--teal);font-weight:800; }.outstanding-money { color:var(--red);font-weight:800; }
.allocation-input { width:130px;min-width:110px; }.allocation-summary { display:flex;justify-content:flex-end;gap:22px;align-items:center;padding:13px 4px 2px;font-variant-numeric:tabular-nums; }.allocation-summary .mismatch { color:var(--red); }.inline-error { margin:10px 0 0;padding:10px 12px;border-radius:9px;background:var(--red-soft);color:var(--red);font-weight:700; }
.invoice-ledger-table .invoice-thumb { width:68px; }.invoice-ledger-table .invoice-thumb img { width:58px;height:42px; }
.history-page-number { color:var(--muted);font-size:12px;padding:0 5px; }
.item-type-tabs { display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:18px; }
.item-type-tabs button { border:1px solid var(--line);border-radius:12px;background:white;color:var(--ink);padding:14px 16px;text-align:left;display:flex;align-items:center;justify-content:space-between; }
.item-type-tabs button:hover { border-color:var(--teal);background:#f9fcfb; }
.item-type-tabs button.active { background:var(--ink);border-color:var(--ink);color:white; }
.item-type-tabs button span { color:var(--muted);font-size:11px; }.item-type-tabs button.active span{color:#c8d1dc}
.stocktake-type-grid { display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px; }
.stocktake-type-grid button { min-height:145px;border:1px solid var(--line);border-radius:12px;background:white;padding:18px;text-align:left;color:var(--ink);display:flex;flex-direction:column;align-items:flex-start; }
.stocktake-type-grid button:hover { border-color:var(--teal);background:var(--teal-soft); }.stocktake-type-grid button:active{transform:scale(.99)}
.stocktake-type-grid strong { font-size:17px; }.stocktake-type-grid small{color:var(--muted);margin-top:7px}.stocktake-type-grid span{margin-top:auto;color:var(--teal);font-weight:800;font-size:12px}
.stocktake-confirm{margin-top:18px;padding:16px;border:1px solid var(--line);border-radius:12px;background:var(--paper);display:flex;align-items:center;justify-content:space-between;gap:14px}.stocktake-confirm strong{font-size:16px}.stocktake-confirm span{color:var(--muted);font-size:12px}
.stocktake-head { display:flex;justify-content:space-between;align-items:flex-end;gap:20px;margin-bottom:18px; }.stocktake-head .eyebrow{margin:16px 0 5px}.stocktake-head h2{margin:0 0 5px;font-size:23px}.stocktake-head small{color:var(--muted)}
.stocktake-summary { display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:18px; }.stocktake-summary>div{background:white;border:1px solid var(--line);border-radius:11px;padding:13px 15px}.stocktake-summary span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.stocktake-summary strong{font:800 19px Consolas;color:var(--ink)}
.stocktake-coverage{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0 0 18px}.stocktake-coverage>div{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:5px}.stocktake-coverage strong{font-size:24px}.stocktake-coverage small{color:var(--muted)}.stocktake-new-warning .button{margin-top:10px}
.environment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:18px}.environment-grid>div{border:1px solid var(--line);border-radius:12px;padding:16px;display:grid;gap:8px}.environment-grid span{color:var(--muted)}
.count-input { display:grid;grid-template-columns:minmax(90px,130px) auto;align-items:center;gap:7px; }.count-input input{padding:8px 9px}.count-input span{color:var(--muted);font-size:12px;font-weight:700}
.import-preview { margin-top:18px; }.import-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px}.import-stats>div{padding:12px;border:1px solid var(--line);border-radius:10px;background:#fafbfa}.import-stats span{display:block;color:var(--muted);font-size:11px;margin-bottom:4px}.import-stats strong{font-size:17px}.text-ok{color:var(--teal)}.text-danger{color:var(--red)}.success-note{background:#176d67}
.toolbar { display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap; }.toolbar-group{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.toolbar input,.toolbar select{width:auto;min-width:170px;background:white}
.document-toolbar { align-items:flex-end; }
.document-filters { align-items:flex-end; }
.date-filter { gap:5px; }
.date-filter span { font-size:11px;color:var(--muted);font-weight:700; }
.date-filter input { min-width:145px;cursor:pointer; }
.date-separator { padding-bottom:12px;color:var(--muted);font-size:12px; }
.pagination { min-height:62px;padding:11px 14px;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:14px;background:#fafbfa; }
.pagination-summary { color:var(--muted);font-size:12px; }
.pagination-actions { display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-wrap:wrap; }
.pagination-actions label { display:flex;grid-auto-flow:column;align-items:center;gap:6px;color:var(--muted);font-size:12px;font-weight:400; }
.pagination-actions select { width:auto;min-width:78px;padding:7px 9px; }
.page-button { min-width:34px;height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:white;color:var(--ink);font-weight:700;font-size:12px; }
.page-button:hover:not(:disabled) { border-color:var(--teal);color:var(--teal); }
.page-button:active:not(:disabled) { background:var(--teal-soft); }
.page-button.active { background:var(--teal);border-color:var(--teal);color:white; }
.page-button:disabled { opacity:.45;cursor:not-allowed; }
.page-note { background:var(--ink);color:white;border-radius:var(--radius);padding:17px 20px;margin-bottom:18px;display:flex;align-items:center;justify-content:space-between;gap:20px; }.page-note p{margin:3px 0 0;color:#c8d1dc;font-size:12px}.page-note strong{font-size:14px}
.page-note .page-note-action { flex:none;background:white;color:var(--ink);border:1px solid white;white-space:nowrap;-webkit-text-fill-color:var(--ink); }
.empty { padding:50px 20px;text-align:center;color:var(--muted); }.empty span{font-size:34px;display:block;margin-bottom:10px}.empty p{font-size:13px}
dialog { border:0;border-radius:18px;padding:0;box-shadow:0 25px 70px rgba(20,35,60,.28);width:min(760px,calc(100vw - 28px));max-height:90vh;color:var(--ink); }
dialog.document-modal{width:min(1120px,calc(100vw - 28px))}
dialog::backdrop { background:rgba(20,35,60,.52);backdrop-filter:blur(3px); }
.modal-shell { display:flex;flex-direction:column;max-height:90vh; }.modal-head{padding:20px 22px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.modal-head h2{margin:0;font-size:19px}.modal-close{border:0;background:var(--paper);border-radius:50%;width:34px;height:34px;font-size:20px}.modal-body{padding:22px;overflow:auto}.modal-foot{padding:15px 22px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:9px;background:#fafbfa}
.modal-foot .modal-close{width:auto;height:auto;border-radius:10px;font-size:inherit;background:transparent}
.form-grid { display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px; }.form-grid .wide{grid-column:1/-1}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:24px 0 10px;padding-top:18px;border-top:1px solid var(--line)}
.line-editor { border:1px solid var(--line);border-radius:12px;overflow:hidden;margin-top:10px; }
.line-row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:end;padding:14px;border-top:1px solid var(--line)}.line-row:first-child{border:0}.line-row>input[type="hidden"]{display:none}.line-row label{font-size:11px;min-width:0}.line-row input,.line-row select{width:100%;min-width:0;padding:9px;font-size:13px}.quantity-with-unit{display:grid;grid-template-columns:minmax(0,1fr) minmax(64px,40%)}.quantity-with-unit input{border-radius:10px 0 0 10px}.quantity-with-unit select{border-left:0;border-radius:0 10px 10px 0;background:#f7faf9;font-weight:700}.date-picker{cursor:pointer}.remove-line{border:0;background:var(--red-soft);color:var(--red);border-radius:8px;height:38px;font-size:18px}.line-actions{padding:11px 14px;background:#fafbfa;border-top:1px solid var(--line)}
.line-row .line-reason{grid-column:span 2}.line-row .line-reason textarea{width:100%;min-height:72px;resize:vertical;padding:9px;font-size:13px}.production-workflow{display:grid;gap:14px;padding:14px;background:#f7f9f8}.production-stage{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:white}.production-stage-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 14px;background:#fafbfa;border-bottom:1px solid var(--line)}.production-stage-head strong,.production-stage-head small{display:block}.production-stage-head strong{font-size:14px}.production-stage-head small{margin-top:4px;color:var(--muted);font-size:11px}.production-stage.output-stage{border-color:#b9dfd9}.production-stage.output-stage .production-stage-head{background:var(--teal-soft)}.production-stage.loss-stage{border-style:dashed}.production-lines:empty::after{content:'尚未添加';display:block;padding:16px;color:var(--muted);font-size:12px;text-align:center}.production-lines .line-row{border-top:1px solid var(--line)}.production-lines .line-row:first-child{border-top:0}
.production-summary{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:12px}.production-flow-arrow{display:grid;place-items:center;color:var(--teal);font-size:26px;font-weight:800}.production-summary-group{border:1px solid var(--line);border-radius:12px;overflow:hidden}.production-summary-group.output{border-color:#b9dfd9}.production-summary-title{display:flex;justify-content:space-between;align-items:center;padding:11px 13px;background:#fafbfa}.production-summary-group.output .production-summary-title{background:var(--teal-soft)}.production-summary-title span{font-size:11px;color:var(--muted)}.production-summary-list>div{display:flex;justify-content:space-between;gap:16px;padding:11px 13px;border-top:1px solid var(--line)}.production-summary-list span:last-child{text-align:right}.production-summary-list strong,.production-summary-list b,.production-summary-list small{display:block}.production-summary-list small{margin-top:3px;color:var(--muted);font-size:11px}.production-summary-group.loss{margin-top:12px;border-style:dashed}
.document-view-tabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:14px}.document-view-tabs button{border:1px solid var(--line);border-radius:12px;background:white;padding:13px 14px;text-align:left;color:var(--ink)}.document-view-tabs strong,.document-view-tabs small{display:block}.document-view-tabs strong{font-size:14px}.document-view-tabs small{margin-top:5px;color:var(--muted);font-size:11px;line-height:1.4}.document-view-tabs button.active{border-color:var(--teal);background:var(--teal-soft);box-shadow:inset 0 0 0 1px var(--teal)}.document-view-tabs button.active strong{color:var(--teal)}
.unit-add{display:grid;grid-template-columns:1fr auto;gap:10px}.unit-list{display:grid;gap:8px;margin-top:18px}.unit-list>div{display:grid;grid-template-columns:1fr auto auto auto;align-items:center;gap:8px;border:1px solid var(--line);border-radius:10px;padding:10px 12px}.unit-list strong{font-size:14px}
.code-add{display:grid;grid-template-columns:1fr auto 1fr auto;gap:10px;align-items:end}.code-add>span{padding-bottom:12px;font-weight:800}.reason-cell{max-width:340px;white-space:normal;line-height:1.5}.approval-section+.approval-section{margin-top:18px}.refreshing{opacity:.65;pointer-events:none}
.doc-total { margin-top:14px;background:var(--paper);border-radius:10px;padding:12px;display:flex;justify-content:flex-end;gap:24px;font:700 13px Consolas; }.doc-total strong{color:var(--teal)}
.trace-chain { display:flex;align-items:stretch;gap:0;overflow:auto;padding:7px 0 18px; }.trace-node{min-width:150px;background:white;border:1px solid var(--line);padding:13px;border-radius:10px;position:relative}.trace-node+ .trace-node{margin-left:30px}.trace-node+.trace-node::before{content:"→";position:absolute;left:-22px;top:50%;color:var(--teal);font-weight:bold}.trace-node small{display:block;color:var(--muted);margin-bottom:5px}.trace-node strong{font-size:13px}.trace-node em{font-style:normal;color:var(--teal);font:700 11px Consolas;display:block;margin-top:6px}
.toast { position:fixed;right:24px;bottom:24px;z-index:100;background:var(--ink);color:white;padding:12px 17px;border-radius:10px;box-shadow:var(--shadow);font-size:13px;transform:translateY(20px);opacity:0;pointer-events:none;transition:.25s}.toast.show{transform:none;opacity:1}.toast.error{background:var(--red)}
.mobile-nav { display:none; }
.mobile-collection,.mobile-profile-card,.mobile-tool-grid,.mobile-logout-button{display:none}
@media (max-width: 980px) { .metric-grid{grid-template-columns:repeat(2,1fr)}.split-grid,.sales-visual-grid{grid-template-columns:1fr}.sales-side-stack{grid-template-columns:1fr 1fr}.trace-preview{flex-wrap:wrap}.login-shell{grid-template-columns:1fr 1fr}.login-story{padding:45px}.document-view-tabs{grid-template-columns:repeat(2,1fr)} }
@media (max-width: 720px) {
  .login-shell{display:block;background:var(--paper);padding-bottom:28px}.login-story{min-height:310px;padding:30px 25px;background:var(--ink)}.login-story .brand-mark{margin-bottom:28px}.login-story h1{font-size:37px}.login-copy{margin:18px 0 0;font-size:14px}.trace-preview{display:none}.login-card{margin:-18px auto 0;padding:28px;width:calc(100% - 28px);position:relative;z-index:2}
  body,.app-shell,main{background:var(--mobile-paper)}.app-shell{display:block;padding-bottom:calc(76px + env(safe-area-inset-bottom))}.sidebar{display:none}main{display:block}.topbar{height:68px;padding:11px 16px;background:rgba(242,247,245,.96);position:sticky;top:0;z-index:8}.topbar h1{font-size:21px}.topbar .eyebrow{display:none}.top-actions>span,.top-actions .button{display:none}.content{padding:14px 12px 28px;max-width:none}.metric-grid{grid-template-columns:1fr 1fr;gap:10px}.metric-card{padding:15px;min-height:112px}.metric-card strong{font-size:23px}.dashboard-period{align-items:stretch;flex-direction:column;gap:8px}.dashboard-period>p{margin:0}.month-switcher{grid-template-columns:40px minmax(0,1fr) 40px;width:100%}.sales-visual-grid{gap:12px}.sales-side-stack{grid-template-columns:1fr;gap:12px}.sales-trend-chart{padding:4px 5px 8px}.chart-axis-label{font-size:12px}.settlement-chart{grid-template-columns:112px 1fr;padding:15px}.settlement-ring{width:108px}.panel-head{padding:14px}.toolbar{align-items:stretch;gap:10px;margin-bottom:12px}.toolbar-group{width:100%;display:grid;grid-template-columns:1fr 1fr;gap:8px}.toolbar input,.toolbar select{min-width:0;width:100%}.document-filters{grid-template-columns:1fr 1fr}.date-filter{min-width:0}.date-filter input{width:100%}.date-separator{display:none}.pagination{align-items:stretch;flex-direction:column;gap:10px;padding:12px}.pagination-actions{width:100%;justify-content:space-between;gap:5px}.pagination-actions label{display:none}.pagination-actions .page-button:not(:first-of-type):not(:last-of-type){display:none}.page-note{align-items:flex-start;flex-direction:column;padding:14px;margin-bottom:12px}.form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}.line-row{grid-template-columns:1fr 1fr}.line-row .remove-line{grid-column:auto}.unit-add{grid-template-columns:1fr}.mobile-nav{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;bottom:0;left:0;right:0;height:66px;padding-bottom:env(safe-area-inset-bottom);background:rgba(255,255,255,.98);border-top:1px solid var(--line);z-index:15}.mobile-nav button{border:0;background:transparent;color:var(--muted);font-size:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-width:0}.mobile-nav button span{font-size:19px;line-height:1}.mobile-nav button.active{color:var(--teal);font-weight:800}.mobile-nav .mobile-plus{width:39px;height:39px;border-radius:14px;background:var(--ink);color:white;display:grid;place-items:center;margin-top:-17px;box-shadow:0 7px 16px rgba(20,35,60,.25)}.mobile-nav.operator-layout{grid-template-columns:repeat(5,1fr)}
  dialog,dialog.document-modal{inset:0;width:100vw!important;max-width:none!important;height:100dvh;max-height:none;margin:0;border-radius:0}.modal-shell{height:100dvh;max-height:none;border-radius:0}.modal-head{flex:0 0 auto;padding:15px 16px}.modal-head h2{font-size:19px}.modal-body{padding:14px;min-height:0;overflow-y:auto}.modal-foot{flex:0 0 auto;padding:10px 12px calc(10px + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr;gap:8px;background:white}.modal-foot .button.primary:last-child{grid-column:2}.modal-foot .button:only-child{grid-column:1/-1}.document-modal .modal-foot .document-save-action:last-child{grid-column:1/-1}.doc-total{gap:10px;flex-wrap:wrap;justify-content:flex-start}.finance-metrics{grid-template-columns:1fr 1fr;gap:9px}.finance-metrics article{padding:13px;min-height:108px}.finance-metrics strong{font-size:20px}.finance-tabs{grid-template-columns:1fr 1fr}.allocation-summary{align-items:flex-end;flex-direction:column;gap:5px}.toolbar-group>.button:only-child{grid-column:1/-1}
  .desktop-collection{display:none!important}.mobile-collection{display:grid;gap:10px;padding:10px;background:#f5f7f6}.panel>.mobile-collection:first-child{border-radius:var(--radius)}.mobile-record-card,.mobile-stock-card{background:white;border:1px solid var(--line);border-radius:13px;padding:13px;text-align:left;box-shadow:0 1px 2px rgba(20,35,60,.03)}.mobile-record-head,.mobile-stock-head,.mobile-record-main,.mobile-stock-batch,.mobile-record-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.mobile-record-head>div,.mobile-stock-head>div{min-width:0}.mobile-record-head strong,.mobile-stock-head strong{display:block;font-size:15px}.mobile-record-head small,.mobile-stock-head small{display:block;margin-top:3px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mobile-record-main{padding:13px 0 10px}.mobile-record-main>strong{font-size:14px}.mobile-record-main>b,.mobile-stock-head>b{color:var(--teal);white-space:nowrap}.mobile-record-meta{padding-top:9px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}.mobile-record-meta i{font-style:normal;color:var(--teal);margin-left:auto}.mobile-stock-batch{padding:12px 0 10px;font-size:12px}.mobile-record-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.mobile-record-actions .button{width:100%}.mobile-profile-card{display:flex;align-items:center;gap:13px;background:linear-gradient(135deg,var(--ink),#24436b);color:white;border-radius:16px;padding:18px;margin-bottom:12px}.mobile-profile-card>span{width:48px;height:48px;border-radius:15px;background:rgba(255,255,255,.16);display:grid;place-items:center;font-size:20px;font-weight:800}.mobile-profile-card strong,.mobile-profile-card small{display:block}.mobile-profile-card small{margin-top:4px;color:rgba(255,255,255,.7)}.mobile-tool-grid{display:grid;gap:1px;background:var(--line);border:1px solid var(--line);border-radius:15px;overflow:hidden}.mobile-tool-grid button{display:grid;grid-template-columns:42px minmax(0,1fr) 18px;align-items:center;gap:10px;border:0;background:white;text-align:left;padding:13px}.mobile-tool-grid i{width:40px;height:40px;border-radius:12px;background:var(--teal-soft);color:var(--teal);font-style:normal;display:grid;place-items:center;font-weight:800}.mobile-tool-grid strong,.mobile-tool-grid small{display:block}.mobile-tool-grid small{color:var(--muted);font-size:11px;margin-top:3px}.mobile-tool-grid b{color:var(--muted);font-size:20px}.mobile-logout-button{width:100%;margin-top:14px;border:1px solid #f0c9c6;border-radius:12px;background:white;color:var(--red);padding:13px;font-weight:700}.inventory-type-tabs{grid-template-columns:repeat(3,1fr)!important;gap:7px}.inventory-type-tabs button{min-width:0;padding:11px 7px}.inventory-type-tabs button span{font-size:10px}.document-view-tabs{grid-template-columns:1fr 1fr}.document-view-tabs button{min-width:0}.document-toolbar>.toolbar-group:last-child .button{grid-column:1/-1}.production-stage{border-radius:12px}.production-stage-head{padding:12px}.production-lines{padding:10px}.line-row{padding:10px}.line-row label{min-width:0}.line-row select,.line-row input{width:100%;min-width:0}
  .invoice-ledger-table,.invoice-ledger-table tbody{display:block;width:100%}.invoice-ledger-table thead{display:none}.invoice-ledger-table tr{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:13px;border-bottom:1px solid var(--line)}.invoice-ledger-table td{display:block;border:0!important;padding:0!important;min-width:0}.invoice-ledger-table td:nth-child(2),.invoice-ledger-table td:nth-child(3),.invoice-ledger-table td:nth-child(4),.invoice-ledger-table td:nth-child(8){grid-column:1/-1}.invoice-ledger-table td:nth-child(2){font-size:15px}.invoice-ledger-table td:nth-child(3)::before{content:'往来单位：';color:var(--muted)}.invoice-ledger-table td:nth-child(4)::before{content:'关联单据：';color:var(--muted)}.invoice-ledger-table td:nth-child(5)::before{content:'开票：';color:var(--muted)}.invoice-ledger-table td:nth-child(6)::before{content:'金额：';color:var(--muted)}.invoice-ledger-table td:nth-child(7){font-size:11px;color:var(--muted)}.invoice-ledger-table .invoice-thumb{width:100%;display:flex;align-items:center;gap:10px}.invoice-ledger-table .invoice-thumb img{width:56px;height:56px;object-fit:cover}.invoice-ledger-table+.pagination{border-top:0}
  .mobile-stack-wrap{overflow:visible;padding:8px;background:var(--mobile-paper)}.mobile-stack-table{display:block!important;width:100%!important;min-width:0!important}.mobile-stack-table thead{display:none}.mobile-stack-table tbody{display:grid;width:100%;gap:8px}.mobile-stack-table tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0 14px;padding:12px 14px;background:var(--surface);border:1px solid var(--line);border-radius:12px}.mobile-stack-table td{display:block;min-width:0;padding:8px 0;border:0;white-space:normal;overflow-wrap:anywhere;text-align:left!important;background:transparent!important}.mobile-stack-table td::before{content:attr(data-mobile-label);display:block;margin-bottom:4px;color:var(--muted);font-size:10px;font-weight:700;letter-spacing:.04em}.mobile-stack-table td:first-child{grid-column:1/-1;padding-bottom:10px;border-bottom:1px solid #edf0ef;font-size:14px}.mobile-stack-table td[data-mobile-actions="true"]{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;padding-top:10px;border-top:1px solid #edf0ef}.mobile-stack-table td[data-mobile-actions="true"]::before{flex-basis:100%;margin-bottom:0}.mobile-stack-table td[data-mobile-actions="true"] .button{flex:1;min-width:100px}.mobile-stack-table td br{display:none}.mobile-stack-table td small{display:block;margin-top:3px;color:var(--muted)}
}
@media (max-width:720px){.item-type-tabs{grid-template-columns:1fr;gap:7px}.stocktake-type-grid{grid-template-columns:1fr}.stocktake-type-grid button{min-height:105px}.stocktake-head{align-items:flex-start;flex-direction:column}.stocktake-summary{grid-template-columns:repeat(2,1fr)}.stocktake-coverage,.environment-grid{grid-template-columns:1fr}.warehouse-tabs{grid-template-columns:1fr 1fr}.warehouse-tabs button:last-child{grid-column:1/-1}.import-stats{grid-template-columns:1fr}.stocktake-head .toolbar-group{width:100%}.stocktake-head .toolbar-group .button{flex:1}.code-add{grid-template-columns:1fr 1fr}.code-add>span{display:none}.code-add .button{grid-column:1/-1}}
@media (max-width:720px){.production-stage-head{align-items:flex-start;flex-direction:column}.production-stage-head .button{width:100%}.line-row .line-reason{grid-column:1/-1}.production-summary{grid-template-columns:1fr}.production-flow-arrow{transform:rotate(90deg);min-height:22px}.document-view-tabs{grid-template-columns:1fr 1fr}.document-view-tabs button{padding:11px}.document-view-tabs small{display:none}}

/* 独立采购、销售与仓储模块 */
.sidebar nav{padding:18px 0;overflow-y:auto;min-height:0}
.operation-toolbar{margin-top:14px}
.report-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:16px}
.report-grid>section{min-width:0;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:white}
.source-document-note{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 12px;margin-bottom:16px;padding:12px 14px;border:1px solid var(--teal);border-radius:12px;background:var(--teal-soft)}
.source-document-note span,.source-document-note small{color:var(--muted);font-size:12px}
.source-document-note small{grid-column:2}
.warehouse-tabs{margin-bottom:14px}
.dashboard-mode-switch{display:inline-grid;grid-template-columns:1fr 1fr;gap:3px;margin:0 10px 8px 0;padding:3px;border-radius:10px;background:#e7ecea}.dashboard-mode-switch button{border:0;border-radius:8px;background:transparent;padding:7px 16px;color:var(--muted);font-weight:700}.dashboard-mode-switch button.active{background:white;color:var(--teal);box-shadow:0 1px 4px rgba(20,35,60,.12)}
.daily-summary-chart{display:grid;gap:15px;padding:24px}.daily-summary-chart>div{display:grid;grid-template-columns:76px minmax(80px,1fr) 110px;align-items:center;gap:12px}.daily-summary-chart span{color:var(--muted);font-size:12px}.daily-summary-chart>div>div{height:13px;border-radius:999px;background:#edf1ef;overflow:hidden}.daily-summary-chart i{display:block;height:100%;border-radius:inherit;background:var(--teal)}.daily-summary-chart i.returns,.daily-summary-chart i.outstanding{background:#d88a29}.daily-summary-chart i.net{background:var(--ink)}.daily-summary-chart strong{text-align:right;font:700 13px Consolas}.workflow-hint{display:block;max-width:360px;padding:10px 13px;border:1px solid #b9dfd9;border-radius:10px;background:var(--teal-soft);color:var(--teal);font-size:12px;font-weight:700}
@media(max-width:980px){.report-grid{grid-template-columns:1fr}}
@media (max-width:720px){.mobile-logout-button{display:block}}
@media (max-width:720px){.dashboard-mode-switch{width:100%;margin-right:0}.daily-summary-chart{padding:16px 13px}.daily-summary-chart>div{grid-template-columns:60px minmax(60px,1fr) 92px;gap:8px}.daily-summary-chart strong{font-size:11px}.workflow-hint{max-width:none;grid-column:1/-1}}
@media print { .sidebar,.topbar,.mobile-nav,.no-print{display:none!important}.app-shell,main{display:block}.content{padding:0}.panel{border:0} }
@media (prefers-reduced-motion: reduce) { *{scroll-behavior:auto!important;transition:none!important} }

/* 2026-08 全站视觉统一：食品工厂数字台账 */
:root{
  --paper:#f2f5f3;
  --mobile-paper:#eef3f1;
  --line:#d8e1de;
  --muted:#64757a;
  --teal:#178b82;
  --teal-soft:#e1f0ed;
  --amber:#c98225;
  --amber-soft:#fff1dc;
  --red:#b94742;
  --red-soft:#f9e8e6;
  --radius:13px;
  --radius-sm:9px;
  --shadow-soft:0 1px 2px rgba(20,35,60,.04),0 8px 24px rgba(20,35,60,.045);
  --focus-ring:0 0 0 3px rgba(23,139,130,.16);
}

html{scrollbar-gutter:stable}
body{font-size:14px;line-height:1.55;color:var(--ink);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font-variant-numeric:tabular-nums}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--teal);outline-offset:2px;
}
input,select,textarea{min-height:42px;border-color:#cfdad6;background:#fff;box-shadow:0 1px 0 rgba(20,35,60,.015)}
input:hover,select:hover,textarea:hover{border-color:#aebfba}
input:focus,select:focus,textarea:focus{box-shadow:var(--focus-ring)}

.button{min-height:40px;border:1px solid transparent;border-radius:var(--radius-sm);padding:9px 15px;transition:background-color .18s,border-color .18s,color .18s,box-shadow .18s,transform .18s}
.button:hover{filter:none;box-shadow:0 5px 14px rgba(20,35,60,.09)}
.button.primary{background:var(--teal);border-color:var(--teal);box-shadow:0 5px 14px rgba(23,139,130,.16)}
.button.primary:hover{background:#117b73;border-color:#117b73}
.button.ink{border-color:var(--ink)}
.button.ghost{background:#fff;border-color:var(--line)}
.button.ghost:hover{border-color:#aebfba;background:#f9fbfa}
.button.danger{border-color:#f1cac7}
.button.small{min-height:32px;padding:6px 10px}
.button:disabled{box-shadow:none}

.app-shell{grid-template-columns:232px minmax(0,1fr)}
.sidebar{width:232px;padding:22px 15px 18px;border-right-color:#d2dcd8;box-shadow:4px 0 22px rgba(20,35,60,.025)}
.sidebar-brand{padding:0 8px 22px}
.sidebar-brand strong{font-family:"STSong","SimSun",serif;font-size:20px;letter-spacing:.05em}
.sidebar nav{gap:4px;padding:17px 0}
.sidebar nav button{min-height:43px;padding:10px 12px;border:1px solid transparent;color:#53646c;transition:background-color .16s,color .16s,border-color .16s,box-shadow .16s}
.sidebar nav button span{font-family:"Microsoft YaHei UI","PingFang SC",sans-serif;font-size:16px;font-weight:800;color:#738187}
.sidebar nav button:hover{border-color:#e2e8e6;background:#f6f8f7;color:var(--ink)}
.sidebar nav button.active{border-color:var(--ink);background:var(--ink);box-shadow:0 8px 18px rgba(20,35,60,.14)}
.sidebar nav button.active span{color:#7bd0c4}
.sidebar-foot{padding-top:14px}

main{grid-column:2}
.topbar{height:92px;padding:19px clamp(24px,3.4vw,52px);background:rgba(242,245,243,.96);border-bottom-color:rgba(207,218,214,.88);backdrop-filter:blur(12px)}
.topbar h1{font-size:28px;color:#10213a}
.topbar .eyebrow{margin-bottom:6px}
.top-actions{gap:12px}
.content{max-width:1540px;padding:26px clamp(24px,3.4vw,52px) 72px}

.panel,.metric-card,.finance-metrics article,.report-grid>section{
  border-color:var(--line);box-shadow:var(--shadow-soft);
}
.panel{background:rgba(255,255,255,.98)}
.panel-head{min-height:60px;padding:14px 17px;background:#fcfdfc}
.panel-head h2{font-size:15px;color:#10213a}
.metric-grid,.finance-metrics{gap:13px;margin-bottom:20px}
.metric-card,.finance-metrics article{min-height:116px;padding:17px 18px}
.metric-card::before,.finance-metrics article::before{width:3px}
.metric-card strong{margin:13px 0 3px;font-size:28px}
.metric-card span,.metric-card small,.finance-metrics span,.finance-metrics small{line-height:1.45}

/* 模块顶部既是导航，也是当前业务流程的路线图 */
.document-view-tabs,.warehouse-tabs{
  position:relative;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-bottom:18px;padding-bottom:0;
}
.document-view-tabs::before,.warehouse-tabs::before{
  content:"";position:absolute;left:24px;right:24px;top:50%;height:1px;background:#cdd9d5;z-index:0;
}
.document-view-tabs button,.warehouse-tabs button{
  position:relative;z-index:1;min-height:68px;border-color:#d2dcd8;border-radius:12px;padding:12px 14px;background:#fff;box-shadow:0 2px 7px rgba(20,35,60,.035);transition:border-color .18s,background-color .18s,box-shadow .18s,transform .18s;
}
.document-view-tabs button:hover,.warehouse-tabs button:hover{border-color:#9cbdb7;box-shadow:0 6px 16px rgba(20,35,60,.07);transform:translateY(-1px)}
.document-view-tabs button.active,.warehouse-tabs button.active{border-color:var(--teal);background:var(--teal-soft);box-shadow:inset 0 0 0 1px var(--teal),0 5px 14px rgba(23,139,130,.09)}
.document-view-tabs button.active::after,.warehouse-tabs button.active::after{
  content:"";position:absolute;left:14px;right:14px;bottom:-1px;height:3px;border-radius:3px 3px 0 0;background:var(--teal);
}
.document-view-tabs strong,.warehouse-tabs strong{font-size:14px;color:#11243d}
.document-view-tabs small,.warehouse-tabs small{margin-top:4px;color:var(--muted)}

.toolbar{gap:10px;margin-bottom:14px}
.toolbar-group{gap:8px}
.toolbar input,.toolbar select{min-width:164px}
.document-toolbar{padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.72)}
.date-filter span{letter-spacing:.02em}
.page-note{padding:15px 18px;border-radius:12px;box-shadow:0 7px 16px rgba(20,35,60,.08)}
.page-note strong{font-size:14px}

.table-wrap{scrollbar-color:#b7c5c1 transparent;scrollbar-width:thin}
table{font-size:13px}
th{height:40px;padding:10px 13px;border-bottom:1px solid var(--line);background:#f7f9f8;color:#5e7076;font-weight:700;letter-spacing:.035em}
td{height:53px;padding:11px 13px;border-top-color:#e8edeb}
tbody tr{transition:background-color .14s,box-shadow .14s}
tbody tr:hover td{background:#f7faf9}
tbody tr:focus-within{box-shadow:inset 3px 0 var(--teal)}
.strong{color:#0f2139}
.num{font-variant-numeric:tabular-nums}
.status{min-height:24px;padding:4px 9px;border:1px solid transparent}
.status.approved,.status.ok{border-color:#c9e6e1}
.status.submitted,.status.warn{border-color:#f1dcb9}
.status.danger{border-color:#f0cfcc}
.pagination{min-height:58px;padding:10px 13px;background:#f8faf9}
.page-button{height:34px;border-radius:8px}
.empty{min-height:210px;display:grid;place-content:center;padding:38px 20px}
.empty span{color:#8fa19e}

dialog{border:1px solid rgba(216,225,222,.8);border-radius:16px;box-shadow:0 28px 90px rgba(20,35,60,.3)}
dialog::backdrop{background:rgba(16,33,58,.58);backdrop-filter:blur(4px)}
.modal-head{padding:17px 20px;background:#fcfdfc}
.modal-head h2{font-family:"STSong","SimSun",serif;font-size:21px}
.modal-close{transition:background-color .16s,color .16s,transform .16s}
.modal-close:hover{background:#e7ecea;color:var(--red);transform:rotate(4deg)}
.modal-body{padding:20px}
.modal-foot{padding:13px 20px;background:#f7f9f8}
.form-grid{gap:14px}
.section-title{margin-top:22px;padding-top:16px;color:#53666d;font-weight:800}
.line-editor{border-radius:11px;background:#fff}
.line-row{gap:10px;padding:13px}
.line-actions{background:#f7f9f8}
.doc-total{border:1px solid #e0e7e4;background:#f7f9f8}
.toast{right:22px;bottom:22px;border:1px solid rgba(255,255,255,.16);border-radius:11px;box-shadow:0 14px 34px rgba(20,35,60,.23)}

@media (max-width:980px){
  .topbar{height:84px}
  .content{padding-left:24px;padding-right:24px}
  .document-view-tabs::before,.warehouse-tabs::before{display:none}
}

@media (max-width:720px){
  html{scrollbar-gutter:auto}
  body,.app-shell,main{background:var(--mobile-paper)}
  .topbar{height:64px;padding:10px 14px;border-bottom-color:#d5dfdc}
  .topbar h1{font-size:22px}
  .content{padding:12px 10px 26px}
  .metric-grid,.finance-metrics{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
  .metric-card,.finance-metrics article{min-height:103px;padding:13px 12px;border-radius:12px;box-shadow:0 2px 8px rgba(20,35,60,.035)}
  .metric-card strong{margin-top:10px;font-size:21px}
  .panel,.report-grid>section{border-radius:12px;box-shadow:0 2px 9px rgba(20,35,60,.035)}
  .panel-head{min-height:54px;padding:12px 13px}
  .document-view-tabs,.warehouse-tabs{grid-template-columns:1fr 1fr;gap:7px;margin-bottom:12px}
  .document-view-tabs button,.warehouse-tabs button{min-height:62px;padding:10px 11px;box-shadow:none}
  .document-view-tabs button:hover,.warehouse-tabs button:hover{transform:none;box-shadow:none}
  .document-view-tabs small,.warehouse-tabs small{display:block;font-size:10px;white-space:normal}
  .toolbar,.document-toolbar{padding:10px;margin-bottom:10px;border:1px solid var(--line);border-radius:11px;background:#fff}
  .toolbar-group{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .toolbar>.button,.toolbar>button{width:100%}
  .toolbar input,.toolbar select{min-height:42px}
  .page-note{padding:13px 14px;margin-bottom:12px}
  .desktop-collection{display:none!important}
  .mobile-collection{padding:8px;gap:8px;background:transparent}
  .mobile-record-card,.mobile-stock-card,.mobile-stack-table tr{border-radius:12px;box-shadow:0 2px 8px rgba(20,35,60,.04)}
  .mobile-stack-wrap{padding:0;background:transparent;overflow:visible}
  .mobile-stack-table tbody{gap:8px}
  .mobile-stack-table tr{padding:11px 12px}
  .mobile-stack-table td:first-child{font-size:14px}
  .pagination{min-height:auto;padding:11px;border-radius:0 0 12px 12px}
  .mobile-nav{height:68px;background:rgba(255,255,255,.97);box-shadow:0 -8px 24px rgba(20,35,60,.07);backdrop-filter:blur(12px)}
  .mobile-nav button{font-size:10px;min-height:48px}
  .mobile-nav .mobile-plus{border-radius:13px;box-shadow:0 8px 20px rgba(20,35,60,.25)}
  dialog,dialog.document-modal{border:0;border-radius:0}
  .modal-head{padding:14px 15px}
  .modal-body{padding:12px}
  .modal-foot{padding:9px 10px calc(9px + env(safe-area-inset-bottom))}
  .line-row{gap:9px;padding:10px}
  .toast{left:12px;right:12px;bottom:calc(78px + env(safe-area-inset-bottom));text-align:center}
}

@media (max-width:390px){
  .metric-card,.finance-metrics article{min-height:96px;padding:12px 10px}
  .metric-card strong,.finance-metrics strong{font-size:19px}
  .document-view-tabs button,.warehouse-tabs button{min-height:58px}
}

/* 库存方向使用稳定的业务语义色：增加为绿、减少为红 */
.text-ok,.strong.text-ok,td.text-ok,.mobile-stack-table td.text-ok{
  color:#167a5b!important;
}
.text-danger,.strong.text-danger,td.text-danger,.mobile-stack-table td.text-danger{
  color:var(--red)!important;
}
.partner-ledger-export{display:flex;align-items:end;gap:12px;padding:14px 0;flex-wrap:wrap}.partner-ledger-export label{display:grid;gap:6px;font-size:12px;color:var(--muted)}
.barcode-card{display:flex;align-items:center;gap:18px;margin:18px 0;padding:16px;border:1px solid var(--line);border-radius:14px;background:#fff}.barcode-card img{width:150px;height:150px;object-fit:contain}.barcode-card>div{display:grid;gap:7px}.barcode-card small{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.5px}.barcode-card .button{justify-self:start}
.quality-history{display:grid;gap:8px;padding:0;list-style:none}.quality-history li{display:flex;justify-content:space-between;gap:16px;padding:10px 12px;border:1px solid var(--line);border-radius:10px}.quality-history li span{color:var(--muted);font-size:12px;text-align:right}
.scan-workbench{display:grid;gap:16px}.scan-camera{display:grid;gap:8px;text-align:center}.scan-camera video{width:100%;max-height:360px;border-radius:14px;background:#0d1728;object-fit:cover}.scan-actions{display:flex;gap:10px;margin-top:10px}
@media(max-width:700px){.barcode-card{align-items:flex-start}.barcode-card img{width:112px;height:112px}.quality-history li{display:grid}.quality-history li span{text-align:left}.scan-actions{display:grid;grid-template-columns:1fr 1fr}}

/* 简洁登录页与个人安全中心 */
.login-shell{
  min-height:100dvh;display:grid;grid-template-columns:1fr;place-items:center;align-content:center;gap:22px;
  padding:40px 20px;background:linear-gradient(145deg,#f7f9f8 0%,#eef3f1 100%);position:relative;overflow:auto;
}
.login-shell::before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 49.9%,rgba(20,35,60,.025) 50%,transparent 50.1%);background-size:64px 64px;opacity:.38}
.login-brand{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
.login-brand .brand-mark{width:44px;height:44px;margin:0;background:var(--ink);color:#fff;border:0;border-radius:13px 13px 13px 4px}
.login-brand .brand-mark span{font-size:20px}.login-brand strong,.login-brand small{display:block}.login-brand strong{font-family:"STSong","SimSun",serif;font-size:19px;letter-spacing:.08em}.login-brand small{margin-top:2px;color:var(--muted);font-size:11px}
.login-card{position:relative;z-index:1;width:min(420px,calc(100vw - 32px));margin:0;padding:34px 36px 30px;border:1px solid rgba(216,225,222,.9);border-radius:18px;gap:19px;box-shadow:0 22px 60px rgba(20,35,60,.11)}
.login-card h1{margin:0;text-align:center;font-family:"STSong","SimSun",serif;font-size:28px;letter-spacing:.02em}.login-card>div:first-child>p{text-align:center;margin:6px 0 0;font-size:12px}
.login-card .button.large{min-height:44px;justify-content:center}.remember-login{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--muted);cursor:pointer}.remember-login input{width:17px;height:17px;min-height:0;margin:0;accent-color:var(--teal)}
.login-help,.login-footer{position:relative;z-index:1;margin:0;text-align:center;color:var(--muted);font-size:11px}.login-card .login-help{margin:0}
.login-divider{margin:0}.qr-login-panel{max-height:min(390px,42dvh);overflow:auto}
.account-layout{display:grid;grid-template-columns:minmax(240px,300px) minmax(0,1fr);gap:18px;align-items:start}.account-main{display:grid;gap:18px}.account-profile{padding:22px}.account-identity{display:flex;align-items:center;gap:13px;padding-bottom:20px;border-bottom:1px solid var(--line)}.account-avatar{width:52px;height:52px;border-radius:15px;background:var(--teal-soft);color:var(--teal);display:grid;place-items:center;font-size:21px;font-weight:800}.account-identity h2,.account-identity p{margin:0}.account-identity p{margin-top:4px;color:var(--muted);font-size:12px}.account-profile dl{display:grid;gap:0;margin:12px 0 18px}.account-profile dl>div{display:flex;justify-content:space-between;gap:16px;padding:10px 0;border-bottom:1px solid #edf1ef}.account-profile dt{color:var(--muted)}.account-profile dd{margin:0;font-weight:700}.account-profile>.button{width:100%}
.security-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;padding:18px}.security-form label:first-child{grid-column:1/-1}.security-form label small{color:var(--muted);font-weight:400}.security-form>div{grid-column:1/-1;display:flex;justify-content:flex-end}.session-list{display:grid}.session-item{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:center;padding:14px 18px;border-top:1px solid var(--line)}.session-item:first-child{border-top:0}.session-icon{width:40px;height:40px;border-radius:11px;background:#eef3f1;color:var(--ink);display:grid;place-items:center;font-size:18px}.session-item strong{font-size:13px}.session-item p,.session-item small{display:block;margin:3px 0 0;color:var(--muted);font-size:11px}.page-note.warning{background:var(--amber-soft);color:#8b581d;box-shadow:none;border:1px solid #efd9b1}.page-note.warning p{color:#6e5b43}

@media(max-width:720px){
  .login-shell{display:grid;padding:28px 16px;align-content:center;gap:18px;background:linear-gradient(180deg,#f8faf9,#edf2f0)}
  .login-card{width:100%;padding:27px 22px 24px;border-radius:16px;gap:17px}.login-card h1{font-size:25px}.login-footer{padding-bottom:env(safe-area-inset-bottom)}
  .account-layout{grid-template-columns:1fr;gap:12px}.account-main{gap:12px}.account-profile{padding:17px}.security-form{grid-template-columns:1fr;padding:14px}.security-form label:first-child,.security-form>div{grid-column:auto}.security-form .button{width:100%}.session-item{padding:13px 14px}.session-item p{white-space:normal}.panel-head #revokeSessionsBtn{min-width:112px}
}
@media(max-width:720px){.mobile-stack-table td{height:auto}}
