:root{--ground:#eef1f2;--surface:#ffffff;--sunk:#f6f8f8;--ink:#1b262e;--muted:#5b6970;--line:#d6dde0;--line-soft:#e7ecee;--accent:#b8430f;--accent-ink:#ffffff;--accent-soft:#fbede4;--nav:#1f2b33;--nav-ink:#dce4e8;--nav-muted:#8fa0a9;--nav-active:#2e3e48;--ok:#1f7a4d;--ok-soft:#e2f2e9;--warn:#946010;--warn-soft:#fbf0da;--bad:#b42318;--bad-soft:#fce8e6;--info:#1f5f99;--info-soft:#e5eff9;--sans:"Noto Sans TC",system-ui,"PingFang TC","Microsoft JhengHei",sans-serif;--mono:"IBM Plex Mono",ui-monospace,Consolas,monospace;--r:8px;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--ground:#11181c;--surface:#182228;--sunk:#141d22;--ink:#e3eaed;--muted:#98a7ae;--line:#2b3940;--line-soft:#223036;--accent:#f08a52;--accent-ink:#1b1310;--accent-soft:#3a2419;--nav:#0c1216;--nav-ink:#d3dde2;--nav-muted:#7d8f98;--nav-active:#1e2b32;--ok:#6fcb98;--ok-soft:#16301f;--warn:#e6b566;--warn-soft:#352812;--bad:#f2887c;--bad-soft:#3b1b18;--info:#7db3e8;--info-soft:#15293b;color-scheme:dark}}:root[data-theme=dark]{--ground:#11181c;--surface:#182228;--sunk:#141d22;--ink:#e3eaed;--muted:#98a7ae;--line:#2b3940;--line-soft:#223036;--accent:#f08a52;--accent-ink:#1b1310;--accent-soft:#3a2419;--nav:#0c1216;--nav-ink:#d3dde2;--nav-muted:#7d8f98;--nav-active:#1e2b32;--ok:#6fcb98;--ok-soft:#16301f;--warn:#e6b566;--warn-soft:#352812;--bad:#f2887c;--bad-soft:#3b1b18;--info:#7db3e8;--info-soft:#15293b;color-scheme:dark}.erp{background:var(--ground);color:var(--ink);font-family:var(--sans);font-size:14.5px;line-height:1.6;min-height:100vh;min-height:100dvh}.erp *,.erp :after,.erp :before{box-sizing:border-box}.erp button,.erp input,.erp select,.erp textarea{font:inherit;color:inherit}.erp a{color:var(--info)}.erp .mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.erp :focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (prefers-reduced-motion:reduce){.erp *{transition:none!important}}.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding-inline:16px;padding-block:32px}.login-card{width:min(440px,100%);background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:32px 28px}.brandmark{display:flex;align-items:center;gap:10px;margin-bottom:18px}.brandmark .logo{width:36px;height:36px;border-radius:8px;background:var(--accent);color:var(--accent-ink);display:grid;place-items:center;font-weight:700;flex:none}.login h1{font-size:22px;margin:0 0 6px}.login p{color:var(--muted);margin:0 0 20px}.lark-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 16px;border-radius:8px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-weight:500;color:var(--ink);text-decoration:none}.lark-btn:hover{border-color:var(--info)}.lark-dot{width:20px;height:20px;border-radius:5px;background:linear-gradient(135deg,#3370ff,#00d6b9);flex:none}.note{font-size:12.5px;color:var(--muted);margin-top:16px}.warnbox{border-radius:6px;padding:10px 12px;font-size:13.5px;display:flex;gap:8px;align-items:flex-start}.warnbox.bad{background:var(--bad-soft);color:var(--bad)}.warnbox.warn{background:var(--warn-soft);color:var(--warn)}.warnbox.ok{background:var(--ok-soft);color:var(--ok)}.warnbox.info{background:var(--info-soft);color:var(--info)}.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh;min-height:100dvh}.side{background:var(--nav);color:var(--nav-ink);padding:16px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh;height:100dvh;overflow:auto}.side .brandmark{margin:0 6px 14px;color:var(--nav-ink)}.side .brandmark small{display:block;color:var(--nav-muted);font-size:11.5px}.side .close-side{display:none}.navgroup{font-size:11.5px;color:var(--nav-muted);letter-spacing:.06em;margin:12px 10px 4px}.side .navbtn{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:8px 10px;border-radius:6px;border:0;background:none;color:var(--nav-ink);cursor:pointer;text-align:left;text-decoration:none}.navbtn:hover,.navbtn[aria-current=page]{background:var(--nav-active)}.navbtn[aria-current=page]{box-shadow:inset 3px 0 0 var(--accent)}.navbtn .badge{background:var(--accent);color:var(--accent-ink);border-radius:999px;font-size:11px;padding:0 7px;font-family:var(--mono)}.navbtn .lock{font-size:11px;color:var(--nav-muted);white-space:nowrap}.main{min-width:0;display:flex;flex-direction:column}.impersonation{background:var(--warn-soft);color:var(--warn);border-bottom:1px solid var(--line);padding:6px 20px;font-size:13px;display:flex;gap:8px;align-items:flex-start}.impersonation>span:last-child{min-width:0;overflow-wrap:anywhere}.impersonation b{font-weight:600}.topbar{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:12px;padding:10px 20px;flex-wrap:wrap}.topbar h2{font-size:17px;margin:0;flex:1 1 auto;min-width:0}.who{display:flex;align-items:center;gap:10px;min-width:0}.who .meta{line-height:1.25;font-size:13px;min-width:0}.who .meta b,.who .meta small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who .meta small{color:var(--muted)}.who form{margin:0}.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:14px;color:#fff;flex:none;background:var(--info)}.content{padding-inline:20px;padding-block:20px 48px;display:flex;flex-direction:column;gap:16px;max-width:1280px;width:100%;min-width:0;overflow-wrap:anywhere}.side-backdrop,.topbar .menu-toggle{display:none}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;min-width:0}.card h3{font-size:15px;margin:0 0 10px;display:flex;align-items:center;gap:8px;justify-content:space-between;flex-wrap:wrap}.card h3 .sub{font-size:12.5px;color:var(--muted);font-weight:400}.pill{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:1px 8px;border-radius:999px;white-space:nowrap;font-weight:500;max-width:100%}.pill.wrap{white-space:normal}.p-ok{background:var(--ok-soft);color:var(--ok)}.p-warn{background:var(--warn-soft);color:var(--warn)}.p-bad{background:var(--bad-soft);color:var(--bad)}.p-info{background:var(--info-soft);color:var(--info)}.p-mute{background:var(--sunk);color:var(--muted)}.p-acc{background:var(--accent-soft);color:var(--accent)}.btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:6px;border:1px solid var(--line);background:var(--surface);cursor:pointer;font-size:13.5px;white-space:nowrap;color:var(--ink);text-decoration:none}.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:500}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.sm{padding:3px 10px;font-size:12.5px}.empty{color:var(--muted);text-align:center;padding:24px}.doc h4{margin:18px 0 6px;font-size:15px}.doc li,.doc p{max-width:78ch}.doc ol,.doc ul{padding-left:1.3em}.doc code{font-family:var(--mono);font-size:12.5px;background:var(--sunk);padding:1px 5px;border-radius:4px;word-break:break-all}.flow{display:flex;flex-wrap:wrap;gap:8px;align-items:center;font-size:13px}.flow span{border:1px solid var(--line);border-radius:6px;padding:6px 10px;background:var(--sunk)}.flow em{font-style:normal;color:var(--muted)}.tbl{overflow-x:auto;max-width:100%}.tbl table{border-collapse:collapse;width:100%;font-size:13.5px}.tbl td,.tbl th{padding:8px 10px;border-bottom:1px solid var(--line-soft);text-align:left;vertical-align:middle}.tbl th{font-size:12px;color:var(--muted);font-weight:500;background:var(--sunk);white-space:nowrap}.grid{display:grid;gap:16px}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}.kpi{display:flex;flex-direction:column;gap:2px}.kpi b{font-size:24px;font-family:var(--mono);line-height:1.2}.kpi span{color:var(--muted);font-size:12.5px}@media (max-width:980px){.g4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.shell{grid-template-columns:1fr}.side{position:fixed;inset:0 auto 0 0;width:min(260px,85vw);z-index:30;transform:translateX(-100%);transition:transform .2s;padding-top:calc(16px + env(safe-area-inset-top, 0px))}.side.open{transform:none}.side .close-side{display:inline-flex;align-self:flex-end;margin:-6px 0 6px;background:none;border:1px solid var(--nav-muted);color:var(--nav-ink)}.side-backdrop.open{display:block;position:fixed;inset:0;z-index:29;background:rgba(0,0,0,.35)}.topbar .menu-toggle{display:inline-flex}.content,.topbar{padding-inline:16px}.topbar{top:env(safe-area-inset-top,0)}.impersonation{padding-inline:16px}.who .meta{display:none}.g4{grid-template-columns:1fr}}