:root{--bg: #f1f3f8;--card: #fff;--card2: #f7f8fc;--ink: #171e2e;--ink2: #4b5568;--ink3: #8a94a8;--line: #e3e7f0;--line2: #eef0f6;--nav: #101828;--nav2: #1b2538;--pri: #3d5afe;--pri-d: #2b43d1;--pri-w: #ebeeff;--g: #12915b;--g-w: #e2f6ec;--a: #b56a00;--a-w: #fff3d9;--r: #d0343f;--r-w: #fde9eb;--t: #0b8a8f;--t-w: #dff4f5;--v: #7040d6;--v-w: #f0eafd;--n-w: #eceef4;--sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", system-ui, sans-serif;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace;--rad: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--sans);font-size:13.5px;line-height:1.5;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;min-width:1180px;overflow:hidden}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-thumb{background:#c6cddd;border-radius:6px;border:2px solid transparent;background-clip:content-box}:focus-visible{outline:2px solid var(--pri);outline-offset:1px}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--pri);text-decoration:none}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.muted{color:var(--ink3)}.right{text-align:right}.spacer{flex:1}.nw{white-space:nowrap}.app{display:flex;height:100vh}.content{flex:1;min-width:0;display:flex;flex-direction:column}.side{width:184px;flex:0 0 auto;background:var(--nav);color:#fff;display:flex;flex-direction:column;padding:14px 10px 12px;overflow-y:auto}.logo{display:flex;align-items:center;gap:9px;font-weight:700;font-size:14px;white-space:nowrap;letter-spacing:-.01em;padding:2px 6px 10px}.logo i{width:26px;height:26px;border-radius:7px;background:linear-gradient(135deg,#5b7cff,#22d3c5);display:grid;place-items:center;font-style:normal;font-size:13px}.ngrp{font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:#66718c;padding:14px 8px 5px}.tn{background:none;border:0;color:#a9b3c9;font-size:13.5px;padding:9px 10px;cursor:pointer;display:flex;align-items:center;gap:9px;width:100%;text-align:left;border-radius:8px;white-space:nowrap;margin-bottom:2px;text-decoration:none}.tn:hover{color:#fff;background:var(--nav2)}.tn.active{color:#fff;font-weight:600;background:#2b3b6b}.tn .st{width:19px;height:19px;border-radius:50%;background:#2a3650;color:#c8d1e6;font-size:11px;display:grid;place-items:center;font-weight:700;flex:0 0 auto}.tn.active .st{background:#5b7cff;color:#fff}.tn .ct{margin-left:auto;font-family:var(--mono);font-size:11px;background:#2a3650;border-radius:9px;padding:0 7px;color:#dbe2f3}.tn .ct.hot{background:#e5484d;color:#fff}.stepline{width:2px;height:10px;background:#34415f;margin:-2px 0 0 19px;border-radius:1px}.tznote{margin-top:auto;padding-top:14px;font-size:12px;color:#a9b3c9;display:flex;flex-direction:column;gap:2px}.tznote span{color:#7d8aa6}.tznote+.sfoot{margin-top:0}.sfoot{margin-top:auto;padding-top:14px;display:flex;flex-direction:column;gap:8px;font-size:12px;color:#a9b3c9}.pill{display:flex;align-items:center;gap:7px;padding:5px 10px;border-radius:8px;background:var(--nav2);white-space:nowrap}.pill b{color:#fff;font-weight:600;margin-left:auto}.dot{width:7px;height:7px;border-radius:50%;background:#34d399;flex:0 0 auto}.dot.bad{background:#f87171}.dot.idle{background:#66718c}.side .btn{background:#2a3650;border-color:#2a3650;color:#fff;width:100%}.side .btn:hover:not(:disabled){background:#34425f}.side input[type=text]{background:var(--nav2);border-color:#2a3650;color:#fff;flex:1;width:0}.sfoot label{white-space:nowrap}.stamp{display:flex;align-items:center;gap:9px;padding:5px 18px;background:#fff6e0;border-bottom:1px solid #f0dfb0;font-size:12px;color:#7a4c05;flex:0 0 auto}.stamp b{font-family:var(--mono);font-size:10px;letter-spacing:.1em;background:#e0a100;color:#fff;padding:1px 7px;border-radius:4px}.main{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.page{flex:1;min-height:0;display:flex;flex-direction:column;padding:16px 22px 14px}.page.scroll{overflow-y:auto;padding:20px 26px 60px;display:block}.eyebrow{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink3)}h1.tt,h2.tt{font-size:20px;font-weight:700;margin:3px 0 5px;letter-spacing:-.02em}.phead{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex:0 0 auto}.lede{font-size:12.5px;color:var(--ink2);margin:0 0 12px}.chipfix{display:inline-flex;align-items:center;gap:6px;font-size:12px;background:var(--card);border:1px solid var(--line);color:var(--ink2);border-radius:7px;padding:6px 10px;margin-bottom:6px}.btn{border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:7px;padding:6px 13px;font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-block}.btn:hover:not(:disabled){background:var(--card2)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--pri);border-color:var(--pri);color:#fff}.btn.primary:hover:not(:disabled){background:var(--pri-d)}.btn.danger{color:var(--r)}.btn.sm{padding:3px 10px;font-size:12px}input[type=text],input[type=number],input[type=search],select,textarea{padding:6px 9px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--ink);font-size:13px;min-width:0}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--pri)}input[type=search]{width:240px;padding:6px 12px}textarea{width:100%;resize:vertical}input[type=checkbox],input[type=radio]{width:15px;height:15px;accent-color:var(--pri);cursor:pointer;vertical-align:middle}.badge{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:600;padding:0 8px;border-radius:999px;white-space:nowrap;line-height:1.75}.badge:before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.85}.badge.ok{background:var(--g-w);color:var(--g)}.badge.warn{background:var(--a-w);color:var(--a)}.badge.bad{background:var(--r-w);color:var(--r)}.badge.info{background:var(--pri-w);color:var(--pri-d)}.badge.muted{background:var(--n-w);color:var(--ink2)}.chip{display:inline-block;font-size:11.5px;background:var(--n-w);color:var(--ink2);border-radius:6px;padding:0 8px;margin:0 4px 3px 0;line-height:1.6}.chip.prime{background:var(--t-w);color:var(--t);font-weight:600}.chip.cfg{font-family:var(--mono);font-size:10.5px;background:var(--v-w);color:var(--v)}.chip.urgent{background:var(--r-w);color:var(--r);font-weight:600}.chip.soon{background:var(--a-w);color:var(--a);font-weight:600}.alert{padding:10px 12px;border-radius:8px;border:1px solid;font-size:12.5px}.alert.bad{background:var(--r-w);border-color:#f5c9cd;color:#8e222b}.alert.warn{background:var(--a-w);border-color:#ecd8a8;color:#764a05}.alert.info{background:var(--pri-w);border-color:#cbd3ff;color:var(--pri-d)}.alert.ok{background:var(--g-w);border-color:#b7e3cd;color:#0b6b43}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--rad)}.card-h{display:flex;align-items:center;gap:8px;padding:9px 14px;border-bottom:1px solid var(--line2);background:var(--card2);border-radius:var(--rad) var(--rad) 0 0}.card-b{padding:10px 14px}.kv{display:grid;grid-template-columns:96px 1fr;gap:8px 14px}.kv dt{color:var(--ink3);font-size:12px}.kv dd{margin:0;font-size:12.5px}.field{display:flex;flex-direction:column;gap:4px;margin-bottom:11px}.field label{font-size:12px;color:var(--ink2);font-weight:600}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px 14px}.empty{padding:44px;text-align:center;color:var(--ink3)}.qtabs{display:flex;gap:6px;margin:8px 0 10px;flex:0 0 auto;flex-wrap:wrap}.qt{border:1px solid var(--line);background:var(--card);border-radius:8px;padding:6px 13px;cursor:pointer;font-size:13px;color:var(--ink2);display:flex;align-items:center;gap:8px}.qt:hover{border-color:#c4cbe0}.qt b{font-family:var(--mono);font-size:12.5px;color:var(--ink)}.qt.on{background:var(--pri);border-color:var(--pri);color:#fff;font-weight:600}.qt.on b{color:#fff}.qt.warn b{color:var(--r)}.qt.on.warn b{color:#fff}.tool{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px;flex:0 0 auto}.fsel{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--ink3)}.fsel select{padding:5px 8px;font-size:12.5px}.fsel.on select{border-color:var(--pri);background:var(--pri-w)}.split{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:14px}.lcol{display:flex;flex-direction:column;min-height:0;min-width:0}.batch{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--card);border:1px solid var(--line);border-bottom:0;border-radius:var(--rad) var(--rad) 0 0;font-size:12.5px;color:var(--ink2);flex:0 0 auto}.batch.has{background:var(--pri-w);border-color:#cbd3ff;color:var(--pri-d)}.batch .sp{margin-left:auto;display:flex;gap:8px;align-items:center}.tw{background:var(--card);border:1px solid var(--line);border-radius:var(--rad);overflow:auto;min-height:0}.lcol .tw{border-radius:0 0 var(--rad) var(--rad);flex:1}table.t{width:100%;border-collapse:collapse;font-size:12.5px}table.t th{position:sticky;top:0;z-index:2;background:var(--card2);text-align:left;font-size:11.5px;color:var(--ink3);font-weight:600;padding:8px;white-space:nowrap;border-bottom:1px solid var(--line)}table.t td{padding:9px 8px;border-bottom:1px solid var(--line2);vertical-align:middle}table.t tbody tr:last-child td{border-bottom:0}table.t tr.row{cursor:pointer}table.t tr.row:hover td{background:#f8f9ff}table.t tr.row.active td{background:var(--pri-w)}table.t tr.row.active td:first-child{box-shadow:inset 3px 0 0 var(--pri)}table.t tr.row.cx td{background:#fff8f8}table.t tr.row.cx .tt1{text-decoration:line-through;color:var(--ink3)}.ck{width:32px;padding-right:0!important}.tt1{font-weight:600;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.t2{font-size:11.5px;color:var(--ink3)}.t2.mono{white-space:nowrap}table.t td:last-child{min-width:128px}.ti{display:flex;align-items:center}.bar3{display:inline-block;width:4px;height:30px;border-radius:2px;margin-right:8px;flex:0 0 auto}.bar3.r{background:var(--r)}.bar3.a{background:#f0a41a}.bar3.b{background:#6b86ff}.bar3.n{background:#d3d9e6}.urg-over{color:var(--r);font-weight:700}.urg-low{font-weight:700;color:var(--a)}.rcol{min-height:0;display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--rad);overflow:hidden}.pempty{margin:auto;text-align:center;color:var(--ink3);padding:30px;font-size:13px;line-height:1.8}.pempty svg{display:block;margin:0 auto 10px;opacity:.5}.ph{padding:13px 16px 10px;border-bottom:1px solid var(--line2);flex:0 0 auto}.ph .l1{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.ph h2{margin:0;font-size:14.5px}.dx{margin-left:auto;width:26px;height:26px;border-radius:6px;border:0;background:var(--n-w);cursor:pointer;color:var(--ink2)}.dx:hover{background:#dde1ec}.strip{display:grid;grid-template-columns:1fr 1fr 1.25fr;gap:8px;padding:10px 16px;background:var(--card2);border-bottom:1px solid var(--line2);flex:0 0 auto}.strip .k{font-size:11px;color:var(--ink3)}.strip .v{font-size:12.5px;font-weight:600}.ptabs{display:flex;padding:0 10px;border-bottom:1px solid var(--line);flex:0 0 auto}.pt{background:none;border:0;padding:9px 12px;font-size:13px;color:var(--ink2);cursor:pointer;border-bottom:2px solid transparent;margin-bottom:-1px;font-weight:600;white-space:nowrap}.pt.on{color:var(--pri);border-bottom-color:var(--pri)}.pbody{flex:1;overflow-y:auto;padding:12px 16px 18px;min-height:0;display:flex;flex-direction:column;gap:12px}.pft{display:flex;align-items:center;gap:8px;padding:10px 14px;border-top:1px solid var(--line);flex:0 0 auto;background:var(--card);flex-wrap:wrap}.rawbox{font-family:var(--mono);font-size:11.5px;background:var(--card2);border:1px dashed #cdd3e3;border-radius:7px;padding:7px 10px;word-break:break-all}table.q{width:100%;border-collapse:collapse;font-size:12px}table.q th{text-align:left;font-weight:600;color:var(--ink3);padding:4px 6px;font-size:11.5px}table.q td{padding:6px;border-top:1px solid var(--line2)}table.q tr.sel td{background:var(--pri-w)}table.q tr.late td{color:var(--ink3)}.sub3{font-size:12px;font-weight:700;color:var(--ink2);margin:4px 0 2px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#10182873;display:flex;align-items:center;justify-content:center;z-index:80}.modal{background:var(--card);border-radius:12px;width:min(560px,92vw);max-height:90vh;display:flex;flex-direction:column;box-shadow:0 24px 70px #00000059}.modal-h{padding:18px 22px 4px;font-size:16px;font-weight:700}.modal-b{padding:8px 22px 6px;overflow:auto}.modal-f{padding:12px 22px 18px;display:flex;justify-content:flex-end;gap:8px}.toast{position:fixed;left:50%;bottom:26px;transform:translate(-50%);background:var(--ink)!important;border-color:var(--ink)!important;color:#fff!important;padding:10px 18px;border-radius:9px;font-size:13px;z-index:99;max-width:70vw}.toast.bad{background:#8e222b!important;border-color:#8e222b!important}.sumbox{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:6px 0 10px}.sumbox div{border:1px solid var(--line);border-radius:9px;padding:10px 12px;font-size:12px;color:var(--ink3)}.sumbox b{display:block;font-family:var(--mono);font-size:22px;color:var(--ink);font-weight:600}.sumbox .g{background:var(--g-w);border-color:#b7e3cd}.sumbox .a{background:var(--a-w);border-color:#ecd8a8}.sumbox .r{background:var(--r-w);border-color:#f5c9cd}.settings{display:flex;flex-direction:column;gap:14px;max-width:1100px}.settings .card{overflow:hidden}.login{min-height:100vh;display:grid;place-items:center;padding:16px;background:var(--bg, #f4f6f8)}.login-card{width:100%;max-width:360px;padding:28px;display:flex;flex-direction:column;gap:14px}.login-card label{display:flex;flex-direction:column;gap:6px;font-size:13px}.login-card input{height:36px;padding:0 10px;border:1px solid var(--line, #d6dbe1);border-radius:6px;font-size:14px}.login-err{color:#b42318;font-size:13px}
