.btn.sm{padding:3px 10px;font-size:12px}.btn.danger{color:var(--bad);border-color:var(--bad-soft)}.btn.danger.solid{background:var(--bad);color:#fff;border-color:var(--bad)}.btn.ghost{color:var(--accent);background:0 0;border-color:#0000;padding:4px 8px}a.btn{color:inherit;align-items:center;text-decoration:none;display:inline-flex}select.input{padding-right:24px}textarea.input{resize:vertical;width:100%;min-height:70px}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.toolbar .grow{flex:1;min-width:160px}.toolbar label.f{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.toolbar label.f .input{color:var(--ink)}.banner{border-radius:var(--r);background:var(--warn-soft);flex-wrap:wrap;align-items:center;gap:10px;padding:10px 14px;font-size:13px;display:flex}.banner.info{background:var(--accent-soft)}.banner .grow{flex:1}.empty{text-align:center;color:var(--muted);padding:28px 12px}.loading{text-align:center;color:var(--muted);padding:24px}.toast-box{left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:60;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(92vw,520px);display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);pointer-events:auto;border-radius:8px;padding:9px 16px;font-size:13px;box-shadow:0 4px 16px #00000059}.toast.error{background:var(--bad);color:#fff}.ov{z-index:40;padding:max(24px, env(safe-area-inset-top,0px)) 12px 24px;background:#050a0f99;justify-content:center;align-items:flex-start;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{background:var(--panel);border:1px solid var(--line);border-radius:10px;flex-direction:column;width:min(640px,100%);margin-block:auto;display:flex}.modal.wide{width:min(820px,100%)}.modal form{display:contents}.modal-h{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:8px;padding:14px 18px;display:flex}.modal-h h3{margin:0;font-size:16px}.modal-b{flex-direction:column;gap:14px;padding:16px 18px;display:flex}.modal-f{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:flex-end;gap:8px;padding:12px 18px;display:flex}.modal-f .left{margin-right:auto}.fields{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;display:grid}.field{flex-direction:column;gap:4px;min-width:0;display:flex}.field>label{flex-direction:column;gap:4px;display:flex}.field .lbl{color:var(--muted);font-size:12px}.field .hint{color:var(--muted);font-size:11px}.field.full{grid-column:1/-1}.field .input{width:100%}.req:after{content:" *";color:var(--bad)}.calc{color:var(--muted);background:var(--soft);border-radius:6px;flex-wrap:wrap;gap:16px;padding:8px 12px;font-size:12px;display:flex}.calc b{color:var(--ink);font-family:var(--f-num);font-weight:600}.ctx{background:var(--soft);border-radius:6px;flex-wrap:wrap;gap:6px 14px;padding:8px 12px;font-size:13px;display:flex}.radio-list{flex-direction:column;gap:6px;display:flex}.radio-list label{border:1px solid var(--line);cursor:pointer;border-radius:6px;align-items:flex-start;gap:8px;padding:8px 10px;font-size:13px;display:flex}.radio-list label:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.progress{background:var(--soft);border-radius:999px;min-width:70px;height:8px;overflow:hidden}.progress>span{background:var(--ok);border-radius:999px;height:100%;display:block}.progress.lg{height:14px}.prog-cell{align-items:center;gap:8px;min-width:120px;display:flex}.prog-cell .num{min-width:46px;font-size:12px}.prog-cell .progress{flex:1}.steps{color:var(--muted);white-space:nowrap;align-items:center;gap:0;font-size:12px;display:inline-flex}.steps .st{align-items:center;gap:4px;display:inline-flex}.steps .st i{font-size:13px;font-style:normal}.steps .st.on{color:var(--ink)}.steps .st.on i{color:var(--ok)}.steps .ln{background:var(--line);width:14px;height:1px;margin:0 4px}.steps .ln.on{background:var(--ok)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--ink)}th.num,td.num{text-align:right}tbody tr.click{cursor:pointer}tbody tr.click:hover{background:var(--soft)}td.wrap{white-space:normal;min-width:180px}.sub-line{color:var(--muted);font-size:12px}.link-plain{color:inherit;text-decoration:none}.link-plain:hover{color:var(--accent)}.only-mobile{display:none}.cards{flex-direction:column;gap:8px;display:flex}.ccard{border:1px solid var(--line);background:var(--panel);color:inherit;border-radius:8px;flex-direction:column;gap:6px;padding:12px;text-decoration:none;display:flex}.ccard .t{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.ccard .nm{font-weight:500}.ccard .meta{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:12px;display:flex}.ccard .actions{justify-content:flex-end;gap:8px;display:flex}.funnel{flex-direction:column;gap:10px;display:flex}.fn-row{grid-template-columns:56px 1fr 110px;align-items:center;gap:10px;font-size:13px;display:grid}.fn-bar{background:var(--soft);border-radius:4px;height:18px;overflow:hidden}.fn-bar span{background:var(--accent);border-radius:4px;min-width:2px;height:100%;display:block}.fn-row:nth-child(2) .fn-bar span{background:var(--blue)}.fn-row:nth-child(3) .fn-bar span{background:var(--violet)}.fn-row:nth-child(4) .fn-bar span{background:var(--ok)}.rem-zero{opacity:.45}.rem-bad td.cnt{color:var(--bad);font-weight:600}.rem-warn td.cnt{color:var(--warn);font-weight:600}.kpi.bad{background:var(--bad-soft)}.legend-dot{border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.split2{grid-template-columns:1fr 1fr;gap:12px;display:grid}.chart-box{width:100%;height:260px}.hdr{flex-direction:column;gap:6px;display:flex}.hdr-top{flex-wrap:wrap;align-items:baseline;gap:10px 16px;display:flex}.hdr-top .code{font-family:var(--f-num);font-size:18px;font-weight:700}.hdr-top .name{font-size:16px;font-weight:500}.hdr-actions{gap:8px;margin-left:auto;display:flex}.kv{color:var(--muted);flex-wrap:wrap;gap:6px 18px;font-size:13px;display:flex}.kv b{color:var(--ink);font-weight:500}.case-sum{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;display:grid}.case-sum div{color:var(--muted);flex-direction:column;font-size:12px;display:flex}.case-sum b{font-family:var(--f-num);color:var(--ink);font-variant-numeric:tabular-nums;font-size:17px;font-weight:600}.icard{border:1px solid var(--line);background:var(--panel);border-radius:8px;flex-direction:column;gap:8px;padding:12px 14px;display:flex}.icard.bad{border-color:var(--bad)}.icard-top{flex-wrap:wrap;align-items:center;gap:8px 14px;display:flex}.icard-top .ttl{font-weight:600}.icard-top .amt{font-family:var(--f-num);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.icard-mid{flex-wrap:wrap;align-items:center;gap:8px 16px;display:flex}.icard-bot{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.icard-bot .grow{flex:1}.icard .meta{color:var(--muted);flex-wrap:wrap;gap:4px 16px;font-size:12px;display:flex}.checks{color:var(--bad);flex-direction:column;gap:2px;font-size:12px;display:flex}.rcpts{border-top:1px dashed var(--line);flex-direction:column;gap:6px;padding-top:8px;display:flex}.logrow{border-bottom:1px solid var(--line);grid-template-columns:140px 56px 1fr;gap:10px;padding:8px 0;font-size:13px;display:grid}.logrow:last-child{border-bottom:none}.subtabs{border-bottom:1px solid var(--line);flex-wrap:wrap;gap:4px;display:flex}.subtabs button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:8px 14px;font-weight:500}.subtabs button.active{color:var(--accent);border-bottom-color:var(--accent)}.note{color:var(--muted);font-size:12px}.inactive td{opacity:.5}.chk{align-items:center;gap:6px;font-size:13px;display:inline-flex}@media (width<=720px){.only-desktop{display:none!important}.only-mobile{display:flex}.kpis{grid-template-columns:repeat(2,1fr)}.kpis .kpi:last-child:nth-child(odd){grid-column:span 2}.kpi .v{font-size:19px}.grid2,.split2{grid-template-columns:1fr}.logrow{grid-template-columns:1fr;gap:2px}.hdr-actions{width:100%;margin-left:0}.toolbar>*{flex:140px}.toolbar label.f{flex:100%;justify-content:space-between}.toolbar label.f .input{flex:1}.toolbar .btn{flex:none}.ov{align-items:flex-end;padding:0}.modal,.modal.wide{border-bottom:none;border-radius:14px 14px 0 0;width:100%;max-height:94dvh;margin-block:0;overflow-y:auto}.modal-h{background:var(--panel);z-index:1;position:sticky;top:0}.modal-f{background:var(--panel);padding-bottom:max(12px, env(safe-area-inset-bottom,0px));position:sticky;bottom:0}.modal-f .btn{flex:1;padding:11px 18px}.modal-f .left{flex:100%;margin-right:0}.input,select.input{padding:9px 10px;font-size:16px}.icard-bot .btn.primary{flex:1;padding:11px 14px}.fields{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}:root{--bg:#0f151b;--panel:#17202a;--ink:#e6ebf0;--muted:#97a5b3;--line:#2a3643;--soft:#1e2934;--accent:#3fb3c6;--accent-ink:#06222a;--accent-soft:#163a43;--ok:#4cc27e;--ok-soft:#163626;--warn:#e3b53f;--warn-soft:#3a3115;--late:#f0904a;--late-soft:#3d2614;--bad:#f06b6b;--bad-soft:#401c1e;--blue:#7fa4f0;--blue-soft:#1c2a45;--violet:#a98ff0;--violet-soft:#2a2244;--f-body:"Noto Sans TC","PingFang TC","Microsoft JhengHei",system-ui,sans-serif;--f-num:"IBM Plex Sans","Noto Sans TC",system-ui,sans-serif;--r:8px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root[data-theme=light]{--bg:#f2f4f6;--panel:#fff;--ink:#16202b;--muted:#5d6b79;--line:#dce1e7;--soft:#e9edf1;--accent:#0a6c7e;--accent-ink:#fff;--accent-soft:#ddf0f3;--ok:#1e8a4c;--ok-soft:#dff3e6;--warn:#b7860b;--warn-soft:#fbf1d4;--late:#c9631a;--late-soft:#fce7d6;--bad:#c23434;--bad-soft:#f9dfdf;--blue:#2f5fb3;--blue-soft:#e1e9f7;--violet:#6a4bb0;--violet-soft:#ece6f8;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:14px;line-height:1.55}a{color:var(--accent)}h1,h2{text-wrap:balance;margin:0}h2{font-size:16px}.muted{color:var(--muted)}.flag{color:var(--bad);font-size:12px}.num{font-family:var(--f-num);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.wrap{max-width:1240px;padding-left:max(16px, env(safe-area-inset-left,0px));padding-right:max(16px, env(safe-area-inset-right,0px));margin:0 auto}header.top{z-index:5;background:var(--panel);border-bottom:1px solid var(--line);padding-top:env(safe-area-inset-top,0px);position:sticky;top:0}.top-row{align-items:center;gap:12px;padding-block:10px;display:flex}.brand{letter-spacing:.02em;white-space:nowrap;flex:1;min-width:0;font-size:18px;font-weight:700}.tools{align-items:center;gap:8px;display:flex}nav.tabs{scrollbar-width:none;gap:2px;display:flex;overflow-x:auto}nav.tabs a{color:var(--muted);white-space:nowrap;border-bottom:2px solid #0000;padding:8px 14px;font-weight:500;text-decoration:none}nav.tabs a.active{color:var(--accent);border-bottom-color:var(--accent)}.menu-btn{display:none}main.page{flex-direction:column;gap:18px;padding-block:20px 60px;display:flex}.page-head{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.page-head h1{font-size:20px}@media (width<=720px){.menu-btn{display:inline-flex}nav.tabs{flex-direction:column;padding-bottom:8px;display:none;overflow:visible}nav.tabs.open{display:flex}nav.tabs a{border-bottom:none;border-left:3px solid #0000;padding:10px 6px}nav.tabs a.active{border-left-color:var(--accent)}.tools .hide-sm{display:none}}button,input,select{font:inherit;color:inherit}.btn{background:var(--soft);border:1px solid var(--line);cursor:pointer;border-radius:6px;padding:6px 12px}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:500}.btn:disabled{opacity:.6;cursor:default}.input{background:var(--bg);border:1px solid var(--line);border-radius:6px;min-width:0;padding:6px 10px}.input:focus-visible,.btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.asof{color:var(--muted);align-items:center;gap:6px;font-size:12px;display:inline-flex}.asof input{width:140px}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);flex-direction:column;gap:12px;min-width:0;padding:16px;display:flex}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.panel-head .sub{color:var(--muted);font-size:12px}.grid2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:18px;display:grid}@media (width<=420px){.grid2{grid-template-columns:1fr}}.kpis{background:var(--line);border:1px solid var(--line);border-radius:var(--r);grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;display:grid;overflow:hidden}@media (width<=420px){.kpis{grid-template-columns:repeat(2,1fr)}}.kpi{background:var(--panel);color:inherit;flex-direction:column;gap:2px;padding:14px 16px;text-decoration:none;display:flex}a.kpi:hover{background:var(--soft)}.kpi .lb{color:var(--muted);letter-spacing:.04em;font-size:12px}.kpi .v{font-family:var(--f-num);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:22px;font-weight:600}.kpi .s{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.kpi.bad .v{color:var(--bad)}.kpi.ok .v{color:var(--ok)}.tbl-box{border:1px solid var(--line);border-radius:6px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}th,td{border-bottom:1px solid var(--line);text-align:left;vertical-align:middle;padding:8px 10px}th{background:var(--soft);color:var(--muted);white-space:nowrap;font-size:12px;font-weight:500}tr:last-child td{border-bottom:none}.pill{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:1px 8px;font-size:12px;font-weight:500;display:inline-flex}.pill:before{content:"";background:currentColor;border-radius:50%;width:6px;height:6px}.p-none{background:var(--soft);color:var(--muted)}.p-req{background:var(--blue-soft);color:var(--blue)}.p-inv{background:var(--violet-soft);color:var(--violet)}.p-wait{background:var(--warn-soft);color:var(--warn)}.p-done{background:var(--ok-soft);color:var(--ok)}.p-late{background:var(--late-soft);color:var(--late)}.p-bad{background:var(--bad-soft);color:var(--bad)}.dot{vertical-align:middle;border-radius:50%;width:9px;height:9px;margin-right:6px;display:inline-block}.login-wrap{place-items:center;min-height:100dvh;padding:16px;display:grid}.login-card{flex-direction:column;gap:14px;width:min(380px,100%);display:flex}.login-card label{color:var(--muted);flex-direction:column;gap:4px;font-size:12px;display:flex}.login-card .input{color:var(--ink);font-size:16px}.error-msg{color:var(--bad);background:var(--bad-soft);border-radius:6px;padding:8px 10px;font-size:13px}
