:root{--bg:#0f1720;--card:#17212c;--line:#253241;--txt:#e8eef4;--mut:#8ea0b3;--acc:#f5a524;--ok:#22c55e;--bad:#ef4444;--talk:#ef4444;--rx:#3b82f6}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--txt);font-family:system-ui,-apple-system,"Segoe UI",Tahoma,"Noto Sans Arabic",sans-serif;height:100%}
body{overscroll-behavior:none;user-select:none;-webkit-user-select:none}
#app{max-width:520px;margin:0 auto;min-height:100%;display:flex;flex-direction:column;padding:env(safe-area-inset-top) 0 env(safe-area-inset-bottom)}
.top{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid var(--line)}
.brand{display:flex;gap:8px;align-items:center;font-size:18px}.brand img{width:30px;height:30px;border-radius:8px}
.conn{display:flex;gap:6px;align-items:center;font-size:13px;color:var(--mut)}
.dot{width:10px;height:10px;border-radius:50%;background:var(--bad)}.dot.on{background:var(--ok)}.dot.wait{background:var(--acc)}
.view{flex:1;display:flex;flex-direction:column;padding:16px}.hidden{display:none!important}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:20px;display:flex;flex-direction:column;gap:12px}
.card.center{align-items:center;text-align:center}
h2{margin:0 0 4px;font-size:20px}.muted{color:var(--mut)}.small{font-size:12px}
input,select{width:100%;padding:14px;border-radius:12px;border:1px solid var(--line);background:#0b121a;color:var(--txt);font-size:16px;font-family:inherit}
label{display:flex;flex-direction:column;gap:6px;font-size:14px;color:var(--mut)}
label.row{flex-direction:row;align-items:center;gap:10px;color:var(--txt)}label.row input{width:22px;height:22px}
button{font-family:inherit;font-size:15px;border:1px solid var(--line);background:#1f2b38;color:var(--txt);border-radius:12px;padding:10px 14px;cursor:pointer}
button.primary{background:var(--acc);color:#111;border:0;font-weight:700}button.big{padding:16px;font-size:18px}
button.link{background:none;border:0;color:var(--mut);text-decoration:underline}button.danger{color:var(--bad)}
button.small{padding:6px 10px;font-size:13px}
.err{color:var(--bad);min-height:1em;margin:0}
.radar{width:90px;height:90px;border-radius:50%;border:3px solid var(--acc);animation:pulse 1.6s infinite}
@keyframes pulse{0%{transform:scale(.8);opacity:1}100%{transform:scale(1.25);opacity:.2}}
.chanbar{display:flex;gap:8px;align-items:center}.chanbar select{flex:1}
.pill{background:#0b121a;border:1px solid var(--line);border-radius:999px;padding:8px 12px;font-size:13px;white-space:nowrap}
.talker{margin:14px 0 6px;padding:14px;border-radius:14px;text-align:center;font-size:18px;font-weight:700;border:1px solid var(--line);background:#0b121a}
.talker.rx{background:#10233f;border-color:var(--rx);color:#bfdbfe}.talker.tx{background:#3a1212;border-color:var(--talk);color:#fecaca}
.pttwrap{flex:1;display:flex;align-items:center;justify-content:center;min-height:300px}
.ptt{width:min(72vw,280px);height:min(72vw,280px);border-radius:50%;border:8px solid #2a3a4c;background:radial-gradient(circle at 50% 35%,#2b3b4e,#141e29);color:var(--txt);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;font-size:16px;box-shadow:0 10px 40px #0008;touch-action:none;transition:transform .08s}
.ptt .pttIcon{font-size:64px}
.ptt.tx{background:radial-gradient(circle at 50% 35%,#ff6b6b,#a11);border-color:#fca5a5;transform:scale(.96);box-shadow:0 0 0 14px #ef444433,0 0 60px #ef4444aa}
.ptt.wait{border-color:var(--acc)}.ptt.busy{border-color:#555;opacity:.6}.ptt.rx{border-color:var(--rx)}
.hint{text-align:center;min-height:1.4em;font-size:14px}
.members{list-style:none;padding:0;margin:8px 0;display:flex;flex-wrap:wrap;gap:6px}
.members li{background:#0b121a;border:1px solid var(--line);border-radius:999px;padding:6px 10px;font-size:13px}
.members li.talking{border-color:var(--rx);color:#bfdbfe}
.bottom{display:flex;gap:8px;justify-content:center;padding-top:8px}
.note{background:#1d2a1d;border:1px solid #2f4a2f;border-radius:12px;padding:10px;font-size:13px;line-height:1.6}
.adminHead{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:8px}.tabs button{white-space:nowrap;font-size:14px}.tabs button.on{background:var(--acc);color:#111;border-color:var(--acc)}
.badge{background:var(--bad);color:#fff;border-radius:999px;padding:0 7px;font-size:12px}
.tab{display:flex;flex-direction:column;gap:8px}
.dev{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px;display:flex;flex-direction:column;gap:8px}
.dev .h{display:flex;justify-content:space-between;align-items:center;gap:8px}.dev .n{font-weight:700;font-size:16px}
.dev .meta{font-size:12px;color:var(--mut)}.dev .acts{display:flex;flex-wrap:wrap;gap:6px}.dev .acts button{font-size:13px;padding:8px 10px}
.ok{background:#14532d!important;border-color:#166534!important}.no{background:#4c1010!important;border-color:#7f1d1d!important}
.st{font-size:12px;border-radius:999px;padding:3px 8px;background:#0b121a;border:1px solid var(--line)}.st.on{color:var(--ok)}.st.talk{color:#93c5fd;border-color:var(--rx)}
.addrow{display:flex;gap:8px}.addrow input{flex:1}
.empty{color:var(--mut);text-align:center;padding:24px}
.logrow{font-size:12px;color:var(--mut);border-bottom:1px solid var(--line);padding:6px 0}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%);background:#000c;color:#fff;padding:10px 16px;border-radius:12px;font-size:14px;z-index:9;max-width:90vw}
.roombar{display:flex;justify-content:space-between;align-items:center;gap:8px;background:var(--card);border:1px solid var(--line);border-radius:14px;padding:10px 12px}
.rname{font-size:18px;font-weight:700}.rid{color:var(--mut);font-size:13px}.rid b{color:var(--acc);font-size:20px;letter-spacing:2px;font-family:ui-monospace,monospace}
.rbtns{display:flex;flex-direction:column;gap:6px;align-items:flex-end}
h3{margin:0;font-size:16px}
.room{cursor:pointer}.room.cur{border-color:var(--acc)}
.bignum{font-size:34px;letter-spacing:4px;color:var(--acc);font-family:ui-monospace,monospace;text-align:center}

/* v2 */
.roomacts{display:flex;gap:8px;margin:4px 0}.roomacts button{flex:1}
.badge{display:inline-block;min-width:18px;padding:1px 6px;border-radius:999px;background:var(--bad);color:#fff;font-size:11px;font-weight:700;line-height:16px;text-align:center}
.pill.scan{border-color:var(--acc);color:var(--acc)}
.rtabs{display:flex;gap:6px;margin:4px 0 8px;overflow-x:auto}.rtabs button{flex:1;white-space:nowrap}.rtabs button.on{background:var(--acc);color:#111;border-color:var(--acc);font-weight:700}
.seg{display:flex;gap:6px}.seg button{flex:1;padding:10px 6px;font-size:14px}.seg button.on{background:var(--acc);color:#111;border-color:var(--acc);font-weight:700}
.card.slim{padding:12px 14px;margin-bottom:8px}
.card h3{margin:6px 0 0;font-size:16px}
.tag{display:inline-block;font-size:11px;border:1px solid var(--line);border-radius:999px;padding:1px 7px;margin-inline-start:4px;color:var(--mut)}
.tag.open{color:var(--ok);border-color:#1f5f3a}.tag.talk{color:#fecaca;border-color:var(--talk);background:#3a1212}
.room.talking{border-color:var(--talk)}
.codebox{display:flex;flex-direction:column;gap:6px;padding:10px;border:1px dashed var(--acc);border-radius:12px}
.code{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:18px;letter-spacing:1px;word-break:break-all;color:var(--acc);user-select:text;-webkit-user-select:text;text-align:center}
.code.big{font-size:24px;padding:14px;background:#0b121a;border-radius:12px;border:1px solid var(--line)}
.acts{display:flex;gap:6px;flex-wrap:wrap}
.tonerow{display:flex;gap:8px;align-items:flex-end}.tonerow label{flex:1}.tonerow .play{width:52px;height:50px;font-size:18px;padding:0}
.chatview{padding-bottom:0}
.msgs{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:6px;padding:6px 2px;min-height:200px;user-select:text;-webkit-user-select:text}
.msg{max-width:82%;padding:8px 12px;border-radius:14px;background:var(--card);border:1px solid var(--line);align-self:flex-start;word-wrap:break-word;white-space:pre-wrap}
.msg.mine{align-self:flex-end;background:#2b2210;border-color:#5a4410}
.msg .who{font-size:12px;color:var(--acc);margin-bottom:2px}.msg .ts{font-size:10px;color:var(--mut);margin-top:3px;text-align:left}
.composer{display:flex;gap:8px;padding:8px 0 calc(10px + env(safe-area-inset-bottom));position:sticky;bottom:0;background:var(--bg)}
.composer input{flex:1}
.members li{cursor:pointer}
.sheet{position:fixed;inset:0;z-index:40;background:#000a;display:flex;align-items:flex-end;justify-content:center}
.sheetBox{width:100%;max-width:520px;background:var(--card);border-radius:20px 20px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;border:1px solid var(--line)}
.sheetBox.center{align-items:stretch;text-align:center}
.sheetTitle{font-weight:700;font-size:17px;text-align:center;padding:4px 0 8px}
.sheetBody{display:flex;flex-direction:column;gap:8px}.sheetBody button{padding:14px;font-size:16px}
.thread{cursor:pointer}
.attach{width:50px;padding:0;font-size:20px;flex:none}
.msg img.thumb{display:block;max-width:220px;max-height:220px;width:auto;border-radius:10px;margin:2px 0 4px;cursor:zoom-in;background:#0b121a}
.msg.sending{opacity:.6}
.imgview{position:fixed;inset:0;z-index:60;background:#000e;display:flex;align-items:center;justify-content:center}
.imgview img{max-width:100%;max-height:100%;object-fit:contain}
.imgview button{position:absolute;top:calc(12px + env(safe-area-inset-top));left:12px}
