:root{--bg:#070910;--panel:#0c1018;--panel-hi:#11161f;--line:#1b2230;--line-hi:#27303f;--text:#dfe7ef;--muted:#77859a;--accent:#5eead4;--accent-dim:#2b6f66;--amber:#fbbf24;--teal:#5eead4;--teal-dim:#2b6f66;--danger:#f87171;--radius:10px;--mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;--sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--sans);-webkit-font-smoothing:antialiased}body{min-height:100dvh;background-image:radial-gradient(1200px 600px at 50% -10%,#0f1626 0,var(--bg) 60%)}.app{max-width:1180px;margin:0 auto;padding:18px 16px 40px;flex-direction:column;gap:14px}.app,.top{display:flex}.top{align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.brand{display:flex;align-items:baseline;gap:10px}.brand h1{font-size:16px;font-weight:650;letter-spacing:.02em;margin:0}.brand .model,.link{font-family:var(--mono);font-size:12px;color:var(--muted)}.link{display:inline-flex;align-items:center;gap:7px}.dot{width:8px;height:8px;border-radius:50%;background:var(--danger);box-shadow:0 0 0 3px rgba(248,113,113,.14)}.dot.on{background:var(--accent);box-shadow:0 0 0 3px rgba(94,234,212,.14)}.dot.pending{background:var(--amber);box-shadow:0 0 0 3px rgba(251,191,36,.14)}.panel{background:linear-gradient(180deg,var(--panel-hi),var(--panel));border:1px solid var(--line);border-radius:var(--radius)}.panel-pad{padding:14px}.row{display:flex;gap:14px;align-items:stretch;flex-wrap:wrap}.label{font-size:10px;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:7px}.vfo{flex:1 1 340px;display:flex;flex-direction:column;justify-content:center}.freq-input{width:100%;background:transparent;border:none;outline:none;color:var(--amber);font-family:var(--mono);font-size:clamp(34px,7vw,52px);font-weight:600;letter-spacing:.01em;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;line-height:1.05;padding:0;text-shadow:0 0 26px rgba(251,191,36,.22)}.freq-input:focus{color:#fff;text-shadow:0 0 26px rgba(255,255,255,.2)}.freq-unit{font-family:var(--mono);font-size:13px;color:var(--muted);margin-left:8px}.steps{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}a{text-decoration:none}a,a:visited{color:var(--accent)}a:hover{text-decoration:underline}button{font-family:inherit;font-size:12px;color:var(--text);background:var(--panel-hi);border:1px solid var(--line-hi);border-radius:7px;padding:7px 11px;cursor:pointer;transition:border-color .12s ease,background .12s ease,color .12s ease}button:hover:not(:disabled){border-color:var(--accent-dim)}button:disabled{opacity:.45;cursor:not-allowed}button.on{background:rgba(94,234,212,.12);border-color:var(--accent-dim);color:var(--accent)}button.mono{font-family:var(--mono)}.filters,.modes{gap:6px}.filters,.modes,.sliders{display:flex;flex-wrap:wrap}.sliders{gap:18px}.slider,.sliders{align-items:center}.slider{display:flex;gap:9px;font-family:var(--mono);font-size:11px;color:var(--muted)}input[type=range]{width:118px;accent-color:var(--accent)}.scope{position:relative;overflow:hidden;padding:0;overscroll-behavior:contain;touch-action:pan-y}.scope,.vfo{cursor:ns-resize}.vfo button,.vfo input{cursor:auto}.vfo button{cursor:pointer}.hover-step{margin-left:8px;color:var(--muted)}.spectrum{height:190px;border-bottom:1px solid var(--line)}.spectrum,.waterfall{display:block;width:100%}.waterfall{height:320px;background:#04060c}.hover-readout{position:absolute;top:8px;right:10px;color:var(--text);background:rgba(7,9,16,.82);border:1px solid var(--line-hi);border-radius:6px;padding:3px 7px;pointer-events:none}.hover-readout,.stats{font-family:var(--mono);font-size:11px}.stats{display:flex;gap:20px;flex-wrap:wrap;color:var(--muted)}.stats b{color:var(--text);font-weight:550}.stats .warn{color:var(--amber)}.toast{font-family:var(--mono);font-size:12px;color:var(--danger);border:1px solid rgba(248,113,113,.35);background:rgba(248,113,113,.08);border-radius:7px;padding:8px 11px}@media (max-width:640px){.spectrum{height:150px}.waterfall{height:260px}.app{padding:12px 10px 30px}}.smeter{flex:1 1 260px;min-width:220px;display:flex;flex-direction:column;justify-content:center}.smeter-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:7px}.smeter-value{font-family:var(--mono);font-size:13px;color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.smeter-value.tx{color:var(--danger)}.smeter-track{position:relative;height:14px;background:#05070c;border:1px solid var(--line-hi);border-radius:3px;overflow:hidden;--seg:6px;--gap:2px}.smeter-fill{height:100%;background:linear-gradient(90deg,var(--accent-dim),var(--accent));-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 var(--seg),transparent var(--seg) calc(var(--seg) + var(--gap)));mask-image:repeating-linear-gradient(90deg,#000 0 var(--seg),transparent var(--seg) calc(var(--seg) + var(--gap)))}.smeter-fill.tx{background:linear-gradient(90deg,#b45309,var(--amber))}.smeter-peak{position:absolute;top:1px;bottom:1px;width:var(--seg);margin-left:calc(var(--seg) * -1);background:var(--text);opacity:.75;pointer-events:none}.smeter-compact .smeter-track{--seg:4px;--gap:2px;height:10px}.smeter-mark{position:absolute;top:0;bottom:0;width:1px;background:rgba(255,255,255,.28)}.smeter-scale{position:relative;height:13px;margin-top:3px;font-family:var(--mono);font-size:9px;color:var(--muted)}.smeter-scale span{position:absolute;transform:translateX(-50%)}.tx-badge{margin-top:8px;display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--danger);border:1px solid rgba(248,113,113,.45);border-radius:5px;padding:2px 7px}.bands{display:flex;gap:6px;flex-wrap:wrap}.bands button{font-family:var(--mono);min-width:52px}.mode-panel .modes{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));grid-gap:6px;gap:6px}.mode-panel .control{max-width:320px}.controls{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));grid-gap:12px 22px;gap:12px 22px}.control{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:11px;color:var(--muted)}.control .name{width:34px;flex:none;color:var(--text)}.control input[type=range]{flex:1 1;min-width:0;width:auto}.control .val{width:30px;text-align:right;flex:none;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.toggles{display:flex;gap:6px;flex-wrap:wrap}.toggles button{font-family:var(--mono);min-width:48px}.subvfo{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}.sub-label{font-size:10px;letter-spacing:.08em;color:var(--muted);border:1px solid var(--line-hi);border-radius:4px;padding:2px 5px}.sub-freq,.sub-label{font-family:var(--mono)}.sub-freq{font-size:15px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sub-mode{min-width:34px}.rit-value,.sub-mode{font-family:var(--mono);font-size:11px;color:var(--muted)}.rit-value{min-width:62px;text-align:center;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.preset{display:inline-flex;align-items:stretch}.preset>button:first-child{border-top-right-radius:0;border-bottom-right-radius:0;border-right:none}.preset-del{border-top-left-radius:0;border-bottom-left-radius:0;padding:7px 8px;color:var(--muted);font-size:13px;line-height:1}.preset-del:hover:not(:disabled){color:var(--danger);border-color:rgba(248,113,113,.5)}.preset-input{background:var(--panel-hi);border:1px solid var(--accent-dim);border-radius:7px;padding:7px 11px;color:var(--text);font-family:inherit;font-size:12px;outline:none;min-width:180px}.hint{font-size:11px;color:var(--muted);align-self:center}.section-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:none;border-radius:var(--radius);padding:13px 14px;cursor:pointer;text-align:left}.section-head:hover{border-color:transparent}.chevron{color:var(--muted);font-size:11px;transition:transform .15s ease;transform:rotate(-90deg)}.chevron.open{transform:rotate(0deg)}.section-body{padding:0 14px 14px}@media (max-width:720px){.app{gap:10px}button{min-height:40px;padding:9px 13px}.bands button,.toggles button{min-width:60px;flex:1 0 auto}.mode-panel .modes{grid-template-columns:repeat(4,minmax(0,1fr))}.mode-panel .control{max-width:none}.filters button,.steps button{flex:1 0 auto}.controls{grid-template-columns:1fr;gap:14px}.control input[type=range]{height:28px}input[type=range]{width:100%}.row{flex-direction:column;gap:16px}.smeter{min-width:0}.hover-readout{display:none}}@media (max-width:400px){.mode-panel .modes{grid-template-columns:repeat(3,minmax(0,1fr))}}.cw-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.tx-notice{font-size:12px;color:var(--amber);border:1px solid rgba(251,191,36,.3);background:rgba(251,191,36,.07);border-radius:7px;padding:9px 11px;margin-bottom:12px;line-height:1.5}.tx-notice code{font-family:var(--mono);font-size:11px;color:var(--text)}button.danger{color:var(--danger);border-color:rgba(248,113,113,.35)}button.danger:hover:not(:disabled){border-color:var(--danger);background:rgba(248,113,113,.1)}.setup{max-width:640px}.setup-intro{margin:0 0 16px;color:var(--muted);font-size:13px;line-height:1.6}.setup-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.setup select,.setup-row .preset-input{flex:1 1 180px;min-width:0}.setup select{background:var(--panel-hi);border:1px solid var(--line-hi);border-radius:7px;padding:8px 11px;color:var(--text);font-family:inherit;font-size:12px;outline:none}.setup .hint{display:block;margin:8px 0 0;line-height:1.5}button.primary{background:rgba(94,234,212,.14);border-color:var(--accent-dim);color:var(--accent)}button.primary:hover:not(:disabled){background:rgba(94,234,212,.2);border-color:var(--accent)}.ok-note{font-family:var(--mono);font-size:12px;color:var(--accent)}.ok-note.block{display:block;margin-top:12px;border:1px solid var(--accent-dim);background:rgba(94,234,212,.07);border-radius:7px;padding:9px 11px}.link-error{color:var(--amber)}.audio-stats,.link-error{font-family:var(--mono);font-size:11px}.audio-stats{color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.audio-stats .warn{color:var(--amber)}.link-button{margin-left:10px;padding:4px 9px;font-size:11px;min-height:0}.notice{font-size:12px;color:var(--muted);border:1px solid var(--line-hi);background:var(--panel);border-radius:7px;padding:9px 11px;line-height:1.5}.notice b{font-weight:550}.notice b,.ptt{color:var(--text)}.ptt{width:100%;padding:22px;font-family:var(--mono);font-size:16px;letter-spacing:.12em;border:1px solid var(--line-hi);border-radius:10px;background:var(--panel-hi);cursor:pointer;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:background .08s ease,border-color .08s ease}.ptt.keyed{background:var(--danger);border-color:var(--danger);color:#fff;box-shadow:0 0 0 4px rgba(248,113,113,.2)}.ptt:disabled{opacity:.45;cursor:not-allowed}.dial{display:block;width:100%;height:56px;background:#05070c;border:1px solid var(--line-hi);border-radius:8px;cursor:ew-resize;touch-action:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.dial.active{border-color:var(--amber)}@media (max-width:720px){.dial{height:72px}}.cockpit{display:flex;flex-direction:column;gap:10px}.cockpit-head{display:flex;align-items:center;gap:16px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}.cockpit-head .vfo{flex:1 1 auto;min-width:0;flex-direction:row;align-items:baseline}.cockpit-meta{display:flex;align-items:center;gap:10px;flex:0 1 auto}.cockpit-mode{font-size:13px;color:var(--amber);border:1px solid var(--line-hi);border-radius:6px;padding:3px 8px}.cockpit-flag,.cockpit-mode{font-family:var(--mono);white-space:nowrap}.cockpit-flag{font-size:11px;color:var(--bg);background:var(--amber);border-radius:4px;padding:2px 6px}.smeter-compact{display:flex;flex-direction:column;gap:4px;width:130px;flex:0 0 auto}.smeter-compact .smeter-value{font-size:12px}.step-row{justify-content:space-between}@media (max-width:720px){.cockpit-head{padding:8px 12px;gap:10px}.cockpit-head .freq-input{font-size:clamp(26px,8.5vw,40px)}.cockpit-meta{flex-direction:column;align-items:flex-end;gap:4px}.smeter-compact{width:104px}.cockpit .spectrum{height:96px}.cockpit .waterfall{height:190px}.cockpit .dial{height:68px}.step-row button{flex:1 1;min-width:0;padding:9px 4px}}@media (max-width:720px) and (max-height:740px){.cockpit .spectrum{height:76px}.cockpit .waterfall{height:132px}.cockpit .dial{height:60px}}.ptt-compact{padding:14px;font-size:15px}@media (max-width:720px){.ptt-compact{padding:16px}}.cockpit-head .freq-unit{margin-left:6px;flex:0 0 auto}.mic-warning{color:var(--amber)}.mic-level{height:6px;margin-top:8px;border-radius:3px;background:var(--panel-hi);overflow:hidden}.mic-level-idle{opacity:.45}.mic-level-fill{height:100%;background:linear-gradient(90deg,var(--teal),var(--amber));transition:width .05s linear}.url-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:4px}.url-list code{font-family:var(--mono);font-size:13px;color:var(--accent)}.advanced{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}.advanced summary{cursor:pointer;color:var(--muted);font-size:13px;-webkit-user-select:none;-moz-user-select:none;user-select:none}.picker-backdrop{position:fixed;inset:0;background:rgba(2,4,8,.7);display:flex;align-items:center;justify-content:center;padding:16px;z-index:50}.picker{width:min(520px,100%);max-height:min(70vh,560px);display:flex;flex-direction:column;background:var(--panel);border:1px solid var(--line-hi);border-radius:var(--radius);padding:14px}.picker-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.picker-path{font-family:var(--mono);font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:8px}.picker-roots{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}.picker-roots button{padding:5px 9px;font-size:12px}.picker-list{list-style:none;margin:0;padding:0;overflow-y:auto;flex:1 1}.picker-list li button{display:flex;align-items:center;gap:8px;width:100%;text-align:left;background:transparent;border:none;border-radius:6px;padding:9px 8px;color:var(--text);font-size:14px}.picker-list li button:hover{background:var(--panel-hi)}.picker-icon{color:var(--muted);width:14px;display:inline-block}.picker-empty{color:var(--muted);font-size:13px;padding:10px 8px}.cw-decoded{font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--accent);background:#05070c;border:1px solid var(--line);border-radius:8px;padding:10px 12px;min-height:62px;max-height:140px;overflow-y:auto;overflow-wrap:anywhere;margin-bottom:8px;display:flex;align-items:flex-end}.cw-decoded .hint{color:var(--muted)}.log-entry{display:flex;flex-wrap:wrap;gap:8px}.log-entry input{flex:1 1 120px;min-width:0}.log-entry input.rst{flex:0 1 64px;text-align:center}.log-table{width:100%;border-collapse:collapse;margin-top:12px;font-size:13px}.log-table th{text-align:left;color:var(--muted);font-weight:500;padding:4px 8px}.log-table td,.log-table th{border-bottom:1px solid var(--line)}.log-table td{padding:5px 8px}.mono-cell{font-family:var(--mono)}@media (max-width:720px){.log-table td:nth-child(7),.log-table td:nth-child(8),.log-table th:nth-child(7),.log-table th:nth-child(8){display:none}}.pb-scope canvas{width:100%;height:140px;display:block;background:#05070c;border:1px solid var(--line);border-radius:8px}.pb-scale{display:flex;justify-content:space-between;font-family:var(--mono);font-size:11px;color:var(--muted);padding:4px 2px 0}.pb-stack{position:relative}.pb-stack canvas:last-child{position:absolute;inset:0;width:100%;height:100%;background:transparent}.pb-tappable{cursor:crosshair}.ft8-list{margin-top:12px;max-height:260px;overflow-y:auto;background:#05070c;border:1px solid var(--line);border-radius:8px}.ft8-table{margin-top:0}.ft8-msg{color:var(--accent)}.ft8-table tbody tr{cursor:pointer}.ft8-table tbody tr:hover td{background:var(--panel-hi)}.ft8-tx td{color:var(--amber)!important;cursor:default!important}.ft8-me td{background:rgba(45,212,191,.1)}.ft8-cq .ft8-msg{color:var(--text);font-weight:600}.ft8-status{display:flex;align-items:center;gap:8px;margin-top:10px;padding:9px 12px;border:1px solid var(--amber-dim,#b98a10);border-radius:8px;background:rgba(251,191,36,.07);font-family:var(--mono);font-size:13px;color:var(--amber)}.ft8-status-dot{width:8px;height:8px;border-radius:50%;background:var(--amber);animation:blink-dot 1.2s ease-in-out infinite}@keyframes blink-dot{50%{opacity:.25}}@media (prefers-reduced-motion:reduce){.ft8-status-dot{animation:none}}.ft8-clock{display:flex;align-items:center;gap:10px;margin-top:10px}.ft8-clock-track{flex:1 1;height:8px;border:1px solid var(--line-hi);border-radius:4px;background:var(--panel-hi);overflow:hidden}.ft8-clock-track.ours{border-color:var(--amber)}.ft8-clock-fill{height:100%;background:var(--teal-dim,#1a7d72)}.ft8-clock-track.ours .ft8-clock-fill{background:var(--amber)}.ft8-clock-label{font-family:var(--mono);font-size:12px;color:var(--muted);white-space:nowrap}.ft8-clock-label em{font-style:normal;color:var(--amber)}.ft8-strip{position:relative;height:66px;margin-top:12px;background:#05070c;border:1px solid var(--line);border-radius:8px;overflow:hidden}.ft8-strip-scale span{bottom:2px;font-size:10px;color:var(--muted)}.ft8-chip,.ft8-strip-scale span{position:absolute;transform:translateX(-50%);font-family:var(--mono)}.ft8-chip{top:6px;font-size:11px;padding:2px 6px;border-radius:4px;border:1px solid var(--line-hi);background:var(--panel);color:var(--text);cursor:pointer;max-width:92px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ft8-chip.low{top:28px}.ft8-chip.cq{border-color:var(--teal);color:var(--teal)}.ft8-chip.worked{opacity:.45}.ft8-chip:disabled{cursor:default}.ft8-chip:not(:disabled):hover{background:var(--panel-hi);z-index:2}.ft8-list{position:relative}.ft8-slot-row td{padding:6px 8px 2px;border-bottom:none!important;font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--muted)}.ft8-db{width:42px;text-align:right}.ft8-fq{width:52px}.ft8-worked .ft8-msg{opacity:.5}.ft8-follow{position:-webkit-sticky;position:sticky;bottom:8px;left:100%;transform:translateX(-12px);font-family:var(--mono);font-size:12px;padding:5px 10px;border-radius:14px;border:1px solid var(--teal);color:var(--teal);background:var(--panel)}.ft8-proto{display:inline-flex;gap:0}.ft8-proto button{padding:8px 12px;font-size:12px;border-radius:0;position:relative}.ft8-proto button+button{margin-left:-1px}.ft8-proto button.on{z-index:1}.ft8-proto button:first-child{border-radius:8px 0 0 8px}.ft8-proto button:last-child{border-radius:0 8px 8px 0}.ft8-drive{margin-top:10px}.ft8-drive .name{font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--muted)}.ft8-meters{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#05070c;opacity:.55;transition:opacity .2s ease}.ft8-meters.hot{opacity:1;border-color:var(--line-hi)}.ft8-meter{display:flex;align-items:center;gap:6px;flex:1 1 120px;min-width:110px}.ft8-meter-label,.ft8-meter-num{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}.ft8-meter-num em{font-style:normal;color:var(--text)}.ft8-meter-track{flex:1 1;height:8px;border:1px solid var(--line-hi);border-radius:3px;background:var(--panel);overflow:hidden}.ft8-meter-fill{display:block;height:100%;background:linear-gradient(90deg,var(--teal-dim,#1a7d72),var(--teal));-webkit-mask-image:repeating-linear-gradient(90deg,#000 0 4px,transparent 4px 6px);mask-image:repeating-linear-gradient(90deg,#000 0 4px,transparent 4px 6px)}.ft8-meter-fill.danger{background:linear-gradient(90deg,#b45309,var(--danger,#f87171))}.ft8-meter-pct{font-size:10px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text-dim,#94a3b8);min-width:20px;text-align:right}.ft8-panes,.ft8-waterfall{margin-top:10px}.ft8-panes{display:grid;grid-template-columns:3fr 2fr;grid-gap:10px;gap:10px}@media (max-width:720px){.ft8-panes{grid-template-columns:1fr}}.ft8-pane-head{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:2px 2px 6px}.ft8-free input[type=text]{flex:1 1;min-width:140px;font-family:var(--mono);text-transform:uppercase}.ft8-warning{margin-top:10px;padding:10px 12px;border:1px solid var(--danger,#f87171);border-radius:8px;background:rgba(248,113,113,.08);color:var(--danger,#f87171);font-size:13px}.ws{display:flex;flex-direction:column;gap:14px}.ws-hidden{display:none}@media (max-width:720px){.ws{gap:10px}}.ws-tabs{display:flex;gap:4px;position:-webkit-sticky;position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:8px 0;margin:0 0 10px;border-bottom:1px solid var(--line)}.ws-tabs button{flex:1 1;padding:9px 0;background:transparent;border:1px solid transparent;border-radius:8px;color:var(--muted);font-size:13px;letter-spacing:.04em;cursor:pointer}.ws-tabs button.on{color:var(--accent);border-color:var(--line-hi);background:var(--panel)}.mini-cockpit{display:flex;align-items:baseline;gap:12px;width:100%;padding:8px 14px;margin-bottom:10px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;text-align:left}.mini-freq{font-family:var(--mono);font-size:20px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.mini-mode{font-size:12px;color:var(--muted);letter-spacing:.06em}.mini-s{color:var(--accent)}.mini-s,.mini-tx{margin-left:auto;font-family:var(--mono);font-size:13px}.mini-tx{color:var(--danger);border:1px solid var(--danger);border-radius:6px;padding:1px 8px;animation:none}@media (max-width:720px){.ws-tabs{position:fixed;top:auto;bottom:0;left:0;right:0;margin:0;padding:6px 8px calc(6px + env(safe-area-inset-bottom));border-top:1px solid var(--line-hi);border-bottom:none}.ws-tabs button{font-size:12px;padding:10px 0}main.app{padding-bottom:calc(96px + env(safe-area-inset-bottom))}}.ws-log-grid{display:grid;grid-template-columns:3fr 2fr;grid-gap:12px;gap:12px;align-items:start}@media (max-width:900px){.ws-log-grid{grid-template-columns:1fr}}.ft8-place{font-size:11px;color:var(--muted);text-align:right;white-space:nowrap;padding-right:8px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.ft8-cqmod{width:58px;font-family:var(--mono);text-transform:uppercase;text-align:center}.cw-target{font-size:18px;letter-spacing:.2em;color:var(--amber);padding:4px 10px;border:1px solid var(--line-hi);border-radius:8px}.cw-good{color:var(--accent);font-size:13px}.cw-miss{color:var(--danger);font-size:13px}.cw-meet{display:flex;align-items:center;gap:16px;margin-top:8px}.cw-glyph{font-family:var(--mono);font-size:56px;font-weight:700;color:var(--amber);min-width:64px;text-align:center;border:1px solid var(--line-hi);border-radius:var(--radius);padding:6px 0}.cw-echo-prompt{color:var(--accent);font-size:13px;margin:8px 0 0}.cw-pattern{color:var(--muted);letter-spacing:.15em}.cw-charmap{display:flex;flex-wrap:wrap;gap:4px;margin:10px 0 4px}.cw-charchip{font-family:var(--mono);font-size:13px;padding:2px 7px;border:1px solid var(--line);border-radius:6px;color:var(--muted)}.cw-charchip.good{color:var(--accent);border-color:var(--accent-dim)}.cw-charchip.warm{color:var(--amber);border-color:var(--line-hi)}.cw-charchip.weak{color:var(--danger);border-color:var(--line-hi)}.cw-charchip.next{border-style:dashed;opacity:.6}.cw-session-bar{height:4px;background:var(--line);border-radius:2px;margin-top:10px;overflow:hidden}.cw-session-bar div{height:100%;background:var(--accent);transition:width .2s}.cw-glyph-inline{font-family:var(--mono);font-size:22px;font-weight:700;color:var(--amber)}.cw-statgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));grid-gap:8px;gap:8px;margin-top:10px}.cw-stat{background:var(--panel-hi);border:1px solid var(--line);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:2px}.cw-stat-n{font-family:var(--mono);font-size:17px;color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cw-stat-l{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.cw-trend{display:flex;align-items:flex-end;gap:3px;height:56px;margin-top:6px}.cw-trend div{flex:1 1;max-width:22px;background:var(--line-hi);border-radius:2px 2px 0 0}.cw-trend div.warm{background:var(--amber)}.cw-trend div.good{background:var(--accent)}.cw-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.cw-badge{font-size:11px;padding:4px 10px;border:1px dashed var(--line);border-radius:999px;color:var(--muted);opacity:.55}.cw-badge.earned{border-style:solid;border-color:var(--accent-dim);color:var(--accent);opacity:1}.trainer-page{max-width:860px}.trainer-brand{font-family:var(--mono);font-weight:700;font-size:20px;letter-spacing:.04em;color:var(--text)}.trainer-brand span{color:var(--amber)}.trainer-brand:hover{text-decoration:none}.trainer-sub{color:var(--muted);font-size:13px;margin-left:8px}.trainer-h1{font-size:22px;margin:0 0 8px}.cw-pitch{border:1px solid var(--line-hi);border-radius:var(--radius);padding:14px;margin-top:10px;max-width:560px}.cw-pitch p{margin:0 0 8px;color:var(--fog,#9fb0c3)}.cw-pitch p:last-child{margin:0}.trainer-page a{color:var(--accent);text-decoration:none}.trainer-page a:hover{text-decoration:underline}.trainer-explain h2{font-size:16px;margin:22px 0 6px;color:var(--text)}.trainer-explain h2:first-child{margin-top:0}.trainer-explain p{color:var(--muted);font-size:14px;line-height:1.65;max-width:640px;margin:0 0 10px}.trainer-explain b{color:var(--text);font-weight:600}.quicklog{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 10px}.quicklog-call{flex:0 1 170px;min-width:120px}.quicklog-rst{flex:0 0 64px;text-align:center}.quicklog-note{flex:1 1 160px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cw-call{background:none;border:none;padding:0;font:inherit;color:var(--teal);cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;text-underline-offset:3px}.cw-call:hover{-webkit-text-decoration-style:solid;text-decoration-style:solid}.ft8-new{margin-right:6px;color:var(--amber,#e0a63c);border:1px solid;border-radius:4px;padding:0 5px;font-size:10px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}.stat-chips{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}.stat-chip{display:flex;flex-direction:column;gap:2px;padding:8px 14px;border:1px solid var(--line);border-radius:8px;min-width:84px}.stat-n{font-size:20px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-l{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.was-grid{display:grid;grid-template-columns:repeat(10,1fr);grid-gap:4px;gap:4px;max-width:520px}.was-cell{text-align:center;padding:4px 0;font-size:11px;font-family:var(--mono);border:1px solid var(--line);border-radius:4px;color:var(--muted);opacity:.55}.was-cell.was-worked{opacity:1;color:var(--text);background:color-mix(in srgb,var(--teal) 18%,transparent);border-color:var(--teal)}.was-cell.was-qsl{opacity:1;color:#08211d;background:var(--teal);border-color:var(--teal);font-weight:600}.stat-tables{display:flex;gap:18px;flex-wrap:wrap;margin-top:14px;align-items:flex-start}.stat-tables .log-table{width:auto;min-width:180px}.log-qsl{color:var(--teal);text-align:center}.sync-mark{display:inline-block;width:14px;text-align:center;font-family:var(--mono);font-size:10px;color:var(--muted);opacity:.45}.sync-mark.sync-ok{color:var(--teal);opacity:1}.sync-mark.sync-err{color:var(--danger);opacity:1}.bandmap{position:relative;height:38px;margin-top:4px;border:1px solid var(--line);border-radius:6px;overflow:hidden;background:var(--panel)}.bandmap-empty{padding:4px 10px;display:inline-block}.bandmap-spot{position:absolute;transform:translateX(-50%);background:none;border:none;padding:1px 4px;font-family:var(--mono);font-size:10.5px;color:var(--text);cursor:pointer;border-radius:4px;white-space:nowrap}.bandmap-spot:hover{background:var(--panel-hi)}.bandmap-worked{color:var(--muted);opacity:.55}.bandmap-new{color:var(--amber)}.pota-list{max-height:300px;overflow-y:auto}.pota-list tr{cursor:pointer}.pota-list tr:hover td{background:var(--panel-hi)}.pota-worked td{color:var(--muted);opacity:.6}.spectate-shell{max-width:900px;margin:0 auto;padding:14px 14px 40px}.spectate-head{display:flex;align-items:baseline;gap:12px;margin-bottom:10px}.spectate-brand{font-weight:700;color:var(--teal);letter-spacing:.02em}.spectate-watching{color:var(--muted);font-size:13px}.spectate-vfo{display:flex;align-items:center;gap:12px;margin-bottom:10px;flex-wrap:wrap}.spectate-freq{font-size:30px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.clubbar{align-items:center;gap:10px;margin:0 0 8px;font-size:12.5px}.clubbar,.clubbar-ops{display:flex;flex-wrap:wrap}.clubbar-ops{gap:6px}.clubbar-op{padding:1px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted)}.clubbar-op.clubbar-tx{color:var(--teal);border-color:var(--teal)}.clubbar-ask{color:var(--amber)}.clubbar-ask-me{font-weight:600}.clubbar-btn{font-size:12px;padding:2px 10px}.pileup-score{display:flex;gap:16px;font-size:14px;margin-bottom:8px;color:var(--text)}.pileup-log{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;font-size:12px}.pileup-log .pileup-ok{color:var(--teal)}.pileup-log .pileup-miss{color:var(--muted);text-decoration:line-through}.ptt-slide{position:relative;height:56px;border:1px solid var(--line);border-radius:28px;background:var(--panel);overflow:hidden;-webkit-user-select:none;-moz-user-select:none;user-select:none;touch-action:none;margin-top:6px}.ptt-slide-off{opacity:.45}.ptt-slide-fill{position:absolute;inset:0 auto 0 0;width:0;background:color-mix(in srgb,var(--teal) 22%,transparent);will-change:width}.ptt-slide.keyed .ptt-slide-fill{background:color-mix(in srgb,var(--danger) 30%,transparent)}.ptt-slide-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;letter-spacing:.12em;color:var(--muted);pointer-events:none}.ptt-slide.keyed .ptt-slide-label{color:var(--danger);font-weight:600}.ptt-slide-thumb{position:absolute;top:4px;width:64px;height:48px;border-radius:24px;background:var(--panel-hi);border:1px solid var(--line-hi);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:600;color:var(--teal);left:0;will-change:left;pointer-events:none}.ptt-slide.keyed .ptt-slide-thumb{color:var(--danger);border-color:var(--danger)}.ptt-slide-compact{height:44px;border-radius:22px}.ptt-slide-compact .ptt-slide-thumb{height:36px;width:52px;border-radius:18px;top:3px}.log-pager{display:inline-flex;align-items:center;gap:8px}.log-pager button{padding:4px 10px;min-height:0;font-size:12px}.update-banner{margin:0 0 10px;padding:8px 12px;border:1px solid var(--teal-dim);border-radius:8px;background:color-mix(in srgb,var(--teal) 10%,transparent);font-size:13px}.contest-head{display:flex;gap:16px;align-items:baseline;margin-bottom:8px;font-size:14px}.contest-head strong{color:var(--teal)}.contest-dupe{border-color:var(--danger)!important;color:var(--danger)}.contest-sheet{gap:4px 14px;margin-top:10px;font-size:12px;color:var(--muted)}.contest-sheet,.dxcc-list{display:flex;flex-wrap:wrap}.dxcc-list{gap:5px;max-width:760px}.dxcc-entity{font-size:11.5px;padding:2px 8px;border:1px solid var(--line);border-radius:999px;color:var(--muted)}.dxcc-entity.dxcc-qsl{color:var(--teal);border-color:var(--teal-dim)}.int-strip{display:flex;flex-wrap:wrap;gap:6px}.int-chip{font-family:var(--mono,ui-monospace,monospace);font-size:11px;padding:3px 8px;border-radius:999px;border:1px solid var(--line,#2a3242);cursor:default}.int-ok{color:var(--ok,#34d399);border-color:color-mix(in srgb,var(--ok,#34d399) 40%,transparent)}.int-bad{color:var(--warn,#f87171);border-color:color-mix(in srgb,var(--warn,#f87171) 40%,transparent)}.save-bar{position:-webkit-sticky;position:sticky;bottom:8px;z-index:5;background:var(--panel,#0d1421);border:1px solid var(--line,#1e2a3d);border-radius:10px;padding:12px 16px}.save-bar button{padding:8px 18px}.conn-err{font-family:var(--mono);font-size:12px;color:var(--danger)}.dirty-note{color:var(--warn,#fbbf24);font-size:12px;animation:dirty-pulse 2s ease-in-out infinite}@keyframes dirty-pulse{50%{opacity:.45}}.cw-ghost-input{position:absolute;width:1px;height:1px;opacity:0;border:0;padding:0;margin:0}.cw-chart{display:grid;grid-template-columns:repeat(auto-fill,minmax(64px,1fr));grid-gap:6px;gap:6px;margin-top:6px}.cw-chart-wide{grid-template-columns:repeat(auto-fill,minmax(120px,1fr))}.cw-chart-cell{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;background:var(--panel,#0d1421);border:1px solid var(--line,#1e2a3d);border-radius:8px;cursor:pointer;transition:border-color .12s,background .12s}.cw-chart-cell:active,.cw-chart-cell:hover{border-color:var(--teal,#2dd4bf);background:color-mix(in srgb,var(--teal,#2dd4bf) 12%,var(--panel,#0d1421))}.cw-chart-ch{font-size:18px;font-weight:600;color:var(--text,#e8eef7)}.cw-chart-ch,.cw-chart-code{font-family:var(--mono,ui-monospace,monospace)}.cw-chart-code{font-size:13px;color:var(--teal,#2dd4bf);letter-spacing:1px}.cw-chart-use{font-size:10px;color:var(--fog,#8fa0b5);text-align:center;line-height:1.2}.setup-group{border:1px solid var(--line,#1e2a3d);border-radius:10px;background:color-mix(in srgb,var(--panel,#0d1421) 60%,transparent);margin-top:12px;overflow:hidden}.setup-group-head{display:flex;align-items:center;justify-content:space-between;width:100%;background:none;border:0;cursor:pointer;padding:12px 14px;font-family:inherit;font-size:13px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text,#e8eef7)}.setup-group-head:hover{color:var(--teal,#2dd4bf)}.setup-group-body{padding:0 14px 14px}.setup-group-body>.label:first-child,.setup-group-body>div:first-child>.label:first-child{margin-top:0}.set-cards{display:grid;grid-gap:10px;gap:10px}.set-card{display:grid;grid-template-columns:1fr auto;grid-template-areas:"title go" "status go";align-items:center;text-align:left;grid-gap:2px 12px;gap:2px 12px;padding:14px 16px;background:var(--panel,#0d1421);border:1px solid var(--line,#1e2a3d);border-radius:10px;cursor:pointer;font-family:inherit}.set-card:hover{border-color:var(--teal,#2dd4bf)}.set-card-title{grid-area:title;font-size:15px;font-weight:600;color:var(--text,#e8eef7)}.set-card-status{grid-area:status;font-size:12.5px;color:var(--fog,#8fa0b5);font-family:var(--mono,ui-monospace,monospace)}.set-card-go{grid-area:go;font-size:22px;color:var(--fog,#8fa0b5)}.set-back{display:flex;align-items:baseline;gap:10px;background:none;border:0;cursor:pointer;padding:2px 0 12px;color:var(--teal,#2dd4bf);font-size:14px;font-family:inherit}.set-back-title{color:var(--text,#e8eef7);font-weight:600;font-size:15px}.set-page[hidden]{display:none}.set-back-hint{color:var(--fog,#8fa0b5);font-size:12px}.save-bar[hidden]{display:none}.setup-wide{display:grid;grid-template-columns:280px minmax(0,1fr);grid-gap:20px;gap:20px;align-items:start}.setup-wide .set-cards{position:-webkit-sticky;position:sticky;top:70px}.setup-wide .set-card{padding:11px 14px}.setup-wide .set-card-title{font-size:14px}.setup-wide .set-card-status{font-size:11.5px}.set-card-on{border-color:var(--amber,#fbbf24)}.set-card-on .set-card-title{color:var(--amber,#fbbf24)}.set-pagehead{display:flex;align-items:baseline;gap:10px;padding:2px 0 12px}.set-pagehead .set-back-title{font-size:16px}.field{display:flex;flex-direction:column;gap:4px;flex:1 1;min-width:0}.field-label{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--fog,#8fa0b5)}.field .preset-input{width:100%;flex:0 0 auto}.svc{border:1px solid var(--line,#1e2a3d);border-radius:10px;background:color-mix(in srgb,var(--panel,#0d1421) 55%,transparent);padding:14px 16px;margin-top:14px}.svc:first-child{margin-top:0}.svc-head{font-size:13px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;color:var(--text,#e8eef7);margin-bottom:10px}.svc .field+.setup-row,.svc .hint,.svc .setup-row+.field,.svc .setup-row+.setup-row{margin-top:10px}@media (min-width:920px){.setup{max-width:960px}}.setup-wide .set-detail{max-width:640px}.set-detail>.set-page>.label:first-child{margin-top:0}.ft8-pane .ft8-pane-head{display:flex;align-items:baseline;gap:8px}.ft8-clear{margin-left:auto;background:none;border:0;cursor:pointer;padding:0;font-family:inherit;font-size:11px;color:var(--fog,#8fa0b5)}.ft8-clear:hover{color:var(--accent,#5eead4)}.app.stale>:not(header):not(.ws-tabs):not(.toast){opacity:.55;filter:saturate(.6);transition:opacity .3s}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.swr-hot{color:var(--danger);font-weight:700}@media (max-width:720px){.bandmap-spot{min-height:0;padding:1px 4px}.log-table{display:block;overflow-x:auto}}.ft8-alerts-on{color:var(--accent,#5eead4)}.log-edit{margin:10px 0}.bandmap-ft8{position:absolute;bottom:2px;width:2px;height:6px;border-radius:1px;background:var(--accent);opacity:.55;pointer-events:auto}.nudge{border-color:rgba(251,191,36,.4);background:rgba(251,191,36,.07)}.clubbar-note,.nudge{color:var(--warn,#fbbf24)}.clubbar-note{font-size:12px}.op-below,.op-center,.op-left,.op-right,.op-top{display:contents}.op-view{display:none}@media (min-width:1100px){.op-view{display:flex;gap:4px;justify-content:flex-end;margin:0 0 2px}.op-view button{padding:4px 14px;font-size:12px}.ws-console{display:grid;grid-template-columns:290px minmax(0,1fr) 310px;grid-template-areas:"top top top" "left center right" "below below below";grid-gap:12px;gap:12px}.ws-console .op-top{display:block;grid-area:top}.ws-console .op-left{display:flex;flex-direction:column;gap:12px;grid-area:left}.ws-console .op-left>:last-child{flex:1 1}.ws-console .op-center{display:block;grid-area:center}.ws-console .op-right{display:flex;flex-direction:column;gap:12px;grid-area:right}.ws-console .op-right>:last-child{flex:1 1}.ws-console .op-below{display:block;grid-area:below}.ws-console .op-left .panel-pad,.ws-console .op-right .panel-pad{padding:10px 12px}.ws-console .op-left .modes{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:6px;gap:6px}.ws-console .op-left .modes button{padding:8px 0;font-size:11.5px;white-space:nowrap;min-width:0}.ws-console .op-left .steps button,.ws-console .op-left .toggles button{padding:6px 8px;font-size:12px;min-width:0}.ws-console .op-right .control{gap:6px}.ws-console .op-right .control input[type=range]{min-width:0;width:100%}.ws-console .op-right .toggles button{padding:6px 8px;font-size:11.5px;min-width:0}.ws-console .op-left .label,.ws-console .op-right .label{margin-top:8px}.ws-console .cockpit .freq-input{font-size:clamp(26px,2.6vw,40px)}.ws-console .op-below>*+*,.ws-console .op-center>*+*{margin-top:12px}.ws-console .op-center{display:flex;flex-direction:column}.ws-console .op-center>:last-child{flex:1 1;display:flex;flex-direction:column}.ws-console .cockpit .ptt,.ws-console .cockpit .ptt-slide{margin-top:auto}}.rmap{margin-top:10px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel);padding:8px}.rmap-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}.rmap-toggle{background:none;border:none;cursor:pointer;padding:2px 4px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.rmap-toggle:hover{color:var(--text)}.rmap-chevron{color:var(--accent)}.rmap-head button{font-family:var(--mono);font-size:11px;padding:3px 8px}.rmap-call{background:var(--bg);border:1px solid var(--line);border-radius:6px;color:var(--text);font:12px var(--mono);padding:3px 8px;text-transform:uppercase;width:140px}.rmap-call:focus{outline:none;border-color:var(--accent)}.rmap-status{margin-left:auto;color:var(--muted);font:11px var(--mono)}.rmap-canvas-wrap{position:relative}.rmap-canvas{width:100%;aspect-ratio:2/1;display:block;border:1px solid var(--line);border-radius:8px;background:#0a0e16;cursor:-webkit-grab;cursor:grab;touch-action:pan-y pinch-zoom}.rmap-canvas.dragging{cursor:-webkit-grabbing;cursor:grabbing}.rmap-tip{display:none;position:absolute;pointer-events:none;z-index:2;background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 8px;font:11px var(--mono);color:var(--text);white-space:nowrap;box-shadow:0 4px 14px rgba(0,0,0,.5)}.rmap-chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:8px}.rmap-chip{background:none;border:none;cursor:pointer;padding:2px 4px;font:11px var(--mono);color:var(--muted);opacity:.85}.rmap-chip:before{content:"—";margin-right:5px;font-weight:700}.rmap-chip.on{opacity:1;text-decoration:underline;text-underline-offset:3px}.rmap-chips:has(.on) .rmap-chip:not(.on){opacity:.35}@media (max-width:720px){.freq-input,.preset-input,input:not([type=range]):not([type=checkbox]):not([type=radio]),select{font-size:16px}}