:root{color-scheme:dark;--bg: #101411;--bg-2: #181e1a;--panel: #1c2420;--line: #314038;--ink: #e8f2eb;--muted: #93a59a;--cyan: #3ddec8;--cyan-ink: #06241f;--amber: #e2b15a;--bad: #e36a5c;--ok: #7dce8d;--shadow: 0 18px 40px rgba(0, 0, 0, .28);font-family:Avenir Next,Segoe UI,sans-serif;background:var(--bg);color:var(--ink)}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:radial-gradient(1200px 500px at 10% -10%,rgba(61,222,200,.14),transparent 55%),var(--bg)}button,select{font:inherit}.page{width:min(1120px,calc(100% - 32px));margin:0 auto;padding:28px 0 48px}.top{display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.brand{display:flex;gap:16px;align-items:center}.wordmark{display:inline-flex;align-items:center;gap:4px;font-size:28px;letter-spacing:-.04em;font-weight:700}.bolt{width:16px;height:24px;fill:var(--cyan)}.eyebrow{margin:0;color:var(--cyan);text-transform:uppercase;letter-spacing:.14em;font-size:11px}h1,h2{font-weight:650;letter-spacing:-.03em}h1{margin:0;font-size:28px}h2{margin:0;font-size:18px}.top-actions{display:flex;gap:12px;align-items:center}.modes{display:flex;padding:4px;background:var(--bg-2);border:1px solid var(--line);border-radius:999px}.mode,.button,.toggle,.choice-button{border:0;cursor:pointer}.mode{background:transparent;color:var(--muted);border-radius:999px;padding:8px 14px}.mode.active{background:var(--ink);color:#14201b}.mode:disabled{opacity:.45;cursor:not-allowed}.button{background:var(--cyan);color:var(--cyan-ink);border-radius:999px;padding:10px 16px;font-weight:700}.button.ghost,.button.small.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}.button.small{padding:7px 12px;font-size:14px}.button:disabled{opacity:.5;cursor:not-allowed}.status{display:flex;gap:10px;align-items:center;margin:18px 0 8px;color:var(--muted)}.dot{width:10px;height:10px;border-radius:50%;background:var(--muted)}.dot.connected{background:var(--ok);box-shadow:0 0 0 4px #7dce8d26}.dot.connecting{background:var(--amber)}.serial{margin-left:auto;font-family:ui-monospace,monospace;color:var(--ink)}.banner,.hint{border-radius:12px;padding:10px 14px;margin:8px 0}.banner.bad{background:#e36a5c24;color:#ffd0ca}.banner.warn,.hint{background:#e2b15a1f;color:#f3ddb0}.banner.sim{background:#3ddec81a;color:#d7fff6}.intro{margin-top:22px;padding:28px;background:var(--panel);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.intro h2{font-size:32px;max-width:16ch}.intro p,.intro li,.fine,.foot{color:var(--muted);line-height:1.5}.dashboard{display:grid;gap:16px;margin-top:16px}.hero,.split{display:grid;grid-template-columns:1.1fr 1fr;gap:16px}.speed-card,.battery-card,.panel,.metrics article{background:var(--panel);border:1px solid var(--line);border-radius:18px}.speed-card,.battery-card{padding:22px;min-height:210px}.label{margin:0;color:var(--muted);font-size:13px;letter-spacing:.08em;text-transform:uppercase}.speed{margin:8px 0 0;font-size:64px;line-height:.95;font-variant-numeric:tabular-nums;letter-spacing:-.04em}.sub,.assist-line{color:var(--muted)}.assist-line{margin-bottom:0;color:var(--ink)}.battery-head{display:flex;justify-content:space-between;align-items:baseline}.charge{margin:0;font-size:40px;font-variant-numeric:tabular-nums}.bar{height:12px;background:#0e1411;border-radius:999px;overflow:hidden;margin:12px 0 16px}.bar span{display:block;height:100%;background:linear-gradient(90deg,#1f8f7e,var(--cyan))}.mini{display:grid;grid-template-columns:1fr 1fr;gap:10px 16px;margin:0}.mini dt{color:var(--muted);font-size:12px}.mini dd{margin:2px 0 0;font-variant-numeric:tabular-nums}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.metrics article{padding:14px 16px}.metrics p:last-child{margin:6px 0 0;font-size:20px;font-variant-numeric:tabular-nums}.panel{padding:18px}.panel-head{display:flex;justify-content:space-between;gap:12px;align-items:center;margin-bottom:8px}.faults.active{border-color:#e36a5cb3}.faults ul,.log ol{list-style:none;margin:0;padding:0}.faults li{padding:10px 0;border-top:1px solid var(--line)}.faults li span,.faults li p{color:var(--muted)}.faults li p{margin:4px 0 0}.empty{color:var(--muted)}.settings{display:grid;gap:8px}.setting{display:grid;grid-template-columns:1fr auto;gap:8px;padding-bottom:8px;border-bottom:1px solid var(--line)}.setting span{color:var(--muted)}.setting.locked{grid-template-columns:1fr auto auto;align-items:center}.setting.locked em{font-style:normal;color:var(--amber);font-size:12px;letter-spacing:.06em;text-transform:uppercase}.switch{display:flex;gap:8px;align-items:center;color:var(--muted)}.filter-toggle{margin:4px 0 12px;color:var(--ink)}.explorer{margin-top:12px}.explorer .service-list,.explorer .service-list ul{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:12px}.explorer h3,.explorer code{font-family:ui-monospace,monospace;font-size:13px;font-weight:650;overflow-wrap:anywhere}.explorer h3{margin:0}.explorer .props{color:var(--muted);font-size:13px}.explorer .service-list>li{padding-top:10px;border-top:1px solid var(--line)}.explorer .service-list ul li{display:grid;gap:2px}.explorer .value,.explorer .notes{margin:4px 0 0;font-family:ui-monospace,monospace;font-size:13px;overflow-wrap:anywhere}.explorer .notes{list-style:none;padding:0}.explorer .button{justify-self:start;margin-top:6px}.experimental-list{display:grid;gap:8px}.experimental-list .button{justify-self:start}.fd80 h3{margin:16px 0 8px;font-size:15px}.other-fields{width:100%;border-collapse:collapse;font-size:14px}.other-fields th,.other-fields td{text-align:left;padding:6px 8px;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.other-fields th{color:var(--muted);font-weight:650}.raw-json-details,.manual-handshake{margin-top:14px}.raw-json-details summary,.manual-handshake summary{cursor:pointer;color:var(--cyan)}.raw-json{margin:8px 0 0;max-height:240px;overflow:auto;padding:10px;background:#121815;border-radius:10px;font-family:ui-monospace,monospace;font-size:12px;white-space:pre-wrap}.record-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:14px}.record-row span{color:var(--muted);font-size:13px}.sample-launch{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.controls{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.toggle,.choice-button{background:#121815;color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.toggle{min-width:140px;display:flex;justify-content:space-between;gap:12px}.toggle.on,.choice-button.active{border-color:var(--cyan);color:var(--cyan)}.choice{display:flex;flex-direction:column;gap:6px;color:var(--muted)}.choice div{display:flex;gap:6px}.log ol{max-height:280px;overflow:auto;display:grid;gap:8px}.log li{display:grid;grid-template-columns:42px 140px 88px 1fr;gap:8px;align-items:start;font-size:13px}.log code{font-family:ui-monospace,monospace;white-space:pre-wrap;word-break:break-all;color:#d5e6dc}.crc{color:var(--muted)}.crc.ok{color:var(--ok)}.crc.bad,.dir.out{color:var(--amber)}.dir.in{color:var(--cyan)}.injector{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:12px}.injector label{display:grid;gap:4px;color:var(--muted);font-size:13px}.injector select{background:#121815;color:var(--ink);border:1px solid var(--line);border-radius:8px;padding:8px}.foot{margin-top:22px;font-size:13px}.foot p{margin:4px 0}@media(max-width:860px){.top,.hero,.split,.metrics{grid-template-columns:1fr;display:grid}.top{align-items:stretch}.top-actions{flex-wrap:wrap}.speed{font-size:48px}.serial{margin-left:0}.status{flex-wrap:wrap}.log li{grid-template-columns:1fr}}.session-code{margin:8px 0;font-family:"ui-monospace",SFMono-Regular,monospace;font-size:40px;letter-spacing:.18em}.pending-card{margin-top:16px;padding:18px;border:1px solid var(--amber);border-radius:18px;background:#2a2418}.plain-command{font-size:20px}.button.bad{background:var(--bad);color:#2a0d0a}.command-list,.assist-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:12px}.claim-form,.assist-form{display:grid;gap:8px;justify-items:start}.claim-form input,.assist-form input,.assist-form select{font:inherit;color:var(--ink);background:var(--bg-2);border:1px solid var(--line);border-radius:12px;padding:10px 12px}.claim-form input{font-size:28px;letter-spacing:.16em;width:min(100%,360px)}.audit-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}.audit-list li{color:var(--muted);font-size:14px}a{color:var(--cyan)}
