:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--bg:#fcfcfb;--panel:#fff;--panel-2:#f3f3f0;--border:#e3e2dd;--text:#0b0b0b;--text-2:#52514e;--muted:#8a8984;--accent:#2a78d6;--good:#008300;--warn:#eda100;--bad:#e34948;--series-1:#2a78d6;--ns-run:#2a78d6;--ns-model:#4a3aa7;--ns-screen:#1baf7a;--ns-graph:#eb6834;--ns-loop:#eda100;--ns-feed:#e87ba4;--ns-harness:#8a8984;--ns-capability:#008300;--ns-device:#52514e;--mono:ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#131312;--panel:#1a1a19;--panel-2:#232322;--border:#2e2e2c;--text:#fff;--text-2:#c3c2b7;--muted:#8a8984;--accent:#3987e5;--bad:#e66767;--warn:#c98500;--series-1:#3987e5;--ns-run:#3987e5;--ns-model:#9085e9;--ns-screen:#199e70;--ns-graph:#d95926;--ns-loop:#c98500;--ns-feed:#d55181}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}code,pre,.mono{font-family:var(--mono);font-size:12.5px}pre{white-space:pre-wrap;word-break:break-word;margin:0}button,input,select,textarea{font:inherit;color:inherit;background:var(--panel);border:1px solid var(--border);border-radius:6px;padding:5px 9px}button{cursor:pointer}button:hover{background:var(--panel-2)}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.small,.chip{border-radius:999px;padding:2px 8px;font-size:12px}table{border-collapse:collapse;width:100%}th,td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:6px 8px}th{color:var(--text-2);text-transform:uppercase;letter-spacing:.03em;font-size:12px;font-weight:600}tr.clickable{cursor:pointer}tr.clickable:hover{background:var(--panel-2)}.app{flex-direction:column;min-height:100%;display:flex}.topbar{border-bottom:1px solid var(--border);background:var(--panel);z-index:10;align-items:center;gap:12px;padding:8px 16px;display:flex;position:sticky;top:0}.topbar .brand{color:var(--text);font-weight:700}.topbar nav{align-items:center;gap:10px;display:flex}.topbar nav a{color:var(--text-2);border-radius:6px;padding:3px 8px}.topbar nav a.active{background:var(--panel-2);color:var(--text)}.nav-sep{color:var(--muted)}.ws-dot{color:var(--muted);margin-left:auto;font-size:12px}.ws-dot:before{content:"";background:var(--muted);border-radius:50%;width:8px;height:8px;margin-right:6px;display:inline-block}.ws-dot.open:before{background:var(--good)}.ws-dot.connecting:before{background:var(--warn)}.ws-dot.closed:before{background:var(--bad)}main{flex:1;min-width:0;padding:16px}h1{margin:0 0 12px;font-size:20px}h2{color:var(--text-2);margin:0 0 8px;font-size:15px}h3{color:var(--text-2);text-transform:uppercase;letter-spacing:.03em;margin:0 0 6px;font-size:13px}.muted{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.grid{gap:12px;display:grid}.grid.cards{grid-template-columns:repeat(auto-fill,minmax(280px,1fr))}.split{grid-template-columns:minmax(0,1fr) 380px;align-items:start;gap:16px;display:grid}@media (width<=1000px){.split{grid-template-columns:1fr}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:10px;min-width:0;padding:12px}.panel+.panel{margin-top:12px}.stack>*+*{margin-top:10px}.card{color:inherit;display:block}.card:hover{border-color:var(--accent);text-decoration:none}.card .title{align-items:center;gap:8px;font-size:15px;font-weight:600;display:flex}.dot{background:var(--muted);border-radius:50%;width:9px;height:9px;display:inline-block}.dot.online{background:var(--good)}.kv{grid-template-columns:auto 1fr;gap:2px 12px;font-size:13px;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}.qr{background:#fff;border-radius:8px;width:220px;height:220px;padding:8px}.qr svg{width:100%;height:100%}.chips{flex-wrap:wrap;gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--panel);cursor:pointer;color:var(--text-2)}.chip.on{color:var(--text);border-color:currentColor}.stream{max-height:calc(100vh - 180px);overflow:auto}.ev{border-bottom:1px solid var(--border);grid-template-columns:74px 150px minmax(0,1fr);align-items:baseline;gap:10px;padding:5px 6px;display:grid}.ev:hover{background:var(--panel-2)}.ev .t{color:var(--muted);font-family:var(--mono);font-size:12px}.ev .k{font-family:var(--mono);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.ev .k:before{content:"";background:var(--ns-color,var(--muted));border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.ev .s{text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.ev.open .s{white-space:normal}.ev.err .s{color:var(--bad)}.ev-detail{grid-column:1/-1;padding:8px 0 4px}.tl{border-left:2px solid var(--border);margin:0 0 0 8px;padding:0;list-style:none}.tl li{padding:6px 0 6px 18px;position:relative}.tl li:before{content:"";background:var(--ns-color,var(--muted));border:2px solid var(--bg);border-radius:50%;width:12px;height:12px;position:absolute;top:12px;left:-7px}.tl .head{cursor:pointer;align-items:baseline;gap:10px;display:flex}.tl .head .kind{font-family:var(--mono);color:var(--text-2);min-width:120px;font-size:12px}.tl .head .t{color:var(--muted);font-family:var(--mono);font-size:11px}.tl .body{margin-top:6px}.json{font-family:var(--mono);font-size:12px;line-height:1.4}.json details{margin-left:12px}.json summary{cursor:pointer;color:var(--text-2)}.json .key{color:var(--ns-model)}.json .str{color:var(--ns-screen)}.json .num{color:var(--ns-graph)}.json .lit{color:var(--muted)}.thumb{border:1px solid var(--border);cursor:zoom-in;background:var(--panel-2);border-radius:6px;max-width:120px;max-height:200px}.shot-big{border-radius:8px;max-width:100%;max-height:80vh}.lightbox{z-index:100;cursor:zoom-out;background:#000000bf;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.drawer{background:var(--panel);border-left:1px solid var(--border);z-index:50;width:min(760px,95vw);padding:16px;position:fixed;top:0;bottom:0;right:0;overflow:auto;box-shadow:-8px 0 30px #00000026}.drawer .close{position:absolute;top:10px;right:10px}.msg{border:1px solid var(--border);border-radius:8px;margin-top:8px;padding:8px 10px}.msg .role{text-transform:uppercase;color:var(--muted);letter-spacing:.04em;margin-bottom:4px;font-size:11px}.msg.user{border-left:3px solid var(--ns-run)}.msg.assistant{border-left:3px solid var(--ns-model)}.msg.system{border-left:3px solid var(--muted)}.block{margin-top:6px}.block.tool{background:var(--panel-2);border-radius:6px;padding:6px 8px}.block .tag{font-family:var(--mono);color:var(--muted);font-size:11px}.tabs{gap:6px;margin:10px 0;display:flex}.tabs button.on{background:var(--panel-2);border-color:var(--text-2)}.tree{font-family:var(--mono);font-size:12px}.tree .node{white-space:nowrap;padding:1px 0}.tree .node.hidden{color:var(--muted)}.tree .node .id{color:var(--ns-model)}.tree .node .txt{color:var(--ns-screen)}.tree .node .cls{color:var(--muted)}.tree .node .flag{color:var(--ns-graph)}.badge{background:var(--panel-2);color:var(--text-2);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-block}.badge.ok{background:color-mix(in srgb, var(--good) 15%, transparent);color:var(--good)}.badge.fail{background:color-mix(in srgb, var(--bad) 15%, transparent);color:var(--bad)}.badge.running{background:color-mix(in srgb, var(--warn) 18%, transparent);color:var(--warn)}.stat{flex-direction:column;gap:2px;min-width:90px;display:flex}.stat .v{font-variant-numeric:tabular-nums;font-size:20px;font-weight:600}.stat .l{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.stats{flex-wrap:wrap;gap:20px;display:flex}.cy{border:1px solid var(--border);background:var(--panel);border-radius:10px;height:calc(100vh - 160px);min-height:480px}.side{max-height:calc(100vh - 160px);overflow:auto}.list-item{border-bottom:1px solid var(--border);cursor:pointer;padding:6px 4px}.list-item:hover{background:var(--panel-2)}.fp{font-family:var(--mono);font-size:12px}.bars{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:3px 8px;font-size:12px;display:grid}.bars .bar{background:var(--series-1);border-radius:0 4px 4px 0;min-width:2px;height:10px}.bars .lbl{align-items:center;gap:8px;min-width:0;display:flex}.bars .lbl span:first-child{text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);flex:0 0 140px;overflow:hidden}.spark{display:block}.spark path{fill:none;stroke:var(--series-1);stroke-width:2px;stroke-linejoin:round;stroke-linecap:round}.spark circle{fill:var(--series-1);stroke:var(--panel);stroke-width:2px}.spark .miss{fill:var(--bad)}.tile{border:1px solid var(--border);border-radius:8px;padding:8px 10px}.tile .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px}.tile .value{font-size:18px;font-weight:600}.tile .value.null{color:var(--bad)}.tiles{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;display:grid}.banner{background:color-mix(in srgb, var(--warn) 15%, transparent);color:var(--text);border-radius:8px;padding:8px 12px;font-size:13px}.empty{color:var(--muted);text-align:center;padding:20px}.copy{font-family:var(--mono);background:var(--panel-2);border-radius:6px;align-items:center;gap:8px;padding:4px 8px;font-size:12px;display:inline-flex}.toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.toolbar input[type=text]{min-width:220px}.page-head{align-items:baseline;gap:12px;margin-bottom:12px;display:flex}.page-head h2{margin:0}a.btn{border:1px solid var(--border);color:inherit;background:var(--panel-2);border-radius:6px;padding:6px 12px;text-decoration:none;display:inline-block}a.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}a.btn.small{border-radius:999px;padding:2px 8px;font-size:12px}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px}.login-wrap{justify-content:center;align-items:center;min-height:70vh;display:flex}.login{flex-direction:column;gap:10px;width:320px;display:flex}.login input{width:100%}.login-error{color:var(--bad);font-size:13px}.auth-badge{background:var(--warn);color:#000;border-radius:999px;margin-left:8px;padding:2px 8px;font-size:11px}.topbar>button.small{margin-left:8px}.enroll-state{font-size:12px}.enroll-state.revoked{color:var(--bad)}.enroll-state.enrolled{color:var(--good)}.enroll-state.none{color:var(--muted)}button.danger{background:var(--bad);color:#fff;border-color:var(--bad)}.board{grid-template-columns:repeat(4,minmax(220px,1fr));align-items:start;gap:12px;display:grid}@media (width<=900px){.board{grid-template-columns:repeat(2,1fr)}}.lane{background:var(--panel);border:1px solid var(--border);border-radius:8px;min-height:120px;padding:10px}.lane h3{text-transform:uppercase;letter-spacing:.05em;margin:0 0 8px;font-size:13px}.card{background:var(--panel-2);border:1px solid var(--border);cursor:grab;border-radius:6px;margin-bottom:8px;padding:8px 10px}.card.dragging{opacity:.4}.card-title{font-weight:600}.card-note{white-space:pre-wrap;margin-top:4px;font-size:12px}.card-meta{margin-top:4px;font-size:11px}.card.editing{cursor:default;flex-direction:column;gap:6px;display:flex}.card.editing input,.card.editing textarea{width:100%}.add-card{border:1px dashed var(--border);background:0 0;width:100%}button.danger{color:#fff;background:#b3261e;border-color:#b3261e}.error-bar{color:inherit;background:#b3261e22;border:1px solid #b3261e;border-radius:6px;margin-bottom:12px;padding:8px 12px}.request-row{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:8px 0;display:flex}.request-row:last-child{border-bottom:none}.req-chip{text-transform:uppercase;letter-spacing:.04em;border-radius:999px;padding:1px 10px;font-size:12px;display:inline-block}.req-open{background:var(--panel-2);border:1px solid var(--border)}.req-claimed{background:#8a6d0022;border:1px solid #8a6d00}.req-doing{background:#1a56db22;border:1px solid #1a56db}.req-verifying{background:#6d28d922;border:1px solid #6d28d9}.req-done{background:#04785722;border:1px solid #047857}.req-failed{background:#b3261e22;border:1px solid #b3261e}:root{--series-1:#2a78d6;--series-2:#eb6834}@media (prefers-color-scheme:dark){:root{--series-1:#3987e5;--series-2:#d95926}}.s1{fill:var(--series-1)}.s2{fill:var(--series-2)}svg .grid{stroke:var(--border);stroke-width:1px}svg .tick{fill:var(--muted);font-size:10px}.legend{color:var(--muted);gap:16px;margin-top:4px;font-size:12px;display:flex}.legend .swatch{vertical-align:-1px;border-radius:3px;width:10px;height:10px;margin-right:4px;display:inline-block}.price-in{width:80px}
