:root{--bg: #0d1117;--panel: #161b22;--edge: #272d36;--ink: #d8dee6;--dim: #7d8794;--accent: #4ea1ff;--good: #4fd38a;--bad: #ff6b6b;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.shell{max-width:1180px;margin:0 auto;padding:16px}header{display:flex;flex-wrap:wrap;gap:14px;align-items:center;padding-bottom:12px;border-bottom:1px solid var(--edge)}.brand{font-weight:700;letter-spacing:.22em;color:var(--accent)}header label{display:flex;align-items:center;gap:6px;color:var(--dim);font-size:12px}header .readout{font-style:normal;color:var(--ink);min-width:2.2ch}header input.bad{border-color:var(--bad);color:var(--bad)}input,select{background:var(--panel);border:1px solid var(--edge);color:var(--ink);border-radius:6px;padding:5px 7px;font-size:13px}input[type=range]{padding:0;width:110px}button{background:var(--panel);border:1px solid var(--edge);color:var(--ink);border-radius:6px;padding:6px 12px;cursor:pointer}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#05192e;font-weight:600}button.ghost{color:var(--dim);padding:6px 9px}button.toggle.on{color:var(--accent);border-color:var(--accent)}.tagline{color:var(--dim);font-size:12px;margin:10px 0 14px}main{display:grid;grid-template-columns:1fr 260px;gap:16px;align-items:start}.entry{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:14px;transition:border-color .1s}.entry.transmitting{border-color:var(--good);box-shadow:0 0 0 1px #4fd38a40}.field{display:flex;flex-direction:column;gap:4px}.field span{color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.field input{font-size:20px;padding:6px 9px;text-transform:uppercase}.field input.call{width:11ch}.status{display:flex;align-items:center;gap:8px;margin-top:10px;padding:9px 12px;border:1px solid var(--edge);border-radius:8px;font-size:13px;color:var(--dim)}.status i{width:8px;height:8px;border-radius:50%;background:var(--dim);flex:none}.status.cue{color:var(--accent);border-color:#4ea1ff73}.status.cue i{background:var(--accent)}.status.tx{color:var(--good);border-color:#4fd38a73}.status.tx i,.status.rx i{background:var(--good)}.macros{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}.macro{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;padding:8px 10px}.macro .key{color:var(--accent);font-size:11px;font-weight:600}.macro .text{font-size:11px;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.tones{margin-top:14px;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:12px;min-height:160px;max-height:320px;overflow-y:auto}.tones-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}.tones-head .hint{text-transform:none;letter-spacing:0;opacity:.7}.tones table{width:100%;border-collapse:collapse;font-size:12px}.tones td{padding:3px 6px 3px 0;white-space:nowrap}.tones .at{color:var(--dim);width:5ch}.tones .who{color:var(--ink);font-weight:600;width:9ch}.tones .tone,.tones .wpm,.tones .db{color:var(--dim);opacity:.65}.tones .off{opacity:.6}.tones .text{color:var(--ink);width:99%;white-space:normal}.tones tr.tx .who,.tones tr.tx .text{color:var(--good)}.tones tr.yield .who,.tones tr.yield .text{color:var(--dim);font-style:italic}.tones tr.qrm .who,.tones tr.qrm .text{color:#d9a441}.tones tr.band .who,.tones tr.band .text{color:#7f8ba3}.roster{margin-top:16px;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:10px 12px}.roster-head{display:flex;justify-content:space-between;align-items:baseline;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.roster-head .hint{text-transform:none;letter-spacing:0;opacity:.7}.roster table{width:100%;margin-top:8px;border-collapse:collapse;font-size:12px}.roster td{padding:3px 6px;border-bottom:1px solid #1b212a;white-space:nowrap}.roster .who{color:var(--ink)}.roster .tag{margin-left:5px;padding:0 4px;border-radius:3px;background:#1b212a;color:var(--dim);font-size:9px;text-transform:uppercase;letter-spacing:.06em}.roster tr.band .who{color:#7f8ba3}.roster tr.qrm .who{color:#d9a441}.roster tr.audible{background:#4dfb5212}.roster tr.audible .who{color:var(--good)}.roster .at,.roster .wpm,.roster .worked{color:var(--dim);text-align:right}.roster .radio{color:#7f8ba3;font-size:11px}.glossary h4.spaced{margin-top:12px}.roster .doing{color:var(--ink);width:100%}.roster .traits{color:var(--dim);font-size:11px}.roster .mood{display:flex;gap:2px;padding-top:6px}.roster .mood i{display:block;width:16px;height:6px;border-radius:2px;background:#1b212a;overflow:hidden}.roster .mood i:after{content:"";display:block;width:var(--fill);height:100%;background:var(--accent);opacity:.75}.roster .mood i.hot:after{background:var(--good)}.roster .none{color:var(--dim)}.roster .sig{display:flex;gap:7px;align-items:baseline;font-size:10px;color:var(--dim);white-space:nowrap}.roster .sig em{font-style:normal;min-width:30px;text-align:right;color:var(--ink);font-size:11px}.roster .sig em.live{color:var(--good)}.ant .named{margin:0;color:var(--ink);font-size:12px}.roster .why{margin-left:8px;padding:1px 7px;font-size:10px}.glossary{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;margin-top:10px;padding:10px 12px;background:#0d1117;border:1px solid var(--edge);border-radius:8px}.glossary h4{margin:0 0 6px;color:var(--dim);font-size:10px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}.glossary p{margin:0 0 5px;color:var(--dim);font-size:11px;line-height:1.45}.glossary strong{color:var(--ink);font-weight:500}@media (max-width: 900px){.glossary{grid-template-columns:1fr}}.tones .who{white-space:nowrap}.tones .tag{font-size:9px;letter-spacing:.06em;opacity:.75;margin-left:4px}.empty{color:var(--dim);font-size:12px}.stats{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}.stats div{background:var(--panel);border:1px solid var(--edge);border-radius:8px;padding:8px 10px}.stats em{display:block;font-style:normal;font-size:20px;font-family:ui-monospace,monospace}.stats span{color:var(--dim);font-size:11px}.receiver{margin-top:12px;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:10px}.receiver label{display:flex;flex-direction:column;gap:4px;color:var(--dim);font-size:11px}.receiver label em{font-style:normal;color:var(--ink)}.receiver input[type=range]{width:100%}.receiver .toggle{flex-direction:row;align-items:center;gap:6px}.meter{height:6px;background:#0a0e14;border-radius:3px;overflow:hidden}.meter i{display:block;height:100%;background:linear-gradient(90deg,var(--good),var(--accent));transition:width .05s linear}.scope{margin-bottom:14px;background:#04070d;border:1px solid var(--edge);border-radius:10px;overflow:hidden}.scope-face{position:relative;line-height:0;cursor:crosshair}.scope-trace{display:block;width:100%;height:92px}.scope-fall{display:block;width:100%;height:150px}.scope-pass{position:absolute;top:0;bottom:0;pointer-events:none;background:#a0d2ff14;border-left:1px solid rgba(180,220,255,.55);border-right:1px solid rgba(180,220,255,.55)}.scope-vfo{position:absolute;top:0;bottom:0;width:1px;margin-left:-.5px;pointer-events:none;background:#7dff8a;opacity:.85}.scope-lo,.scope-hi,.scope-ref{position:absolute;top:3px;font-size:10px;color:#bed2ebbf;line-height:1;pointer-events:none}.scope-lo{left:5px}.scope-hi{right:5px}.scope-ref{right:5px;top:17px;color:#bed2eb80}.scope-ticks{position:relative;height:15px;background:#04070d}.scope-ticks span{position:absolute;top:1px;transform:translate(-50%);font-size:10px;color:#bed2eb99}.scope-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:6px 8px;border-top:1px solid var(--edge);background:var(--panel)}.scope-foot .mode{padding:3px 12px;font-size:11px;letter-spacing:.06em}.spans{display:flex;gap:4px}.spans button{padding:3px 9px;font-size:11px}.spans button.on{border-color:var(--accent);color:var(--accent)}.vfo{display:flex;flex-direction:column;gap:8px}.vfo-dial{display:flex;align-items:center;gap:8px}.vfo-dial em{flex:1;font-style:normal;font-size:22px;color:var(--ink);letter-spacing:.02em;cursor:text}.vfo-entry{flex:1;min-width:0;font-size:18px;padding:2px 4px}.vfo-id{padding:2px 8px;font-size:11px;letter-spacing:.08em}.bands{display:grid;grid-template-columns:repeat(6,1fr);gap:3px}.ghost.wide{width:100%;margin-top:8px}.focus{position:fixed;left:0;top:0;bottom:0;width:226px;z-index:30;overflow-y:auto;padding:10px;background:#0b0f15;border-right:1px solid var(--edge)}.focus-head{color:var(--dim);font-size:10px;text-transform:uppercase;letter-spacing:.08em;margin-bottom:8px}.focus .empty{color:var(--dim);font-size:11px}.focus article{margin-bottom:10px;padding:8px;border:1px solid var(--edge);border-radius:8px;background:var(--panel)}.focus article.live{border-color:var(--good)}.focus h4{margin:0 0 4px;display:flex;justify-content:space-between;align-items:baseline;font-size:13px;font-weight:500;color:var(--ink)}.focus h4 em{font-style:normal;font-size:12px;color:var(--good)}.focus .doing{margin:0 0 6px;color:var(--dim);font-size:11px}.focus dl{display:grid;grid-template-columns:auto 1fr;gap:1px 8px;margin:0;font-size:10px}.focus dt{color:var(--dim)}.focus dd{margin:0;color:var(--ink);text-align:right}.focus dd.poor{color:#d9a441}.focus .traits{margin:6px 0 0;color:var(--dim);font-size:10px;line-height:1.4}body:has(.focus) .wrap{padding-left:238px}.maps{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}@media (max-width: 980px){.maps{grid-template-columns:1fr}}.maps .map{margin-top:0}.map-label{display:flex;gap:8px;align-items:baseline;margin-bottom:8px;font-size:11px;color:var(--dim)}.map-label .vfo{padding:1px 7px;border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-size:10px;letter-spacing:.06em}.map-label .band{margin-left:auto}.map{margin-top:14px;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:12px}.map-face{position:relative;width:100%;max-width:440px;margin:0 auto;aspect-ratio:1}.map-face canvas,.map-over{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border-radius:50%}.map-face canvas{background:#05070b}.map-over .ring{fill:none;stroke:#aac8eb2e;stroke-width:.3}.map-over .spoke{stroke:#aac8eb1f;stroke-width:.3}.map-over .beam{fill:none;stroke:#4dfb52;stroke-width:.6;opacity:.9}.map-over .heading{stroke:#4dfb52;stroke-width:.5;opacity:.5;stroke-dasharray:2 2}.map-over .op{fill:#9fb4d0}.map-over .op.pileup{fill:#4dfb52}.map-over .op.band{fill:#7f8ba3}.map-over .op.qrm{fill:#d9a441}.map-over .op.audible{fill:#4dfb52}.map-over .op.live{stroke:#fff;stroke-width:.4}.map-over .tag{fill:#4dfb52;font-size:2.8px;text-anchor:middle}.map-over .home{fill:#fff}.map-over .anchor{fill:#bed2eba6;font-size:3.4px;text-anchor:middle;dominant-baseline:middle}.map-key{margin:7px 0 0;color:var(--dim);font-size:10px;line-height:1.4}.rotors{display:flex;flex-direction:column;gap:6px;margin-top:12px}.rotor{display:flex;gap:10px;align-items:center;background:var(--panel);border:1px solid var(--edge);border-radius:10px;padding:10px}.rotor.idle{opacity:.6}.rotor-dial{position:relative;width:78px;height:78px;flex:none;border-radius:50%;border:1px solid var(--edge);background:radial-gradient(circle at 40% 35%,#161c25,#0a0e14);cursor:crosshair}.rotor.idle .rotor-dial{cursor:default}.rotor-dial i{position:absolute;left:50%;top:50%;transform-origin:50% 100%}.rotor-dial .needle{width:2px;height:33px;margin-left:-1px;margin-top:-33px;background:var(--accent);border-radius:1px}.rotor-dial .want{width:2px;height:33px;margin-left:-1px;margin-top:-33px;background:var(--good);opacity:.55}.rotor-dial .stop{width:1px;height:36px;margin-left:-.5px;margin-top:-36px;background:#b4453a}.rotor-dial .vfo{position:absolute;bottom:4px;left:50%;transform:translate(-50%);font-size:10px;color:var(--accent)}.rotor-dial .n{position:absolute;top:3px;left:50%;transform:translate(-50%);font-size:9px;color:var(--dim)}.rotor-read{display:flex;flex-direction:column;gap:4px;min-width:0}.rotor-read .deg{width:72px;font-size:18px;padding:1px 4px}.rotor-read .hint{color:var(--dim);font-size:10px}.rotor-read .hint.turning{color:var(--good)}.rotor-read .hint.nothing{color:#d9a441}.rotor-read .pick{width:100%;max-width:150px;font-size:10px;padding:1px 3px}.rotor-targets{display:grid;grid-template-columns:repeat(3,1fr);gap:3px;margin-top:2px}.rotor-targets button{padding:2px 0;font-size:10px}.pattern{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pattern figure{margin:0}.pattern svg{width:100%;height:auto;background:#05070b;border:1px solid var(--edge);border-radius:6px}.pattern .ring{fill:none;stroke:#96b4dc38;stroke-width:.5}.pattern .ring.faint{stroke:#96b4dc1a}.pattern .lobe{fill:#5684be66;stroke:#4dfb52;stroke-width:1}.pattern figcaption{margin-top:3px;color:var(--dim);font-size:9px;text-align:center}.pattern figcaption .poor{color:#d9a441}.station>label{display:flex;flex-direction:column;gap:4px;color:var(--dim);font-size:11px}.station select{width:100%}.bearings{display:flex;flex-wrap:wrap;gap:8px;margin:0;color:var(--dim);font-size:10px}.ant{padding:7px 8px;border:1px solid var(--edge);border-radius:7px;display:flex;flex-direction:column;gap:5px}.ant.off{opacity:.45}.ant-head{display:flex;gap:4px;align-items:center}.ant-head select{flex:1;min-width:0;font-size:11px}.ant-head button{padding:2px 9px;font-size:11px}.ant-head button.on{border-color:var(--accent);color:var(--accent)}.ant label{display:flex;flex-direction:column;gap:3px;color:var(--dim);font-size:10px}.ant .fixed{margin:0;color:var(--dim);font-size:10px}.ant .note{margin:0;color:var(--dim);font-size:10px;line-height:1.4}.ant .state{margin:0;color:var(--good);font-size:10px}.ant .state.warn{color:#d9a441}.ant .toggle{flex-direction:row;align-items:center;gap:6px}.slots{display:flex;gap:3px;flex-wrap:wrap}.slots button{padding:3px 9px;font-size:11px}.slots button.on{border-color:var(--accent);color:var(--accent)}.slots button.off{opacity:.5}.slots button span{margin-left:4px;font-size:9px;color:var(--good)}.station-head{display:flex;align-items:center;justify-content:space-between}.station-head h3{margin:0;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim);font-weight:600}.station-window{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40;background:#04070dc2;display:grid;place-items:center;padding:18px}.station-window>div{width:min(860px,100%);max-height:100%;overflow-y:auto;padding:16px;background:var(--panel);border:1px solid var(--edge);border-radius:12px}.station{display:grid;grid-template-columns:300px 1fr;gap:10px 18px;align-items:start}.station-head,.testing{grid-column:1 / -1}.station-side{display:flex;flex-direction:column;gap:8px;min-width:0}.testing{display:flex;align-items:center;gap:8px;color:var(--dim);font-size:11px}.testing .ant-bands{flex:1}@media (max-width: 760px){.station{grid-template-columns:1fr}.station .ant{grid-column:1;grid-row:auto}}.ant-bands{display:grid;grid-template-columns:repeat(6,1fr);gap:2px}.ant-bands button{padding:2px 0;font-size:9px}.ant-bands button.on{border-color:var(--good);color:var(--good)}.bands button{padding:3px 0;font-size:10px}.bands button.on{border-color:var(--accent);color:var(--accent)}.knob{width:34px;height:34px;border-radius:50%;border:1px solid var(--edge);background:radial-gradient(circle at 35% 30%,#2b333f,#11161d);cursor:ns-resize;position:relative;flex:none;touch-action:none}.knob i{position:absolute;top:4px;left:50%;width:2px;height:9px;margin-left:-1px;border-radius:1px;background:var(--accent)}.dial{display:flex;flex-direction:column;gap:6px}.dial em{font-style:normal;font-size:22px;color:var(--ink);letter-spacing:.02em}.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.steps button{padding:5px 0;font-size:11px}.widths{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.widths button{padding:5px 0;font-size:11px}.widths button.on{border-color:var(--accent);color:var(--accent)}.log{width:100%;margin-top:16px;border-collapse:collapse;font-size:13px}.log th{text-align:left;color:var(--dim);font-size:11px;text-transform:uppercase;letter-spacing:.08em;padding:6px 8px;border-bottom:1px solid var(--edge)}.log td{padding:6px 8px;border-bottom:1px solid #1b212a}.log tr.bad td{color:var(--bad)}.log .truth{color:var(--dim);font-size:11px;margin-left:8px}@media (max-width: 860px){main{grid-template-columns:1fr}.macros{grid-template-columns:repeat(2,1fr)}}.panels{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-top:12px}.panel-anchor{position:relative}.panel-trigger{width:100%;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:7px 9px;text-align:left}.panel-trigger.on{border-color:var(--accent)}.panel-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--dim)}.panel-summary{font-size:11px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.panel{position:absolute;right:0;z-index:20;width:268px;background:var(--panel);border:1px solid var(--accent);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:8px;box-shadow:0 10px 30px #0000008c;overflow:hidden}.panel.up{bottom:calc(100% + 6px)}.panel.down{top:calc(100% + 6px)}.panel-pinned{display:flex;flex-direction:column;gap:6px;flex:none}.panel-head{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--accent)}.panel-note{margin:0;font-size:11px;color:var(--dim);line-height:1.35}.panel-fields{display:flex;flex-direction:column;gap:9px;overflow-y:auto;padding-top:2px;border-top:1px solid var(--edge);margin-top:2px}.panel label{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:2px 8px;color:var(--dim);font-size:11px}.panel label em{font-style:normal;color:var(--ink);justify-self:end}.panel label input[type=range]{grid-column:1 / -1}.panel-pinned label{grid-template-columns:1fr}.panel input[type=range],.panel select{width:100%}@media (max-width: 860px){.panels{grid-template-columns:1fr}.panel{right:auto;left:0;width:100%}}.macro-edit input{width:100%;font-size:11px;padding:4px 6px}.macro-edit input.bad,.panel .bad{border-color:var(--bad);color:var(--bad)}.panel em.bad{font-size:10px;line-height:1.2}.choices{grid-column:1 / -1;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:4px;margin-top:4px}.choices button{padding:5px 0;font-size:11px}.choices button.on{border-color:var(--accent);color:var(--accent)}
