:root{--bg:#0d0b1a;--panel:#16132b;--panel2:#1f1b3a;--hi:#2b2652;--line:#ffffff17;--text:#eeeefb;--mute:#9a97bd;--acc:#9a93f0;--ink:#14123a;--red:#ff6b62;color-scheme:dark}
:root[data-theme=light]{--bg:#ebeaf8;--panel:#fff;--panel2:#f3f2fc;--hi:#e4e2f7;--line:#1b184a17;--text:#1a1740;--mute:#625f8a;--acc:#5a50c8;--ink:#fff;--red:#d8443b;color-scheme:light}
*{box-sizing:border-box}html,body{height:100%;margin:0}
body{font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}button{cursor:pointer}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--hi);border-radius:8px}
#auth{height:100%;display:grid;place-items:center;padding:16px;background:var(--bg)}
#auth form{background:var(--panel);border:1px solid var(--line);border-radius:22px;padding:32px;width:360px;display:grid;gap:12px}
#auth h1{margin:0;font-size:34px;letter-spacing:-.03em}#auth p{margin:0 0 6px;color:var(--mute)}
input{padding:11px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);min-width:0}
.btn{background:var(--acc);color:var(--ink);border:0;border-radius:12px;padding:10px 18px;font-weight:700}
.btn.danger{background:var(--red);color:#fff}.ghost{background:none;border:1px solid var(--line);border-radius:12px;padding:10px 16px}
.link{background:none;border:0;color:var(--acc);padding:0}#err{color:var(--red);min-height:1.4em;font-size:14px}
#app{display:none;height:100%;grid-template-columns:72px 250px 1fr 230px;gap:10px;padding:10px}
#rail,#side,main,#mem{background:var(--panel);border-radius:20px;min-height:0;overflow:hidden}
#rail{display:flex;flex-direction:column;align-items:center;gap:10px;padding:12px 0;overflow:auto}
.ri{position:relative;width:48px;height:48px;border-radius:16px;border:0;background:var(--panel2);font-weight:700;transition:border-radius .2s,background .2s}
.ri:hover{border-radius:24px;background:var(--hi)}.ri.on{background:var(--acc);color:var(--ink);border-radius:24px}
.ri .badge{position:absolute;right:-4px;top:-4px}.sep{width:28px;height:2px;border-radius:2px;background:var(--line)}
.badge{background:var(--red);color:#fff;border-radius:9px;font-size:11px;padding:0 6px;font-weight:700}
#side{display:flex;flex-direction:column}
#sh{padding:15px 16px;font-weight:700;font-size:16px;display:flex;justify-content:space-between;align-items:center;gap:6px}
#sh button{font-size:12px;border:0;background:var(--panel2);border-radius:20px;padding:4px 12px}
#chs{flex:1;overflow:auto;padding:4px 10px}
.grp{display:flex;justify-content:space-between;color:var(--mute);font-size:12px;font-weight:600;margin:14px 6px 4px}
.grp button{background:none;border:0;color:var(--mute);font-size:18px;line-height:1}.grp button:hover{color:var(--acc)}
.row{display:flex;align-items:center;gap:9px;width:100%;text-align:left;background:none;border:0;padding:7px 10px;border-radius:12px;color:var(--mute)}
.row:hover,.row.on{background:var(--panel2);color:var(--text)}.row.on{box-shadow:inset 3px 0 var(--acc)}
.row .nm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.row .x{opacity:0;font-size:12px}.row:hover .x{opacity:1}
.vm{display:flex;align-items:center;gap:8px;padding:3px 10px 3px 30px;font-size:14px;color:var(--mute)}
.av{flex:none;width:36px;height:36px;border-radius:14px;display:grid;place-items:center;font-weight:700;color:#10182a;font-size:14px}
.vm .av,.row .av{width:24px;height:24px;border-radius:9px;font-size:11px}.sp .av{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--acc)}
#up{display:flex;align-items:center;gap:10px;padding:10px 12px;margin:0 10px 10px;background:var(--panel2);border-radius:16px;font-weight:600}
main{display:flex;flex-direction:column;position:relative}
#head{padding:13px 18px;font-weight:700;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line)}
#menu{display:none;border:0;background:none;font-size:20px}
#qk{border:0;background:var(--panel2);border-radius:20px;padding:4px 12px;font-size:13px;color:var(--mute);font-weight:400}
kbd{font:inherit;font-size:11px;background:var(--hi);border-radius:6px;padding:1px 6px;margin-left:4px}
#msgs{flex:1;overflow:auto;padding:12px 0}.empty{color:var(--mute);padding:30px 24px}
.m{position:relative;display:flex;gap:12px;padding:3px 18px}.m:hover{background:var(--panel2)}.m:not(.c){margin-top:12px}
.m .gap{flex:none;width:36px}.m .body{min-width:0;flex:1}.meta small{color:var(--mute);margin-left:8px;font-size:12px}
.txt{white-space:pre-wrap;word-break:break-word}.txt small{color:var(--mute);font-size:11px}
.txt code{background:var(--hi);border-radius:6px;padding:1px 6px;font:13px ui-monospace,Consolas,monospace}.txt a{color:var(--acc)}
.rx{display:flex;gap:4px;margin-top:4px;flex-wrap:wrap}.rx button{border:1px solid var(--line);background:var(--panel2);border-radius:12px;padding:0 9px;font-size:13px}
.rx .on{border-color:var(--acc);background:color-mix(in srgb,var(--acc) 18%,transparent)}
.act{display:none;position:absolute;right:18px;top:-14px;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:2px}
.m:hover .act{display:flex}.act button{background:none;border:0;padding:3px 7px;border-radius:8px}.act button:hover{background:var(--hi)}
#typing{height:22px;padding:0 20px;color:var(--mute);font-size:13px}
#form{display:flex;gap:8px;margin:0 14px 14px;position:relative}#form input{flex:1;border-radius:16px;padding:13px 16px}
#emojiBtn{border:0;background:var(--panel2);border-radius:14px;width:46px;font-size:18px}
#pk{display:none;position:absolute;bottom:56px;left:0;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:8px;grid-template-columns:repeat(8,1fr);gap:2px;box-shadow:0 12px 40px #0006}
#pk button{border:0;background:none;font-size:20px;border-radius:8px;padding:3px}#pk button:hover{background:var(--hi)}
#mem{overflow:auto;padding:8px}#mem .row{color:var(--text)}.off .av{opacity:.4}.off .nm{color:var(--mute)}
.pr{font-size:11px;background:var(--hi);border-radius:8px;padding:0 7px;color:var(--mute)}
.ov{position:fixed;inset:0;background:#0008;backdrop-filter:blur(4px);display:grid;place-items:center;z-index:50}.ov.top{align-items:start;padding-top:12vh}
.dlg{background:var(--panel);border:1px solid var(--line);border-radius:20px;padding:22px;width:min(420px,92vw);display:grid;gap:12px;animation:pop .18s ease-out}
.dlg h3{margin:0;font-size:18px}.bt{display:flex;justify-content:flex-end;gap:8px}.ql{display:grid;gap:2px}
@keyframes pop{from{transform:scale(.94);opacity:0}}
#toasts{position:fixed;right:16px;bottom:16px;display:grid;gap:8px;z-index:60}
.toast{background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--acc);border-radius:14px;padding:11px 16px;box-shadow:0 10px 30px #0005;animation:sl .25s ease-out;max-width:340px}
.toast.bad{border-left-color:var(--red)}@keyframes sl{from{transform:translateX(30px);opacity:0}}
@media(max-width:860px){
 #app{grid-template-columns:1fr;padding:0;gap:0}main{border-radius:0}#mem{display:none}#menu{display:block}#qk kbd{display:none}
 #rail,#side{position:fixed;top:0;bottom:0;z-index:30;border-radius:0;transition:transform .25s}
 #rail{left:0;width:72px}#side{left:72px;width:min(260px,70vw)}
 body:not(.nav) #rail,body:not(.nav) #side{transform:translateX(-120%)}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
#vp{display:none;margin:0 10px 8px;padding:12px;border-radius:18px;background:linear-gradient(160deg,color-mix(in srgb,var(--acc) 16%,var(--panel2)),var(--panel2));border:1px solid color-mix(in srgb,var(--acc) 30%,transparent)}
.vtop{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.live{flex:none;width:10px;height:10px;border-radius:50%;background:var(--acc);animation:pulse 2s infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 var(--acc)}70%,100%{box-shadow:0 0 0 8px transparent}}
.vinfo{min-width:0;display:grid;line-height:1.25}.vinfo b{font-size:13px;color:var(--acc)}.vinfo small{color:var(--mute);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.vbtns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}
.vb{height:40px;border:0;border-radius:12px;background:var(--hi);display:grid;place-items:center;transition:background .15s,transform .1s}
.vb:hover{background:color-mix(in srgb,var(--hi) 70%,var(--text))}.vb:active{transform:scale(.94)}
.vb.off{background:color-mix(in srgb,var(--red) 22%,transparent);color:var(--red)}.vb.leave{background:var(--red);color:#fff}
.ic{display:grid;place-items:center}
#up .uinf{flex:1;min-width:0;display:grid;line-height:1.2}#up small{color:var(--mute);font-weight:400}
#up .gb{width:36px;height:36px;border:0;border-radius:12px;background:none;color:var(--mute);display:grid;place-items:center}#up .gb:hover{background:var(--hi);color:var(--text)}
.dlg.wide{width:min(520px,94vw);max-height:86vh;overflow:auto}
.sec{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--line)}.sec>b{font-size:13px;color:var(--mute);font-weight:600}
.sws{display:flex;gap:8px;flex-wrap:wrap}.sw{width:30px;height:30px;border-radius:10px;border:0}.sw.on{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--text)}
select{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);color:var(--text)}
input[type=range]{padding:0;accent-color:var(--acc);flex:1;max-width:180px}input[type=checkbox]{padding:0;width:18px;height:18px;accent-color:var(--acc)}
.lbl{display:flex;justify-content:space-between;align-items:center;gap:10px}
.prof{display:flex;align-items:center;gap:12px}.prof .av{width:52px;height:52px;border-radius:18px;font-size:22px}
.fw{padding:16px 22px;display:grid;gap:14px}.ftabs{display:flex;gap:6px}.ftabs button{border:0;background:none;border-radius:12px;padding:6px 14px;color:var(--mute)}.ftabs .on{background:var(--hi);color:var(--text)}
.fadd{display:flex;gap:8px}.fadd input{flex:1}.fl{display:grid;gap:2px}.frow{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px}.frow:hover{background:var(--panel2)}
.fav{position:relative}.fav i{position:absolute;right:-2px;bottom:-2px;width:12px;height:12px;border-radius:50%;background:var(--acc);border:2px solid var(--panel)}
.fi{flex:1;min-width:0;display:grid;line-height:1.25}.fi small{color:var(--mute)}
.fbtn{width:38px;height:38px;border:0;border-radius:12px;background:var(--panel2);color:var(--text);display:grid;place-items:center}.fbtn:hover{background:var(--hi)}
.dot{width:9px;height:9px;border-radius:50%;background:var(--acc)}
#call{display:none;width:40px;height:34px;border:0;border-radius:12px;background:var(--acc);color:var(--ink);place-items:center}
.toast.ring{display:grid;gap:10px;min-width:260px}
.alogo{display:block;margin:0 auto 4px;border-radius:50%}.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ri:has(.lg){padding:0;overflow:visible;background:none}.ri .lg{width:100%;height:100%;border-radius:inherit;display:block;transition:border-radius .2s}
.ri:has(.lg).on{box-shadow:0 0 0 2px var(--panel),0 0 0 4px var(--acc)}.ri:has(.lg):hover{background:none}
.av{position:relative;overflow:hidden}.av img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.pbtn{display:grid;gap:8px}.pbtn .ghost{padding:6px 12px;margin-right:6px;font-size:13px}
.badge{min-width:20px;height:20px;line-height:20px;padding:0 6px;text-align:center;border-radius:10px;font-size:12px}.row.unr .nm{color:var(--text);font-weight:700}
#menu .badge{margin-left:6px}
#topic{color:var(--mute);font-weight:400;font-size:13px;margin-left:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}#ht{flex:none}
.row .x{display:grid;place-items:center;border-radius:8px;padding:3px}.row .x:hover{background:var(--hi)}.row.on .x,.row:focus-within .x{opacity:.8}
@media(hover:none){.row .x{opacity:.8}}
.f2{display:grid;gap:4px;font-size:13px;color:var(--mute)}.danger-zone{display:grid;gap:8px;padding-top:12px;border-top:1px solid var(--line);color:var(--mute);font-size:13px}.danger-zone b{color:var(--red)}
.shb{display:flex;gap:6px;align-items:center}#sh .ig{display:grid;place-items:center;padding:5px 8px}.sn{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ml{display:grid;gap:2px;max-height:200px;overflow:auto}.dlg code{background:var(--hi);border-radius:8px;padding:3px 10px}
#stage{display:none;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px;padding:10px 14px 0}
.tile{position:relative;background:#000;border-radius:14px;overflow:hidden}.tile video{width:100%;max-height:44vh;object-fit:contain;display:block}
.tl{position:absolute;left:10px;bottom:10px;background:#000a;color:#fff;border-radius:10px;padding:2px 10px;font-size:13px}
.tf{position:absolute;right:10px;top:10px;width:34px;height:34px;border:0;border-radius:10px;background:#000a;color:#fff;display:grid;place-items:center}
.vbtns{display:grid;grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px}.vb.on{background:var(--acc);color:var(--ink)}
.live2{background:var(--red);color:#fff;font-weight:700;letter-spacing:.04em}
.sicon{flex:none;width:52px;height:52px;border-radius:16px;background:var(--hi);display:grid;place-items:center;font-weight:700;overflow:hidden}.sicon img{width:100%;height:100%;object-fit:cover}
.ri .lg{object-fit:cover}#app.nomem{grid-template-columns:72px 250px 1fr}#app.nomem #mem{display:none}
@media(max-width:860px){#app.nomem{grid-template-columns:1fr}}
#auth form[hidden],#regx[hidden],#bdw[hidden]{display:none}#regx{display:grid;gap:12px}#auth h2{margin:0;font-size:22px}#auth form p#vtxt,#ctxt{color:var(--mute);font-size:14px;margin:0}
#verr,#cerr{color:var(--red);min-height:1.4em;font-size:14px}#code{letter-spacing:.5em;text-align:center;font-size:22px;font-weight:700}.link:disabled{color:var(--mute);cursor:default}.alogo[width="64"]{margin-bottom:0}

.pwreq{list-style:none;margin:0;padding:0;display:grid;gap:2px;font-size:12.5px;color:var(--mute)}.pwreq li.ok{color:#3fa76a}.pwreq[hidden]{display:none}
.chk{display:flex;gap:8px;align-items:flex-start;font-size:13px;color:var(--mute)}.chk input{width:16px;height:16px;padding:0;margin-top:3px;flex:none;accent-color:var(--acc)}
.hint{color:var(--mute);font-size:12.5px}.tx{right:52px}.tile.self .tl{background:#2b2652cc}
.vm{background:none;border:0;width:100%;text-align:left;font:inherit;border-radius:8px}button.vm{cursor:pointer}button.vm:hover,button.vm:focus-visible{background:var(--panel2);color:var(--text)}
.vpp{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px}
.vchip{display:flex;align-items:center;gap:6px;border:0;background:var(--hi);color:var(--text);border-radius:12px;padding:3px 10px 3px 4px;font-size:13px;cursor:pointer}.vchip .av{width:22px;height:22px;border-radius:8px;font-size:11px}.vchip small{color:var(--mute)}
.pop{position:fixed;z-index:60;width:250px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:14px;box-shadow:0 14px 40px #0006;display:grid;gap:10px;animation:pop .15s ease-out}
.pop .ph{display:flex;align-items:center;gap:10px}.pop input[type=range]{max-width:none;width:100%;flex:none}.pop .hint{color:var(--mute);font-size:12px}.pv{min-width:42px;text-align:right}
.chk{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--mute);line-height:1.45}.chk input{margin-top:3px;flex:none;width:18px;height:18px;padding:0;accent-color:var(--acc)}.chk a,.legal a{color:var(--acc)}
.legal{text-align:center;font-size:13px;color:var(--mute)}.dlg .hint a{color:var(--acc)}
.chk[hidden]{display:none}
