:root{--bg:#f6f7f9;--surface:#ffffff;--text:#16202a;--muted:#637083;--line:#e3e7ec;--accent:#0f5ea8;--accent-ink:#ffffff;--prod:#8a5a00;--prod-bg:#fdf0d5;--ready:#6b3fa0;--ready-bg:#efe6fa;--route:#0f5ea8;--route-bg:#dcebfa;--port:#00717a;--port-bg:#d9f2f3;--done:#1d6b3a;--done-bg:#dcf3e4;--bad:#b3261e;--bad-bg:#fde4e1;--warn:#8a5a00;--warn-bg:#fdf0d5;--radius:10px;--viz-1:#2a78d6;--viz-2:#eb6834;--viz-3:#1baf7a;--viz-crit:#d03b3b;--viz-muted:#898781;--viz-grid:#e1e0d9;--viz-axis:#c3c2b7}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f141a;--surface:#171e26;--text:#e8edf3;--muted:#93a0b1;--line:#28323d;--accent:#5aa5e8;--accent-ink:#08121c;--prod:#f2c46b;--prod-bg:#3a2c0f;--ready:#c9a8f0;--ready-bg:#2f2142;--route:#8bc3f5;--route-bg:#14304b;--port:#6fd3da;--port-bg:#0e3336;--done:#7fd9a1;--done-bg:#12361f;--bad:#ff9a92;--bad-bg:#411a17;--warn:#f2c46b;--warn-bg:#3a2c0f;--viz-1:#3987e5;--viz-2:#d95926;--viz-3:#199e70;--viz-grid:#2c2c2a;--viz-axis:#383835}}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,Noto Sans CJK SC,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1{font-size:22px;margin:0 0 4px}h2{font-size:15px;margin:0 0 10px}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:13px}.topbar{background:var(--surface);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:5}.topbar-in{max-width:1280px;margin:0 auto;padding:0 16px;gap:20px;height:52px}.brand,.topbar-in{display:flex;align-items:center}.brand{font-weight:700;color:var(--text);gap:8px}.brand:hover{text-decoration:none}.nav{display:flex;gap:4px;flex:1 1;overflow-x:auto}.nav a{color:var(--muted);padding:6px 10px;border-radius:8px;white-space:nowrap}.nav a:hover{background:var(--bg);text-decoration:none}.nav a[aria-current=page]{color:var(--text);background:var(--bg);font-weight:600}.who{display:flex;gap:10px;align-items:center;color:var(--muted);font-size:12px}.who form{margin:0}.page{max-width:1280px;margin:0 auto;padding:20px 16px 60px}.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-bottom:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:10px;gap:10px;margin-bottom:16px}.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;color:var(--text);display:block}.kpi:hover{text-decoration:none}.kpi.on,.kpi:hover{border-color:var(--accent)}.kpi.on{box-shadow:0 0 0 1px var(--accent)}.kpi b{font-size:26px;display:block;line-height:1.1}.kpi span{color:var(--muted);font-size:12px}.filters{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;align-items:center}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:7px 10px;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}textarea{width:100%;min-height:80px;resize:vertical}.filters input[type=search]{flex:1 1 240px}.btn{font:inherit;display:inline-flex;align-items:center;gap:6px;padding:7px 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--text);cursor:pointer}.btn:hover{text-decoration:none}.btn.primary,.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--accent-ink);font-weight:600}.btn.danger{color:var(--bad)}.btn.small{padding:3px 8px;font-size:12px}.btn.wide{width:100%;justify-content:center}.tablewrap{overflow-x:auto;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}table{border-collapse:collapse;width:100%}td,th{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);white-space:nowrap;background:var(--surface)}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:color-mix(in srgb,var(--accent) 5%,transparent)}td.num,th.num{text-align:right}.nowrap{white-space:nowrap}.items{margin:0;padding:0;list-style:none;color:var(--muted);font-size:12px}.items b{color:var(--text);font-weight:600}.badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap}.badge.IN_PRODUCTION{color:var(--prod);background:var(--prod-bg)}.badge.READY_FOR_PICKUP{color:var(--ready);background:var(--ready-bg)}.badge.EN_ROUTE{color:var(--route);background:var(--route-bg)}.badge.ARRIVED_PORT{color:var(--port);background:var(--port-bg)}.badge.AT_WAREHOUSE{color:var(--done);background:var(--done-bg)}.badge.plan-order_now{color:var(--bad);background:var(--bad-bg)}.badge.plan-order_soon{color:var(--warn);background:var(--warn-bg)}.badge.plan-ok{color:var(--done);background:var(--done-bg)}.badge.plan-overstock{color:var(--route);background:var(--route-bg)}.badge.plan-no_demand{color:var(--muted);background:var(--bg);border:1px solid var(--line)}.flag{display:inline-block;margin-top:3px;font-size:11px;font-weight:600;padding:1px 7px;border-radius:6px}.flag.late,.flag.pickup_overdue{color:var(--bad);background:var(--bad-bg)}.flag.due_soon{color:var(--warn);background:var(--warn-bg)}.flash{padding:8px 12px;border-radius:8px;margin:0 0 12px}.flash.ok{background:var(--done-bg);color:var(--done)}.flash.bad{background:var(--bad-bg);color:var(--bad)}.timeline{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));grid-gap:0;gap:0;margin:4px 0 8px}.step{position:relative;padding:22px 8px 0 0}.step:before{top:7px;right:0;height:3px;background:var(--line)}.step:after,.step:before{content:"";position:absolute;left:0}.step:after{top:0;width:17px;height:17px;border-radius:50%;background:var(--surface);border:3px solid var(--line)}.step.done:after,.step.done:before{background:var(--done)}.step.done:after{border-color:var(--done)}.step.now:after{border-color:var(--accent);background:var(--surface);box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 22%,transparent)}.step b{display:block;font-size:12px}.step span{color:var(--muted);font-size:13px}.step.empty span{opacity:.6}.grid2{display:grid;grid-template-columns:1fr 1fr;grid-gap:16px;gap:16px}@media (max-width:800px){.grid2{grid-template-columns:1fr}.who span{display:none}}dl.facts{display:grid;grid-template-columns:max-content 1fr;grid-gap:6px 16px;gap:6px 16px;margin:0}dl.facts dt{color:var(--muted)}dl.facts dd{margin:0}.form{display:grid;grid-gap:14px;gap:14px}.fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));grid-gap:10px 14px;gap:10px 14px}.fields label,.form label.block{display:grid;grid-gap:3px;gap:3px;font-size:12px;color:var(--muted)}.fields input,.fields select,.form label.block input{color:var(--text);font-size:14px}.itemrow{display:grid;grid-template-columns:2fr 1.2fr .8fr 1.4fr auto;grid-gap:6px;gap:6px;margin-bottom:6px}@media (max-width:800px){.itemrow{grid-template-columns:1fr 1fr}}.sticky-actions{position:-webkit-sticky;position:sticky;bottom:0;background:var(--bg);padding:10px 0;display:flex;gap:8px;border-top:1px solid var(--line)}.remark-form{margin:0;min-width:190px}.remark-form input{width:100%;padding:4px 8px;font-size:13px}.remark-text{max-width:280px;font-size:13px;white-space:pre-wrap}.docs{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));grid-gap:12px;gap:12px}.doc-cat{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:var(--bg)}.doc-head{display:flex;justify-content:space-between;align-items:center}.doc-count{min-width:22px;text-align:center;padding:0 6px;border-radius:999px;font-size:12px;font-weight:600;background:var(--line);color:var(--muted)}.doc-count.has{background:var(--done-bg);color:var(--done)}.doc-list{list-style:none;margin:6px 0;padding:0;display:grid;grid-gap:4px;gap:4px}.doc-list li{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center}.doc-name{word-break:break-all}.doc-upload{display:flex;gap:6px;align-items:center;margin-top:8px;flex-wrap:wrap}.doc-upload input[type=file]{flex:1 1 160px;max-width:100%;font-size:12px;padding:3px}.docbadge{margin-left:6px;font-size:12px;color:var(--muted)}.embed-page{display:flex;flex-direction:column;height:calc(100vh - 53px)}.embed-bar{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--line)}.embed-frame{flex:1 1;width:100%;border:0;background:var(--bg)}.viz-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:6px}.hero{text-align:right}.hero b{font-size:40px;line-height:1;display:block;letter-spacing:-.02em}.chart{width:100%;height:auto;display:block}.chart .grid{stroke:var(--viz-grid);stroke-width:1}.chart .axis{stroke:var(--viz-axis);stroke-width:1}.chart .tick{fill:var(--muted);font-size:11px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart .tick.strong,.chart .val{fill:var(--text)}.chart .val{font-size:12px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.chart .col:hover .bar{opacity:.78}.chart .col:hover rect:first-child,.chart .row:hover>rect:first-child{fill:color-mix(in srgb,var(--accent) 7%,transparent)}.chart .rowlabel{fill:var(--accent);font-size:12px}.chart .rowsub{fill:var(--muted);font-size:10.5px}.chart .mark{fill:var(--text);stroke:var(--surface);stroke-width:2}.chart .today{stroke:var(--viz-crit);stroke-width:1.5;stroke-dasharray:4 3}.chart .todaylabel{fill:var(--viz-crit);font-size:11px;font-weight:600}.legend{display:flex;gap:18px;flex-wrap:wrap;margin-bottom:10px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:14px;height:8px;border-radius:3px;display:inline-block}.legend i.diamond{width:9px;height:9px;border-radius:1px;background:var(--text);transform:rotate(45deg)}details summary{cursor:pointer;margin-top:4px}.track{display:flex;gap:2px;margin-top:6px;width:78px}.track i{flex:1 1;height:4px;border-radius:2px;background:var(--line)}.track i.on{background:var(--viz-1)}.login{min-height:100vh;display:grid;place-items:center;padding:16px}.login-card{width:100%;max-width:380px;display:grid;grid-gap:12px;gap:12px;text-align:center}.login-card .logo{font-size:34px;color:var(--accent)}.login-card p{margin:0}.dev{border-top:1px dashed var(--line);padding-top:10px}code.block{display:block;padding:8px 10px;border-radius:8px;background:var(--bg);border:1px solid var(--line);overflow-x:auto;-webkit-user-select:all;-moz-user-select:all;user-select:all}