/* Tokens are the sole theme boundary. Pages consume shared components, never override a theme. */
:root{color-scheme:dark;--bg:#0b1421;--panel:#121f30;--inset:#0e1928;--ink:#eef5fa;--muted:#afc1d1;--border:#34485d;--accent:#8ae0c2;--accent-ink:#09271e;--error:#ffa6a6;--warning:#f2c66d;--active:#4fb796;--idle:#dcb253;--locked:#98a7bb;--disconnected:#69a9d7;--unobserved:#c598ce;--radius:14px;--shadow:0 12px 28px #0002;font-family:Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--ink)}
:root[data-theme=classic]{color-scheme:light;--bg:#eef3f6;--panel:#fff;--inset:#f6f8fa;--ink:#182f40;--muted:#4b6172;--border:#b9c9d4;--accent:#176f5b;--accent-ink:#fff;--error:#a62032;--warning:#815900;--active:#1d8468;--idle:#b58421;--locked:#687d92;--disconnected:#2c709f;--unobserved:#9b61aa;--radius:8px;--shadow:0 3px 12px #173c5010}
*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit;color:var(--ink);background:var(--inset);border:1px solid var(--border);border-radius:7px;min-height:42px;padding:9px 12px;max-width:100%}button{cursor:pointer;font-weight:600}button:hover{border-color:var(--accent)}button:disabled{opacity:.55;cursor:not-allowed}.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}a{color:var(--accent);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--accent);outline-offset:3px}[hidden]{display:none!important}.shell{max-width:1480px;margin:auto;padding:26px 32px 36px}.masthead,.heading,.inline,.section-head{display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}.masthead{border-bottom:1px solid var(--border);padding-bottom:22px}.brand{color:var(--ink);display:flex;align-items:center;gap:12px;text-decoration:none;font-size:23px;font-weight:700}.brand-mark{color:var(--accent);border:2px solid var(--accent);border-radius:50%;width:30px;height:30px;text-align:center;line-height:25px}.brand-sub{font-size:14px;font-weight:400;border-left:1px solid var(--border);padding-left:12px}.muted,.fine,label{color:var(--muted)}.fine{font-size:12px;line-height:1.6}.badge,.pill{font-size:12px;border:1px solid var(--border);border-radius:20px;padding:6px 11px}.badge{color:var(--accent)}.eyebrow{color:var(--accent);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:1.8px;margin:0 0 10px}h1{font-size:clamp(28px,3vw,42px);letter-spacing:-1px;line-height:1.15;margin:0 0 12px}h2{font-size:19px;margin:0 0 16px}h3{font-size:15px;margin:18px 0 10px}p{line-height:1.5}.heading{margin:32px 0 20px}.heading p{margin-bottom:0}.card{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:22px;margin-top:20px;box-shadow:var(--shadow);min-width:0}.login-panel{max-width:560px;margin:54px auto;padding:36px}.login-panel form{display:grid;gap:18px;margin-top:24px}label{display:flex;flex-direction:column;gap:8px;font-size:12px;font-weight:600;min-width:0}.compact{flex-direction:row;align-items:center}.compact select{font-size:12px}.tabs{display:flex;gap:8px;flex-wrap:wrap}.tabs a{color:var(--muted);text-decoration:none;padding:11px 18px;border-radius:7px;border:1px solid transparent}.tabs a[aria-current=page]{color:var(--accent);background:var(--panel);border-color:var(--border)}.filter-grid{display:grid;grid-template-columns:1fr 1fr auto 1fr;gap:16px;align-items:end}.device-row{grid-template-columns:minmax(240px,1fr) auto auto auto;margin-top:18px}.filter-grid input,.filter-grid select{width:100%}.display-settings{display:flex;gap:24px;align-items:end;flex-wrap:wrap}.display-settings input{max-width:180px}.summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.metric{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.metric strong{display:block;font-size:28px;letter-spacing:-.6px;margin:8px 0}.metric span{color:var(--muted);font-size:12px}.empty{text-align:center;padding:60px 20px;color:var(--muted)}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;margin:14px 0}.key{display:flex;gap:6px;align-items:center}.swatch{width:11px;height:11px;border-radius:2px}.state-0{fill:var(--active);background:var(--active)}.state-1{fill:var(--idle);background:var(--idle)}.state-2{fill:var(--locked);background:var(--locked)}.state-3{fill:var(--disconnected);background:var(--disconnected)}.state-4{fill:var(--unobserved);background:var(--unobserved)}.chart-wrap{overflow:auto;border:1px solid var(--border);border-radius:8px;margin-top:14px;max-height:600px}.chart{display:block;width:100%;min-width:700px}.chart text{fill:var(--muted);font:11px Segoe UI,Arial,sans-serif}.chart .grid-line{stroke:var(--border);stroke-width:1}.chart .trace{fill:none;stroke:var(--accent);stroke-width:2}.chart .point{fill:var(--accent)}.chart .track{fill:var(--inset)}.chart rect[tabindex]{cursor:pointer;stroke:var(--panel);stroke-width:1}.detail{background:var(--inset);border:1px solid var(--border);border-radius:8px;padding:16px;margin-top:14px;overflow-wrap:anywhere;white-space:pre-wrap;font-size:13px;line-height:1.7}.table-scroll{overflow:auto;margin-top:12px}table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}th{color:var(--muted);font-weight:600;font-size:11px;letter-spacing:.3px}td,th{padding:12px 10px;border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere}td:first-child,th:first-child{padding-left:0}tr:last-child td{border-bottom:0}td button{font-size:12px;min-height:32px;padding:5px 8px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:16px;font-size:12px;color:var(--muted)}.pagination div{display:flex;gap:8px}.warning{color:var(--warning)}.error{color:var(--error)}.good{color:var(--accent)}details{margin:12px 0;border:1px solid var(--border);border-radius:8px;padding:12px}summary{cursor:pointer;font-size:13px;font-weight:600;overflow-wrap:anywhere}pre{white-space:pre-wrap;overflow-wrap:anywhere;font:12px/1.6 ui-monospace,Consolas,monospace}.footer{border-top:1px solid var(--border);padding-top:20px;margin-top:32px}#message{min-height:24px}.skip-link{position:absolute;left:12px;top:-70px;background:var(--panel);padding:12px;z-index:2}.skip-link:focus{top:10px}
@media(max-width:800px){.shell{padding:20px 16px}.filter-grid{grid-template-columns:1fr 1fr}.device-row{grid-template-columns:1fr 1fr}.device-row label{grid-column:1/-1}.summary-grid{grid-template-columns:1fr}.card{padding:16px}.brand-sub{display:none}.tabs a{padding:10px 12px}.login-panel{padding:24px;margin-top:28px}.compact{flex-direction:column;align-items:start}.masthead .inline{gap:12px}.heading{align-items:start}.display-settings{gap:12px}}
@media print{.masthead,.filters,.tabs,.display-settings,#logout,#message,.pagination{display:none}.shell{padding:0;max-width:none}.card,.metric{box-shadow:none;break-inside:avoid}.chart-wrap{max-height:none}.table-scroll{overflow:visible}}
.chart.zoom-2{width:200%}.chart.zoom-4{width:400%}.chart.zoom-8{width:800%}
table{min-width:720px}@media(max-width:500px){.filter-grid:not(.device-row){grid-template-columns:1fr}.filter-grid:not(.device-row) button{justify-self:start}.device-row{grid-template-columns:1fr 1fr}}
