:root{--bg:#f4f6f8;--surface:#ffffff;--surface-sunken:#f7f9fb;--surface-hover:#f2f5f8;--ink:#16191d;--ink-muted:#61707f;--ink-faint:#8a97a5;--line:#e2e7ec;--line-strong:#cbd3db;--accent:#1f6feb;--accent-ink:#ffffff;--accent-soft:#e8f0fe;--nav-bg:#1b2430;--nav-ink:#cfd6df;--nav-ink-bright:#ffffff;--nav-ink-faint:#8b97a6;--nav-hover:#232f3e;--nav-line:#2b3644;--st-neutral-bg:#eef1f4;--st-neutral-fg:#43505f;--st-alert-bg:#ffe9e9;--st-alert-fg:#a40e1a;--st-alert-line:#ffc9ce;--st-work-bg:#fff4d6;--st-work-fg:#7a5200;--st-work-line:#f2dfae;--st-ready-bg:#e3f0ff;--st-ready-fg:#0a4fa8;--st-ready-line:#cfe0fb;--st-done-bg:#e5f6ea;--st-done-fg:#14682d;--st-done-line:#c3e9cd;--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s5:24px;--s6:32px;--text-xs:12px;--text-sm:13px;--text-base:14px;--text-md:15px;--text-lg:17px;--text-xl:22px;--radius:10px;--radius-sm:7px;--tap:44px;--shadow:0 1px 2px rgb(22 25 29/5%);--shadow-lifted:0 -4px 16px rgb(22 25 29/8%);color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f1419;--surface:#171d24;--surface-sunken:#12171d;--surface-hover:#1d242c;--ink:#e6eaef;--ink-muted:#9aa6b2;--ink-faint:#6f7d8a;--line:#262f38;--line-strong:#35404b;--accent:#5a9bff;--accent-ink:#0f1419;--accent-soft:#16283f;--nav-bg:#12171d;--nav-ink:#b7c2cd;--nav-ink-bright:#ffffff;--nav-ink-faint:#74828f;--nav-hover:#1d242c;--nav-line:#262f38;--st-neutral-bg:#232c35;--st-neutral-fg:#b7c2cd;--st-alert-bg:#3a1d20;--st-alert-fg:#ff9ea5;--st-alert-line:#5c2a2f;--st-work-bg:#3a2f14;--st-work-fg:#f0c36b;--st-work-line:#57451d;--st-ready-bg:#16283f;--st-ready-fg:#7fb4ff;--st-ready-line:#234163;--st-done-bg:#14301f;--st-done-fg:#79d197;--st-done-line:#21482f;--shadow:0 1px 2px rgb(0 0 0/40%);--shadow-lifted:0 -4px 16px rgb(0 0 0/45%);color-scheme:dark}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--ink);font:var(--text-md) /1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--nav-bg);color:var(--nav-ink);padding:var(--s4) 0;display:flex;flex-direction:column}.brand{padding:0 var(--s4) var(--s4);font-weight:700;font-size:var(--text-lg);color:var(--nav-ink-bright);letter-spacing:.2px}.brand small{display:block;font-weight:400;font-size:var(--text-xs);color:var(--nav-ink-faint);letter-spacing:0}.nav a{display:block;padding:9px var(--s4);color:var(--nav-ink);font-size:var(--text-base);border-left:3px solid transparent}.nav a:hover{background:var(--nav-hover);color:var(--nav-ink-bright);border-left-color:var(--accent);text-decoration:none}.nav .section{padding:var(--s4) var(--s4) var(--s1);font-size:11px;text-transform:uppercase;letter-spacing:.6px;color:var(--nav-ink-faint)}.sidebar-foot{margin-top:auto;padding:var(--s3) var(--s4) 0;border-top:1px solid var(--nav-line);font-size:var(--text-xs);color:var(--nav-ink-faint)}.sidebar-foot a{color:var(--nav-ink)}.linkish{background:none;border:none;padding:0;color:var(--nav-ink-faint);font-size:var(--text-xs);cursor:pointer}.linkish:hover{color:var(--nav-ink-bright);filter:none}.main{padding:var(--s5) var(--s6) 60px;max-width:1400px;min-width:0}h1{font-size:var(--text-xl);margin:0 0 var(--s1);letter-spacing:-.2px}.subtitle{color:var(--ink-muted);font-size:var(--text-base);margin:0 0 var(--s5)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s4);margin-bottom:var(--s4);box-shadow:var(--shadow);overflow-x:auto}.panel h2{font-size:var(--text-md);margin:0 0 var(--s3)}.panel.warn{border-color:var(--st-alert-line);background:var(--st-alert-bg)}.panel.warn h2{color:var(--st-alert-fg)}.grid{display:grid;grid-gap:var(--s3);gap:var(--s3);grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s3) var(--s4);display:block;color:inherit;box-shadow:var(--shadow);transition:border-color .12s ease-out}.tile:hover{border-color:var(--line-strong);text-decoration:none}.tile .num{font-size:26px;font-weight:650;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tile .lbl{font-size:var(--text-sm);color:var(--ink-muted);margin-top:3px}.tile .zh{font-size:var(--text-xs);color:var(--ink-faint)}.tile.alert .num{color:var(--st-alert-fg)}.tile.work .num{color:var(--st-work-fg)}.tile.ready .num{color:var(--st-ready-fg)}.tile.done .num{color:var(--st-done-fg)}table{width:100%;border-collapse:collapse;font-size:var(--text-base)}th{text-align:left;font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.4px;color:var(--ink-muted);padding:var(--s2) var(--s3);white-space:nowrap}td,th{border-bottom:1px solid var(--line)}td{padding:var(--s3);vertical-align:top}tbody tr:last-child td{border-bottom:none}tbody tr:hover td{background:var(--surface-hover)}td:has(+td){font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.badge{display:inline-block;padding:2px var(--s2);border-radius:20px;font-size:var(--text-xs);background:var(--st-neutral-bg);color:var(--st-neutral-fg);white-space:nowrap}.badge.alert{background:var(--st-alert-bg);color:var(--st-alert-fg)}.badge.work{background:var(--st-work-bg);color:var(--st-work-fg)}.badge.ready{background:var(--st-ready-bg);color:var(--st-ready-fg)}.badge.done{background:var(--st-done-bg);color:var(--st-done-fg)}.empty{padding:var(--s6) var(--s4);text-align:center;color:var(--ink-muted);font-size:var(--text-base);background:var(--surface-sunken);border:1px dashed var(--line-strong);border-radius:var(--radius-sm)}label{display:block;font-size:var(--text-sm);font-weight:500;margin-bottom:var(--s1)}input,select,textarea{width:100%;padding:9px 11px;border:1px solid var(--line-strong);border-radius:var(--radius-sm);font:inherit;background:var(--surface);color:var(--ink)}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-soft);border-color:var(--accent)}input::placeholder,textarea::placeholder{color:var(--ink-faint)}.field{margin-bottom:var(--s3)}.hint{font-size:var(--text-xs);color:var(--ink-muted);margin-top:var(--s1)}.btn,button{display:inline-block;padding:9px var(--s4);border:1px solid transparent;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font:inherit;font-weight:500;cursor:pointer}.btn:hover,button:hover{filter:brightness(.94);text-decoration:none}.btn.secondary,button.secondary{background:var(--surface);border-color:var(--line-strong);color:var(--ink)}.btn.secondary:hover,button.secondary:hover{background:var(--surface-hover);filter:none}button.secondary:disabled,button:disabled{background:var(--st-neutral-bg);border-color:transparent;color:var(--ink-faint);cursor:not-allowed;filter:none}.error,.notice,.ok{padding:var(--s3);border-radius:var(--radius-sm);font-size:var(--text-base);margin-bottom:var(--s3);border:1px solid}.error{background:var(--st-alert-bg);border-color:var(--st-alert-line);color:var(--st-alert-fg)}.notice{background:var(--st-ready-bg);border-color:var(--st-ready-line);color:var(--st-ready-fg)}.ok{background:var(--st-done-bg);border-color:var(--st-done-line);color:var(--st-done-fg)}.raw{margin-top:var(--s3);overflow-x:auto;background:var(--surface-sunken);border:1px solid var(--line);padding:var(--s3);border-radius:var(--radius-sm)}.login-wrap{min-height:100vh;display:grid;place-items:center;padding:var(--s5)}.login-card{width:100%;max-width:370px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:var(--s5);box-shadow:var(--shadow)}.mono{font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:var(--text-sm)}.pick{border-radius:var(--radius);transition:background .12s ease-out}.pick-flash-ok{background:var(--st-done-bg)}.pick-flash-bad{background:var(--st-alert-bg)}.pick-scan label{font-size:var(--text-md)}.pick-input{font-size:26px;padding:var(--s4) 18px;letter-spacing:.02em}.pick-signal{margin-top:var(--s3);padding:var(--s4) 18px;border-radius:9px;font-size:20px;font-weight:600;border:1px solid}.pick-signal.ok{background:var(--st-done-bg);border-color:var(--st-done-line);color:var(--st-done-fg)}.pick-signal.bad{background:var(--st-alert-bg);border:2px solid var(--st-alert-fg);color:var(--st-alert-fg)}.pick-count{margin:18px 0 var(--s2);font-size:19px;font-weight:600}.pick-table{font-size:var(--text-lg)}.pick-table td{padding:var(--s3) var(--s2);vertical-align:middle}.pick-title{font-size:var(--text-lg);font-weight:500}.pick-progress{font-size:22px;font-weight:700;white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.pick-done{background:var(--st-done-bg);color:var(--ink-muted)}.pick-done .pick-progress{color:var(--st-done-fg)}.pick-actions{white-space:nowrap}.pick-actions button{padding:var(--s3) var(--s3);margin-right:var(--s2);font-size:var(--text-md);min-height:var(--tap)}.pick-finish{margin-top:20px;width:100%;padding:20px;font-size:20px;font-weight:600}.pack-grid{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:var(--s3);gap:var(--s3)}.pack-input{font-size:22px;padding:var(--s3) var(--s3);text-align:center}.pack-input[aria-invalid=true]{border-color:var(--st-alert-fg);background:var(--st-alert-bg)}.pack-problem{color:var(--st-alert-fg)}.pack-buttons{display:flex;gap:var(--s2);align-items:center;margin-top:var(--s1);flex-wrap:wrap}.pack-main{padding:var(--s4) 26px;font-size:var(--text-lg);font-weight:600}.queue-check{width:22px;height:22px;cursor:pointer;accent-color:var(--accent)}.queue-selected td{background:var(--accent-soft)}.queue-bar{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;flex-wrap:wrap;justify-content:space-between;background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--radius);padding:var(--s3) var(--s4);margin-top:var(--s4);box-shadow:var(--shadow-lifted)}.queue-bar,.queue-bar-count{display:flex;gap:var(--s3);align-items:center}.queue-bar-count{font-weight:600}.queue-clear{padding:var(--s1) var(--s3);font-size:var(--text-sm);font-weight:400}.queue-bar-actions{gap:var(--s2)}.queue-bar-actions,.supply-qr{display:flex;flex-wrap:wrap;align-items:center}.supply-qr{gap:18px;margin-top:var(--s3)}.supply-qr img{width:190px;height:190px;object-fit:contain;border:1px solid var(--line);border-radius:var(--s2);padding:var(--s2);background:#ffffff}@media (max-width:820px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:nowrap;align-items:center;padding:var(--s2);overflow-x:auto;scrollbar-width:none;gap:var(--s1)}.sidebar::-webkit-scrollbar{display:none}.grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:var(--s2)}.brand{padding:0 var(--s3) 0 var(--s2);white-space:nowrap;font-size:var(--text-md)}.brand small{display:none}.nav{display:flex;flex-wrap:nowrap}.nav a{white-space:nowrap;border-left:none;border-bottom:3px solid transparent;padding:var(--s2) var(--s3)}.nav a:hover{border-left:none;border-bottom-color:var(--accent)}.nav .section,.sidebar .only-wide{display:none}.sidebar-foot{position:-webkit-sticky;position:sticky;right:0;margin-top:0;margin-left:auto;padding:0 var(--s2) 0 var(--s3);border-top:none;display:flex;align-items:center;gap:var(--s3);white-space:nowrap;background:var(--nav-bg)}.sidebar-foot form{display:inline}.main{padding:var(--s4) var(--s3) 60px}.btn,button{min-height:var(--tap)}.pick-input{font-size:22px}.pick-table thead{display:none}.pick-table,.pick-table tbody,.pick-table td,.pick-table tr{display:block;width:100%}.pick-table tr{border:1px solid var(--line);border-radius:9px;margin-bottom:var(--s3);padding:var(--s1) var(--s3)}.pick-table td{border:none;padding:var(--s1) 0}.pack-grid{grid-template-columns:repeat(2,1fr)}.pack-buttons,.queue-bar{flex-direction:column;align-items:stretch}}@media print{.queue-bar,.sidebar{display:none}.shell{grid-template-columns:1fr}.panel{box-shadow:none;page-break-inside:avoid;break-inside:avoid}}.lang-switch{display:flex;gap:var(--s1);flex-wrap:wrap}.lang-switch button{border:none;cursor:pointer;font-size:var(--text-sm);padding:3px 10px;min-height:0;font-weight:400}.lang-switch.compact button{font-size:var(--text-xs);padding:2px var(--s2)}.lang-switch button.lang-current{background:var(--accent);color:var(--accent-ink);cursor:default;opacity:1}