:root{--bg:#f5f2eb;--ink:#181713;--muted:#706c62;--line:#ded8cb;--panel:#fffdf8;--panel-2:#ebe6dc;--green:#2f8b57;--green-soft:#dff0e4;--amber:#b56a1b;--amber-soft:#f3dfbd;--coral:#c8563c;--charcoal:#25231f;--shadow:#25231f14}*,:before,:after{box-sizing:border-box}html{background:var(--bg);min-height:100%}body{min-height:100%;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;margin:0;font-family:Microsoft YaHei,PingFang SC,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.6}.dashboard-shell{width:min(1440px,100% - 28px);margin:0 auto;padding:18px 0 36px}.topbar{justify-content:space-between;align-items:center;gap:16px;min-height:58px;margin-bottom:16px;display:flex}.brand,.topbar-actions,.admin-token,.command-head span,.primary-button,.icon-button{align-items:center;display:inline-flex}.brand{gap:10px}.brand-mark{color:#fff;background:var(--charcoal);border-radius:8px;place-items:center;width:38px;height:38px;font-weight:900;display:grid}.brand-title{font-size:17px;font-weight:900}.brand-sub{color:var(--muted);font-size:12px;font-weight:700}.topbar-actions{gap:8px}.admin-token{border:1px solid var(--line);background:var(--panel);border-radius:8px;gap:8px;min-height:38px;padding:0 10px}.admin-token input{width:138px;color:var(--ink);background:0 0;border:0;outline:0}.icon-button,.primary-button,.command-head button{border:1px solid var(--line);color:var(--ink);background:var(--panel);border-radius:8px}.icon-button{justify-content:center;width:38px;height:38px}.primary-button{border-color:var(--charcoal);color:#fff;background:var(--charcoal);justify-content:center;gap:7px;min-height:40px;padding:0 14px;font-weight:900}.alert{color:var(--coral);background:#fff5ef;border:1px solid #c8563c59;border-radius:8px;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;font-weight:800;display:flex}.hero-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:12px;display:grid}.machine-grid{grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-bottom:12px;display:grid}.metric-card,.panel,.limit-card,.machine-card{border:1px solid var(--line);background:var(--panel);box-shadow:0 10px 30px var(--shadow);border-radius:8px}.machine-card{text-align:left;gap:9px;min-height:112px;padding:13px;display:grid}.machine-card.is-active{background:#f6fbf5;border-color:#2f8b5773}.machine-card-head{align-items:center;gap:8px;min-width:0;display:flex}.machine-card-head strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.machine-card-value{font-size:clamp(22px,3vw,30px);font-weight:950;line-height:1}.machine-card-split{flex-wrap:wrap;gap:8px;display:flex}.machine-card-split span{min-height:24px;color:var(--muted);background:var(--panel-2);border-radius:999px;align-items:center;padding:0 8px;font-size:12px;font-weight:800;display:inline-flex}.metric-card{align-content:space-between;gap:8px;min-height:138px;padding:14px;display:grid}.metric-icon{width:34px;height:34px;color:var(--green);background:var(--green-soft);border-radius:8px;place-items:center;display:grid}.metric-card span,.metric-card em,.panel-head span,.limit-title span,.limit-line span,.limit-line em,.device-main span,.device-stat span,.event-row span{color:var(--muted);font-size:12px;font-style:normal;font-weight:700}.metric-card strong{letter-spacing:0;font-size:clamp(22px,3vw,34px);line-height:1}.main-grid{grid-template-columns:minmax(0,1.1fr) minmax(360px,.9fr);gap:12px;margin-bottom:12px;display:grid}.main-grid.lower{grid-template-columns:minmax(0,1fr) minmax(360px,.8fr)}.panel{min-width:0;padding:14px}.panel-head{justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.chart-controls{flex-wrap:wrap;justify-content:flex-end;gap:6px;display:flex}.chart-controls button{text-overflow:ellipsis;white-space:nowrap;border:1px solid var(--line);max-width:160px;min-height:28px;color:var(--muted);background:#fff;border-radius:999px;padding:0 9px;font-size:12px;font-weight:900;overflow:hidden}.chart-controls button.is-active{border-color:var(--charcoal);color:#fff;background:var(--charcoal)}.panel-head h2{margin:0;font-size:16px;line-height:1.2}.limit-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.limit-card{background:#fbf7ef;padding:12px}.limit-title{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.limit-title strong{font-size:15px}.limit-line{border-top:1px solid var(--line);gap:6px;padding:10px 0;display:grid}.limit-line div:first-child{justify-content:space-between;gap:8px;display:flex}.limit-track,.bar-track{background:var(--panel-2);border-radius:999px;height:9px;position:relative;overflow:hidden}.limit-fill{border-radius:inherit;background:var(--green);height:100%}.bars{gap:9px;display:grid}.bar-row{grid-template-columns:42px minmax(120px,1fr) 112px;align-items:center;gap:9px;display:grid}.bar-row span{color:var(--muted);font-size:12px;font-weight:800}.bar-row strong{text-align:right;font-size:12px}.bar-fill{border-radius:inherit;position:absolute;top:0;bottom:0;left:0}.bar-fill.codex{background:var(--amber)}.bar-fill.claude{background:var(--green);opacity:.82}.trend-chart{gap:10px;min-height:278px;display:grid}.trend-chart>svg{width:100%;min-height:220px;display:block}.trend-grid{stroke:var(--line);stroke-width:1px}.trend-area{fill:url(#trendArea)}.trend-line{fill:none;stroke:var(--green);stroke-linecap:round;stroke-linejoin:round;stroke-width:4px}.trend-point{fill:var(--panel);stroke:var(--green);stroke-width:2px}.trend-label{fill:var(--muted);font-size:11px;font-weight:800}.trend-summary{justify-content:space-between;align-items:center;gap:12px;display:flex}.trend-summary div{color:var(--muted);align-items:center;gap:7px;font-size:12px;font-weight:800;display:inline-flex}.trend-summary strong{font-size:14px}.device-form{grid-template-columns:minmax(180px,1fr) 140px auto;gap:10px;margin-bottom:12px;display:grid}.device-form label{gap:5px;display:grid}.device-form span{color:var(--muted);font-size:12px;font-weight:800}.device-form input,.device-form select{border:1px solid var(--line);width:100%;min-height:40px;color:var(--ink);background:#fff;border-radius:8px;outline:0;padding:0 10px}.command-box{border:1px solid var(--line);color:#fffaf0;background:#24221e;border-radius:8px;margin-bottom:12px}.command-head{border-bottom:1px solid #ffffff1f;justify-content:space-between;align-items:center;gap:10px;padding:8px 10px;display:flex}.command-head span{color:#fffaf0;gap:7px}.command-head button{color:#fffaf0;background:#ffffff14;border-color:#ffffff38;align-items:center;gap:5px;min-height:30px;padding:0 9px;display:inline-flex}.command-box code{padding:10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.6;display:block;overflow-x:auto}.device-list,.event-list{gap:8px;display:grid}.device-row,.event-row{border:1px solid var(--line);background:#fbf8f2;border-radius:8px;justify-content:space-between;align-items:center;gap:12px;min-height:58px;padding:10px;display:flex}.device-main,.event-row>div{align-items:center;gap:9px;min-width:0;display:flex}.device-main div,.event-row div{gap:3px;min-width:0;display:grid}.device-main strong,.event-row strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.device-stat{flex:none;justify-items:end;gap:3px;display:grid}.device-stat strong,.event-row em{font-size:13px;font-style:normal;font-weight:900}.provider-dot{border-radius:50%;flex:none;width:10px;height:10px}.provider-dot.codex{background:var(--amber)}.provider-dot.claude{background:var(--green)}.event-row em{margin-left:auto}@media (max-width:980px){.hero-grid,.machine-grid,.main-grid,.main-grid.lower,.limit-grid,.device-form{grid-template-columns:1fr}}@media (max-width:640px){.dashboard-shell{width:min(100% - 18px,1440px)}.topbar,.topbar-actions,.device-row,.event-row{flex-direction:column;align-items:stretch}.admin-token input{width:100%}.bar-row{grid-template-columns:40px minmax(80px,1fr)}.bar-row strong{text-align:left;grid-column:2}.device-stat{justify-items:start}}
