:root{color-scheme:dark;--bg:#0c0708;--t:#fff6f0;--m:rgba(255,236,226,.6);--a:#ffb36b;--ok:#5fe3a1;--bd:rgba(255,255,255,.2);--gl:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,.05));--hi:inset 0 1px 0 rgba(255,255,255,.4),inset 0 -1px 0 rgba(255,255,255,.05);--sh:0 14px 44px rgba(0,0,0,.45)}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;min-height:100dvh;background:var(--bg);color:var(--t);font:15px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,system-ui,sans-serif;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
body::before,body::after{content:"";position:fixed;z-index:-1;border-radius:50%;filter:blur(70px);pointer-events:none}
body::before{width:65vmax;height:65vmax;left:-22vmax;top:-28vmax;background:radial-gradient(circle,#ff5d73,transparent 65%);opacity:.55;animation:drift 24s ease-in-out infinite alternate}
body::after{width:60vmax;height:60vmax;right:-22vmax;bottom:-28vmax;background:radial-gradient(circle,#ff9d45,transparent 65%);opacity:.45;animation:drift 30s ease-in-out infinite alternate-reverse}
@keyframes drift{to{transform:translate(6vmax,4vmax) scale(1.08)}}
::selection{background:rgba(255,179,107,.4)}
[hidden]{display:none!important}
a{color:var(--a)}
h1,h2{margin:0}
input{font:inherit;font-size:16px;color:var(--t);width:100%;min-width:0;padding:12px 16px;border-radius:16px;border:1px solid var(--bd);background:rgba(0,0,0,.3);box-shadow:inset 0 2px 6px rgba(0,0,0,.35);outline:0;-webkit-appearance:none;appearance:none}
input::placeholder{color:var(--m)}
input:-webkit-autofill{-webkit-text-fill-color:var(--t);box-shadow:0 0 0 100px #2a1316 inset;caret-color:var(--t)}
input:focus{border-color:var(--a);box-shadow:inset 0 2px 6px rgba(0,0,0,.35),0 0 0 3px rgba(255,179,107,.28)}
button{font:inherit;color:var(--t);cursor:pointer;min-height:42px;padding:9px 18px;border-radius:999px;border:1px solid var(--bd);background:var(--gl);box-shadow:var(--hi),0 4px 14px rgba(0,0,0,.3);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);white-space:nowrap;touch-action:manipulation;transition:transform .15s,filter .15s}
button:hover{filter:brightness(1.18)}button:active{transform:scale(.96)}button:disabled{opacity:.5}
button:focus-visible,a:focus-visible{outline:2px solid var(--a);outline-offset:2px}
.primary{background:linear-gradient(180deg,#ffd29a 0,#ff8f5e 48%,#ff4f6b 100%);color:#2a0d0d;border-color:rgba(255,255,255,.5);font-weight:700;box-shadow:inset 0 1px 0 rgba(255,255,255,.75),inset 0 -6px 12px rgba(160,20,40,.25),0 8px 22px rgba(255,93,115,.35)}
.glass,.card,.people,.chat{position:relative;background:var(--gl);border:1px solid var(--bd);box-shadow:var(--hi),var(--sh);-webkit-backdrop-filter:blur(26px) saturate(170%);backdrop-filter:blur(26px) saturate(170%)}
.card::before,.people::before,.chat::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(120% 50% at 20% 0,rgba(255,255,255,.2),transparent 60%);pointer-events:none}
.logo{font-weight:800;color:var(--t);text-decoration:none;letter-spacing:.01em}
.card{border-radius:28px;padding:24px;display:grid;gap:14px}
.card label{display:grid;gap:6px;color:var(--m);font-size:13px}
.or{text-align:center;color:var(--m);font-size:13px}
.row{display:flex;gap:8px}
.err{color:#ff9aa2;margin:2px 0;min-height:1.2em;font-size:14px}
.note{color:var(--m);margin:0;font-size:14px}
.warn{background:rgba(255,179,107,.16);border:1px solid rgba(255,179,107,.4);padding:10px 14px;border-radius:14px}
.center{min-height:100vh;min-height:100dvh;display:grid;place-items:center;padding:20px}
.login{width:min(400px,100%);text-align:center;justify-items:center}.login input,.login button{width:100%}
.login h1{font-size:26px}
.home{max-width:1080px;margin:0 auto;padding:max(18px,env(safe-area-inset-top)) 20px 28px}
.topbar{display:flex;justify-content:space-between;align-items:center}
.hero{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:center;min-height:72vh}
.hero h1{font:700 clamp(34px,6vw,60px)/1.06 -apple-system,"SF Pro Display",system-ui,sans-serif;letter-spacing:-.02em;margin-bottom:16px}
.hero p{color:var(--m);max-width:46ch;font-size:17px}
.room{display:flex;flex-direction:column;height:100vh;height:100dvh;padding:0 max(12px,env(safe-area-inset-right)) 12px max(12px,env(safe-area-inset-left))}
.bar{margin:max(10px,env(safe-area-inset-top)) 0 10px;padding:7px 8px 7px 18px;border-radius:999px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.bar button{min-height:36px;padding:6px 14px;font-size:14px}
.grow{flex:1}
.pill{font-size:12px;padding:3px 10px;border-radius:99px;background:rgba(255,255,255,.1);color:var(--m)}
.pill.ok{color:var(--ok)}.pill.warn{color:var(--a)}.pill.bad{color:#ff9aa2}
.main{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:14px}
.stagew{display:flex;flex-direction:column;gap:10px;min-height:0;overflow:auto}
.stage{position:relative;aspect-ratio:16/9;width:100%;background:#000;border-radius:22px;overflow:hidden;border:1px solid var(--bd);box-shadow:var(--sh)}
.stage #yt,.stage video{position:absolute;inset:0;width:100%;height:100%;border:0;display:none;background:#000}
.stage[data-k=mp4] video,.stage[data-k=yt] #yt{display:block}
.stage.guest #yt,.stage.guest video{pointer-events:none}
.ph{position:absolute;inset:0;display:grid;place-items:center;text-align:center;padding:20px;color:var(--m)}
.ovl{position:absolute;inset:0;z-index:2;border-radius:0;border:0;font-size:17px;background:rgba(12,7,8,.6);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}
.soundbtn{position:absolute;z-index:3;left:0;right:0;bottom:14px;margin:0 auto;width:max-content}
.tools{flex-wrap:wrap}
.side{display:flex;flex-direction:column;gap:12px;min-height:0}
.people,.chat{border-radius:24px;padding:14px}
.people ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:6px;max-height:140px;overflow:auto}
.people li{display:flex;align-items:center;gap:8px}
.dot{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.3)}.dot.on{background:var(--ok);box-shadow:0 0 8px var(--ok)}
.tag{font-size:11px;padding:1px 8px;border-radius:99px;background:rgba(255,179,107,.22);color:var(--a)}
.chat{flex:1;display:flex;flex-direction:column;gap:10px;min-height:0}
#msgs{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px;overscroll-behavior:contain}
.msg{align-self:flex-start;max-width:86%;background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.12);border-radius:18px 18px 18px 6px;padding:6px 12px;box-shadow:var(--hi)}
.msg.me{align-self:flex-end;border-radius:18px 18px 6px 18px;background:linear-gradient(180deg,rgba(255,179,107,.6),rgba(255,93,115,.55))}
.msg b{font-size:12px;color:var(--a)}.msg.me b{display:none}
.msg time{font-size:11px;color:var(--m);margin-left:6px}.msg p{margin:0;overflow-wrap:anywhere}
.msg.sys{align-self:center;background:none;border:0;box-shadow:none;color:var(--m);font-size:12px;padding:2px}
.modal{position:fixed;inset:0;background:rgba(8,4,5,.6);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:grid;place-items:center;z-index:9;padding:20px}
.modal .card{width:min(380px,100%)}
@media(max-width:1099px){ /* tablet: video on top (stays visible), people + chat below */
 .room{height:auto;min-height:100dvh}
 .main{display:flex;flex-direction:column;gap:10px}
 .stagew{display:contents}
 .stage{position:sticky;top:max(6px,env(safe-area-inset-top));z-index:5}
 .side{display:grid;grid-template-columns:240px minmax(0,1fr);gap:12px}
 .chat{height:420px}
 .hero{grid-template-columns:1fr;min-height:0;gap:26px;padding-top:24px}
}
@media(max-width:699px){ /* phone */
 .side{display:flex}
 .chat{height:min(60dvh,480px)}
 .bar{border-radius:26px;padding-left:14px}
 .bar button{padding:6px 12px}
 .card{padding:20px;border-radius:24px}
 .stage{border-radius:16px}
 .tools button{flex:1}
}
@media(max-height:520px) and (orientation:landscape) and (max-width:1099px){ /* phone in landscape */
 .main{display:grid;grid-template-columns:minmax(0,1fr) 300px}
 .stagew{display:flex}.stage{position:relative;top:auto}
 .side{display:flex}.chat{height:auto;min-height:260px}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}
