:root{color-scheme:light;--surface-0: #f4f3f0;--surface-1: #fcfcfb;--line: #e2e0da;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #85837c;--series-1: #2a78d6;--series-2: #eb6834;--good: #1baf7a;--bad: #e34948;--radius: 10px;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--surface-0: #121211;--surface-1: #1a1a19;--line: #333331;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #8d8c84;--series-1: #3987e5;--series-2: #d95926;--good: #199e70;--bad: #e66767}}:root[data-theme=dark]{color-scheme:dark;--surface-0: #121211;--surface-1: #1a1a19;--line: #333331;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #8d8c84;--series-1: #3987e5;--series-2: #d95926;--good: #199e70;--bad: #e66767}*{box-sizing:border-box}body{margin:0;background:var(--surface-0);color:var(--text-primary);font-size:14px;line-height:1.5}h1,h2{margin:0}a{color:var(--series-1)}.login-page{display:grid;place-items:center;min-height:100vh}.login-card{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:28px;width:min(340px,calc(100vw - 32px));display:grid;gap:14px}.login-card h1{font-size:22px;letter-spacing:-.02em}.login-card .sub{margin:-12px 0 4px;color:var(--text-secondary);font-size:13px}.login-card label{display:grid;gap:5px;font-size:12px;color:var(--text-secondary)}input{font:inherit;padding:9px 11px;border-radius:7px;border:1px solid var(--line);background:var(--surface-0);color:var(--text-primary)}input:focus-visible,button:focus-visible{outline:2px solid var(--series-1);outline-offset:2px}.error{color:var(--bad);font-size:13px;margin:0}button{font:inherit;padding:8px 14px;border-radius:7px;cursor:pointer;border:1px solid var(--line);background:var(--surface-0);color:var(--text-primary)}button.primary{background:var(--series-1);border-color:var(--series-1);color:#fff}button:disabled{opacity:.5;cursor:not-allowed}.topbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 20px;background:var(--surface-1);border-bottom:1px solid var(--line)}.topbar h1{font-size:17px;letter-spacing:-.02em}.conn{display:flex;align-items:center;gap:10px}.who{margin-left:auto;display:flex;align-items:center;gap:12px;color:var(--text-secondary);font-size:13px}#status{font-size:12px;color:var(--text-muted)}#status[data-kind=ok]{color:var(--good)}#status[data-kind=busy]{color:var(--series-2)}#status[data-kind=error]{color:var(--bad)}.banner{margin:12px 20px 0;padding:10px 14px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface-1);font-size:13px;color:var(--text-secondary)}.banner[data-kind=error]{border-color:var(--bad);color:var(--bad)}main{display:grid;gap:16px;padding:16px 20px 40px;max-width:1100px;margin:0 auto}.tiles{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.tile{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.tile .label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted)}.tile .value{font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:4px;font-variant-numeric:tabular-nums}.tile .sub{font-size:12px;color:var(--text-secondary)}.panel{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px}.panel-head{display:flex;align-items:baseline;gap:10px;margin-bottom:10px}.panel-head h2{font-size:13px;font-weight:600}.hint{font-size:12px;color:var(--text-muted);margin-left:auto}.chart{width:100%}.chart svg{display:block;width:100%;height:auto;overflow:visible}.empty{color:var(--text-muted);font-size:13px;padding:20px 0;text-align:center}.metrics{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.metric{border:1px solid var(--line);border-radius:8px;padding:10px 12px}.metric .m-label{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.metric .m-value{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.metric .m-sub{font-size:12px;color:var(--text-secondary);font-variant-numeric:tabular-nums}.table-scroll{overflow-x:auto}table{width:100%;border-collapse:collapse;font-size:13px}th{text-align:left;font-weight:500;color:var(--text-muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:4px 10px 6px 0;white-space:nowrap}td{padding:6px 10px 6px 0;border-top:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums}td.na{color:var(--text-muted)}.log-panel summary{cursor:pointer;font-size:13px;color:var(--text-secondary)}#log{margin:10px 0 0;max-height:200px;overflow:auto;font-size:12px;color:var(--text-muted);white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.tip{position:fixed;pointer-events:none;z-index:20;background:var(--surface-1);border:1px solid var(--line);border-radius:7px;padding:6px 9px;font-size:12px;color:var(--text-primary);box-shadow:0 6px 20px #0000002e;white-space:nowrap}button.close{margin-left:auto;padding:4px 10px;font-size:12px}.detail-meta{display:grid;gap:8px;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:14px}.detail-meta div{border:1px solid var(--line);border-radius:8px;padding:8px 10px}.detail-meta .k{font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em}.detail-meta .v{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.detail-note{grid-column:1 / -1;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--text-secondary)}.detail-note strong{color:var(--text-primary)}.sparks{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));margin-bottom:16px}.spark{border:1px solid var(--line);border-radius:8px;padding:8px 10px 6px}.spark svg{display:block;width:100%;height:64px}.spark-head{display:flex;align-items:baseline;gap:8px;margin-bottom:2px}.spark-label{font-size:12px;font-weight:600}.spark-range{margin-left:auto;font-size:10px;color:var(--text-muted);font-variant-numeric:tabular-nums}.spark-sub{font-size:10px;color:var(--text-muted);margin-top:2px}tr.clickable{cursor:pointer}tr.clickable:hover td{background:var(--surface-0)}.capture-row{display:flex;gap:8px;align-items:center;margin:14px 0;flex-wrap:wrap}.capture-row input{flex:1 1 220px}.vec{font-variant-numeric:tabular-nums}.vec .m-value{font-size:15px}.vec .m-sub{font-size:11px}.axis-hit{color:var(--good);font-weight:600}.axis-miss{color:var(--series-2);font-weight:600}
