:root{--bg:#0a0e14;--bg2:#0f141d;--panel:#151b26;--panel2:#1b2330;--line:#232c3a;--text:#e7edf5;--muted:#8b97a8;--accent:#3b82f6;--accent2:#60a5fa;--live:#ef4444;--live2:#f87171;--ok:#22c55e;--warn:#f59e0b;--radius:16px;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased;overscroll-behavior:none}body{background:radial-gradient(120% 80% at 50% -10%,#16203094 0,transparent 60%),var(--bg)}.wrap{display:flex;flex-direction:column;min-height:100dvh;max-width:560px;margin:0 auto;padding:calc(var(--safe-t) + 12px) 16px calc(var(--safe-b) + 16px);gap:16px}.top{gap:12px}.brand,.top{display:flex;align-items:center}.brand{gap:8px;font-weight:700;letter-spacing:.2px;font-size:15px}.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--muted);box-shadow:0 0 0 0 transparent;transition:background .2s,box-shadow .2s}.brand .dot[data-on=true]{background:var(--ok);box-shadow:0 0 10px 1px #22c55e88}.team{margin-left:auto;font-size:13px;font-weight:600;color:var(--muted);border:1px solid var(--line);padding:5px 11px;border-radius:999px}.iconbtn,.team{background:var(--panel)}.iconbtn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);color:var(--text);width:38px;height:38px;border-radius:11px;font-size:18px;line-height:1;cursor:pointer;display:grid;place-items:center}.iconbtn:active{background:var(--panel2)}.banner{position:relative;background:#3a1d1d;border:1px solid #5b2a2a;color:#ffd9d9;padding:12px 38px 12px 14px;border-radius:12px;font-size:13px;line-height:1.45}.bannerx{position:absolute;top:6px;right:8px;border:none;background:transparent;color:#ffd9d9;font-size:20px;cursor:pointer}.hero{flex:1 1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:22px;padding:20px 6px}.herotxt h1{font-size:26px;margin:0 0 10px;letter-spacing:-.4px}.herotxt p{margin:0;color:var(--muted);font-size:15px;line-height:1.5;max-width:32ch}.join{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;width:100%;max-width:340px;padding:18px;font-size:18px;font-weight:700;color:#fff;border-radius:999px;background:linear-gradient(180deg,var(--accent2),var(--accent));box-shadow:0 8px 24px -6px #3b82f6aa,inset 0 1px 0 #ffffff44;transition:transform .08s,filter .15s}.join:active{transform:scale(.98);filter:brightness(.95)}.join:disabled{filter:grayscale(.4) brightness(.8);cursor:default}.hint{margin:0;color:var(--muted);font-size:12.5px;max-width:30ch}.live{flex:1 1;display:flex;flex-direction:column;gap:16px}.status{display:flex;align-items:center;gap:9px;justify-content:center;font-size:14px;font-weight:600;padding:10px;border-radius:12px;border:1px solid var(--line);background:var(--panel)}.status.ok{color:var(--ok);border-color:#1f4030;background:#0f1c16}.status.warn{color:var(--warn);border-color:#4a3a18;background:#1c1810}.status .spin{width:14px;height:14px;border-radius:50%;border:2px solid;border-right:2px solid transparent;opacity:0}.status .spin[data-spin=true]{opacity:1;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.panelhead{display:flex;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin-bottom:10px;font-weight:700}.meter{height:12px;border-radius:999px;background:#0c1119;overflow:hidden;border:1px solid var(--line)}.meterfill{height:100%;width:100%;transform:scaleX(0);transform-origin:left center;will-change:transform}.meterfill.in{background:linear-gradient(90deg,#22c55e,#84cc16 55%,#f59e0b 80%,#ef4444)}.meterfill.mic{background:linear-gradient(90deg,#fca5a5,#ef4444)}.vol{display:flex;align-items:center;gap:12px;margin-top:14px}.vol span{font-size:15px}.vol input[type=range]{flex:1 1;-moz-appearance:none;appearance:none;-webkit-appearance:none;height:6px;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0 var(--p,100%),#2a3342 var(--p,100%) 100%);background:#2a3342;outline:none}.vol input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0008;cursor:pointer}.vol input[type=range]::-moz-range-thumb{width:24px;height:24px;border:none;border-radius:50%;background:#fff;cursor:pointer}.ptt{position:relative;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;flex:1 1;min-height:200px;border-radius:26px;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;overflow:hidden;touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;background:linear-gradient(180deg,#2b3543,#1a212c);border:1px solid var(--line);box-shadow:inset 0 1px 0 #ffffff14,0 10px 30px -12px #000;transition:transform .08s,background .12s,box-shadow .15s}.ptt:disabled{opacity:.55;cursor:default}.ptt.on{background:linear-gradient(180deg,var(--live2),var(--live));box-shadow:0 0 0 4px #ef444433,0 0 40px -4px #ef4444cc,inset 0 1px 0 #ffffff44;transform:scale(.99);animation:livepulse 1.4s ease-in-out infinite}@keyframes livepulse{0%,to{box-shadow:0 0 0 4px #ef444433,0 0 30px -6px #ef4444aa,inset 0 1px 0 #ffffff44}50%{box-shadow:0 0 0 8px #ef444422,0 0 55px -2px #ef4444ee,inset 0 1px 0 #ffffff44}}.pttlabel{font-size:19px;font-weight:800;letter-spacing:.2px;text-align:center;padding:0 16px}.ptthint{font-size:12.5px;opacity:.7}.pttmeter{position:absolute;left:16px;right:16px;bottom:16px;height:8px;border-radius:999px;background:#ffffff22;overflow:hidden}.leave{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:var(--panel);color:var(--muted);padding:13px;border-radius:12px;font-weight:600;font-size:15px;cursor:pointer}.leave:active{background:var(--panel2)}.scrim{position:fixed;inset:0;background:#000a;z-index:20}.drawer{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--bg2);border-top:1px solid var(--line);border-radius:22px 22px 0 0;padding:16px 16px calc(var(--safe-b) + 18px);transform:translateY(110%);transition:transform .28s cubic-bezier(.22,1,.36,1);max-width:560px;margin:0 auto;box-shadow:0 -20px 50px -20px #000}.drawer.open{transform:translateY(0)}.drawerhead{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:16px;margin-bottom:12px}.drawerbody{display:flex;flex-direction:column;gap:4px}.row{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line)}.rowtxt{display:flex;flex-direction:column;gap:3px;flex:1 1}.rowlabel{font-weight:600;font-size:15px}.rowdesc{font-size:12.5px;color:var(--muted)}.switch{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;cursor:pointer;width:52px;height:30px;border-radius:999px;background:#2a3342;position:relative;transition:background .18s;flex:0 0 auto}.switch.on{background:var(--accent)}.switch .knob{position:absolute;top:3px;left:3px;width:24px;height:24px;border-radius:50%;background:#fff;transition:transform .18s;box-shadow:0 1px 3px #0007}.switch.on .knob{transform:translateX(22px)}.kv{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 4px;border-bottom:1px solid var(--line);font-size:14px}.kv span{color:var(--muted)}.kv code{font-family:ui-monospace,SF Mono,Menlo,monospace;font-size:12.5px;color:var(--text)}.kv code.trunc{max-width:60%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.reconnect{margin-top:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--accent);background:transparent;color:var(--accent2);padding:12px;border-radius:12px;font-weight:600;font-size:14px;cursor:pointer}.reconnect:active{background:#14233b}.diagtoggle{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--line);background:transparent;color:var(--muted);padding:9px;border-radius:10px;font-size:13px;font-weight:600;cursor:pointer}.diagtoggle:active{background:var(--panel2)}.drawer.diag{max-height:86vh;overflow-y:auto}.diagnote{color:var(--muted);font-size:14px;padding:8px 4px}.diaghints{display:flex;flex-wrap:wrap;gap:6px;padding:4px 0 10px}.pill{font-size:12px;font-weight:600;padding:5px 9px;border-radius:999px;border:1px solid var(--line);background:var(--panel);color:var(--muted)}.pill.ok{color:var(--ok);border-color:#1f5135;background:#0f2218}.pill.warn{color:var(--warn);border-color:#5a4413;background:#221a0c}.diagsec{border-top:1px solid var(--line);padding-top:8px;margin-top:6px}.diagsechead{font-size:12.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px 4px 6px}.diagfreq{display:flex;align-items:center;gap:8px;padding:11px 4px;font-size:14px;color:var(--muted)}.diagfreq input{width:90px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:7px 9px;font-size:14px;font-family:ui-monospace,SF Mono,Menlo,monospace}@media (min-width:480px){.herotxt h1{font-size:30px}}.statusbadge{position:fixed;right:calc(env(safe-area-inset-right, 0px) + 12px);bottom:calc(var(--safe-b) + 12px);z-index:15;display:flex;align-items:center;gap:7px;padding:7px 11px;border-radius:999px;font-size:12.5px;font-weight:600;cursor:default;border:1px solid var(--line);background:var(--panel);color:var(--muted);box-shadow:0 8px 24px -10px #000;-moz-user-select:none;user-select:none;-webkit-user-select:none}.statusbadge.warn{color:var(--warn);border-color:#4a3a18;background:#1c1810}.statusbadge.bad{color:var(--live2);border-color:#5b2a2a;background:#2a1414}.statusbadge .sb-dot{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 8px 1px currentColor}.statusbadge.warn .sb-dot{animation:sbpulse 1.2s ease-in-out infinite}@keyframes sbpulse{0%,to{opacity:1}50%{opacity:.35}}.statusbadge .sb-pop{position:absolute;bottom:calc(100% + 8px);right:0;max-width:240px;white-space:normal;padding:9px 11px;border-radius:10px;background:var(--panel2);border:1px solid var(--line);color:var(--text);font-weight:500;font-size:12.5px;line-height:1.4;box-shadow:0 12px 30px -12px #000;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity .14s,transform .14s}.statusbadge.open .sb-pop,.statusbadge:hover .sb-pop{opacity:1;transform:translateY(0)}