:root{--bg: #0b0e13;--surface: #141922;--border: #262e39;--chip: #1c232d;--tooltip: #1c232d;--text: #e8ecf2;--muted: #9aa5b4;--green: #3dd68c;--lime: #b8e35a;--amber: #f2b84b;--burn: #ff7a59;--cyan: #4cc3ff;--cyan-soft: #2b5f80;--violet: #a78bfa;--on-accent: #0b0e13;color-scheme:dark}:root[data-theme=light]{--bg: #f3f5f8;--surface: #ffffff;--border: #dee3ea;--chip: #f0f2f5;--tooltip: #ffffff;--text: #12161c;--muted: #56606d;--green: #16915a;--lime: #7da61c;--amber: #b57400;--burn: #c2410c;--cyan: #0b76b8;--cyan-soft: #9ccdea;--violet: #6d4fd8;--on-accent: #ffffff;color-scheme:light}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);font-family:IBM Plex Sans,PingFang SC,Microsoft YaHei,system-ui,sans-serif;font-size:14px;line-height:1.5}button{font:inherit;color:inherit}.mono{font-family:IBM Plex Mono,ui-monospace,monospace}.muted{color:var(--muted)}.small{font-size:12px}.topbar{border-bottom:1px solid var(--border);background:var(--surface)}.topbar-inner{max-width:1400px;margin:0 auto;padding:12px 24px;display:flex;flex-wrap:wrap;align-items:center;gap:12px}.brand{display:flex;align-items:center;gap:10px;flex-grow:1;font-weight:700;font-size:17px}.pill{font-size:12px;font-weight:400;padding:2px 8px;border-radius:999px;border:1px solid var(--border);color:var(--muted)}.seg{display:flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{border:0;background:transparent;color:var(--muted);padding:8px 14px;min-height:36px;font-size:13px;cursor:pointer}.seg button[aria-pressed=true]{background:var(--text);color:var(--bg)}.btn{min-height:36px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:transparent;cursor:pointer;font-size:13px}.btn:hover{background:var(--chip)}.btn-primary{min-height:48px;border:0;border-radius:10px;background:var(--green);color:var(--on-accent);font-size:15px;font-weight:600;cursor:pointer}.btn-primary:disabled{opacity:.6;cursor:wait}.who{display:flex;align-items:center;gap:8px;padding:6px 12px;border-radius:8px;background:var(--chip);font-size:12px}.dot{width:8px;height:8px;border-radius:50%;background:var(--green);display:inline-block}main{max-width:1400px;margin:0 auto;padding:24px;display:flex;flex-direction:column;gap:20px}h1{margin:0;font-size:24px}h2{margin:0;font-size:16px}.head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:8px}.card{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:20px;display:flex;flex-direction:column;gap:12px;min-width:0}.card-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}.row{display:flex;flex-wrap:wrap;gap:16px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(min(100%,560px),1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(min(100%,380px),1fr))}.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:12px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:16px 16px 10px;display:flex;flex-direction:column;gap:4px;overflow:hidden}.kpi-top{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--muted);gap:8px}.kpi-value{font-family:IBM Plex Mono,monospace;font-size:26px;font-weight:600;letter-spacing:-.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi-unit{font-size:12px;color:var(--muted);margin-left:4px;font-weight:400}.delta{font-family:IBM Plex Mono,monospace;padding:1px 6px;border-radius:999px;background:var(--chip);white-space:nowrap}.delta.up{color:var(--green)}.stats{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(110px,1fr))}.stat{background:var(--chip);border-radius:10px;padding:10px 12px;min-width:0}.stat-label{font-size:12px;color:var(--muted)}.stat-value{font-family:IBM Plex Mono,monospace;font-size:18px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.legend{display:flex;flex-wrap:wrap;gap:14px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.sw{width:10px;height:10px;border-radius:2px;display:inline-block}.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);font-family:IBM Plex Mono,monospace}.chart{position:relative}.chart svg.fill{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%}.tooltip{position:absolute;top:8px;pointer-events:none;background:var(--tooltip);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:12px;min-width:160px;box-shadow:0 8px 24px #00000040;z-index:2}.tooltip .line{display:flex;justify-content:space-between;gap:12px}.empty{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:13px;border:1px dashed var(--border);border-radius:10px;padding:24px;text-align:center}.warn{color:var(--amber)}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{color:var(--muted);font-weight:500;padding:8px;text-align:right;white-space:nowrap}td{padding:8px;text-align:right;border-top:1px solid var(--border);font-family:IBM Plex Mono,monospace;white-space:nowrap}th:first-child,td:first-child{text-align:left}.heat-row{display:flex;align-items:center;gap:4px}.heat-name{width:130px;flex-shrink:0;font-size:12px;color:var(--muted);font-family:IBM Plex Mono,monospace;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heat-cell{flex:1 1 0;height:22px;border-radius:4px;min-width:8px}.funnel{display:flex;flex-direction:column;gap:8px;align-items:center}.funnel div{border-radius:8px;padding:10px 14px;display:flex;justify-content:space-between;align-items:center;font-size:13px}.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}.login-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:36px;display:flex;flex-direction:column;gap:20px}.error{color:var(--burn);font-size:13px}.input{min-height:44px;border:1px solid var(--border);border-radius:10px;background:var(--chip);color:var(--text);padding:0 12px;font:inherit;font-size:15px}.input:focus{outline:2px solid var(--green);outline-offset:1px}footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;color:var(--muted);font-size:12px;padding-bottom:24px}@media (max-width: 640px){.topbar-inner,main{padding-left:16px;padding-right:16px}.kpi-value{font-size:22px}}
