:root{--bg-dark: #121212;--bg-panel: #1e1e1e;--bg-header: #2c2c2c;--text-main: #e0e0e0;--text-muted: #888888;--accent: #3a86ff;--accent-hover: #5396ff;--border: #333333;--btn-bg: #2a2a2a;--btn-hover: #3a3a3a}*{box-sizing:border-box;margin:0;padding:0;scrollbar-width:thin;scrollbar-color:#444 #1a1a1a}*::-webkit-scrollbar{width:6px;height:6px}*::-webkit-scrollbar-track{background:#1a1a1a}*::-webkit-scrollbar-thumb{background-color:#444;border-radius:3px}*::-webkit-scrollbar-thumb:hover{background-color:#666}*::-webkit-scrollbar-corner{background:#1a1a1a}[v-cloak]{display:none}body{font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;background-color:var(--bg-dark);color:var(--text-main);overflow:hidden;height:100vh;height:100dvh;display:flex}#app{display:flex;flex-direction:column;width:100%;height:100%}.top-bar{display:flex;align-items:center;height:60px;background-color:var(--bg-header);border-bottom:1px solid var(--border);padding:0 16px;flex-shrink:0}.brand{font-weight:600;font-size:16px;margin-right:32px;color:#fff}.vfo-displays{display:flex;align-items:center;gap:8px;margin-right:auto;overflow-x:auto;flex-shrink:1;min-width:0;padding-top:14px;padding-bottom:14px}.remote-status{display:flex;align-items:center;background:#1e1e1e;border:1px solid var(--border);border-radius:4px;padding:4px 8px;font-size:12px;font-weight:600;flex-shrink:0}.remote-host{border-color:#fa4}.remote-client{border-color:#48f}.remote-badge{color:#fff;padding:1px 4px;border-radius:3px;margin-right:6px;font-size:10px;letter-spacing:.5px}.remote-host .remote-badge{background:#fa4}.remote-client .remote-badge{background:#48f}.remote-text{color:#ccc}.vfo-display{position:relative;display:flex;align-items:baseline;background:#000;padding:4px 12px;border-radius:4px;border:2px solid #444;cursor:pointer;transition:border-color .15s;flex-shrink:0}.vfo-bookmark-label{position:absolute;top:calc(100% + 2px);left:0;right:0;font-size:8px;font-weight:400;color:#aaa;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.2px;pointer-events:none}.vfo-display.vfo-active{border-color:#aaa}@keyframes vfo-squelch-pulse{0%{box-shadow:0 0 4px 1px var(--sq-color, #4488ff)}50%{box-shadow:0 0 10px 4px var(--sq-color, #4488ff)}to{box-shadow:0 0 4px 1px var(--sq-color, #4488ff)}}.vfo-display.vfo-squelch-open{animation:vfo-squelch-pulse .8s ease-in-out infinite}.vfo-display.vfo-audio-off .vfo-freq-input,.vfo-display.vfo-audio-off .vfo-unit{opacity:.35}.vfo-oob-badge{font-size:9px;font-weight:700;letter-spacing:.5px;color:#fff;background:#e65100;padding:1px 4px;border-radius:3px;align-self:center;margin-left:5px}.vfo-display.vfo-oob .vfo-freq-input,.vfo-display.vfo-oob .vfo-unit{opacity:.45;color:#e65100}.panel.panel-oob .panel-body{opacity:.4;pointer-events:none}.panel.panel-oob .panel-header{opacity:.7}.vfo-mute-badge{align-self:center;margin-left:5px;opacity:.7;color:#f44;display:flex;align-items:center}.vfo-mute-btn{background:none;border:none;cursor:pointer;padding:2px;border-radius:3px;display:flex;align-items:center;justify-content:center;color:#4caf50;transition:color .15s}.vfo-mute-btn:hover{background:#ffffff14}.vfo-mute-btn.muted{color:#f44}.vfo-mute-btn:disabled{opacity:.35;cursor:default}.vfo-rx-badge{font-size:9px;font-weight:700;letter-spacing:.5px;color:#fff;padding:1px 4px;border-radius:3px;align-self:center;margin-left:5px;opacity:.95;animation:vfo-rx-blink .8s ease-in-out infinite}@keyframes vfo-rx-blink{0%,to{opacity:.95}50%{opacity:.45}}.vfo-label{font-size:11px;font-weight:600;margin-right:6px;padding:1px 5px;border-radius:3px;align-self:center;color:#fff}.vfo-dot{display:inline-block;width:8px;height:8px;border-radius:50%}.vfo-remove-btn{background:transparent;border:1px solid #555;color:#aaa;width:18px;height:18px;border-radius:3px;cursor:pointer;font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}.vfo-remove-btn:hover{background:#f44;border-color:#f44;color:#fff}.vfo-freq-input{font-family:Roboto Mono,monospace;font-size:20px;font-weight:700;color:#e0e0e0;letter-spacing:2px;background:transparent;border:none;outline:none;text-align:right;width:140px}.vfo-freq-input:focus{color:#00ffea}.vfo-unit{margin-left:8px;font-size:14px;color:#aaa}.icon-btn{background:transparent;border:1px solid transparent;color:var(--text-main);cursor:pointer;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center}.icon-btn:hover:not(:disabled){background:var(--btn-hover)}.icon-btn.active{color:#ff3a3a}.icon-btn:disabled{opacity:.3;cursor:not-allowed}.github-link{text-decoration:none;margin-right:6px;color:var(--text-dim)}.github-link:hover{color:var(--text-main)}.top-controls{display:flex;align-items:center;gap:4px}.main-layout{display:flex;flex:1;overflow:hidden}.sidebar{width:300px;min-width:300px;background-color:var(--bg-panel);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}.sidebar-scroll{flex:1;overflow-y:auto}.sidebar-footer{padding:8px 12px;border-top:1px solid var(--border);flex-shrink:0}.sidebar-about-btn{display:flex;align-items:center;gap:8px;width:100%;padding:6px 8px;font-size:13px;color:var(--text-muted);border-radius:6px;justify-content:flex-start}.sidebar-about-btn:hover{color:var(--text-main);background-color:var(--btn-hover)}.panel{border-bottom:1px solid var(--border)}.panel.disabled{opacity:.5;pointer-events:none}.panel-header{background-color:#252525;padding:6px 12px;font-size:12px;font-weight:600;text-transform:uppercase;color:#aaa;border-bottom:1px solid var(--border)}.panel-header-collapsible{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:center;justify-content:space-between}.panel-header-collapsible:hover{color:#ccc}.panel-chevron{opacity:.6;transition:transform .2s ease;flex-shrink:0}.panel-chevron-collapsed{transform:rotate(-90deg)}.panel-body{padding:12px;display:flex;flex-direction:column;gap:12px}.panel-condensed{gap:8px;padding:8px 12px}.form-row{display:flex;align-items:center;justify-content:space-between}.form-row.info-row{justify-content:flex-start;color:var(--text-muted)}.form-row label{font-size:13px;flex:1}.input-group{display:flex;align-items:center;background:#000;border:1px solid var(--border);border-radius:4px;padding:0 8px;width:140px;box-sizing:border-box}.input-group input{flex:1;width:100%;background:transparent;border:none;color:var(--text-main);font-family:Roboto Mono,monospace;font-size:13px;padding:6px 0;outline:none;text-align:right}.input-group span{font-size:11px;color:var(--text-muted);margin-left:6px}.lock-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin-left:6px;border-radius:4px;color:var(--text-muted);background:transparent;transition:all .15s}.lock-btn.host{cursor:pointer}.lock-btn.host:hover{background:#ffffff1a;color:var(--text-main)}.lock-btn.locked{color:#fa4}select{background:#000;border:1px solid var(--border);color:var(--text-main);padding:4px 8px;border-radius:4px;width:140px;font-size:13px;outline:none}.slider-group{display:flex;align-items:center;width:140px;gap:8px}.slider-group input[type=range]{flex:1;width:100%}.slider-group .val{font-size:12px;font-family:Roboto Mono,monospace;width:38px;text-align:right;color:var(--text-muted)}.checkbox{display:flex;align-items:center;gap:8px;cursor:pointer}.btn{background-color:var(--btn-bg);border:1px solid var(--border);color:var(--text-main);padding:6px 12px;font-size:13px;border-radius:4px;cursor:pointer;flex:1;text-align:center;transition:background .2s}.btn:hover:not(:disabled){background-color:var(--btn-hover)}.btn-primary{background-color:var(--accent);border-color:var(--accent);color:#fff}.btn-primary:hover:not(:disabled){background-color:var(--accent-hover)}.mode-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:4px}.mode-radio{display:flex;align-items:center;gap:4px;cursor:pointer}.mode-radio input[type=radio]{display:none}.mode-btn{font-size:11px;font-weight:600;color:var(--text-main);display:flex;align-items:center}.mode-btn:before{content:"";display:inline-block;width:14px;height:14px;border-radius:50%;background-color:#2a2a2a;margin-right:4px;border:1px solid #1a1a1a;box-shadow:inset 0 1px 3px #00000080}.mode-radio input[type=radio]:checked+.mode-btn:before{background-color:var(--accent);box-shadow:inset 0 1px 2px #0000004d;border-color:var(--accent-hover)}.spin-group{display:flex;background:#1e1e1e;border:1px solid var(--border);border-radius:2px;height:24px;width:130px;margin-left:auto}.spin-group input{flex:1;background:transparent;border:none;color:var(--text-main);font-family:Roboto Mono,monospace;font-size:13px;padding:0 4px;text-align:right;outline:none;width:0}.spin-group input::-webkit-outer-spin-button,.spin-group input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.spin-group button{background:#2a2a2a;border:none;border-left:1px solid var(--border);color:var(--text-muted);width:20px;cursor:pointer;font-weight:700;display:flex;align-items:center;justify-content:center}.spin-group button:hover{background:#3a3a3a;color:var(--text-main)}.spin-group button:active{background:#1a1a1a}.custom-checkbox{display:flex;align-items:center;cursor:pointer;font-size:13px;font-weight:600;-webkit-user-select:none;user-select:none}.custom-checkbox input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{height:16px;width:16px;background-color:#2a2a2a;border:1px solid #1a1a1a;border-radius:2px;margin-right:8px;box-shadow:inset 0 1px 3px #00000080;position:relative}.custom-checkbox:hover input~.checkmark{background-color:#333}.custom-checkbox input:checked~.checkmark{background-color:var(--bg-panel)}.checkmark:after{content:"";position:absolute;display:none}.custom-checkbox input:checked~.checkmark:after{display:block}.custom-checkbox .checkmark:after{left:5px;top:1px;width:4px;height:9px;border:solid var(--accent);border-width:0 2px 2px 0;transform:rotate(45deg)}.header-checkbox .checkmark{margin-right:0}.header-checkbox input:disabled~.checkmark{opacity:.5;cursor:not-allowed}.header-checkbox input:disabled~.checkmark:after{border-color:#555}.squelch-row,.full-checkbox-row{margin-top:2px}.btn-auto-squelch{background:var(--btn-bg);border:1px solid var(--border);color:var(--text-main);padding:2px 8px;font-size:11px;border-radius:3px;cursor:pointer;margin-left:6px;white-space:nowrap}.btn-auto-squelch:hover:not(:disabled){background:var(--btn-hover)}.btn-auto-squelch:disabled{opacity:.4;cursor:default}.full-checkbox-row .custom-checkbox{color:#ccc}.compact-slider{width:130px}.compact-slider .val{width:65px}.workspace{flex:1;display:flex;flex-direction:column;position:relative;background:#000}.fft-container{height:40%;position:relative;border-bottom:1px solid var(--border)}.waterfall-container{height:60%;position:relative}canvas{width:100%;height:100%;display:block}.freq-axis{position:absolute;bottom:0;left:0;width:100%;height:20px;pointer-events:none}.tick{position:absolute;bottom:2px;font-size:11px;color:#fff9;transform:translate(-50%);font-family:Roboto Mono,monospace}.tick:first-child{transform:none}.tick:last-child{transform:translate(-100%)}.hover-tick{position:absolute;top:10px;background:#000c;border:1px solid var(--border);padding:2px 6px;border-radius:4px;font-size:12px;font-family:Roboto Mono,monospace;transform:translate(-50%);pointer-events:none;color:#00ffea}.dsp-stats-overlay{position:absolute;top:8px;right:8px;background:#000000d9;border:1px solid var(--border);border-radius:6px;padding:8px 12px;font-size:11px;font-family:Roboto Mono,monospace;color:#ccc;line-height:1.6;pointer-events:none;z-index:50;white-space:nowrap}.dsp-stats-overlay b{color:#00ffea}.active-audio-overlay{position:absolute;bottom:24px;right:24px;display:flex;flex-direction:column;align-items:flex-end;gap:6px;pointer-events:none;z-index:50}.active-audio-title{font-size:11px;font-weight:600;text-transform:uppercase;color:#aaa;text-shadow:0 1px 2px rgba(0,0,0,.8)}.active-audio-chips{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;max-width:400px}.active-audio-chip{display:flex;align-items:center;gap:6px;background:#000000d9;border:1px solid var(--border);padding:4px 8px;border-radius:16px;pointer-events:auto;cursor:pointer;transition:all .15s ease;box-shadow:0 2px 6px #0006}.active-audio-chip:hover{background:#1a1a1a;box-shadow:0 0 8px 1px var(--chip-color, #4488ff)}.active-audio-chip .vfo-num{font-size:12px;font-weight:700;color:#fff}.active-audio-chip .vfo-freq{font-size:12px;font-family:Roboto Mono,monospace;color:#ccc}.snackbar{position:fixed;bottom:-50px;left:50%;transform:translate(-50%);background:#323232;color:#fff;padding:12px 24px;border-radius:4px;font-size:14px;transition:bottom .3s ease;z-index:1000;box-shadow:0 4px 12px #00000080}.snackbar.show{bottom:24px}.transcript-panel{flex-shrink:0;display:flex;flex-direction:column;height:200px;min-height:100px;border-top:2px solid var(--accent);background:var(--bg-panel)}.transcript-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#252525;border-bottom:1px solid var(--border);flex-shrink:0}.transcript-title{font-size:12px;font-weight:600;text-transform:uppercase;color:#aaa;display:flex;align-items:center;gap:6px}.transcript-badge{font-size:10px;padding:1px 6px;border-radius:8px;background:#2e7d32;color:#fff;font-weight:600;text-transform:none}.transcript-badge.loading{background:#e65100}.transcript-load-file{opacity:.75;font-size:10px;font-weight:400;letter-spacing:0;text-transform:none;margin-left:2px}.transcript-badge.error{background:#c62828}.transcript-badge.recording{background:#c62828;animation:pulse-rec 1s ease-in-out infinite}.transcript-badge.transcribing{background:#1565c0;animation:pulse-rec 1.2s ease-in-out infinite}@keyframes pulse-rec{0%,to{opacity:1}50%{opacity:.5}}.transcript-controls{display:flex;align-items:center;gap:6px}.transcript-select{background:#000;border:1px solid var(--border);color:var(--text-main);padding:2px 6px;border-radius:4px;font-size:11px;outline:none}.transcript-btn{padding:2px 10px;font-size:11px;flex:none}.btn-stop{background:#c62828;border-color:#c62828;color:#fff}.btn-stop:hover:not(:disabled){background:#e53935}.transcript-body{flex:1;overflow-y:auto;padding:8px 12px;font-family:Roboto Mono,monospace;font-size:12px;line-height:1.7}.transcript-empty{color:var(--text-muted);font-style:italic;font-family:Inter,sans-serif;font-size:13px;padding:12px 0}.transcript-entry{display:flex;gap:8px;align-items:baseline;border-left:3px solid transparent;padding-left:8px;margin-left:-11px;border-radius:2px}.transcript-vfo-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;align-self:center;opacity:.9}.transcript-time{color:var(--text-muted);flex-shrink:0}.transcript-freq{color:var(--accent);flex-shrink:0;font-size:11px}.transcript-duration{color:var(--text-muted);flex-shrink:0;font-size:11px}.transcript-text{color:#e0e0e0}.pocsag-panel{flex-shrink:0;display:flex;flex-direction:column;height:200px;min-height:80px;border-top:2px solid #ff9800;background:var(--bg-panel)}.pocsag-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#252505;border-bottom:1px solid var(--border);flex-shrink:0}.pocsag-title{font-size:12px;font-weight:600;text-transform:uppercase;color:#ffb74d;display:flex;align-items:center;gap:6px}.pocsag-count{font-size:10px;padding:1px 6px;border-radius:8px;background:#e65100;color:#fff;font-weight:600;text-transform:none}.pocsag-controls{display:flex;align-items:center;gap:6px}.pocsag-body{flex:1;overflow-y:auto;padding:6px 12px;font-family:Roboto Mono,monospace;font-size:11px;line-height:1.8}.pocsag-empty{color:var(--text-muted);font-style:italic;font-family:Inter,sans-serif;font-size:13px;padding:12px 0}.pocsag-entry{display:flex;flex-wrap:nowrap;gap:8px;align-items:baseline;border-left:3px solid transparent;padding-left:8px;margin-left:-11px;border-radius:2px;overflow:hidden}.pocsag-vfo-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0;align-self:center;opacity:.9}.pocsag-time{color:var(--text-muted);flex-shrink:0}.pocsag-freq{color:#ff9800;flex-shrink:0}.pocsag-capcode{color:#80cbc4;flex-shrink:0;font-size:10px}.pocsag-type{font-size:9px;font-weight:700;padding:0 4px;border-radius:3px;flex-shrink:0;letter-spacing:.5px}.pocsag-type-alpha{background:#1b5e20;color:#a5d6a7}.pocsag-type-numeric{background:#1a237e;color:#90caf9}.pocsag-type-tone{background:#4a148c;color:#ce93d8}.pocsag-baud{color:#666;font-size:9px;flex-shrink:0}.pocsag-text{color:#e0e0e0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.pocsag-tone{color:#888;font-style:italic}.bookmark-toolbar{display:grid;grid-template-columns:1fr 1fr;gap:5px;padding:8px 10px;background:#222;border-bottom:1px solid var(--border)}.bm-filter-row{grid-column:1 / -1;display:flex;align-items:center;gap:6px}.bm-cat-filter-select{flex:1;background:#111;border:1px solid var(--border);color:var(--text-main);padding:4px 6px;border-radius:4px;font-size:11px;outline:none;transition:border-color .15s}.bm-cat-filter-select:focus{border-color:var(--accent)}.bm-search-input{flex:1;background:#111;border:1px solid var(--border);color:var(--text-main);padding:4px 6px;border-radius:4px;font-size:11px;outline:none;transition:border-color .15s;min-width:0}.bm-search-input:focus{border-color:var(--accent)}.bm-search-input::placeholder{color:var(--text-muted)}.bm-search-clear{flex-shrink:0;background:none;border:none;color:var(--text-muted);font-size:16px;line-height:1;cursor:pointer;padding:0 2px;transition:color .15s}.bm-search-clear:hover{color:var(--text-main)}.bookmark-toolbar-row{display:contents}.bookmark-save-btn{font-size:12px;padding:5px 8px;flex:none;display:flex;align-items:center;justify-content:center;gap:4px;border-radius:4px}.bm-io-btn{background:#2a2a2a;border-color:#444;color:#bbb;font-size:12px;padding:5px 8px;display:flex;align-items:center;justify-content:center;gap:5px;border-radius:4px;transition:background .15s,color .15s}.bm-io-btn:hover{background:#3a3a3a;color:#fff}.bm-type-freq{background:#3a86ff2e;border-color:var(--accent);color:var(--accent)}.bm-type-freq:hover{background:#3a86ff52}.bm-type-group{background:#38b05e2e;border-color:#38b05e;color:#38b05e}.bm-type-group:hover{background:#38b05e52}.bookmark-empty{color:var(--text-muted);font-size:11px;font-style:italic;padding:8px 12px}.bookmark-group-header{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em;padding:5px 10px 3px;border-bottom:1px solid var(--border)}.bm-group-header-freq{color:var(--accent);background:#3a86ff12}.bm-group-header-group{color:#38b05e;background:#38b05e12}.bookmark-cat-header{display:flex;align-items:center;gap:6px;padding:5px 10px;cursor:pointer;color:var(--text-muted);background:#1c1c1c;border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none;transition:background .12s,color .12s}.bookmark-cat-header:hover{background:#252525;color:var(--text-main)}.bookmark-cat-label{flex:1;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.07em}.bookmark-cat-count{font-size:10px;background:#ffffff14;color:var(--text-muted);border-radius:8px;padding:1px 6px;font-weight:600;min-width:18px;text-align:center}.bookmark-item{display:flex;align-items:center;justify-content:space-between;padding:5px 10px;border-bottom:1px solid var(--border);gap:6px}.bookmark-item:last-child{border-bottom:none}.bookmark-item:hover{background:#ffffff0a}.bookmark-info{display:flex;flex-direction:column;min-width:0;flex:1}.bookmark-name{font-size:12px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--text-main)}.bookmark-meta{font-size:10px;color:var(--text-muted);font-family:Roboto Mono,monospace;margin-top:1px}.bookmark-actions{display:flex;gap:4px;flex-shrink:0}.bookmark-btn{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:4px;border:1px solid var(--border);background:var(--btn-bg);color:var(--text-main);cursor:pointer;font-size:14px;line-height:1;transition:background .15s,color .15s}.bookmark-btn:hover{background:var(--btn-hover)}.bookmark-jump{color:var(--accent);border-color:var(--accent)}.bookmark-jump:hover{background:#3a86ff26}.bookmark-delete{color:#e57373;border-color:#e57373}.bookmark-delete:hover{background:#e5737326}.bookmark-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;display:flex;align-items:center;justify-content:center;z-index:900}.bookmark-dialog{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;width:340px;max-width:95vw;box-shadow:0 8px 32px #0009;overflow:hidden}.bookmark-dialog-title{font-size:13px;font-weight:600;padding:10px 14px;background:var(--bg-header);border-bottom:1px solid var(--border);text-transform:uppercase;letter-spacing:.04em;color:#ccc}.bookmark-dialog-body{padding:14px;display:flex;flex-direction:column;gap:10px}.bookmark-dialog-input{width:100%;background:#111;border:1px solid var(--border);color:var(--text-main);padding:6px 10px;border-radius:4px;font-size:13px;outline:none;transition:border-color .15s}.bookmark-dialog-input:focus{border-color:var(--accent)}.bookmark-dialog-info{font-size:11px;color:var(--text-muted);font-family:Roboto Mono,monospace}.bookmark-dialog-info b{color:var(--text-main)}.bookmark-vfo-preview{display:flex;flex-direction:column;gap:4px;max-height:120px;overflow-y:auto}.bookmark-vfo-chip{display:flex;align-items:center;gap:6px;font-size:11px;font-family:Roboto Mono,monospace;color:var(--text-muted);background:#ffffff0a;border:1px solid;border-radius:4px;padding:3px 8px}.bookmark-vfo-dot{display:inline-block;width:7px;height:7px;border-radius:50%;flex-shrink:0}.bookmark-dialog-footer{display:flex;justify-content:flex-end;gap:8px;padding:10px 14px;border-top:1px solid var(--border);background:var(--bg-header)}.remote-host-info{flex-direction:column;gap:12px}.share-link-box{display:flex;align-items:stretch;background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden}.share-link-box .remote-share-link{flex:1;min-width:0;padding:6px 10px;color:var(--text);word-break:break-all;font-size:12px;line-height:1.4;text-decoration:none}.share-link-box .remote-share-link:hover{text-decoration:underline}.btn-copy{background:var(--bg-header);border:none;border-left:1px solid var(--border);color:var(--text);cursor:pointer;padding:6px 10px;display:flex;align-items:center;justify-content:center;transition:background .15s;flex-shrink:0}.btn-copy:hover{background:var(--border)}.btn-full{width:100%}.remote-clients-dialog{min-width:320px}.remote-clients-empty{color:var(--text-dim);text-align:center;padding:16px 0}.client-count-badge{display:inline-block;background:var(--accent);color:#fff;font-size:11px;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;margin-left:6px;padding:0 5px}.remote-client-list{display:flex;flex-direction:column;gap:6px;max-height:300px;overflow-y:auto}.remote-client-item{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px;background:var(--bg-header);border:1px solid var(--border);border-radius:6px}.remote-client-info{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.remote-client-id{font-family:monospace;font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.remote-client-meta{display:flex;gap:8px;font-size:11px;color:var(--text-dim);flex-wrap:wrap}.remote-client-meta span{white-space:nowrap}.remote-client-country{font-weight:600;color:var(--accent)}.remote-client-freq{font-family:monospace}.remote-client-relay{background:#ffa50033;color:orange;border:1px solid rgba(255,165,0,.4);border-radius:3px;padding:0 4px;font-size:10px;font-weight:700}.remote-client-duration{font-size:11px;color:var(--text-dim)}.btn-kick{background:#dc354533;color:#ff6b7a;border:1px solid rgba(220,53,69,.4);font-size:11px;padding:4px 12px;border-radius:4px;cursor:pointer;flex-shrink:0;white-space:nowrap}.btn-kick:hover{background:#dc354566}.recent-remote-item{display:flex;align-items:center;justify-content:space-between;background:var(--bg-lighter);padding:8px 12px;border-radius:6px;cursor:pointer;border:1px solid var(--border-color);transition:border-color .2s,background .2s}.recent-remote-item:hover{border-color:var(--primary-color);background:#5266ff1a}.recent-remote-id{font-family:Roboto Mono,monospace;font-size:13px;color:var(--text-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;padding-right:12px}.bm-badge{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.06em;padding:1px 5px;border-radius:3px;vertical-align:middle}.bm-badge-freq{background:#3a86ff38;color:#7eb4ff;border:1px solid rgba(58,134,255,.4)}.bm-badge-group{background:#38b05e38;color:#6dd68e;border:1px solid rgba(56,176,94,.4)}.bm-cat-badge{display:inline-block;font-size:9px;font-weight:700;letter-spacing:.05em;padding:1px 5px;border-radius:3px;vertical-align:middle;text-transform:uppercase}.bm-cat-marine{background:#08f3;color:#5af;border:1px solid rgba(0,136,255,.45)}.bm-cat-aviation{background:#ff980033;color:#ffb84d;border:1px solid rgba(255,152,0,.45)}.bm-cat-fire{background:#f4433633;color:#ff7066;border:1px solid rgba(244,67,54,.45)}.bm-cat-ambulance{background:#e91e6333;color:#f69;border:1px solid rgba(233,30,99,.45)}.bm-cat-police{background:#3f51b540;color:#89e;border:1px solid rgba(63,81,181,.5)}.bm-cat-pocsag{background:#9c27b033;color:#c7e;border:1px solid rgba(156,39,176,.45)}.bm-cat-amateur{background:#4caf5033;color:#7d7;border:1px solid rgba(76,175,80,.45)}.bm-cat-weather{background:#00bcd433;color:#4de;border:1px solid rgba(0,188,212,.45)}.bm-cat-military{background:#79554840;color:#bb9984;border:1px solid rgba(121,85,72,.5)}.bm-cat-utility{background:#607d8b40;color:#9bc;border:1px solid rgba(96,125,139,.5)}.bm-cat-other{background:#9e9e9e33;color:#bbb;border:1px solid rgba(158,158,158,.4)}.bm-import-dialog{width:300px}.bm-import-body{gap:12px}.bm-import-desc{margin:0;font-size:12px;color:var(--text-muted)}.bm-import-choices{display:flex;flex-direction:column;gap:8px}.bm-import-choice{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#1a1a1a;border:1px solid var(--border);border-radius:6px;text-align:left;width:100%;cursor:pointer;transition:background .15s,border-color .15s;color:var(--text-main)}.bm-import-choice:hover{background:#252525;border-color:var(--accent)}.bm-import-replace:hover{border-color:#e57373}.bm-import-choice-label{font-size:13px;font-weight:600;display:block}.bm-import-choice-desc{font-size:10px;color:var(--text-muted);display:block;margin-top:1px}.bm-import-choice>svg{flex-shrink:0;opacity:.7}.bookmark-edit{color:#ffd54f;border-color:#ffd54f}.bookmark-edit:hover{background:#ffd54f26}.bookmark-edit-dialog{width:400px}.bm-edit-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}.bm-edit-row:last-child{margin-bottom:0}.bm-edit-label{flex:0 0 88px;font-size:11px;color:var(--text-muted);font-weight:500}.bm-edit-input{flex:1;background:#111;border:1px solid var(--border);color:var(--text-main);padding:4px 8px;border-radius:4px;font-size:12px;outline:none;transition:border-color .15s}.bm-edit-input:focus{border-color:var(--accent)}.bm-edit-input:disabled{opacity:.4}.bm-edit-select{flex:1;background:#111;border:1px solid var(--border);color:var(--text-main);padding:4px 6px;border-radius:4px;font-size:12px;outline:none}.bm-mode-grid{flex:1}.bm-edit-section-label{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:6px 0 4px;font-weight:600}.bm-vfo-list{display:flex;flex-direction:column;gap:5px;max-height:180px;overflow-y:auto}.bm-vfo-edit-row{display:flex;align-items:center;gap:6px;background:#ffffff08;border:1px solid var(--border);border-radius:4px;padding:4px 8px}.activity-panel{flex-shrink:0;display:flex;flex-direction:column;height:220px;min-height:80px;border-top:2px solid #44cc44;background:var(--bg-panel)}.activity-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;background:#081508;border-bottom:1px solid var(--border);flex-shrink:0}.activity-title{font-size:12px;font-weight:600;text-transform:uppercase;color:#80d880;display:flex;align-items:center;gap:6px}.activity-count{font-size:10px;padding:1px 6px;border-radius:8px;background:#2e7d32;color:#fff;font-weight:600;text-transform:none}.activity-controls{display:flex;align-items:center;gap:6px}.activity-body{flex:1;overflow-y:auto;padding:4px 0}.activity-empty{color:var(--text-muted);font-style:italic;font-family:Inter,sans-serif;font-size:13px;padding:12px 16px}.activity-list{display:flex;flex-direction:column}.activity-row{position:relative;display:flex;align-items:center;gap:8px;padding:4px 12px;cursor:pointer;overflow:hidden;transition:background .1s;min-height:30px}.activity-row:hover{background:#ffffff0a}.activity-row-zero{opacity:.35}.activity-row-live{border-left:3px solid var(--act-color, #44cc44)}.act-bar-fill{position:absolute;left:0;top:0;bottom:0;background:var(--act-color, #44cc44);opacity:.1;pointer-events:none;transition:width .6s ease;z-index:0}.activity-row>*:not(.act-bar-fill){position:relative;z-index:1}.act-rank{font-size:10px;color:var(--text-muted);min-width:22px;font-family:Roboto Mono,monospace}.act-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.act-vfo{font-size:11px;font-weight:700;color:var(--act-color, #aaa);min-width:44px}.act-freq{font-size:12px;font-family:Roboto Mono,monospace;color:#e0e0e0;min-width:96px}.act-label{font-size:11px;color:#bbb;background:#ffffff12;padding:1px 6px;border-radius:4px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.act-spacer{flex:1}.act-live-badge{font-size:10px;font-weight:700;color:var(--act-color, #44cc44);background:#44cc441f;padding:1px 7px;border-radius:8px;border:1px solid var(--act-color, #44cc44);animation:pulse-rec 1s ease-in-out infinite;white-space:nowrap}.act-count{font-size:11px;color:#888;font-family:Roboto Mono,monospace;min-width:32px;text-align:right}.act-duration{font-size:12px;font-family:Roboto Mono,monospace;color:#e0e0e0;min-width:60px;text-align:right}.audio-unlock-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;background:#000000d1;cursor:pointer;animation:unlock-fade-in .2s ease}@keyframes unlock-fade-in{0%{opacity:0}to{opacity:1}}.audio-unlock-box{display:flex;flex-direction:column;align-items:center;gap:12px;color:#fff;-webkit-user-select:none;user-select:none;animation:unlock-pop .25s cubic-bezier(.34,1.56,.64,1)}@keyframes unlock-pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.audio-unlock-box svg{opacity:.9}.audio-unlock-title{font-size:22px;font-weight:600;letter-spacing:.5px}.audio-unlock-sub{font-size:13px;opacity:.6}.sidebar-toggle,.sidebar-backdrop,.vfo-bottom-strip{display:none}@media(max-width:768px){.top-bar{height:48px;padding:0 8px;gap:4px}.sidebar-toggle{display:flex;flex-shrink:0}.brand{font-size:14px;margin-right:8px}.github-link{display:none}.vfo-displays{gap:4px;padding-top:8px;padding-bottom:8px}.vfo-display{padding:2px 6px}.vfo-freq-input{font-size:14px;width:100px;letter-spacing:1px}.vfo-unit{font-size:11px;margin-left:4px}.vfo-label{font-size:9px;padding:1px 3px;margin-right:4px}.vfo-bookmark-label{font-size:7px}.vfo-displays{display:none}.vfo-bottom-strip{display:flex;align-items:center;gap:6px;padding:6px 8px;background:var(--bg-header);border-top:1px solid var(--border);overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}.vfo-bottom-tab{display:flex;align-items:center;gap:4px;background:#000;padding:4px 10px;border-radius:4px;border:2px solid #444;cursor:pointer;transition:border-color .15s;flex-shrink:0;min-height:36px}.vfo-bottom-tab.vfo-active{border-color:#aaa}.vfo-bottom-tab.vfo-squelch-open{animation:vfo-squelch-pulse .8s ease-in-out infinite}.vfo-bottom-tab.vfo-audio-off{opacity:.4}.vfo-bottom-tab.vfo-oob{opacity:.5;border-color:#e65100}.vfo-bottom-freq{font-family:Roboto Mono,monospace;font-size:14px;font-weight:700;color:#e0e0e0;letter-spacing:1px;white-space:nowrap;background:transparent;border:none;outline:none;width:94px;text-align:right;padding:0}.vfo-bottom-freq:focus{color:#00ffea}.top-controls{gap:2px}.top-controls .icon-btn{padding:6px}.top-controls .icon-btn svg{width:20px;height:20px}.sidebar-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;z-index:199}.sidebar{position:fixed;top:0;left:0;bottom:0;width:85vw;max-width:320px;z-index:200;transform:translate(-100%);transition:transform .25s ease;overflow-y:auto}.sidebar.sidebar-open{transform:translate(0)}.main-layout{position:relative}.workspace{width:100%}.panel-header{padding:10px 12px;font-size:13px}.panel-body{padding:12px}.form-row label{font-size:13px}.form-row{min-height:40px}select{font-size:13px;padding:8px;min-height:40px}.input-group{min-height:40px}.input-group input{font-size:13px;padding:8px 0}.slider-group input[type=range]{min-height:40px}.btn{padding:10px 12px;font-size:13px;min-height:40px}.spin-group{height:36px}.spin-group button{width:36px;min-height:36px}.mode-grid{grid-template-columns:repeat(4,1fr);gap:6px}.mode-btn{font-size:11px;min-height:32px}.custom-checkbox{font-size:13px;min-height:40px;display:flex;align-items:center}.checkmark{width:22px;height:22px}.custom-checkbox .checkmark:after{left:7px;top:2px;width:5px;height:11px}.bookmark-item{padding:8px 10px;min-height:40px}.bookmark-btn{width:34px;height:34px;font-size:15px}.bookmark-save-btn{padding:8px;min-height:40px}.bookmark-cat-header{padding:8px 10px;min-height:40px}.transcript-panel,.pocsag-panel,.activity-panel{height:40vh;max-height:50vh}.transcript-header,.pocsag-header,.activity-header{flex-wrap:wrap;gap:6px;padding:8px 10px}.transcript-controls,.pocsag-controls,.activity-controls{flex-wrap:wrap;gap:4px}.transcript-select{font-size:10px;max-width:120px}.transcript-entry{flex-wrap:wrap;gap:4px}.pocsag-entry{flex-wrap:wrap;gap:4px;margin-bottom:8px}.pocsag-text{flex-basis:100%;white-space:normal;word-break:break-word}.activity-row{padding:6px 10px;min-height:40px;flex-wrap:wrap;gap:4px}.act-freq{font-size:11px;min-width:unset}.act-label{max-width:120px}.bookmark-dialog{width:95vw;max-width:95vw;max-height:90vh;overflow-y:auto}.bookmark-edit-dialog,.bm-import-dialog{width:95vw}.remote-clients-dialog{min-width:unset;width:95vw}.bookmark-dialog-body{padding:12px}.bm-edit-row{flex-wrap:wrap;gap:6px}.bm-edit-label{flex:0 0 100%;font-size:12px}.bm-edit-input{font-size:13px;padding:8px;min-height:40px}.bm-edit-select{font-size:13px;padding:8px 6px;min-height:40px}.freq-axis .tick{font-size:9px}.dsp-stats-overlay{font-size:9px;padding:6px 8px}.active-audio-overlay{bottom:8px;right:8px}.active-audio-chips{max-width:200px}.active-audio-chip{padding:3px 6px}.snackbar{left:10%;right:10%;transform:none;text-align:center}.lock-btn{width:32px;height:32px}.vfo-remove-btn{width:28px;height:28px}}@media(max-width:380px){.brand{display:none}.vfo-freq-input{font-size:12px;width:80px}.top-controls .icon-btn svg{width:18px;height:18px}.vfo-unit{display:none}.sidebar{width:90vw}}.device-picker-list{max-height:300px;overflow-y:auto}.device-picker-item{padding:10px 14px;cursor:pointer;border-bottom:1px solid var(--border);transition:background .15s}.device-picker-item:last-child{border-bottom:none}.device-picker-item:hover{background:#ffffff0f}.device-picker-name{font-weight:600;font-size:13px;color:#ddd}.about-dialog{max-width:640px;width:95vw;max-height:88vh;display:flex;flex-direction:column}.about-dialog-title{display:flex;flex-direction:column;gap:4px;padding-bottom:12px;border-bottom:1px solid var(--border);text-transform:none;letter-spacing:normal}.about-logo{font-size:22px;font-weight:700;color:var(--accent);letter-spacing:-.5px}.about-tagline{font-size:12px;color:var(--text-muted);font-weight:400}.about-dialog-body{overflow-y:auto;padding:16px 16px 8px;display:flex;flex-direction:column;gap:16px}.about-intro{font-size:13px;color:var(--text-muted);line-height:1.6}.about-features-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}@media(max-width:500px){.about-features-grid{grid-template-columns:1fr}}.about-feature-card{display:flex;gap:10px;align-items:flex-start;background:var(--bg-dark);border:1px solid var(--border);border-radius:6px;padding:10px 12px}.about-feature-icon{flex-shrink:0;color:var(--accent);margin-top:1px}.about-feature-content{display:flex;flex-direction:column;gap:3px}.about-feature-title{font-size:12px;font-weight:600;color:var(--text-main)}.about-feature-desc{font-size:11px;color:var(--text-muted);line-height:1.5}.about-footer-links{display:flex;gap:12px;justify-content:center;padding-top:4px;padding-bottom:8px}.about-link{font-size:12px;color:var(--text-muted);text-decoration:none;display:flex;align-items:center;transition:color .15s}.about-link:hover{color:var(--accent)}.device-picker-meta{font-size:11px;color:#888;margin-top:2px}
