:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#121417;--panel:#1a1d21;--panel-2:#22262b;--border:#2e333a;--text:#e3e7ea;--muted:#8b949c;--accent:#46dc78;--accent-text:#08130c;--amber:#ffbe28;--blue:#5abeff;--danger:#e0574a;--radius:8px;--mono:ui-monospace, "SF Mono", "Cascadia Mono", "JetBrains Mono", Menlo, Consolas, monospace;--lcd-bezel-top:#282a2e;--lcd-bezel-bottom:#141518;--lcd-bg:#080e0a;--lcd-group:#5a8c6e;--lcd-freq:#8cffaa;--lcd-freq-dim:#465a4e;--lcd-label:#aadcbe;--lcd-db:#78a08c;--meter-closed:#3c6e50}*{box-sizing:border-box}html,body{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,sans-serif}h2{letter-spacing:.02em;margin:0;font-size:13px;font-weight:600}.muted{color:var(--muted);font-weight:400}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}button,a.button,select,input[type=text],input[type=number]{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);border-radius:6px;min-height:34px;padding:6px 12px}input[type=text],input[type=number]{min-width:0;padding:6px 8px}button,a.button{cursor:pointer;white-space:nowrap}a.button{align-items:center;text-decoration:none;display:inline-flex}a.button:hover{background:#2a2f35;border-color:#464d56}.icon-button{padding:4px 10px;font-size:17px;line-height:1}button:hover:not(:disabled){background:#2a2f35;border-color:#464d56}button:disabled,select:disabled,input:disabled{opacity:.45;cursor:default}button:focus-visible,select:focus-visible,input:focus-visible{outline:2px solid var(--blue);outline-offset:1px}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.primary:hover:not(:disabled){background:#5ce88b;border-color:#5ce88b}button.danger:not(:disabled){color:#ff8a7e}button.ghost{background:0 0;border-color:#0000}button.small,a.button.small{min-height:28px;padding:3px 10px;font-size:13px}input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);margin:0}input[type=range]{accent-color:var(--accent);width:100%}label.check{cursor:pointer;align-items:center;gap:6px;display:inline-flex}.app{grid-template-rows:auto 1fr auto auto;height:100dvh;display:grid}.layout{grid-template-columns:var(--left-width,minmax(340px, 480px)) 12px minmax(0, 1fr);gap:12px 0;min-height:0;padding:12px;display:grid}.left{flex-direction:column;gap:12px;min-width:0;min-height:0;display:flex;overflow-y:auto}.splitter{cursor:col-resize;touch-action:none;outline:none;position:relative}.splitter:after{content:"";background:0 0;border-radius:1px;width:2px;transition:background .15s;position:absolute;top:0;bottom:0;left:5px}.splitter:hover:after,.splitter:focus-visible:after,.splitter.dragging:after{background:var(--blue)}@media (max-width:860px){.splitter{display:none}.app{height:auto;min-height:100dvh}.layout{grid-template-columns:minmax(0,1fr);padding:10px 16px}.logs .table-scroll{max-height:320px}.frequencies .table-scroll{max-height:none}.waterfall{padding:0 16px 10px}}.device-bar{background:var(--panel);border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:10px 16px;display:flex}.brand{align-items:center;gap:8px;font-weight:600;display:flex}.about-button{color:var(--muted);background:0 0;border-color:#0000;min-height:0;padding:2px 8px;font-size:12px;font-weight:400}.about-button:hover:not(:disabled){border-color:var(--border);color:var(--text);background:0 0}.dialog.about-dialog{width:min(420px,100vw - 32px)}.about{text-align:center;flex-direction:column;align-items:center;font-size:13px;line-height:1.5;display:flex}.about-logo{aspect-ratio:1;filter:drop-shadow(0 0 18px #aa3ce64d);width:220px;max-width:70%}.about-name{margin:12px 0 2px;font-size:18px}.about-by{color:var(--muted);margin:0 0 10px}.about-call{font-family:var(--mono);color:var(--amber);font-weight:600}.about p:not(.about-by){margin:0 0 10px}.about-credits{color:var(--muted);font-size:12px}.about a{color:var(--blue)}.device-controls{flex-wrap:wrap;align-items:center;gap:8px;min-width:0;display:flex}.device-controls select{max-width:260px}.device-name{font-weight:500}.dot{background:var(--muted);border-radius:50%;flex:none;width:9px;height:9px}.dot.on{background:var(--accent);box-shadow:0 0 6px var(--accent)}.dot.off{background:#b04040}.lcd-bezel{background:linear-gradient(var(--lcd-bezel-top), var(--lcd-bezel-bottom));border-radius:10px;padding:10px;box-shadow:inset 0 1px #ffffff0d}.lcd-screen{background:var(--lcd-bg);font-family:var(--mono);border-radius:6px;padding:10px 14px 14px;box-shadow:inset 0 0 18px #000c}.lcd-top{justify-content:space-between;align-items:center;min-height:22px;display:flex}.lcd-group{color:var(--lcd-group);white-space:pre;font-size:11px}.lcd-pills{align-items:center;gap:6px;display:flex}.lcd-rec{letter-spacing:.06em;color:#ff6b5e;font:700 10px/1 system-ui,sans-serif;animation:1.2s steps(2,start) infinite rec-blink}@keyframes rec-blink{to{visibility:hidden}}@media (prefers-reduced-motion:reduce){.lcd-rec{animation:none}}.lcd-mon{letter-spacing:.06em;color:var(--accent);font:700 10px/1 system-ui,sans-serif}.lcd-pill{letter-spacing:.06em;color:#787878;background:color-mix(in srgb, currentColor 18%, transparent);border:1px solid;border-radius:11px;padding:5px 10px;font:700 10px/1 system-ui,sans-serif}.lcd-pill.mode-scanning{color:#46dc78}.lcd-pill.mode-holding{color:var(--amber)}.lcd-pill.mode-exploring{color:var(--blue)}.lcd-freq{color:var(--lcd-freq);font-variant-numeric:tabular-nums;letter-spacing:.02em;text-shadow:0 0 10px #8cffaa59;margin-top:4px;font-size:clamp(30px,9vw,40px);font-weight:700}.lcd-tune{vertical-align:middle;gap:6px;margin-left:12px;display:inline-flex}.lcd-tune button{-webkit-user-select:none;user-select:none;touch-action:none;color:var(--lcd-freq);border:1px solid var(--lcd-freq-dim);cursor:pointer;background:0 0;border-radius:4px;padding:4px 10px;font:700 18px/1 system-ui,sans-serif}.lcd-tune button:hover{border-color:var(--lcd-freq)}.lcd-freq.dim{color:var(--lcd-freq-dim);text-shadow:none}.lcd-unit{margin-left:8px;font-size:.42em;font-weight:500}.lcd-label{color:var(--lcd-label);white-space:nowrap;text-overflow:ellipsis;min-height:21px;font:14px/1.5 system-ui,sans-serif;overflow:hidden}.lcd-mod{color:var(--lcd-db)}.lcd-db{color:var(--lcd-db);justify-content:space-between;gap:12px;min-height:15px;margin-top:4px;font-size:10px;display:flex}.lcd-also{letter-spacing:.04em;color:#ff6b5e;white-space:nowrap;text-overflow:ellipsis;min-width:0;font:700 10px/1.5 system-ui,sans-serif;overflow:hidden}.lcd-also-dot{animation:1.2s steps(2,start) infinite rec-blink}@media (prefers-reduced-motion:reduce){.lcd-also-dot{animation:none}}.lcd-meter{background:#00000080;border-radius:4px;height:14px;margin-top:4px;overflow:hidden}.lcd-meter-fill{background:var(--meter-closed);border-radius:4px;height:100%;transition:width 60ms linear}.lcd-meter-fill.open{background:linear-gradient(90deg,#46dc78 0%,#e6d23c 75%,#e6463c 100%)}.controls{flex-direction:column;gap:8px;display:flex}.control-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.audio-toggle.on{border-color:var(--accent);color:var(--accent)}.waiting{color:var(--amber);margin:0;font-size:13px}.monitoring{color:var(--accent);margin:0;font-size:13px}.replay-button:not(:disabled){border-color:var(--blue);color:var(--blue)}.record-button{font-variant-numeric:tabular-nums;margin-left:auto}.record-button:not(:disabled){color:#ff8a7e}.record-button.on:not(:disabled){color:#fff;background:#c0392b;border-color:#c0392b;font-weight:600}.clip-kept{letter-spacing:.06em;color:#ff6b5e;font:700 10px/1 system-ui,sans-serif}.replay-player{background:var(--panel);border:1px solid var(--blue);border-radius:var(--radius);flex-direction:column;gap:6px;padding:8px 12px 10px;display:flex}.replay-head{justify-content:space-between;align-items:center;gap:8px;min-width:0;font-size:13px;display:flex}.replay-head strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.replay-player audio{width:100%;height:36px}.replay-error{color:#ff8a7e;margin:0;font-size:13px}.volume{flex:1;align-items:center;gap:8px;min-width:140px;display:flex}.signal-chart{background:var(--lcd-bg);border:1px solid var(--border);border-radius:var(--radius);flex:none;width:100%;height:90px;display:block}.waterfall{flex-direction:column;gap:4px;min-width:0;padding:0 12px 10px;display:flex}.waterfall-head{flex-wrap:wrap;align-items:center;gap:12px;font-size:12px;display:flex}.waterfall-head>.muted{flex:1;min-width:0}.waterfall-control{align-items:center;gap:6px;display:inline-flex}.waterfall-control input[type=range]{width:90px}.waterfall-plot{border:1px solid var(--border);border-radius:var(--radius);cursor:crosshair;background:#00000c;height:180px;position:relative;overflow:hidden}.waterfall-canvas{width:100%;height:100%;display:block}.waterfall-marker{pointer-events:none;background:#46dc7814;border-left:1px solid #46dc78e6;border-right:1px solid #46dc78e6;min-width:2px;position:absolute;top:0;bottom:0}.waterfall-listen{background:var(--amber);pointer-events:none;width:2px;margin-left:-1px;position:absolute;top:0;bottom:0}.waterfall-listen-label{font:11px var(--mono);color:#1a1400;background:var(--amber);white-space:nowrap;pointer-events:none;border-radius:4px;margin-left:6px;padding:2px 6px;position:absolute;bottom:4px}.waterfall-listen-label.left{transform:translate(calc(-100% - 12px))}.waterfall-cursor{pointer-events:none;background:#fff9;width:1px;position:absolute;top:0;bottom:0}.waterfall-readout{font:11px var(--mono);color:var(--text);white-space:nowrap;pointer-events:none;background:#000000b3;border-radius:4px;margin-left:6px;padding:2px 6px;position:absolute;top:4px}.waterfall-readout.left{transform:translate(calc(-100% - 12px))}.waterfall-axis{height:16px;font:11px var(--mono);color:var(--muted);position:relative}.waterfall-tick{white-space:nowrap;position:absolute;top:0;transform:translate(-50%)}.waterfall-tick:before{content:"";border-left:1px solid var(--muted);height:3px;position:absolute;top:-4px;left:50%}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-width:0;min-height:0;display:flex}.logs{flex:1;min-height:200px}.tabs{border-bottom:1px solid var(--border);gap:2px;padding:6px 8px 0;display:flex}.tabs button{color:var(--muted);background:0 0;border:none;border-bottom:2px solid #0000;border-radius:0;min-height:32px;padding:4px 12px;font-size:13px;font-weight:600}.tabs button:hover:not(:disabled){color:var(--text);background:0 0}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent)}.count{color:var(--muted);margin-left:4px;font-size:12px;font-weight:400}.panel-subhead{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:6px 12px;font-size:12px;display:flex}.panel-head{border-bottom:1px solid var(--border);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 12px;display:flex}.toolbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.toolbar-gap{width:10px}.table-scroll{flex:1;min-height:0;overflow:auto}table{border-collapse:collapse;width:100%;font-size:13px}th{background:var(--panel);color:var(--muted);text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;z-index:1;padding:7px 12px;font-weight:500;position:sticky;top:0}td{white-space:nowrap;border-bottom:1px solid #ffffff0a;padding:5px 12px}tbody tr:nth-child(2n) td{background:#ffffff04}th.num,td.num{text-align:right}th .sort-header{all:unset;cursor:pointer;color:inherit;align-items:center;gap:4px;display:inline-flex}th .sort-header:hover,th .sort-header.sorted{color:var(--text)}th .sort-header:focus-visible{outline:2px solid var(--accent);outline-offset:2px}th .sort-arrow{min-width:9px;font-size:9px}td.empty{color:var(--muted);text-align:center;white-space:normal;padding:24px 12px}.freq-table tr.disabled td{color:var(--muted)}.freq-table tr.active td{color:var(--amber);background:#ffbe2829}.freq-table tr.background td{background:#ff6b5e14}.row-also-rec{letter-spacing:.06em;color:#ff6b5e;white-space:nowrap;font:700 10px/1 system-ui,sans-serif}.freq-table tr.monitored.disabled td{color:inherit}.row-actions{text-align:right;white-space:nowrap;width:1px;padding-left:4px;padding-right:6px}.row-actions button.small{padding:3px 7px}.row-actions button+button{margin-left:4px}.logs th,.logs td{padding-left:8px;padding-right:8px}.dialog{background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:10px;width:min(460px,100vw - 32px);padding:0;box-shadow:0 20px 60px #0009}.dialog.wide{width:min(760px,100vw - 32px)}.dialog.frequency-dialog{width:min(600px,100vw - 32px)}.dialog.frequency-dialog .dialog-body{min-height:min(340px,100dvh - 200px)}.dialog form{flex-direction:column;max-height:calc(100dvh - 48px);display:flex}.dialog-body{flex:auto;min-height:0;margin:-6px;padding:6px;overflow-y:auto}.settings-form .form-grid{grid-template-columns:180px minmax(0,1fr)}.settings-tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.settings-tab{appearance:none;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:8px 14px;font-size:14px}.settings-tab:hover{color:var(--text)}.settings-tab.active{color:var(--text);border-bottom-color:var(--accent)}.settings-form h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 0 10px;font-size:12px}.settings-form h3:first-child{margin-top:0}.setting-field{flex-wrap:wrap;align-items:center;gap:4px 8px;min-width:0;display:flex}.setting-field input[type=number]{width:110px}.setting-hint{overflow-wrap:anywhere;min-width:0;color:var(--muted);flex-basis:100%;font-size:12px}.form-error{color:#ff8a7e;margin:14px 0 0;font-size:13px}@media (max-width:520px){.form-grid,.settings-form .form-grid{grid-template-columns:1fr;gap:4px}.form-grid>span:empty{display:none}.form-grid>label,.form-grid>span{margin-top:8px}}.dialog::backdrop{background:#0000008c}.dialog form{padding:18px 20px}.dialog h2{margin-bottom:14px;font-size:16px}.form-grid{grid-template-columns:auto 1fr;align-items:center;gap:10px 14px;display:grid}.squelch-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.squelch-row input[type=number]{width:90px}.hint{color:var(--muted);margin:12px 0 0;font-size:13px}.dialog-body>.hint:first-child{margin-top:0;margin-bottom:14px}.dialog-actions{border-top:1px solid var(--border);flex:none;justify-content:flex-end;gap:8px;margin-top:16px;padding-top:14px;display:flex}.status-bar{color:var(--muted);background:var(--panel);border-top:1px solid var(--border);min-height:28px;padding:6px 16px;font-size:12px}.status-bar.error{color:#ff8a7e}tr.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.settings-form textarea,.settings-form input.wide-input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);resize:vertical;border-radius:6px;width:100%;padding:6px 8px}.settings-form textarea:focus-visible{outline:2px solid var(--blue);outline-offset:1px}.dialog-extra-actions{align-items:center;gap:8px;margin-right:auto;display:flex}.settings-io-note{font-size:12px}.transcript-meta{color:var(--muted);margin-bottom:12px;font-size:13px}.transcript-text{background:var(--panel-2);border:1px solid var(--border);white-space:pre-wrap;-webkit-user-select:text;user-select:text;border-radius:6px;max-height:50dvh;padding:12px 14px;line-height:1.5;overflow-y:auto}.transcript-text.empty{color:var(--muted);font-style:italic}tbody tr.area-match td,tbody tr.area-match:nth-child(2n) td{background:#123d22}tbody tr.selected td,tbody tr.selected:nth-child(2n) td{box-shadow:inset 0 1px var(--blue), inset 0 -1px var(--blue);background:#5aaaff29}tbody tr.selected.area-match td{background:#123d22}tbody tr.selected td:first-child{box-shadow:inset 3px 0 var(--blue), inset 0 1px var(--blue), inset 0 -1px var(--blue)}tbody tr.selected td:last-child{box-shadow:inset -1px 0 var(--blue), inset 0 1px var(--blue), inset 0 -1px var(--blue)}tbody tr.selected+tr.selected td{box-shadow:inset 0 -1px var(--blue)}tbody tr.selected+tr.selected td:first-child{box-shadow:inset 3px 0 var(--blue), inset 0 -1px var(--blue)}tbody tr.selected+tr.selected td:last-child{box-shadow:inset -1px 0 var(--blue), inset 0 -1px var(--blue)}tbody tr.selected:has(+tr.selected) td{box-shadow:inset 0 1px var(--blue)}tbody tr.selected:has(+tr.selected) td:first-child{box-shadow:inset 3px 0 var(--blue), inset 0 1px var(--blue)}tbody tr.selected:has(+tr.selected) td:last-child{box-shadow:inset -1px 0 var(--blue), inset 0 1px var(--blue)}tbody tr.selected+tr.selected:has(+tr.selected) td{box-shadow:none}tbody tr.selected+tr.selected:has(+tr.selected) td:first-child{box-shadow:inset 3px 0 var(--blue)}tbody tr.selected+tr.selected:has(+tr.selected) td:last-child{box-shadow:inset -1px 0 var(--blue)}.table-scroll:focus-visible{outline:1px solid var(--blue);outline-offset:-1px}.row-actions button.is-playing{color:var(--blue)}.incident-places{border:1px solid var(--border);border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:13px}.incident-places a{color:inherit;text-decoration:underline}.map-picker{display:inline-flex;position:relative}.map-menu{z-index:10;background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-width:260px;max-width:min(420px,80vw);padding:4px;display:flex;position:absolute;bottom:calc(100% + 6px);left:0;box-shadow:0 8px 24px #00000073}.map-menu a{color:var(--text);border-radius:6px;flex-direction:column;gap:2px;padding:8px 10px;font-size:13px;text-decoration:none;display:flex}.map-menu a:hover,.map-menu a:focus-visible{background:var(--border);outline:none}.map-menu-reason{color:var(--muted);font-size:12px}.incident-reason{opacity:.75}.area-matches{background:#123d22;border:1px solid #1f6b3a;border-radius:6px;margin-bottom:12px;padding:8px 12px;font-size:13px}label.file-button{cursor:pointer;border:1px solid var(--border);background:var(--panel-2);border-radius:6px;padding:3px 10px;font-size:12px}.row-buttons{gap:6px;display:flex}.explore-notes{white-space:normal;flex-wrap:wrap;align-items:center;gap:6px;display:flex}.badge{border:1px solid var(--border);border-radius:4px;padding:1px 6px;font-size:11px}.badge.ok{color:#8fe3a8;background:#123d22;border-color:#1f6b3a}.badge.warn{color:#f3c76b;background:#3a2f12;border-color:#6b551f}.live-dot{vertical-align:middle;background:#5ce08c;border-radius:50%;width:7px;height:7px;margin-left:6px;animation:1.4s ease-in-out infinite live-pulse;display:inline-block}@keyframes live-pulse{50%{opacity:.3}}@media (prefers-reduced-motion:reduce){.live-dot{animation:none}}.hold-buttons button.on{border-color:var(--amber);color:var(--amber)}.panel-subhead .check{margin-left:auto}.app.listener .admin-only{display:none!important}.signed-in{align-items:center;gap:4px;font-size:13px;display:inline-flex}.sign-in-page{background:var(--bg);justify-content:center;align-items:center;min-height:100vh;padding:16px;display:flex}.sign-in{background:var(--panel);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:12px;width:100%;max-width:340px;padding:24px;display:flex}.sign-in img{filter:drop-shadow(0 0 18px #aa3ce64d);align-self:center}.sign-in h1{text-align:center;margin:0 0 4px;font-size:20px}.sign-in label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.sign-in label.sign-in-remember{color:var(--text);flex-direction:row;align-items:center;gap:8px}.sign-in input:not([type=checkbox]){font-size:16px}.sign-in .sign-in-error{color:var(--danger);margin:0;font-size:13px}.sign-in p.muted{text-align:center;margin:0;font-size:12px}.users-table{border-collapse:collapse;width:100%;margin-bottom:8px}.users-table th,.users-table td{text-align:left;border-bottom:1px solid var(--border);padding:5px 6px}.users-table td.row-actions input{width:140px;margin-right:4px}.users-add{flex-wrap:wrap;gap:6px;display:flex}.users-add input{flex:140px;min-width:0}
