:root,[data-theme=dark]{color-scheme:dark;--bg0: #0a0f0d;--bg1: #121a16;--bg2: #1a2620;--line: rgba(180, 210, 190, .14);--text: #e7f0ea;--muted: #8aa396;--accent: #d4ff4a;--accent-dim: #9bbb2e;--accent-ink: #111;--danger: #ff6b4a;--ok: #3dff9a;--talk: #ffb020;--glow-a: rgba(212, 255, 74, .08);--glow-b: rgba(61, 255, 154, .05);--ptt-glow: rgba(212, 255, 74, .16);--font-display: "Syne", system-ui, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace;--radius: 4px}[data-theme=light]{color-scheme:light;--bg0: #eef2ef;--bg1: #e2e8e3;--bg2: #f7faf7;--line: rgba(18, 36, 28, .12);--text: #142019;--muted: #5a6f62;--accent: #6d8f00;--accent-dim: #557000;--accent-ink: #f4ffe0;--danger: #c23b22;--ok: #0b8a52;--talk: #b86a00;--glow-a: rgba(109, 143, 0, .1);--glow-b: rgba(11, 138, 82, .06);--ptt-glow: rgba(109, 143, 0, .14)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;min-height:100%;background:radial-gradient(1200px 600px at 10% -10%,var(--glow-a),transparent 55%),radial-gradient(900px 500px at 100% 0%,var(--glow-b),transparent 50%),linear-gradient(180deg,var(--bg1),var(--bg0));color:var(--text);font-family:var(--font-mono);font-size:14px}body,#app{min-height:100dvh}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.shell{max-width:920px;margin:0 auto;padding:28px 20px 48px}.brand{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:28px;border-bottom:1px solid var(--line);padding-bottom:16px}.brand h1{margin:0;font-family:var(--font-display);font-weight:800;font-size:clamp(1.6rem,4vw,2.2rem);letter-spacing:-.03em;line-height:1.05}.brand h1 span{color:var(--accent)}.brand .meta{color:var(--muted);font-size:12px;text-align:right;display:grid;gap:8px;justify-items:end}.theme-toggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.theme-toggle button{border:0;background:transparent;padding:6px 10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.06em}.theme-toggle button.active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.panel{background:color-mix(in srgb,var(--bg2) 88%,transparent);border:1px solid var(--line);border-radius:var(--radius);padding:20px;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:box-shadow .25s ease,border-color .25s ease}.panel.tally-preview{border-color:color-mix(in srgb,#3dff9a 55%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,#3dff9a 35%,transparent),0 0 22px color-mix(in srgb,#3dff9a 28%,transparent);animation:tallyPulsePreview 1.6s ease-in-out infinite}.panel.tally-program{border-color:color-mix(in srgb,#ff4d6d 60%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,#ff4d6d 40%,transparent),0 0 26px color-mix(in srgb,#ff4d6d 32%,transparent);animation:tallyPulseProgram 1.2s ease-in-out infinite}.tally-label{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;margin:0 0 10px;padding:3px 8px;border-radius:3px;border:1px solid var(--line)}.tally-label-preview{color:#3dff9a;border-color:color-mix(in srgb,#3dff9a 45%,var(--line))}.tally-label-program{color:#ff4d6d;border-color:color-mix(in srgb,#ff4d6d 45%,var(--line))}@keyframes tallyPulsePreview{0%,to{box-shadow:0 0 0 1px color-mix(in srgb,#3dff9a 30%,transparent),0 0 16px color-mix(in srgb,#3dff9a 20%,transparent)}50%{box-shadow:0 0 0 1px color-mix(in srgb,#3dff9a 50%,transparent),0 0 28px color-mix(in srgb,#3dff9a 38%,transparent)}}@keyframes tallyPulseProgram{0%,to{box-shadow:0 0 0 1px color-mix(in srgb,#ff4d6d 35%,transparent),0 0 18px color-mix(in srgb,#ff4d6d 24%,transparent)}50%{box-shadow:0 0 0 1px color-mix(in srgb,#ff4d6d 55%,transparent),0 0 32px color-mix(in srgb,#ff4d6d 42%,transparent)}}.panel+.panel{margin-top:16px}.panel h2{margin:0 0 14px;font-family:var(--font-display);font-size:1.05rem;font-weight:700;letter-spacing:-.02em}.field{display:grid;gap:6px;margin-bottom:14px}.field label{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.08em}.field input,.field select{width:100%;background:var(--bg0);border:1px solid var(--line);border-radius:var(--radius);padding:10px 12px;outline:none}.field input:focus,.field select:focus{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}.row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.btn{border:1px solid var(--line);background:var(--bg0);border-radius:var(--radius);padding:10px 14px;transition:border-color .15s,background .15s,color .15s}.btn:hover{border-color:color-mix(in srgb,var(--accent) 40%,var(--line))}.btn-primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.btn-primary:hover{filter:brightness(1.06)}.btn-ghost{background:transparent}.btn:disabled{opacity:.45;cursor:not-allowed}.status{display:inline-flex;align-items:center;gap:8px;color:var(--muted);font-size:12px}.status .dot{width:8px;height:8px;border-radius:50%;background:var(--muted)}.status.ok .dot{background:var(--ok);box-shadow:0 0 10px color-mix(in srgb,var(--ok) 60%,transparent)}.status.warn .dot{background:var(--talk)}.status.err .dot{background:var(--danger)}.ptt-wrap{display:grid;place-items:center;padding:28px 12px 12px;gap:14px}.ptt{width:min(240px,70vw);height:min(240px,70vw);border-radius:50%;border:2px solid color-mix(in srgb,var(--accent) 35%,var(--line));background:radial-gradient(circle at 50% 40%,var(--ptt-glow),transparent 55%),var(--bg0);font-family:var(--font-display);font-weight:800;font-size:1.35rem;letter-spacing:.04em;color:var(--text);-webkit-user-select:none;user-select:none;touch-action:none;transition:transform .12s ease,border-color .12s,box-shadow .12s,background .12s}.ptt:active,.ptt.hot{transform:scale(.97);border-color:var(--talk);box-shadow:0 0 0 6px #ffb02026,0 0 40px #ffb02033;background:radial-gradient(circle at 50% 40%,rgba(255,176,32,.28),transparent 55%),var(--bg0);color:var(--talk)}.ptt-hint{color:var(--muted);font-size:12px;text-align:center}.mode-toggle{display:inline-flex;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}.mode-toggle button{border:0;background:transparent;padding:8px 12px;color:var(--muted)}.mode-toggle button.active{background:color-mix(in srgb,var(--accent) 18%,transparent);color:var(--accent)}.peers{display:grid;gap:10px}.peer{display:grid;grid-template-columns:1fr auto;gap:10px 16px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:var(--radius);background:color-mix(in srgb,var(--bg0) 70%,transparent)}.peer-head{display:flex;align-items:center;gap:10px;min-width:0}.peer-name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.badge{font-size:10px;text-transform:uppercase;letter-spacing:.06em;padding:3px 6px;border-radius:2px;border:1px solid var(--line);color:var(--muted)}.badge.live{color:var(--talk);border-color:color-mix(in srgb,var(--talk) 50%,var(--line));animation:pulse 1s ease-in-out infinite}.badge.program{color:#ff5a5a;border-color:color-mix(in srgb,#ff5a5a 55%,var(--line))}@keyframes pulse{50%{opacity:.55}}.peer-controls{display:flex;flex-wrap:wrap;align-items:center;gap:10px;grid-column:1 / -1}.peer-controls input[type=range]{flex:1;min-width:120px;accent-color:var(--accent)}.peer-controls .vol-label{color:var(--muted);font-size:11px;width:42px}.peer-message{grid-column:1 / -1;gap:8px;margin:0}.peer-message input[type=text]{flex:1;min-width:0}.empty{color:var(--muted);padding:8px 0}.error{color:var(--danger);margin-top:10px;font-size:12px}.channel-url{margin-top:10px;word-break:break-all;color:var(--muted);font-size:12px}.channel-url a{color:var(--accent-dim)}.channel-banner{margin-top:16px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--line));border-radius:var(--radius);background:color-mix(in srgb,var(--accent) 12%,var(--bg0));display:grid;gap:8px}.channel-banner.is-channel{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));background:color-mix(in srgb,var(--accent) 12%,var(--bg0))}.channel-banner.is-direct{border-color:color-mix(in srgb,var(--talk) 45%,var(--line));background:color-mix(in srgb,var(--talk) 14%,var(--bg0))}.channel-banner-meta{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.channel-banner-badge{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;padding:3px 7px;border-radius:2px;border:1px solid var(--line)}.channel-banner.is-channel .channel-banner-badge{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,var(--line));background:color-mix(in srgb,var(--accent) 14%,transparent)}.channel-banner.is-direct .channel-banner-badge{color:var(--talk);border-color:color-mix(in srgb,var(--talk) 50%,var(--line));background:color-mix(in srgb,var(--talk) 16%,transparent)}.channel-banner-label{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.08em}.channel-banner-text{font-family:var(--font-display);font-weight:700;font-size:1.05rem;line-height:1.35;word-break:break-word;color:var(--text)}.channel-banner-dismiss{justify-self:start;padding:4px 8px;font-size:11px}.app-footer{margin-top:28px;padding-top:14px;border-top:1px solid var(--line);display:flex;justify-content:flex-end}.alert-sound-row{display:flex;align-items:center;gap:10px}.alert-sound-row .theme-toggle button{padding:10px 16px;min-height:40px;font-size:12px}@media(min-width:640px){.peer{grid-template-columns:1fr auto}.peer-controls{grid-column:auto;justify-content:flex-end}}
