:root{--bg:#f4f5f7;--card:#fff;--text:#1d2330;--muted:#6b7280;--line:#e3e6ea;--accent:#2563eb;--accent-soft:#e8efff;--dot:#ff2d55;--ok:#15803d;--ok-soft:#e6f6ec;--warn:#b45309;--warn-soft:#fdf1e2;--err:#b91c1c;--err-soft:#fdeaea;--idle:#475569;--idle-soft:#eef1f5}@media (prefers-color-scheme:dark){:root{--bg:#12151b;--card:#1b2029;--text:#e7eaf0;--muted:#9aa3b2;--line:#2b323e;--accent:#6d9bff;--accent-soft:#1e2a44;--ok:#4ade80;--ok-soft:#173024;--warn:#fbbf24;--warn-soft:#3a2c12;--err:#f87171;--err-soft:#3b1c1c;--idle:#a8b3c4;--idle-soft:#252c37}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font:15px/1.55 Microsoft JhengHei,PingFang TC,system-ui,sans-serif}.wrap{max-width:1180px;margin:0 auto;padding:20px 16px 60px}.card{background:var(--card);border:1px solid var(--line);border-radius:12px}.row{flex-wrap:wrap;align-items:end;gap:10px;display:flex}.grow{flex:280px}.spacer{flex:1}.hint{color:var(--muted);margin:0;font-size:13px}.hint b{color:var(--dot)}.muted{color:var(--muted)}label.field{color:var(--muted);gap:4px;font-size:13px;display:grid}input[type=text],input[type=password],select{font:inherit;color:var(--text);background:var(--bg);border:1px solid var(--line);border-radius:8px;width:100%;padding:9px 11px}button{font:inherit;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:8px;padding:8px 14px}button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}button.small{padding:5px 10px;font-size:13px}button:disabled{opacity:.5;cursor:default}.chip{border:1px solid var(--line);background:var(--bg);color:var(--text);border-radius:999px;padding:3px 10px;font-size:13px}.chip:hover{border-color:var(--accent)}.count{font-size:30px;font-weight:700;line-height:1.1}.count small{color:var(--muted);margin-left:4px;font-size:14px;font-weight:400}.count .inner{color:var(--muted);margin-top:2px;font-size:15px;font-weight:600}.spin{vertical-align:-1px;border:2px solid;border-right-color:#0000;border-radius:50%;width:12px;height:12px;animation:.8s linear infinite spin;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.overlay{z-index:50;background:#000000b3;place-items:center;padding:12px;display:grid;position:fixed;inset:0}
