:root{--bg: #0d141c;--card: #17222e;--card2: #1d2b39;--line: #2b3c4d;--txt: #e7eef5;--mut: #90a4b8;--accent: #4fc3f7;--good: #5cd6a0;--warn: #ffb454;--bad: #ff6b6b;--hard: #ff8a5c;--purple: #b39ddb;--teal: #4dd0e1;--header-bg: #101820;--nav-bg: #0c1219;--login-bg: rgba(0, 0, 0, .85);--shadow: rgba(0, 0, 0, .5);--modal-bg: rgba(0, 0, 0, .65)}[data-theme=light]{--bg: #f0f2f5;--card: #ffffff;--card2: #f5f7fa;--line: #d8dde5;--txt: #1a1f2b;--mut: #6b7a8d;--accent: #0284c7;--good: #16a34a;--warn: #d97706;--bad: #dc2626;--hard: #ea580c;--purple: #7c3aed;--teal: #0891b2;--header-bg: #ffffff;--nav-bg: #f8f9fb;--login-bg: rgba(0, 0, 0, .4);--shadow: rgba(0, 0, 0, .1);--modal-bg: rgba(0, 0, 0, .35)}*{box-sizing:border-box}body{margin:0;font-family:system-ui,Noto Sans TC,PingFang TC,sans-serif;background:var(--bg);color:var(--txt);line-height:1.5}a{color:var(--accent);text-decoration:none}button,input,select{font-family:inherit}.theme-toggle{background:var(--card2);border:1px solid var(--line);color:var(--txt);padding:5px 10px;border-radius:20px;cursor:pointer;font-size:14px}.theme-toggle:hover{border-color:var(--accent)}.theme-toggle .sun{display:none}.theme-toggle .moon,[data-theme=light] .theme-toggle .sun{display:inline}[data-theme=light] .theme-toggle .moon{display:none}.app-tabs{display:flex;gap:0;border-bottom:2px solid var(--line);background:var(--nav-bg);padding:0 16px;overflow-x:auto;position:sticky;top:0;z-index:60}.app-tabs a{padding:10px 18px;font-size:13px;color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap}.app-tabs a.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.inv .login-overlay{top:42px}.drawing-shell{height:100vh;display:flex;flex-direction:column;background:#f5f8f2}.drawing-shell iframe{flex:1;width:100%;border:0;background:#f5f8f2}.advisor header,.inv header{padding:14px 22px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:var(--header-bg)}.advisor h1,.inv h1{margin:0;font-size:18px}.advisor h1 small,.inv h1 small{color:var(--mut);font-weight:400;font-size:12px}.sub{color:var(--mut);font-size:12px}.grow{flex:1}.advisor .wrap{display:grid;grid-template-columns:380px 1fr;align-items:start}.advisor .inputs{border-right:1px solid var(--line);background:#101b25;padding:18px 20px 28px;position:sticky;top:42px;max-height:calc(100vh - 42px);overflow:auto}[data-theme=light] .advisor .inputs{background:#e8ecf1}.advisor .results{padding:18px 20px 40px}.advisor fieldset{border:1px solid var(--line);border-radius:9px;margin:0 0 14px;padding:11px 13px}.advisor legend{color:var(--accent);font-size:13px;padding:0 6px;font-weight:600}.advisor legend.hardleg{color:var(--hard)}.advisor label.row{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:13px;color:var(--mut);margin:7px 0}.advisor input[type=number],.advisor input[type=text],.advisor select{background:var(--card);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:5px 7px;font-size:13px}.advisor input[type=number]{width:110px;text-align:right}.advisor .order input{border-color:#2c4a63;background:#0f1f2b;font-weight:600}.advisor .hard input{border-color:#5a3a2a;background:#21160f}[data-theme=light] .advisor input,[data-theme=light] .advisor select{background:var(--card)}[data-theme=light] .advisor .order input{background:#dce8f0;border-color:#b0c8d8}[data-theme=light] .advisor .hard input{background:#fde8e0;border-color:#e8c0b0}.drop{border:1.5px dashed var(--line);border-radius:9px;padding:14px;text-align:center;color:var(--mut);font-size:13px;cursor:pointer}.drop:hover{border-color:var(--accent);color:var(--txt)}.drop img{max-width:100%;max-height:180px;border-radius:6px;margin-top:8px}.note{color:var(--mut);font-size:12px;margin-top:6px}.btnrow{margin-top:10px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}button.btn,.advisor .btn,.inv .toolbar>button,.inv .modal-foot button,.inv td>button,.inv .card>div>button,.inv .btnrow button,.inv .keyrow>button,.inv .login-box button,.inv .browse-item>button{background:var(--accent);border:0;color:#06121c;padding:8px 14px;border-radius:8px;cursor:pointer;font-size:13px;font-weight:600}button.btn.good,.inv button.good{background:var(--good);color:#06121c}button.btn.sec,.inv button.sec{background:var(--card2);color:var(--txt);border:1px solid var(--line)}button.btn.danger,.inv button.danger{background:var(--bad);color:#fff}button.btn:disabled,.inv button:disabled{opacity:.45;cursor:not-allowed}.inv .qty-ctrl button{background:var(--card2);color:var(--txt);border-radius:0;padding:4px 10px}.inv .close-btn{background:none;color:var(--mut);padding:2px 8px;font-size:20px}.inv .cart-dropdown button{background:transparent;color:var(--txt);font-weight:400;border:0;border-bottom:1px solid var(--line);border-radius:0;width:100%;text-align:left}.advisor .card,.inv .card{background:var(--card);border:1px solid var(--line);border-radius:11px;padding:14px 16px;margin-bottom:16px}.advisor h3,.inv h3{margin:0 0 9px;font-size:14px}.kpi{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.kpi .card{margin:0}.lbl{color:var(--mut);font-size:12px}.big{font-size:25px;font-weight:700}.big.good{color:var(--good)}.big.hard,.hardnum{color:var(--hard)}.rec{border-left:3px solid var(--good)}.advisor table{width:100%;border-collapse:collapse;font-size:13px}.advisor th,.advisor td{padding:6px 8px;text-align:right;border-bottom:1px solid var(--line)}.advisor th:first-child,.advisor td:first-child{text-align:left}.advisor tr.best td{background:#5cd6a021;font-weight:600}.pill{font-size:10.5px;padding:1px 7px;border-radius:99px;border:1px solid var(--line);color:var(--mut)}.tabs{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}.tab{padding:5px 13px;border:1px solid var(--line);border-radius:7px;cursor:pointer;font-size:13px;color:var(--mut);background:var(--card2)}.tab.on{background:var(--accent);color:#06121c;border-color:var(--accent);font-weight:600}.vizwrap{background:#0a1118;border:1px solid var(--line);border-radius:9px;padding:8px}[data-theme=light] .vizwrap{background:#e0e4e8}.vizwrap svg{width:100%;height:auto;display:block}.legend2{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--mut);margin-top:8px}.sw{display:inline-block;width:11px;height:11px;border-radius:2px;vertical-align:middle;margin-right:4px}.band{position:relative;height:86px;margin:16px 6px 10px}.band .track{position:absolute;top:38px;left:0;right:0;height:10px;border-radius:6px;background:#243443}.band .fill{position:absolute;top:38px;height:10px;border-radius:6px;background:var(--good);opacity:.55}.band .mark{position:absolute;top:30px;width:2px;height:26px;background:var(--txt)}.band .mark.hardm{background:var(--hard)}.band .mark.nom{background:var(--good)}.band .lab{position:absolute;font-size:11px;white-space:nowrap;line-height:1.25}.band .lab.up{top:0}.band .lab.dn{top:58px}.band .lab.hardl{color:var(--hard)}.ocr-overlay,.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--modal-bg);z-index:50;display:flex;align-items:center;justify-content:center;padding:16px}.ocr-modal,.modal{background:var(--card);border:1px solid var(--line);border-radius:14px;width:520px;max-width:94vw;max-height:88vh;overflow:auto;padding:22px 24px}.modal.wide{width:780px}.modal-hdr,.modal-foot{display:flex;align-items:center;gap:8px}.modal-hdr h3{flex:1;margin:0}.modal-foot{justify-content:flex-end;margin-top:16px}.ocr-nums{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.ocr-num{padding:3px 10px;border-radius:14px;border:1px solid var(--line);font-size:12px;background:var(--card2)}.ocr-num.used{border-color:var(--good);background:#5cd6a026;color:var(--good)}.field-row{display:flex;align-items:center;gap:8px;margin:7px 0;font-size:13px}.field-row label{width:180px;color:var(--mut);text-align:right;flex-shrink:0}.field-row select,.field-row input{flex:1;background:var(--card2);border:1px solid var(--line);color:var(--txt);border-radius:6px;padding:5px 7px}.progress{height:5px;background:var(--card2);border-radius:3px;overflow:hidden;margin-top:6px}.progress>div{height:100%;background:var(--accent);width:0}.status.good{color:var(--good)}.status.warn{color:var(--warn)}.status.bad{color:var(--bad)}.status.info{color:var(--accent)}.geom{margin-top:8px}.geom summary{color:var(--accent);cursor:pointer;font-size:12px}.inv .main{padding:16px 20px 40px;max-width:1440px;margin:0 auto}.nav-tabs{display:flex;gap:0;border-bottom:2px solid var(--line);padding:0 16px;background:var(--nav-bg);overflow-x:auto}.nav-tab{padding:10px 18px;font-size:13px;cursor:pointer;color:var(--mut);border-bottom:2px solid transparent;margin-bottom:-2px;white-space:nowrap;background:none}.nav-tab.on{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.kpi-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;margin-bottom:16px}.kpi-card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px}.kpi-card .val{font-size:26px;font-weight:700}.kpi-card .val.good{color:var(--good)}.kpi-card .val.warn{color:var(--warn)}.kpi-card .val.accent{color:var(--accent)}.kpi-card .sub{color:var(--mut);font-size:11px}.inv table{width:100%;border-collapse:collapse;font-size:13px}.inv th,.inv td{padding:8px 10px;text-align:left;border-bottom:1px solid var(--line)}.inv th{color:var(--accent);font-size:11px;letter-spacing:.3px;position:sticky;top:0;background:var(--card)}.inv td.num{text-align:right;font-variant-numeric:tabular-nums}.stock-low{color:var(--bad);font-weight:700}.stock-ok{color:var(--good)}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}.toolbar input,.toolbar select,.modal input,.modal select,.stack input,.stack select{padding:8px 12px;background:var(--card2);border:1px solid var(--line);border-radius:8px;color:var(--txt);font-size:13px}.toolbar input{width:220px}.tbl-wrap{overflow:auto;max-height:65vh}.today-badge{background:var(--accent);color:#06121c;padding:3px 10px;border-radius:99px;font-size:12px;font-weight:700}.user-badge{color:var(--accent);font-weight:600}.tx-in{color:var(--good)}.tx-out{color:var(--bad)}.tx-return{color:var(--purple)}.tx-type{display:inline-block;padding:2px 10px;border-radius:99px;font-size:11px;font-weight:600}.tx-type.in{background:#5cd6a026;color:var(--good)}.tx-type.out{background:#ff6b6b26;color:var(--bad)}.tx-type.return{background:#b39ddb26;color:var(--purple)}.login-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--login-bg);display:flex;align-items:center;justify-content:center;z-index:40}.login-box{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:40px 34px;width:380px;max-width:92vw}.login-box h2{text-align:center;margin:0 0 6px}.login-box .login-sub,.login-hint{text-align:center;color:var(--mut);font-size:12px}.login-box label{display:block;font-size:13px;color:var(--mut);margin:12px 0 4px}.login-box input{width:100%;padding:10px 12px;background:var(--card2);border:1px solid var(--line);border-radius:8px;color:var(--txt)}.login-box button{width:100%;margin-top:18px}.login-err{color:var(--bad);font-size:12px;min-height:18px;text-align:center;margin-top:8px}.badge{font-size:11px;padding:2px 8px;border-radius:99px;background:#ff6b6b26;color:var(--bad)}.sm{padding:5px 10px!important;font-size:11px!important}.analysis-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.analysis-grid .card{margin:0}.span2{grid-column:1 / -1}.month-nav{display:flex;gap:6px;align-items:center}.month-label{font-size:15px;font-weight:700;min-width:120px;text-align:center}.health-bar{height:8px;border-radius:4px;background:var(--card2);overflow:hidden;margin-top:6px}.health-fill{height:100%}.health-good{background:var(--good)}.health-warn{background:var(--warn)}.health-bad{background:var(--bad)}.rank-list{list-style:none;padding:0;margin:0}.rank-list li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}.rank-num{width:22px;height:22px;border-radius:50%;background:var(--card2);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:700;color:var(--accent)}.rank-bar{height:6px;border-radius:3px;background:var(--accent);opacity:.5}.item-cat{font-size:10px;padding:1px 6px;border-radius:4px}.cat-cartons{background:#4fc3f726;color:var(--accent)}.cat-pallets{background:#b39ddb26;color:var(--purple)}.cat-others{background:#4dd0e126;color:var(--teal)}.stack label{display:block;font-size:13px;color:var(--mut);margin:10px 0 4px}.stack input,.stack select{width:100%}.hint{color:var(--mut);font-size:11px}.preview{background:var(--card2);border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin-top:8px;color:var(--good);font-size:13px}.cart-search{position:relative}.cart-dropdown{position:absolute;top:100%;left:0;right:0;background:var(--card);border:1px solid var(--line);border-radius:0 0 8px 8px;max-height:220px;overflow:auto;z-index:5}.cart-dropdown button{display:flex;width:100%;gap:8px;align-items:center;background:transparent;color:var(--txt);border:0;border-bottom:1px solid var(--line);border-radius:0;text-align:left;font-weight:400}.browse-list{max-height:280px;overflow:auto;border:1px solid var(--line);border-radius:8px}.browse-cat{padding:6px 12px;font-size:11px;font-weight:600;background:var(--card2);position:sticky;top:0}.browse-item,.cart-line{display:flex;align-items:center;gap:8px;padding:6px 12px;border-bottom:1px solid var(--line);font-size:13px}.qty-ctrl{display:inline-flex;align-items:center;border:1px solid var(--line);border-radius:6px;overflow:hidden}.qty-ctrl button{border-radius:0;background:var(--card2);color:var(--txt);padding:4px 10px}.qty-ctrl input{width:64px;text-align:center;border:0;border-left:1px solid var(--line);border-right:1px solid var(--line);background:var(--bg);color:var(--txt);padding:5px}.cart-summary{margin-top:12px;padding:10px 14px;background:var(--card2);border-radius:8px}.close-btn{background:none;border:0;color:var(--mut);font-size:20px;cursor:pointer}.out-step{margin-bottom:16px}.step-label{font-size:12px;color:var(--accent);font-weight:600;margin-bottom:6px}.keyrow{display:flex;gap:8px}.keyrow input{flex:1}.chart-wrap svg{width:100%;height:auto}.empty{color:var(--mut);text-align:center;padding:20px}@media (max-width: 900px){.advisor .wrap{grid-template-columns:1fr}.advisor .inputs{position:static;max-height:none;border-right:0;border-bottom:1px solid var(--line)}.kpi,.analysis-grid{grid-template-columns:1fr 1fr}.span2{grid-column:auto}}@media (max-width: 720px){.kpi,.kpi-row{grid-template-columns:1fr 1fr}.toolbar input{width:100%}}
