:root{--bg: #0a1120;--surface: #111c33;--raised: #16233d;--hover: rgba(255, 255, 255, .04);--hairline: #26365a;--grid: #1e2c48;--ink: #e8eefb;--ink-2: #a8b8d4;--ink-muted: #7b8cab;--s1: #3987e5;--s2: #d95926;--s3: #199e70;--s4: #c98500;--s5: #d55181;--s6: #008300;--s7: #9085e9;--s8: #e66767;--good: #0ca30c;--warn: #fab219;--serious: #ec835a;--critical: #d03b3b;--radius: 8px;--radius-sm: 6px;--space: 4px;--font: system-ui, -apple-system, "Segoe UI", sans-serif}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--font);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}a{color:var(--s1);text-decoration:none}a:hover{text-decoration:underline}.shell{display:grid;grid-template-columns:216px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--hairline);padding:20px 12px;display:flex;flex-direction:column;gap:4px;position:sticky;top:0;height:100vh}.brand{font-size:16px;font-weight:600;padding:0 12px 20px;letter-spacing:.2px}.brand span{color:var(--s1)}.nav-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:var(--radius-sm);color:var(--ink-2);font-size:13px}.nav-link:hover{background:var(--hover);color:var(--ink);text-decoration:none}.nav-link.active{background:var(--raised);color:var(--ink)}.main{display:flex;flex-direction:column;min-width:0}.topbar{display:flex;align-items:center;gap:12px;padding:14px 24px;border-bottom:1px solid var(--hairline);background:var(--bg);position:sticky;top:0;z-index:20}.topbar h1{font-size:20px;margin:0;font-weight:600}.topbar .spacer{flex:1}.content{padding:24px;display:flex;flex-direction:column;gap:20px}.card{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:16px}.card h2{font-size:16px;margin:0 0 12px;font-weight:600}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.tile{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:14px 16px}.tile .label{color:var(--ink-muted);font-size:12px;text-transform:none}.tile .value{font-size:28px;font-weight:600;margin-top:4px}.tile .sub{color:var(--ink-2);font-size:12px;margin-top:2px}.hero{font-size:48px;font-weight:600;line-height:1.1}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:1100px){.grid-2{grid-template-columns:1fr}}.table-wrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--hairline)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{position:sticky;top:0;background:var(--raised);text-align:left;font-weight:600;color:var(--ink-2);padding:10px 12px;white-space:nowrap;border-bottom:1px solid var(--hairline);cursor:pointer;-webkit-user-select:none;user-select:none}thead th.static{cursor:default}thead th.hinted{text-decoration:underline dotted var(--ink-muted);text-underline-offset:3px}thead th .arrow{color:var(--s1);margin-left:4px}tbody tr{border-bottom:1px solid var(--grid);cursor:pointer}tbody tr:hover{background:var(--hover)}tbody td{padding:9px 12px;height:40px;white-space:nowrap}tbody td.num{font-variant-numeric:tabular-nums;text-align:right}tbody td.wrap{white-space:normal;max-width:420px}.dim{color:var(--ink-muted)}.refetching{opacity:.6;transition:opacity .12s ease}.table-footer{display:flex;align-items:center;gap:12px;padding:10px 4px 0;color:var(--ink-2);font-size:12px}.filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}select,input,button{font-family:inherit;font-size:13px;color:var(--ink);background:var(--raised);border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:7px 10px}input::placeholder{color:var(--ink-muted)}button{cursor:pointer}button:hover,select:hover{border-color:var(--s1)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--s1);border-color:var(--s1);color:#fff;font-weight:500}button.ghost{background:transparent}:focus-visible{outline:2px solid var(--s1);outline-offset:2px}.badge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;font-size:12px;border:1px solid var(--hairline);background:var(--raised);white-space:nowrap}.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--ink-muted)}.badge.good .dot{background:var(--good)}.badge.warn .dot{background:var(--warn)}.badge.critical .dot{background:var(--critical)}.badge.info .dot{background:var(--s1)}.badge.nodata{border-style:dashed;color:var(--ink-muted)}.meter{height:6px;background:var(--grid);border-radius:3px;overflow:hidden;min-width:60px}.meter>span{display:block;height:100%;background:var(--s1)}.backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#040811b8;display:flex;align-items:flex-start;justify-content:center;padding:48px 16px;overflow-y:auto;z-index:100}.modal{background:var(--raised);border:1px solid var(--hairline);border-radius:var(--radius);width:min(960px,100%);max-width:100%}.modal header{display:flex;align-items:center;gap:12px;padding:16px 20px;border-bottom:1px solid var(--hairline)}.modal header h3{margin:0;font-size:16px}.modal .body{padding:20px;display:flex;flex-direction:column;gap:18px}.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 20px}.kv .k{color:var(--ink-muted);font-size:12px}.kv .v{font-size:14px;font-variant-numeric:tabular-nums}pre.raw{background:var(--bg);border:1px solid var(--hairline);border-radius:var(--radius-sm);padding:12px;overflow-x:auto;font-size:12px;white-space:pre-wrap;word-break:break-word;margin:0}.empty,.error-state{padding:40px 20px;text-align:center;color:var(--ink-2)}.error-state{color:var(--serious)}.skeleton{height:40px;border-bottom:1px solid var(--grid);background:linear-gradient(90deg,var(--surface),var(--raised),var(--surface));background-size:200% 100%;animation:shimmer 1.4s infinite}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.login{min-height:100vh;display:flex;align-items:center;justify-content:center}.login form{background:var(--surface);border:1px solid var(--hairline);border-radius:var(--radius);padding:28px;width:320px;display:flex;flex-direction:column;gap:12px}.login h1{font-size:18px;margin:0 0 8px}.login .err{color:var(--serious);font-size:13px}
