:root{color-scheme:dark;--bg:#0a0a0a;--panel:#151716;--panel-2:#202020;--plot:#000;--text:#f1f1f1;--muted:#a9a9a9;--line:#3b3b3b;--accent:#189df2;--accent-hover:#3ab6ff;--accent-active:#83d7ff;--cursor:#ff241d;--left-width:254px;--bottom-height:calc((100vh - var(--topbar-height) - 26px - 6px) / 3);--if-width:50%;--rail-width:58px;--topbar-height:64px;--chrome:#1c1c1c;--splitter-color:#1c1c1c;--splitter-hover:#3c3c3c;--slider-hover:var(--accent-hover);--dock-control-margin:10px}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--bg);color:var(--text);font:12px "Segoe UI",Arial,sans-serif;overflow:hidden}button,input,select{font:inherit}.app{width:100vw;height:100vh;display:grid;grid-template-columns:var(--left-width) 6px minmax(0,1fr) var(--rail-width);grid-template-rows:var(--topbar-height) minmax(0,1fr) 6px var(--bottom-height) 26px;background:var(--chrome)}.topbar{grid-column:1 / -1;min-width:0;display:grid;height:var(--topbar-height);grid-template-columns:minmax(190px,270px) minmax(320px,1fr) minmax(190px,270px);align-items:center;align-content:center;gap:12px;padding:6px 12px;background:var(--chrome);border-bottom:0}.source-strip{min-width:0;display:grid;align-items:center;gap:10px}.source-strip{grid-template-columns:38px minmax(0,1fr)}.uri-field{min-width:0;display:grid;align-items:center;gap:5px}.uri-field{grid-template-columns:auto minmax(0,1fr)}.uri-field span,.status-meta{color:var(--muted)}.dial{min-width:0;width:max-content;justify-self:center;display:grid;justify-items:center;align-items:center}.dial input{width:calc(13ch + 16px);height:52px;color:#d7d7d7;background:transparent;border:0;box-shadow:none;padding:0 8px;text-align:center;font-size:44px;font-variant-numeric:tabular-nums;font-weight:300;line-height:1;letter-spacing:0}.dial input:hover,.dial input:focus{background:rgba(255,255,255,0.04);border-radius:0;outline:none;box-shadow:0 0 0 1px rgba(89,201,255,0.35)}.airspy-logo{width:80px;height:42px;object-fit:contain;justify-self:end}.status{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.left-rail{grid-column:1;grid-row:2 / 5;min-width:180px;min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);align-content:start;gap:0;padding:0;border-left:6px solid var(--splitter-color);overflow:hidden}.dock-card,.panel{min-width:0;min-height:0;background:var(--panel);border:0;overflow:hidden}.dock-card{display:flex;flex-direction:column;gap:10px;padding:8px}.dock-title,.panel-header{min-height:24px;color:#f4f4f4;border-bottom:2px solid var(--splitter-color)}.dock-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:0 6px;background:#161616;color:#f2f2f2}.radio-card,.agc-card{gap:0;padding:0;background:#161616}.agc-card{border-top:6px solid var(--splitter-color)}.radio-card .mode-grid,.radio-card .field,.radio-card .check-row,.agc-card .field,.agc-card .switch-field{margin:var(--dock-control-margin) var(--dock-control-margin) 0}.radio-card .check-row,.radio-card .field:last-child,.agc-card .field:last-child,.agc-card .switch-field:last-child{margin-bottom:10px}.radio-card .field,.agc-card .field{grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px}.radio-card .field>span:first-child,.agc-card .field>span:first-child{justify-content:flex-start;min-width:0;white-space:nowrap}.radio-card .field input,.agc-card .field input{height:27px}.radio-card .field .number-edit,.agc-card .field .number-edit{min-width:0}.radio-card .field.is-disabled>span:first-child,.agc-card .field.is-disabled>span:first-child{color:#777}.radio-card .field.is-disabled input,.agc-card .field.is-disabled input{color:#aaa;background:#262626;border-color:#3a3a3a}.field.is-disabled .number-step{color:#666;cursor:default;pointer-events:none}.agc-card .switch-field{display:grid;grid-template-columns:92px minmax(0,1fr);align-items:center;gap:8px}.agc-card .switch-field span{min-width:0;white-space:nowrap}.agc-card .toggle-button{position:relative;width:54px;height:28px;justify-self:start;padding:0;border:0;border-radius:999px;background:#353535;box-shadow:inset 0 0 0 1px rgba(255,255,255,0.08);transition:background-color 120ms ease}.agc-card .toggle-button::before{content:"";position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#f7f7f7;box-shadow:0 1px 2px rgba(0,0,0,0.35);transition:transform 120ms ease}.agc-card .toggle-button[aria-pressed="true"]{background:var(--accent)}.agc-card .toggle-button[aria-pressed="true"]::before{transform:translateX(26px)}.agc-card .toggle-button:disabled{background:#2a2a2a;opacity:1;cursor:default}.agc-card .toggle-button:disabled::before{background:#8a8a8a;box-shadow:none}.agc-card .switch-field:has(.toggle-button:disabled) span{color:#777}.mode-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px 12px}.mode-grid label,.check-row{display:flex;align-items:center;gap:5px;white-space:nowrap}.field{display:grid;grid-template-columns:minmax(0,1fr);gap:5px}.field>span:first-child{display:flex;align-items:center;justify-content:space-between;gap:10px}input[type="text"],input[type="number"],input:not([type]),select{min-width:0;width:100%;color:var(--text);background:#2d2f31;border:1px solid #4e4e4e;border-radius:0;padding:4px 6px;outline:1px solid transparent;outline-offset:-1px}input[type="text"]:hover,input[type="number"]:hover,input:not([type]):hover,select:hover,input[type="text"]:focus,input[type="number"]:focus,input:not([type]):focus,select:focus{border-color:#8f8f8f;outline:1px solid rgba(89,201,255,0.35);box-shadow:inset 0 0 0 1px rgba(255,255,255,0.08)}input[type="number"]{text-align:right}input[type="number"]::-webkit-outer-spin-button,input[type="number"]::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}input[type="number"]{-moz-appearance:textfield}.field .number-edit{position:relative;display:block;width:100%;min-width:0}.number-edit input{width:100%;text-align:right;padding-top:3px;padding-bottom:5px;padding-right:20px}.field .number-buttons{position:absolute;top:1px;right:3px;bottom:1px;display:grid;grid-template-rows:1fr 1fr;width:10px;pointer-events:none}.number-step{width:100%;height:100%;min-width:0;min-height:0;display:grid;place-items:center;padding:0;color:#8b8b8b;background:transparent;border:0;border-radius:0;line-height:1;cursor:pointer;pointer-events:auto}.number-step:hover:enabled{color:var(--accent);border-color:transparent}.number-step:active:enabled{color:var(--accent-active)}.number-step::before{content:"";width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent}.number-step-up::before{border-bottom:5px solid currentColor;transform:translate(-2px,0)}.number-step-down::before{border-top:5px solid currentColor;transform:translate(-2px,0)}.dial input,.dial input:focus{width:calc(13ch + 16px);color:#d7d7d7;background:transparent;border:0;box-shadow:none;padding:0 8px}.dial input:hover,.dial input:focus{background:rgba(255,255,255,0.04);border-radius:0;box-shadow:0 0 0 1px rgba(89,201,255,0.35)}.topbar input[type="number"],.topbar input:not([type]),.topbar select{padding:3px 6px}.uri-field input:hover,.uri-field input:focus{border-color:#8f8f8f;outline-color:rgba(89,201,255,0.35);box-shadow:none}#filterBandwidthInput:hover,#filterBandwidthInput:focus,.span-field.is-editing select:hover,.span-field.is-editing select:focus{border-color:#8f8f8f;outline-color:rgba(89,201,255,0.35);box-shadow:none}.topbar .dial input,.topbar .dial input:focus{width:calc(13ch + 16px);padding:0 8px;background:transparent;border:0;box-shadow:none}.topbar .dial input:hover,.topbar .dial input:focus{background:rgba(255,255,255,0.04);border-radius:0;box-shadow:0 0 0 1px rgba(89,201,255,0.35)}input:disabled,select:disabled{opacity:0.55}.button-row{display:grid;grid-template-columns:1fr 1fr;gap:6px}button{color:var(--text);background:#2b2d2f;border:1px solid #50565a;border-radius:0;padding:5px 8px;cursor:pointer}button:hover:enabled{border-color:#8c8c8c}button:disabled{opacity:0.45;cursor:default}.transport-button{width:34px;height:34px;justify-self:start;padding:0;border-color:transparent;border-radius:0;background:#2b2d2f url("assets/sdr_start_dark.png") center / 22px 22px no-repeat}.transport-button:hover:enabled,.transport-button:focus-visible{border-color:#8c8c8c}.transport-button.is-running{background-image:url("assets/sdr_stop_dark.png")}.transport-button.is-connecting{opacity:0.75}.device-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 12px;margin:0}.device-grid div{min-width:0}.device-grid dt{color:var(--muted)}.device-grid dd{min-width:0;margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}.splitter{background:var(--splitter-color);z-index:5}.splitter:hover,.splitter.is-dragging{background:var(--splitter-hover)}.splitter-vertical{cursor:col-resize}.splitter-horizontal{cursor:row-resize}#leftSplitter{grid-column:2;grid-row:2 / 5}.main-pane{grid-column:3;grid-row:2;display:grid;--panel-spectrum-height:50%;grid-template-rows:24px minmax(120px,var(--panel-spectrum-height)) 4px minmax(0,1fr)}.display-rail{grid-column:4;grid-row:2 / 5;min-height:0;display:grid;grid-template-rows:repeat(4,minmax(0,1fr));align-content:stretch;align-items:stretch;justify-items:center;padding:0;background:var(--chrome);border-left:0}.vertical-control{--track:#c9c9c9;--track-thickness:2px;--vertical-track-length:clamp(80px,calc((100vh - var(--topbar-height) - 26px) / 4 - 64px),260px);width:100%;min-height:0;position:relative;display:grid;grid-template-rows:24px minmax(0,1fr);justify-items:center;align-items:center;gap:0;padding:0;color:#ededed;text-align:center}.vertical-control::before{content:"";position:absolute;left:50%;top:calc(24px + (100% - 24px) * 0.5);width:var(--track-thickness);height:var(--vertical-track-length);background:var(--track);transform:translate(-50%,-50%);pointer-events:none}.vertical-control:hover::before{background:#e7e7e7}.vertical-control span{height:24px;display:flex;align-items:center;justify-content:center}.vertical-control input[type="range"]{position:absolute;left:50%;top:calc(24px + (100% - 24px) * 0.5);width:var(--vertical-track-length);height:16px;transform:translate(-50%,-50%) rotate(-90deg);transform-origin:center;z-index:1}.vertical-control output{color:#fff;min-height:16px}.vertical-control.no-value{grid-template-rows:24px minmax(0,1fr)}.vertical-control.no-value output{display:none}#bottomSplitter{grid-column:3;grid-row:3}.bottom-dock{grid-column:3;grid-row:4;min-width:0;min-height:0;display:grid;grid-template-columns:minmax(220px,var(--if-width)) 6px minmax(220px,1fr)}.if-pane,.audio-pane{display:grid;--panel-spectrum-height:54%;grid-template-rows:24px minmax(76px,var(--panel-spectrum-height)) 4px minmax(0,1fr)}.panel-splitter{min-height:4px;background:var(--splitter-color);border:0;cursor:row-resize;z-index:4}.panel-splitter:hover,.panel-splitter.is-dragging{background:var(--splitter-hover)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 6px;background:#161616;color:var(--muted)}.panel-header span:first-child{color:#f2f2f2}.span-field{position:relative;min-width:0;display:grid;grid-template-columns:minmax(76px,118px);align-items:center;color:var(--muted)}.span-display{min-width:0;color:#f2f2f2;background:transparent;border:0;border-radius:4px;padding:1px 0;text-align:right}.span-display:hover:enabled{color:var(--accent);border-color:transparent}.span-field select{position:absolute;inset:0;opacity:0;pointer-events:none}.span-field.is-editing .span-display{display:none}.span-field.is-editing select{position:static;height:22px;padding:1px 6px;opacity:1;pointer-events:auto}canvas{width:100%;height:100%;display:block;background:var(--plot)}.statusbar{grid-column:1 / -1;grid-row:5;min-width:0;display:grid;grid-template-columns:minmax(120px,1fr) minmax(460px,1.2fr) minmax(520px,auto);align-items:center;gap:14px;padding:0 8px;background:var(--chrome);border-top:0}.status-meta{min-width:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;justify-items:center;color:var(--muted)}.status-meta span,.status-meta strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-meta strong{color:var(--text);font-weight:600}.status-controls{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(190px,250px));align-items:center;justify-content:end;gap:16px}.status-slider{--track:#c9c9c9;--track-thickness:2px;position:relative;min-width:0;display:grid;grid-template-columns:auto minmax(70px,1fr) auto;align-items:center;column-gap:10px;color:var(--muted)}.status-slider::before{content:"";grid-column:2;grid-row:1;width:100%;height:var(--track-thickness);align-self:center;justify-self:stretch;background:var(--track);pointer-events:none}.status-slider:hover::before{background:#e7e7e7}.status-slider.is-disabled{color:#777}.status-slider.is-disabled::before,.status-slider.is-disabled:hover::before{background:#666}.status-slider span{grid-column:1;grid-row:1;margin-right:0}.status-slider input[type="range"]{grid-column:2;grid-row:1;z-index:1}.status-slider output{grid-column:3;grid-row:1;min-width:max-content;margin-left:0;color:var(--text);text-align:left;white-space:nowrap;justify-self:start}.status-slider.is-disabled output{color:#aaa}.status-gain{grid-template-columns:auto minmax(70px,1fr) auto}.status-gain output{min-width:max-content}.spectrum,.if-spectrum,.audio-spectrum{cursor:crosshair}.spectrum,.waterfall{touch-action:none}.freq-step-overlay{position:absolute;right:10px;z-index:6;display:none;flex-direction:column;gap:10px;pointer-events:none}.freq-step{width:58px;padding:0;pointer-events:auto;color:transparent;border:1px solid rgba(200,200,200,0.55);border-radius:10px;background:rgba(22,22,22,0.4) center / 26px 26px no-repeat;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.freq-step:active{background-color:rgba(64,64,64,0.55);border-color:rgba(230,230,230,0.7)}.freq-step-up{background-image:url("assets/step_up_dark.png")}.freq-step-down{background-image:url("assets/step_down_dark.png")}input[type="checkbox"]{accent-color:var(--accent)}input[type="radio"]{width:16px;height:16px;margin:0;border:1px solid #6c6c6c;border-radius:50%;background:#202020;appearance:none;-webkit-appearance:none;outline:none;cursor:pointer}input[type="radio"]:hover{border-color:#9b9b9b}input[type="radio"]:checked{border-color:var(--accent);background:radial-gradient(circle at center,var(--accent-active) 0 4px,transparent 4.5px),#202020}input[type="radio"]:checked:hover{border-color:var(--accent-hover)}input[type="range"]{--thumb:var(--accent);--track:#c9c9c9;--track-thickness:2px;width:100%;height:16px;margin:0;appearance:none;-webkit-appearance:none;border:0;background:transparent;outline:none;cursor:pointer}input[type="range"]:hover{--thumb:var(--accent-hover);--track:#e7e7e7}input[type="range"]:active{--thumb:var(--accent-active)}input[type="range"]:disabled{--thumb:#8a8a8a;opacity:1;cursor:default}input[type="range"]::-webkit-slider-runnable-track{height:var(--track-thickness);border-radius:0;border:0;background:transparent;box-shadow:none;-webkit-appearance:none}input[type="range"]::-webkit-slider-thumb{width:16px;height:16px;margin-top:-7px;border:0;border-radius:50%;background:var(--thumb);box-shadow:none;-webkit-appearance:none}input[type="range"]::-moz-range-track{height:var(--track-thickness);border-radius:0;border:0;background:transparent;box-shadow:none}input[type="range"]::-moz-range-progress{height:var(--track-thickness);border-radius:0;border:0;background:transparent;box-shadow:none}input[type="range"]::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:var(--thumb);box-shadow:none}@media (max-width:920px){body{overflow:auto}.app{min-height:100vh;height:auto;grid-template-columns:1fr;grid-template-rows:auto auto 520px 120px 260px auto}.topbar,.left-rail,.main-pane,.bottom-dock,.display-rail,.statusbar{grid-column:1;grid-row:auto}.left-rail{padding:8px;grid-template-rows:auto auto}.source-strip{grid-template-columns:1fr}.display-rail{grid-template-columns:repeat(4,minmax(0,1fr));grid-template-rows:120px}.statusbar{grid-template-columns:1fr;min-height:58px}#leftSplitter,#bottomSplitter,#ifAudioSplitter{display:none}.bottom-dock{grid-template-columns:1fr;grid-template-rows:1fr 1fr}}@media (max-width:640px){html,body{height:100%}body{overflow:hidden}.app{width:100vw;height:100dvh;min-height:0;overflow:hidden;gap:4px;grid-template-columns:1fr;grid-template-rows:auto auto auto minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr)}.topbar{grid-column:1;grid-row:1}.left-rail{grid-column:1;grid-row:2}.display-rail{grid-column:1;grid-row:3}.main-pane{grid-column:1;grid-row:4;position:relative}.bottom-dock{grid-column:1;grid-row:5 / 7}.statusbar{display:none}#leftSplitter,#bottomSplitter,#ifAudioSplitter,.panel-splitter{display:none}.topbar{height:auto;gap:8px;padding:6px 8px;background:#161616;grid-template-columns:minmax(0,1fr) auto}.source-strip{grid-template-columns:34px minmax(0,1fr);gap:8px}.airspy-logo{width:72px;height:auto;align-self:end;margin-bottom:4px}.left-rail{padding:0;border-left:0;overflow:visible;grid-template-columns:1fr 1fr;grid-template-rows:auto}.agc-card{border-top:0;border-left:4px solid var(--splitter-color)}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr));column-gap:6px;font-size:11px}.mode-grid label{gap:4px;min-width:0}.mode-grid input[type="radio"]{flex:0 0 16px}.radio-card .field{grid-template-columns:68px minmax(0,1fr);gap:6px}.agc-card .field{grid-template-columns:minmax(0,1fr) 56px;gap:6px}.agc-card .switch-field{grid-template-columns:minmax(0,1fr) auto;gap:6px}.radio-card .dial{width:auto;margin:var(--dock-control-margin) var(--dock-control-margin) 0}.radio-card .dial input{width:100%;height:44px;font-size:clamp(26px,8vw,40px)}.display-rail{padding:6px var(--dock-control-margin);background:#161616;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;column-gap:16px;row-gap:6px}.vertical-control,.vertical-control.no-value{min-height:0;grid-template-columns:52px minmax(0,1fr);grid-template-rows:auto;column-gap:8px;row-gap:0;justify-items:stretch}.vertical-control::before{display:none}.vertical-control span{grid-column:1;grid-row:1;height:auto;justify-content:flex-start;text-align:left}.vertical-control input[type="range"]{grid-column:2;grid-row:1;position:static;transform:none;width:100%;height:22px}.vertical-control input[type="range"]::-webkit-slider-runnable-track{background:var(--track)}.vertical-control input[type="range"]::-moz-range-track{background:var(--track)}.main-pane{grid-template-rows:24px minmax(0,55%) minmax(0,1fr)}.bottom-dock{grid-template-columns:1fr;grid-template-rows:1fr 1fr;row-gap:4px}.if-pane,.audio-pane{grid-template-rows:24px minmax(0,55%) minmax(0,1fr)}.freq-step-overlay{display:flex;top:24px;bottom:0}.freq-step{flex:1 1 0}}