:root{--bg: #f5f6f8;--surface: #ffffff;--surface-2: #f0f2f5;--ink: #141821;--ink-2: #4a5263;--muted: #7a8292;--line: #e1e4ea;--line-2: #cfd4dc;--accent: #1f6feb;--accent-ink: #ffffff;--accent-soft: #e6efff;--ok: #137a47;--ok-soft: #e3f4ea;--warn: #9a5b00;--warn-soft: #fff1d6;--bad: #c0262d;--bad-soft: #fde7e8;--info: #1f5fbf;--info-soft: #e5eefc;--shadow: 0 1px 2px rgba(16,24,40,.06), 0 1px 3px rgba(16,24,40,.08);--radius: 8px;--sidebar: #111827;--sidebar-ink: #c9cfda;--sidebar-active: #1f2937;--mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;color-scheme:light}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--bg: #0e1116;--surface: #161a21;--surface-2: #1c212a;--ink: #e6e9ef;--ink-2: #b4bbc8;--muted: #8a92a3;--line: #262c37;--line-2: #333b48;--accent: #4c8dff;--accent-ink: #0b1020;--accent-soft: #1a2740;--ok: #3fcf8e;--ok-soft: #12291f;--warn: #f0b44c;--warn-soft: #2d2412;--bad: #ff6b72;--bad-soft: #321718;--info: #79a9ff;--info-soft: #172338;--shadow: 0 1px 2px rgba(0,0,0,.4);--sidebar: #0a0d12;--sidebar-active: #1a2030;color-scheme:dark}}:root[data-theme=dark]{--bg: #0e1116;--surface: #161a21;--surface-2: #1c212a;--ink: #e6e9ef;--ink-2: #b4bbc8;--muted: #8a92a3;--line: #262c37;--line-2: #333b48;--accent: #4c8dff;--accent-ink: #0b1020;--accent-soft: #1a2740;--ok: #3fcf8e;--ok-soft: #12291f;--warn: #f0b44c;--warn-soft: #2d2412;--bad: #ff6b72;--bad-soft: #321718;--info: #79a9ff;--info-soft: #172338;--shadow: 0 1px 2px rgba(0,0,0,.4);--sidebar: #0a0d12;--sidebar-active: #1a2030;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:20px;margin:0;font-weight:650;letter-spacing:-.01em}h2{font-size:15px;margin:0 0 12px;font-weight:650}h3{font-size:13px;margin:0 0 8px;font-weight:650;color:var(--ink-2);text-transform:uppercase;letter-spacing:.04em}code,.mono{font-family:var(--mono);font-size:12.5px}.muted{color:var(--muted)}.num{text-align:right;font-variant-numeric:tabular-nums}.shell{display:grid;grid-template-columns:232px 1fr;min-height:100vh}.sidebar{background:var(--sidebar);color:var(--sidebar-ink);padding:14px 10px;position:sticky;top:0;height:100vh;overflow-y:auto}.brand{display:flex;align-items:center;gap:10px;color:#fff;font-weight:700;padding:4px 8px 16px;font-size:15px}.brand img{width:26px;height:26px}.nav-group{margin:10px 0 4px;padding:0 10px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:#6b7385}.nav a{display:flex;align-items:center;gap:10px;color:var(--sidebar-ink);padding:7px 10px;border-radius:6px;font-size:13.5px}.nav a:hover{background:var(--sidebar-active);text-decoration:none;color:#fff}.nav a.router-link-active{background:var(--sidebar-active);color:#fff;box-shadow:inset 2px 0 0 var(--accent)}.nav svg{width:16px;height:16px;flex:none;opacity:.85}.main{min-width:0;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:12px;padding:10px 24px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.topbar .spacer{flex:1}.content{padding:22px 24px 48px;max-width:1440px;width:100%}.page-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}.page-head .spacer{flex:1}.btn.menu-btn{display:none}@media (max-width: 900px){.shell{grid-template-columns:1fr}.sidebar{position:fixed;z-index:50;width:260px;left:-270px;transition:left .2s}.sidebar.open{left:0;box-shadow:0 0 0 100vmax #00000073}.btn.menu-btn{display:inline-flex}.content{padding:16px 16px 40px}.topbar{padding:8px 16px}}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card-body{padding:16px 18px}.card-head{display:flex;align-items:center;gap:10px;padding:12px 18px;border-bottom:1px solid var(--line)}.card-head h2{margin:0}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}@media (max-width: 1100px){.grid-4,.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 700px){.grid-2,.grid-3,.grid-4{grid-template-columns:1fr}}.stat{padding:14px 16px}.stat .k{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.05em}.stat .v{font-size:24px;font-weight:650;margin-top:4px;font-variant-numeric:tabular-nums}.stat .s{color:var(--ink-2);font-size:12.5px;margin-top:2px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 14px;border-radius:6px;border:1px solid var(--line-2);background:var(--surface);color:var(--ink);font:inherit;font-weight:550;cursor:pointer;white-space:nowrap}.btn:hover{background:var(--surface-2);text-decoration:none}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn.primary:hover{filter:brightness(1.06)}.btn.danger{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 40%,var(--line-2))}.btn.ghost{border-color:transparent;background:transparent}.btn.sm{height:28px;padding:0 10px;font-size:13px}.btn.lg{height:48px;font-size:16px;padding:0 20px}.btn:disabled{opacity:.5;cursor:not-allowed}.btn svg{width:16px;height:16px}input,select,textarea{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line-2);border-radius:6px;padding:7px 10px;height:34px;min-width:0}textarea{height:auto;min-height:80px;resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb,var(--accent) 35%,transparent);border-color:var(--accent)}input[type=checkbox]{height:auto;width:16px;height:16px;accent-color:var(--accent)}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field>span{font-size:12.5px;color:var(--ink-2);font-weight:550}.field .hint{font-size:12px;color:var(--muted)}.field .err{font-size:12px;color:var(--bad)}.check{display:flex;align-items:center;gap:8px;font-size:13.5px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 14px}.form-grid .full{grid-column:1 / -1}@media (max-width: 640px){.form-grid{grid-template-columns:1fr}}.toolbar{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.toolbar input[type=search]{width:260px}@media (max-width: 640px){.toolbar input[type=search]{width:100%}}.table-wrap{overflow-x:auto}table.data{width:100%;border-collapse:collapse;font-size:13.5px}table.data th{text-align:left;font-weight:600;color:var(--ink-2);font-size:12px;text-transform:uppercase;letter-spacing:.04em;padding:9px 12px;border-bottom:1px solid var(--line);background:var(--surface-2);white-space:nowrap}table.data td{padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:middle}table.data tr.click{cursor:pointer}table.data tr.click:hover td{background:var(--surface-2)}table.data tr:last-child td{border-bottom:0}.pager{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:1px solid var(--line);color:var(--ink-2);font-size:13px}.pager .spacer{flex:1}.empty{padding:36px;text-align:center;color:var(--muted)}.badge{display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:11px;font-size:12px;font-weight:600;text-transform:capitalize;white-space:nowrap}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.bad{background:var(--bad-soft);color:var(--bad)}.badge.info{background:var(--info-soft);color:var(--info)}.badge.muted{background:var(--surface-2);color:var(--muted)}.toasts{position:fixed;right:16px;bottom:16px;display:flex;flex-direction:column;gap:8px;z-index:100;max-width:min(420px,calc(100vw - 32px))}.toast{padding:11px 14px;border-radius:8px;background:var(--ink);color:var(--bg);box-shadow:0 6px 20px #0003;font-size:14px}.toast.error{background:var(--bad);color:#fff}.toast.ok{border-left:4px solid var(--ok)}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a0e80;display:flex;align-items:flex-start;justify-content:center;padding:6vh 16px;z-index:60;overflow-y:auto}.modal{width:min(720px,100%);background:var(--surface);border-radius:10px;border:1px solid var(--line);box-shadow:0 20px 50px #0000004d}.modal.wide{width:min(1000px,100%)}.modal-head{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line)}.modal-head h2{margin:0;flex:1}.modal-body{padding:18px}.modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 18px;border-top:1px solid var(--line)}.alert{padding:10px 14px;border-radius:6px;font-size:13.5px;margin-bottom:12px}.alert.bad{background:var(--bad-soft);color:var(--bad)}.alert.warn{background:var(--warn-soft);color:var(--warn)}.alert.ok{background:var(--ok-soft);color:var(--ok)}.alert.info{background:var(--info-soft);color:var(--info)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:6px 18px;font-size:13.5px}.kv dt{color:var(--muted)}.kv dd{margin:0}.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-bottom:16px;overflow-x:auto}.tabs button{background:none;border:0;padding:9px 14px;font:inherit;font-weight:550;color:var(--ink-2);cursor:pointer;border-bottom:2px solid transparent;white-space:nowrap}.tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.scan-page{max-width:560px;margin:0 auto}.scan-step{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:6px}.scan-input{width:100%;height:56px;font-size:20px;font-family:var(--mono);padding:0 16px;border-width:2px}.scan-target{font-size:30px;font-weight:700;font-family:var(--mono);letter-spacing:.02em}.scan-card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:14px}.scan-ok{border-color:var(--ok);box-shadow:0 0 0 3px var(--ok-soft)}.qty-pad{display:flex;align-items:center;gap:10px}.qty-pad input{height:56px;font-size:24px;text-align:center;width:120px}.qty-pad .btn{height:56px;width:56px;font-size:24px}.tree ul{list-style:none;margin:0;padding-left:18px;border-left:1px dashed var(--line-2)}.tree>ul{padding-left:0;border:0}.tree li{padding:2px 0}.tree .node{display:inline-flex;align-items:center;gap:8px;padding:3px 8px;border-radius:5px;cursor:pointer}.tree .node:hover{background:var(--surface-2)}.tree .node.sel{background:var(--accent-soft)}.login{min-height:100vh;display:grid;place-items:center;padding:16px}.login .card{width:min(400px,100%)}@media print{.sidebar,.topbar,.no-print{display:none!important}.shell{display:block}}:root{--green: #138a4b;--green-soft: #e2f5ea;--amber: #a86400;--amber-soft: #fff0d1;--red: #c5262e;--red-soft: #fde4e5}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--green: #3fcf8e;--green-soft: #12291f;--amber: #f2b34a;--amber-soft: #2f2410;--red: #ff6b72;--red-soft: #341819}}:root[data-theme=dark]{--green: #3fcf8e;--green-soft: #12291f;--amber: #f2b34a;--amber-soft: #2f2410;--red: #ff6b72;--red-soft: #341819}.age{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 9px;border-radius:11px;font-size:12px;font-weight:650;white-space:nowrap;font-variant-numeric:tabular-nums}.age:before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}.age.green{background:var(--green-soft);color:var(--green)}.age.amber{background:var(--amber-soft);color:var(--amber)}.age.red{background:var(--red-soft);color:var(--red)}.age.none{background:var(--surface-2);color:var(--muted)}tr.row-red td:first-child{box-shadow:inset 3px 0 0 var(--red)}tr.row-amber td:first-child{box-shadow:inset 3px 0 0 var(--amber)}tr.row-green td:first-child{box-shadow:inset 3px 0 0 var(--green)}.band-card{cursor:pointer;border-top:3px solid var(--line)}.band-card.green{border-top-color:var(--green)}.band-card.amber{border-top-color:var(--amber)}.band-card.red{border-top-color:var(--red)}.band-card.on{outline:2px solid var(--accent);outline-offset:-1px}.band-card .v{color:var(--ink)}.legend{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--ink-2)}.period-strip{display:flex;gap:3px}.period-strip span{width:14px;height:14px;border-radius:3px;background:var(--surface-2)}.period-strip span.ok{background:var(--accent);opacity:.55}.period-strip span.green{background:var(--green)}.period-strip span.amber{background:var(--amber)}.period-strip span.red{background:var(--red)}.period-strip span.open{background:var(--line-2)}table.data td.mono{white-space:nowrap}
