:root{--bg: #0e1117;--bg-elev: #161b24;--bg-elev2: #1d2430;--border: #262d3a;--text: #e6e9ef;--text-dim: #9aa4bf;--text-faint: #6b748c;--accent: #5c7cfa;--danger: #ff5c5c;--warn: #ffc94d;--ok: #37d67a;--radius: 12px;--shadow: 0 1px 3px rgba(0, 0, 0, .4), 0 8px 24px rgba(0, 0, 0, .25);font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}:root[data-theme=light]{--bg: #f5f7fa;--bg-elev: #ffffff;--bg-elev2: #eef1f6;--border: #d7dce6;--text: #1b2130;--text-dim: #5a6580;--text-faint: #8a93a6;--accent: #4263eb;--danger: #e03131;--warn: #f08c00;--ok: #2f9e44;--shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 8px 24px rgba(16, 24, 40, .08)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-size:14px;line-height:1.5;transition:background .18s ease,color .18s ease}.app{max-width:1280px;margin:0 auto;padding:24px 24px 64px}.header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}.header h1{font-size:22px;margin:0 0 4px}.header .sub{color:var(--text-dim);font-size:13px}.header-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}.theme-toggle{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:5px 12px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elev);color:var(--text-dim);cursor:pointer}.theme-toggle:hover{border-color:var(--accent);color:var(--text)}.health-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;padding:4px 10px;border-radius:999px;border:1px solid var(--border);background:var(--bg-elev)}.dot{width:8px;height:8px;border-radius:50%;display:inline-block}.dot.ok{background:var(--ok)}.dot.bad{background:var(--danger)}.filters{display:flex;gap:12px;flex-wrap:wrap;align-items:center;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:12px 16px;margin-bottom:20px}.filters .group{display:flex;flex-direction:column;gap:4px}.filters label{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.seg{display:inline-flex;border:1px solid var(--border);border-radius:8px;overflow:hidden}.seg button{background:transparent;border:none;color:var(--text-dim);padding:7px 14px;cursor:pointer;font-size:13px}.seg button.active{background:var(--accent);color:#fff}select,.btn{background:var(--bg-elev2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:7px 12px;font-size:13px;cursor:pointer}.btn:hover{border-color:var(--accent)}.spacer{flex:1}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:24px}.kpi{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow)}.kpi .label{font-size:12px;color:var(--text-dim);margin-bottom:8px}.kpi .value{font-size:28px;font-weight:650;letter-spacing:-.01em}.kpi .value.danger{color:var(--danger)}.kpi .value.warn{color:var(--warn)}.kpi .value.ok{color:var(--ok)}.kpi .hint{font-size:11px;color:var(--text-faint);margin-top:6px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}@media (max-width: 900px){.grid-2{grid-template-columns:1fr}}.card{background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow);margin-bottom:18px}.card h2{font-size:15px;margin:0 0 2px}.card .desc{font-size:12px;color:var(--text-faint);margin-bottom:14px}table{width:100%;border-collapse:collapse;font-size:13px}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);white-space:nowrap}th{color:var(--text-faint);font-weight:500;font-size:11px;text-transform:uppercase;letter-spacing:.04em}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:hover{background:var(--bg-elev2)}.scroll{max-height:420px;overflow:auto}.bar-cell{position:relative}.bar-cell .bar{position:absolute;left:0;top:0;bottom:0;background:#5c7cfa2e;border-radius:4px}.bar-cell .txt{position:relative}.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:999px;color:#0e1117;font-weight:600}.level-error{color:var(--danger)}.level-warn{color:var(--warn)}.level-info{color:var(--text-dim)}.muted{color:var(--text-faint)}.mono{font-family:ui-monospace,SF Mono,Consolas,monospace;font-size:12px}.banner{background:#ff5c5c1a;border:1px solid rgba(255,92,92,.4);color:#ffb4b4;border-radius:var(--radius);padding:14px 18px;margin-bottom:20px;font-size:13px}.banner code{background:#0000004d;padding:1px 6px;border-radius:4px}.center-msg{text-align:center;color:var(--text-faint);padding:40px 0}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--text-dim);margin-top:10px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:10px;height:10px;border-radius:2px;display:inline-block}.card.demoted{background:transparent;border-style:dashed;border-color:var(--border);box-shadow:none;opacity:.82}.card.demoted summary{cursor:pointer;font-size:14px;font-weight:600;color:var(--text-dim);list-style:none}.card.demoted summary::-webkit-details-marker{display:none}.card.demoted summary:before{content:"▸ ";color:var(--text-faint)}.card.demoted[open] summary:before{content:"▾ "}.card.demoted[open] summary{margin-bottom:4px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:18px}.tab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--text-dim);padding:10px 18px;font-size:14px;font-weight:600;cursor:pointer;margin-bottom:-1px}.tab:hover{color:var(--text)}.tab.active{color:var(--text);border-bottom-color:var(--accent)}.vitals-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}.kpi.vital{margin-bottom:0}.kpi.vital .value{font-size:26px;margin-top:2px}.pct-suffix{font-size:11px;font-weight:500;color:var(--text-faint);margin-left:6px;letter-spacing:.04em}.rating-tag{font-weight:600}.metric-seg{margin-bottom:12px;flex-wrap:wrap}.dist-list{display:flex;flex-direction:column;gap:14px}.dist-row{display:flex;flex-direction:column;gap:6px}.dist-head{display:flex;justify-content:space-between;font-size:13px}.dist-name{font-weight:600}.dist-pass{font-variant-numeric:tabular-nums}.dist-bar{display:flex;height:14px;border-radius:4px;overflow:hidden;background:var(--bg-elev2)}.dist-seg{height:100%}.dist-seg.empty{background:var(--bg-elev2)}th.sortable{cursor:pointer;-webkit-user-select:none;user-select:none}th.sortable:hover{color:var(--text)}th.sorted{color:var(--accent)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;position:relative}.login-theme{position:absolute;top:20px;right:20px}.login-card{width:100%;max-width:360px;background:var(--bg-elev);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:32px 28px;display:flex;flex-direction:column;gap:16px}.login-card h1{font-size:20px;margin:0}.login-sub{color:var(--text-dim);font-size:13px;margin:-8px 0 4px}.login-field{display:flex;flex-direction:column;gap:6px}.login-field span{font-size:11px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.04em}.login-field input{background:var(--bg-elev2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:9px 12px;font-size:14px}.login-field input:focus{outline:none;border-color:var(--accent)}.login-btn{margin-top:4px;background:var(--accent);color:#fff;border-color:var(--accent);padding:10px 12px;font-size:14px;font-weight:600;justify-content:center}.login-btn:disabled{opacity:.55;cursor:not-allowed}.login-error{background:#ff5c5c1a;border:1px solid rgba(255,92,92,.4);color:#ffb4b4;border-radius:8px;padding:9px 12px;font-size:13px}
