:root{--void: #070c11;--surface: #0d151d;--surface-2: #131f2a;--line: #1e2d3c;--line-bright: #2b4356;--grid: #101d29;--ink: #e9f2f6;--ink-dim: #6f8698;--ink-faint: #47596a;--scan: #19d3e6;--scan-deep: #0c9fb0;--scan-glow: rgba(25, 211, 230, .32);--lock: #57e08a;--caution: #f4b740;--cold: #ff5d6b;--mono: ui-monospace, "SF Mono", "JetBrains Mono", "Cascadia Code", "Roboto Mono", monospace;--sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--touch: 48px;--r: 10px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--void);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}.label{font-size:.66rem;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-dim);font-weight:600}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.view{min-height:100%;display:flex;flex-direction:column}.view-centered{align-items:center;justify-content:center;padding:max(24px,env(safe-area-inset-top)) 22px max(24px,env(safe-area-inset-bottom));position:relative;overflow:hidden}.view-centered:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:linear-gradient(var(--grid) 1px,transparent 1px),linear-gradient(90deg,var(--grid) 1px,transparent 1px);background-size:40px 40px;-webkit-mask-image:radial-gradient(circle at 50% 42%,#000 0%,transparent 72%);mask-image:radial-gradient(circle at 50% 42%,#000 0%,transparent 72%);opacity:.6;pointer-events:none}.card{position:relative;width:100%;max-width:380px;z-index:1}.card-connect:before,.card-connect:after{content:"";position:absolute;width:14px;height:14px;border:1px solid var(--line-bright);pointer-events:none}.card-connect:before{top:-10px;left:-10px;border-right:none;border-bottom:none}.card-connect:after{bottom:-10px;right:-10px;border-left:none;border-top:none}.card-unsupported{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:26px;max-width:420px}.card-unsupported h1{margin:0 0 12px;font-size:1.25rem;letter-spacing:-.01em}.card-unsupported p{color:var(--ink-dim);line-height:1.5;margin:0 0 10px}.card-unsupported strong{color:var(--ink);font-weight:600}.brand{display:flex;flex-direction:column;align-items:center;margin-bottom:34px}.scope{position:relative;width:128px;height:128px;border-radius:50%;border:1px solid var(--line-bright);background:radial-gradient(circle at 50% 50%,rgba(25,211,230,.06),transparent 70%),var(--surface);display:grid;place-items:center;margin-bottom:20px;box-shadow:inset 0 0 0 6px #ffffff04,0 0 40px #00000080}.scope:before{content:"";position:absolute;top:22px;right:22px;bottom:22px;left:22px;border-radius:50%;border:1px solid var(--line)}.scope:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(var(--line) 1px,transparent 1px) 50% 50% / 100% 50%,linear-gradient(90deg,var(--line) 1px,transparent 1px) 50% 50% / 50% 100%;background-repeat:no-repeat;opacity:.5;-webkit-mask-image:radial-gradient(circle,#000 66%,transparent 67%);mask-image:radial-gradient(circle,#000 66%,transparent 67%)}.scope-sweep{position:absolute;top:1px;right:1px;bottom:1px;left:1px;border-radius:50%;background:conic-gradient(from 0deg,transparent 0deg,var(--scan-glow) 40deg,transparent 60deg);-webkit-mask-image:radial-gradient(circle,#000 66%,transparent 67%);mask-image:radial-gradient(circle,#000 66%,transparent 67%);animation:sweep 4s linear infinite}@keyframes sweep{to{transform:rotate(360deg)}}.scope-pupil{width:26px;height:26px;border-radius:50%;background:var(--scan);box-shadow:0 0 18px var(--scan-glow);position:relative;z-index:1}.brand-name{font-size:1.35rem;font-weight:700;letter-spacing:-.01em}.brand-sub{margin-top:6px;font-size:.64rem;color:var(--ink-dim);text-transform:uppercase;letter-spacing:.22em}.alert{display:flex;gap:8px;align-items:baseline;background:#ff5d6b14;border:1px solid rgba(255,93,107,.4);border-left:2px solid var(--cold);color:#ffd7db;padding:11px 13px;border-radius:8px;margin:0 0 16px;font-size:.86rem}.connect-actions{display:flex;flex-direction:column;gap:10px}.btn{min-height:var(--touch);border-radius:var(--r);border:1px solid var(--line-bright);background:var(--surface-2);color:var(--ink);padding:10px 16px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:600;transition:border-color .14s ease,background .14s ease,transform .06s ease}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.45;cursor:default}.btn-primary{background:linear-gradient(180deg,var(--scan),var(--scan-deep));border-color:var(--scan);color:#012027;box-shadow:0 0 24px var(--scan-glow)}.btn-primary:disabled{box-shadow:none}.btn-secondary{background:var(--surface-2);color:var(--ink)}.btn-secondary:hover{border-color:var(--scan)}.btn-connect-icon{width:18px;height:18px;flex:none}.connect-hint{margin-top:16px;text-align:center;font-size:.8rem;color:var(--scan);letter-spacing:.02em}.fineprint{margin-top:16px;text-align:center;color:var(--ink-dim);font-size:.78rem;line-height:1.5}.view-live{height:100%}.live-header{position:relative;z-index:10;display:flex;align-items:center;gap:8px;padding:max(9px,env(safe-area-inset-top)) 10px 9px;background:linear-gradient(180deg,var(--surface),var(--void));border-bottom:1px solid var(--line)}.live-stats{display:flex;align-items:stretch;gap:7px;flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}.live-stats::-webkit-scrollbar{display:none}.live-stats>*{flex:none}.stat{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 11px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;font-size:.78rem;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums;white-space:nowrap}.stat-dot{width:7px;height:7px;border-radius:50%;background:var(--ink-faint);flex:none}.stat-ok{color:var(--lock);border-color:color-mix(in srgb,var(--lock) 38%,var(--line))}.stat-ok .stat-dot{background:var(--lock);box-shadow:0 0 8px var(--lock)}.stat-warn{color:var(--caution);border-color:color-mix(in srgb,var(--caution) 34%,var(--line))}.stat-warn .stat-dot{background:var(--caution)}.stat-bad{color:var(--cold);border-color:color-mix(in srgb,var(--cold) 36%,var(--line))}.stat-bad .stat-dot{background:var(--cold)}.stat-neutral{color:var(--ink-dim)}.status-suspended{color:var(--caution);text-transform:uppercase;font-size:.68rem;letter-spacing:.12em}.health{gap:7px}.health-dropped{color:var(--caution)}.chip-batt-icon{position:relative;flex:none;width:22px;height:11px;border:1.5px solid currentColor;border-radius:2px;opacity:.85;overflow:hidden}.chip-batt-icon:after{content:"";position:absolute;right:-4px;top:3px;width:2px;height:5px;background:currentColor;border-radius:0 1px 1px 0}.chip-batt-fill{position:absolute;left:1px;top:1px;bottom:1px;background:currentColor;border-radius:1px}.chip-charge{color:var(--lock)}.live-main{flex:1;min-height:0;position:relative}.live-menu{position:relative;flex:none}.icon-btn{width:var(--touch);height:36px;padding:0;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;color:var(--ink)}.icon-btn:active{border-color:var(--scan)}.live-menu-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:50;display:flex;flex-direction:column;min-width:180px;padding:5px;background:var(--surface);border:1px solid var(--line-bright);border-radius:var(--r);box-shadow:0 12px 30px #0009}.live-menu-item{min-height:44px;padding:0 12px;display:flex;align-items:center;gap:10px;text-align:left;background:transparent;border:none;border-radius:7px;color:var(--ink);font-size:.92rem;font-weight:500}.live-menu-item:active{background:var(--surface-2)}.live-menu-item-active{color:var(--scan);background:color-mix(in srgb,var(--scan) 12%,transparent)}.live-menu-item-danger{color:var(--cold)}.live-menu-sep{height:1px;background:var(--line);margin:4px 6px}.plotter,.radar-view,.radar{position:absolute;top:0;right:0;bottom:0;left:0}.plotter-canvas,.radar-canvas{width:100%;height:100%;display:block;touch-action:none}.plotter-empty{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-dim);font-size:.95rem;letter-spacing:.02em}.plotter-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:8px}.glass-btn{width:var(--touch);height:var(--touch);padding:0;border-radius:9px;background:#0d151dc7;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);border:1px solid var(--line-bright);font-size:20px;line-height:1;display:grid;place-items:center}.glass-btn:disabled{opacity:.4;cursor:default}.glass-btn:active{border-color:var(--scan)}.glass-btn-active{color:var(--void);background:var(--scan);border-color:var(--scan);box-shadow:0 0 18px var(--scan-glow)}.event-overlay{position:absolute;top:12px;left:12px;width:min(236px,calc(100% - 24px));max-height:44vh;overflow-y:auto;overscroll-behavior:contain;background:#0d151dd1;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line-bright);border-radius:var(--r);box-shadow:0 8px 24px #00000080;z-index:5}.event-head{width:100%;display:flex;justify-content:space-between;align-items:center;gap:8px;background:transparent;border:none;color:var(--ink-dim);font-weight:600;font-size:.66rem;text-transform:uppercase;letter-spacing:.14em;padding:10px 12px}.event-chevron{color:var(--ink-dim)}.event-empty{padding:0 12px 12px;color:var(--ink-dim);font-size:.78rem}.event-list{list-style:none;margin:0;padding:0 8px 8px;display:flex;flex-direction:column;gap:2px}.event-item{display:grid;grid-template-columns:10px 1fr auto auto;align-items:center;gap:8px;padding:5px 4px;font-size:.74rem;font-family:var(--mono);font-variant-numeric:tabular-nums;border-radius:6px}.event-item+.event-item{border-top:1px solid var(--line)}.event-swatch{width:10px;height:10px;border-radius:2px}.event-id{color:var(--ink-dim)}.event-timing{font-size:.66rem;padding:2px 6px;border-radius:4px;text-transform:uppercase;letter-spacing:.06em}.timing-locked{background:color-mix(in srgb,var(--lock) 16%,transparent);color:var(--lock)}.timing-pos{background:#6f869824;color:var(--ink-dim)}.radar-facing{position:absolute;top:12px;left:50%;transform:translate(-50%);padding:5px 12px;border-radius:999px;background:#0d151dd1;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);color:var(--ink);font-size:.72rem;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}.radar-facing-facing-unknown,.radar-facing-approximate{color:var(--caution);border-color:color-mix(in srgb,var(--caution) 40%,var(--line))}.sonar{position:absolute;left:50%;top:52px;transform:translate(-50%);display:inline-flex;align-items:baseline;gap:10px;padding:8px 16px;border-radius:12px;background:#0d151de0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line-bright);font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;max-width:calc(100% - 24px)}.sonar-trend{font-size:1.15rem;line-height:1;align-self:center}.sonar-trend-warmer{color:var(--lock)}.sonar-trend-colder{color:var(--cold)}.sonar-trend-steady{color:var(--ink-dim)}.sonar-id{font-size:.78rem;color:var(--ink-dim)}.sonar-rssi{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.sonar-age{font-size:.74rem;color:var(--ink-dim)}.sonar-stale{border-color:color-mix(in srgb,var(--caution) 42%,var(--line))}.sonar-unavailable{color:var(--ink-dim);font-size:.95rem;font-weight:500;font-family:var(--sans)}.sonar-slot{display:contents}.nav-readout{position:absolute;left:50%;top:52px;transform:translate(-50%);display:inline-flex;align-items:baseline;gap:12px;padding:8px 16px;border-radius:12px;background:#0d151de0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--line-bright);font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;max-width:calc(100% - 24px)}.nav-dist{font-size:1.6rem;font-weight:700;letter-spacing:-.02em;color:var(--ink)}.nav-bearing{font-size:1rem;color:var(--scan)}.nav-sub{font-size:.74rem;color:var(--ink-dim)}.nav-state{font-size:.95rem;color:var(--ink-dim);font-family:var(--sans)}.nav-readout-search{border-color:color-mix(in srgb,var(--scan) 50%,var(--line))}.nav-readout-search .nav-state{color:var(--scan)}.nav-readout-warn{border-color:color-mix(in srgb,var(--caution) 45%,var(--line))}.nav-readout-warn .nav-state{color:var(--caution)}.radar-hint{position:absolute;left:50%;bottom:78px;transform:translate(-50%);padding:5px 13px;border-radius:999px;background:#0d151dd1;border:1px dashed color-mix(in srgb,var(--caution) 45%,var(--line));color:var(--caution);font-size:.8rem;white-space:nowrap}.radar-signals{position:absolute;left:50%;bottom:64px;transform:translate(-50%);width:min(340px,calc(100% - 24px));max-height:46%;overflow-y:auto;background:#090d13f7;border:1px solid var(--line-bright);border-radius:var(--r);padding:8px;box-shadow:0 12px 30px #0009}.signal-selector{display:flex;flex-direction:column;gap:4px}.signal-selector-title{padding:4px 8px 8px;font-size:.64rem;text-transform:uppercase;letter-spacing:.16em;color:var(--ink-dim);font-weight:600}.signal-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}.signal-row{width:100%;min-height:46px;display:flex;align-items:center;gap:10px;padding:0 12px;background:var(--surface-2);border:1px solid var(--line);border-radius:8px;color:var(--ink);font-variant-numeric:tabular-nums}.signal-row:active{border-color:var(--scan)}.signal-row-cluster{background:color-mix(in srgb,var(--scan) 10%,var(--surface-2))}.signal-row-active{border-color:var(--scan);background:color-mix(in srgb,var(--scan) 18%,var(--surface-2));box-shadow:inset 0 0 0 1px var(--scan)}.signal-id{font-family:var(--mono);font-weight:600}.signal-row-cluster .signal-id{font-family:var(--sans)}.signal-rssi{color:var(--caution);font-family:var(--mono)}.signal-meta{margin-left:auto;color:var(--ink-dim);font-size:.78rem;font-family:var(--mono)}.signal-selector-more,.signal-selector-note{padding:8px;font-size:.76rem;color:var(--ink-dim);text-align:center}.radar-controls{position:absolute;left:50%;bottom:14px;transform:translate(-50%);display:flex;flex-wrap:nowrap;align-items:center;gap:6px;max-width:calc(100% - 16px);overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.radar-controls::-webkit-scrollbar{display:none}.radar-controls>*{flex:none}.seg{display:inline-flex;border:1px solid var(--line-bright);border-radius:999px;background:#0d151de6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);overflow:hidden}.seg-opt{min-height:42px;padding:0 13px;background:transparent;border:none;color:var(--ink-dim);font-size:.84rem;font-weight:600;white-space:nowrap}.seg-opt-active{background:var(--scan);color:var(--void)}.radar-chip-icon{min-height:42px;width:44px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:.92rem;font-weight:700}.sonar-stack{position:absolute;left:50%;top:52px;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:8px;max-width:calc(100% - 24px);z-index:4}.sonar-stack .sonar{position:static;transform:none;left:auto;top:auto;max-width:100%}.sonar-ping{min-height:36px;padding:0 16px;border-radius:999px;background:#0d151de6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid color-mix(in srgb,var(--scan) 55%,var(--line));color:var(--scan);font-size:.82rem;font-weight:600;white-space:nowrap}.sonar-ping:disabled{opacity:.5}.radar-chip{min-height:42px;padding:0 13px;border-radius:999px;background:#0d151de6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:var(--ink);border:1px solid var(--line-bright);font-size:.85rem;font-weight:600;white-space:nowrap}.radar-chip:disabled{opacity:.4;cursor:default}.radar-chip-active{background:var(--scan);border-color:var(--scan);color:var(--void);box-shadow:0 0 18px var(--scan-glow)}.radar-chip-ping{color:var(--scan);border-color:color-mix(in srgb,var(--scan) 55%,var(--line))}.radar-chip-ping:disabled{color:var(--ink-dim);border-color:var(--line-bright)}a:focus-visible,button:focus-visible,[role=button]:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--scan);outline-offset:2px}@media (prefers-reduced-motion: reduce){.scope-sweep{animation:none;background:conic-gradient(from 0deg,transparent 0deg,var(--scan-glow) 30deg,transparent 45deg)}.btn:active{transform:none}}
