*{box-sizing:border-box}html{min-width:320px;min-height:100%;background:#242424}body{margin:0;min-width:320px;min-height:100vh;color:#ffffffe6;background:#242424;font-family:system-ui,Avenir,Helvetica,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}button,input{font:inherit}button{border:1px solid transparent;border-radius:8px;padding:.6em 1.2em;color:inherit;background:#1a1a1a;cursor:pointer;transition:border-color .2s,background .2s,transform .08s}button:hover:not(:disabled){border-color:#646cff}button:active:not(:disabled){transform:translateY(1px)}button:disabled{cursor:not-allowed;opacity:.45}input:disabled{cursor:not-allowed;opacity:.6}.app{min-height:100vh;display:grid;place-items:center;padding:32px}.legacy-panel{width:min(860px,100%);display:flex;flex-direction:column;align-items:stretch;gap:18px;text-align:center}.session{display:flex;align-items:center;gap:12px;color:#555;font-size:.8rem}.session-info{display:flex;flex-wrap:wrap;gap:4px 16px;flex:1}.session p{margin:0}.auth-status{color:#555}.session button{color:#ffffffe6}.session-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px}.client-mode{display:inline-grid;grid-template-columns:repeat(3,minmax(0,1fr));width:min(360px,100%);overflow:hidden;border:1px solid #3c3c3c;border-radius:8px;background:#1f1f1f}.client-mode button{border:0;border-radius:0;background:transparent}.client-mode button+button{border-left:1px solid #3c3c3c}.client-mode button.selected{background:#343864}.login-overlay{position:fixed;inset:0;z-index:100;background:#0009;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center}.login-card{display:grid;justify-items:center;gap:16px;padding:32px 28px;background:#2a2a2a;border:1px solid #444;border-radius:16px;min-width:min(380px,90vw)}.login-card-room{margin:0;color:#b8b8b8;font-size:.9rem}.connecting-card{gap:10px}.connecting-title{margin:0;color:#e7e7e7;font-size:1.15rem;font-weight:700;animation:connecting-blink 1.25s ease-in-out infinite}.connecting-progress{width:min(360px,100%);display:grid;gap:4px;margin-top:4px}.connecting-progress p{margin:0;display:grid;grid-template-columns:4.8rem 1fr 16px;gap:8px;align-items:baseline;color:#8a8a8a;font-size:.72rem;letter-spacing:.01em}.connecting-progress p span:nth-child(2){justify-self:end}.progress-icon{display:block;justify-self:end;transform-origin:center;will-change:transform;line-height:0}.progress-icon.done{color:#6ecf8f}.progress-icon.waiting{color:#707070}.progress-icon.spinning{color:#a5a5a5;animation-name:spin;animation-duration:.9s;animation-timing-function:linear;animation-iteration-count:infinite}.progress-icon>svg{display:block}@keyframes connecting-blink{0%{opacity:1}50%{opacity:.42}to{opacity:1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.connecting-progress p span:first-child{color:#7a7a7a}.login-form{width:min(420px,100%);display:flex;border:1px solid #3c3c3c;border-radius:8px;overflow:hidden;background:#1f1f1f}.login-form input{min-width:0;flex:1;border:0;padding:12px 14px;color:#fff;background:transparent}.login-form button{border-width:0 0 0 1px;border-color:#3c3c3c;border-radius:0;background:#303030}.auto-mode-toggle{display:inline-flex;align-items:center;gap:8px;margin-bottom:8px;color:#ccc;font-size:.85rem;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.auto-mode-toggle input[type=checkbox]{width:16px;height:16px;accent-color:#8a8eff;cursor:pointer;flex-shrink:0}.auto-mode-toggle:has(input:disabled){opacity:.45;cursor:default}.auto-mode-toggle:has(input:disabled) input{cursor:default}.mode-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;align-items:stretch}.mode-card{min-height:48px;display:grid;place-items:center;padding:0 10px;border-color:#3c3c3c;background:#2b2b2b}.mode-card.selected{border-color:#8a8eff;background:#343864}.mode-card span{font-weight:700;letter-spacing:0}.readout{display:flex;align-items:baseline;justify-content:center;gap:14px;margin-top:8px}.readout button{padding:0;border:0;background:transparent;color:#fff;font-size:clamp(4rem,14vw,7.5rem);font-weight:700;line-height:.95;font-variant-numeric:tabular-nums}.readout button:hover{color:#f3f3ff}.readout span{color:#b5b5b5;font-size:1.3rem}.freq-popover{width:min(420px,100%);display:flex;align-self:center;border:1px solid #3c3c3c;border-radius:8px;overflow:hidden;background:#1f1f1f}.freq-popover input{min-width:0;flex:1;border:0;padding:12px 14px;color:#fff;background:transparent;text-align:right;font-variant-numeric:tabular-nums}.freq-popover button{border-width:0 0 0 1px;border-color:#3c3c3c;border-radius:0;background:#303030}.step-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.step-buttons button{height:42px;display:grid;place-items:center}.meter-block{display:grid;gap:8px}.meter-block p,.ptt-label{margin:0}.meter-heading{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px}.tx-meter{display:inline-grid;grid-template-columns:repeat(2,minmax(9rem,1fr));gap:8px;color:#9f9f9f;font-variant-numeric:tabular-nums}.tx-meter-row{min-height:34px;display:grid;grid-template-columns:max-content minmax(5rem,1fr) minmax(3.6rem,max-content);align-items:center;gap:8px;padding:5px 10px;border:1px solid #3c3c3c;border-radius:8px;background:#1f1f1f}.tx-meter strong{color:#b8b8b8;font-size:.72rem;text-transform:uppercase}.tx-meter-track{height:12px;position:relative;overflow:hidden;border-radius:999px;border:1px solid #4a4a4a;background:#121212}.tx-meter-track span{position:absolute;inset:0 auto 0 0;width:0;border-radius:inherit;background:tomato;transition:width 80ms linear}.tx-meter-track.swr span{background:#f0b35b}.tx-meter output{min-width:3.6rem;color:#cfcfcf;font-weight:700;text-align:right;overflow-wrap:anywhere}.tx-meter.active output{color:#ffb0a3}.audio-control{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;color:#d9d9d9}.audio-control button{min-width:128px}.audio-control span{min-width:12rem;color:#b8b8b8;text-align:left}.command-feedback{min-height:1.25rem;margin:-4px 0 0;color:#9fd3b8;font-size:.86rem;text-align:center}.command-feedback.error{color:#ff9f9f}.sys-message{min-height:1.25rem;margin:0;color:#8ab4f8;font-size:.86rem;text-align:center}.sys-message.error{color:#ffb86c}.dev-panel{border:1px dashed #555;border-radius:8px;padding:10px 14px;display:grid;gap:8px;background:#1a1a1a}.dev-panel-label{margin:0;font-size:.75rem;font-weight:700;letter-spacing:.08em;color:#888;text-align:left}.dev-panel-row{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-start}.dev-panel-row button{font-size:.78rem;padding:.3em .8em;border-color:#555;background:#2a2a2a}.audio-meters{display:grid;gap:8px}.audio-meter{display:grid;grid-template-columns:3rem minmax(0,1fr) 4.5rem;align-items:center;gap:10px;color:#d9d9d9;font-variant-numeric:tabular-nums}.audio-meter>span{text-align:right;font-weight:700}.audio-meter output{color:#b8b8b8;text-align:left}.audio-meter-scale{display:grid;gap:4px}.audio-meter-track{height:12px;position:relative;overflow:hidden;border-radius:999px;background:#1f1f1f;border:1px solid #4a4a4a}.audio-meter-track .audio-meter-fill{position:absolute;inset:0 auto 0 0;width:100%;border-radius:inherit;background:#74c69d;transform:scaleX(0);transform-origin:left center;will-change:transform}.audio-meter-track .audio-meter-hold{position:absolute;top:50%;left:0;width:9px;height:9px;border-radius:50%;background:#f8fafc;box-shadow:0 0 0 1px #0c1014cc;transform:translate(-50%,-50%);will-change:left;pointer-events:none}.audio-meter-marks{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));color:#8f8f8f;font-size:.72rem}.audio-meter-marks span{text-align:center}.audio-meter-marks span:first-child{text-align:left}.audio-meter-marks span:last-child{text-align:right}.rx-diagnostics{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:10px;min-height:34px}.rx-diagnostics button{min-width:8.5rem;padding:.45rem .8rem;border:1px solid #5f6b75;background:#23272b;color:#e7ecef;border-radius:6px;font-size:.82rem;font-weight:700}.rx-diagnostics output{min-width:0;color:#aeb7bf;font-size:.8rem}.signal-scale{display:grid;gap:8px}.slider-track{height:14px;position:relative;overflow:hidden;border-radius:999px;background:#1f1f1f;border:1px solid #4a4a4a}.slider-track span{position:absolute;inset:0 auto 0 0;border-radius:inherit;background:#fff}.signal-marks{display:grid;grid-template-columns:repeat(17,minmax(0,1fr));color:#d7d7d7;font-size:.78rem}.slider-control{position:relative;display:grid;align-items:center}.slider-control input{width:100%;-webkit-appearance:none;appearance:none;height:8px;border-radius:999px;background:linear-gradient(to right,var(--fill-color) var(--fill-pct, 0%),#1f1f1f var(--fill-pct, 0%));border:1px solid #4a4a4a;cursor:pointer}.slider-control input::-webkit-slider-thumb{-webkit-appearance:none;width:16px;height:16px;border-radius:50%;background:var(--fill-color);cursor:pointer;border:none}.slider-control input::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--fill-color);cursor:pointer;border:none}.slider-control.power input{--fill-color: tomato}.slider-control.squelch input{--fill-color: #888}.slider-control svg{position:absolute;top:50%;left:calc(var(--thumb-left, 50%) - 10px);pointer-events:none;transform:translateY(-50%)}.slider-control.power svg{color:tomato;left:calc(100% - 18px)}.ptt{width:100%;height:6.7rem;display:grid;place-items:center;border-radius:999px;border-color:#777;background:#707070;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:none}.ptt.active{border-color:#ff9d8c;background:tomato}.ack-dot{width:4px;height:4px;border-radius:50%;background:transparent;margin-left:5px;align-self:center;flex-shrink:0}.ack-dot.flash{animation:ack-flash .8s steps(1,end) forwards}@keyframes ack-flash{0%{background:#4ade80}to{background:transparent}}.status-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;color:#d8d8d8}.status-strip>span{min-height:38px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid #3c3c3c;border-radius:8px;background:#1f1f1f;padding:0 10px;white-space:normal;overflow-wrap:anywhere;min-width:0}@media(max-width:720px){.app{padding:18px}.mode-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.readout button{font-size:clamp(3.3rem,18vw,5.5rem)}.status-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.tx-meter{grid-template-columns:minmax(0,1fr)}.tx-meter-row{grid-template-columns:max-content minmax(4.2rem,1fr) minmax(2.8rem,max-content);gap:6px;padding:5px 8px}.tx-meter output{min-width:2.8rem;font-size:.8rem}.status-strip>span{font-size:.76rem;line-height:1.2;padding:6px 8px}}.audio-processing{display:flex;justify-content:center;gap:8px;margin:4px 0}.audio-processing label{display:flex;align-items:center;gap:5px;padding:4px 12px;border-radius:6px;border:1px solid #666;background:#404040;color:#aaa;font-size:.82rem;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background .15s,color .15s,border-color .15s}.audio-processing label:has(input:checked){border-color:#9fd3b8;background:#243d30;color:#9fd3b8}.audio-processing label:has(input:disabled){opacity:.45;cursor:default}.audio-processing input[type=checkbox]{display:none}
