:root{--bg:#0b0912;--card:#171228;--line:#2a2048;--p:#a855f7;--b:#38bdf8;--m:#ec4899;--t:#f4f0ff;--mu:#9a8fb8}
*{box-sizing:border-box}[hidden]{display:none!important}
body{margin:0;background:radial-gradient(900px 500px at 12% -10%,#2a1457,transparent),radial-gradient(800px 500px at 100% 0,#0e2c55,transparent),var(--bg) fixed;color:var(--t);font:16px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;min-height:100vh}
h2{margin:.2rem 0 .8rem}
.logo{font-weight:900;letter-spacing:.14em;font-size:1.4rem}
.logo span,.neon span{background:linear-gradient(90deg,var(--p),var(--b),var(--m));-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 10px #a855f7aa)}
.btn{border:0;border-radius:14px;padding:.8rem 1.2rem;font:inherit;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--p),var(--m));box-shadow:0 0 18px #a855f755;cursor:pointer;text-decoration:none;display:inline-block;text-align:center}
.btn:active{transform:scale(.97)}.btn:disabled{opacity:.45;cursor:default}.btn.ghost{background:#ffffff12;box-shadow:none;border:1px solid var(--line)}.btn.big{padding:1.1rem 1.6rem;font-size:1.25rem;width:100%}
.ic{border:0;background:#ffffff14;color:#fff;border-radius:10px;width:2.5rem;height:2.5rem;cursor:pointer}
.chip{display:inline-block;padding:.3rem .8rem;border-radius:99px;background:#ffffff10;border:1px solid var(--line);font-size:.85rem;margin-right:.4rem}.chip.online{color:#4ade80}.chip.error,.chip.offline{color:#fb7185}
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:1rem;box-shadow:0 0 30px #7c3aed22}
.top{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center;justify-content:space-between;padding:.8rem 1rem}
.grid{display:grid;grid-template-columns:1fr 380px;gap:1rem;padding:0 1rem 1rem}@media(max-width:900px){.grid{grid-template-columns:1fr}}
.col{display:grid;gap:1rem;align-content:start;min-width:0}
.stage{position:relative;aspect-ratio:16/9;background:#000;border-radius:18px;overflow:hidden;box-shadow:0 0 40px #a855f755}
.stage iframe,.stage-tv iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.over{position:absolute;inset:0;z-index:5;display:flex;align-items:center;justify-content:center;text-align:center;padding:1rem;background:#0b0912ee;font-size:1.3rem}
.now{display:grid;gap:.8rem}#now{display:flex;gap:.8rem;align-items:center}
.ctl{display:flex;gap:.6rem;flex-wrap:wrap}.ctl .btn{flex:1}
.live{color:var(--m);animation:pulse 1.4s infinite}
.res,.q li{display:flex;gap:.7rem;align-items:center;padding:.5rem;border-radius:12px;background:#ffffff08;margin-bottom:.5rem}
img{width:96px;aspect-ratio:16/9;object-fit:cover;border-radius:8px;background:#000}
.meta{flex:1;min-width:0;display:grid}.meta b{overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.meta small,.muted{color:var(--mu)}
.q{list-style:none;margin:0;padding:0}.q li.next{border:1px solid var(--p);box-shadow:0 0 14px #a855f766}.q .empty,.q .more{display:block;text-align:center;color:var(--mu);padding:1rem}
.search{display:flex;gap:.5rem;flex-wrap:wrap}
.search input,.search select,#code{padding:.9rem 1rem;border-radius:14px;border:1px solid var(--line);background:#0e0a1c;color:#fff;font:inherit;min-width:0}
.search input{flex:2 1 220px;font-size:1.05rem}.search select{flex:1 1 110px}
.err{color:#fb7185}
#toasts{position:fixed;left:50%;bottom:1rem;transform:translateX(-50%);z-index:99;display:grid;gap:.4rem;width:max-content;max-width:92vw}
.toast{background:#241a44;border:1px solid var(--p);padding:.7rem 1rem;border-radius:12px}.toast.bad{border-color:#fb7185}
dialog{background:var(--card);color:var(--t);border:1px solid var(--p);border-radius:20px;text-align:center;max-width:340px;box-shadow:0 0 50px #a855f799}dialog::backdrop{background:#000a}
.qr{background:#fff;padding:10px;border-radius:14px;width:240px;margin:auto;color:#333}.qr svg{width:100%;height:auto;display:block}
/* monitor */
body.mon{display:grid;grid-template-columns:1fr 30vw;height:100vh;overflow:hidden;gap:1.4vw;padding:1.4vw;align-items:center}
@media(max-aspect-ratio:1/1){body.mon{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;overflow:auto}}
.stage-tv{position:relative;background:#000;border-radius:20px;overflow:hidden;box-shadow:0 0 60px #a855f788;aspect-ratio:16/9;width:100%}
.idle{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.2vh;background:linear-gradient(120deg,#1b0b3d,#0a2347,#3b0b3a);background-size:300% 300%;animation:flow 12s ease infinite;text-align:center}
.neon{font-size:clamp(2rem,6vw,5.5rem);font-weight:900;letter-spacing:.14em;animation:glow 2.5s ease-in-out infinite alternate}
.idle p{font-size:clamp(1rem,1.8vw,2rem);margin:0}.qr.big{width:min(24vh,230px)}.rc{font-size:clamp(1.2rem,2.4vw,2.6rem);letter-spacing:.2em}
.tv-side{display:grid;gap:2vh;align-content:start;height:100%;grid-template-rows:auto 1fr auto;min-height:0}
.tv-side h1{font-size:clamp(1.3rem,2.4vw,2.6rem);margin:.2em 0;line-height:1.15}.tv-side p{font-size:clamp(1rem,1.5vw,1.6rem);margin:0}
.mon .q li{display:block;font-size:clamp(1rem,1.5vw,1.7rem)}.mon .q small{display:block}.mon .q em{font-style:normal;font-size:.7em;font-weight:800;color:#fff;background:var(--m);border-radius:6px;padding:0 .4em;margin-right:.5em}
.join{display:flex;gap:1rem;align-items:center;font-size:clamp(1rem,1.8vw,2rem)}.join .qr{width:min(11vw,150px);min-width:90px;margin:0;padding:6px}
.exit{position:fixed;top:1rem;right:1rem;z-index:20;opacity:0;transition:opacity .3s}.mon:hover .exit,.exit:focus{opacity:1}
.status{position:fixed;left:1rem;bottom:.6rem;color:#fb7185;font-size:.9rem}
/* remote */
body.rem{max-width:560px;margin:auto;padding:0 .8rem 2rem}.center{min-height:100vh;display:grid;align-content:center;gap:1rem;text-align:center}
#code{font-size:2rem;text-align:center;letter-spacing:.2em;text-transform:uppercase;width:100%}
.rem .ctl .btn{min-height:3.4rem}.rem .top{padding:.8rem 0}
.tabs{display:flex;gap:.5rem;margin:1rem 0}.tabs button{flex:1;padding:.9rem;border-radius:14px;border:1px solid var(--line);background:#ffffff0c;color:#fff;font:inherit;font-weight:700}.tabs .on{background:linear-gradient(135deg,var(--p),var(--b))}
@keyframes pulse{50%{opacity:.4}}@keyframes flow{50%{background-position:100% 50%}}@keyframes glow{from{text-shadow:0 0 10px #a855f766}to{text-shadow:0 0 30px #38bdf8,0 0 60px #ec4899aa}}
@media(prefers-reduced-motion:reduce){*{animation:none!important}}
/* ===== BAR / NEON LED ATMOSPHERE ===== */
html::before{content:"";position:fixed;left:50%;top:-25vh;width:170vmax;height:170vmax;margin-left:-85vmax;z-index:-1;pointer-events:none;transform-origin:50% 0;
 background:repeating-conic-gradient(from 0deg at 50% 0,#a855f726 0 5deg,transparent 5deg 22deg,#38bdf81f 22deg 27deg,transparent 27deg 44deg,#ec489924 44deg 49deg,transparent 49deg 66deg);
 -webkit-mask-image:linear-gradient(#000,transparent 65%);mask-image:linear-gradient(#000,transparent 65%);animation:sway 16s ease-in-out infinite alternate}
body::before{content:"";position:fixed;inset:-30%;z-index:-2;pointer-events:none;will-change:transform;
 background:conic-gradient(from 0deg at 30% 40%,#7c3aed66,#0ea5e955,#ec489966,#7c3aed66);filter:blur(100px);opacity:.55;animation:spin 30s linear infinite}
body::after{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
 background:linear-gradient(90deg,#a855f7,#38bdf8,#ec4899,#facc15,#a855f7) 0 0/200% 5px repeat-x,
  linear-gradient(90deg,#ec4899,#38bdf8,#a855f7,#22d3ee,#ec4899) 0 100%/200% 5px repeat-x,
  linear-gradient(#a855f744,transparent) 0 0/100% 110px no-repeat,
  linear-gradient(transparent,#ec489944) 0 100%/100% 110px no-repeat;
 animation:led 7s linear infinite,ledglow 3s ease-in-out infinite alternate}
.stage,.stage-tv{animation:neonbox 6s ease-in-out infinite alternate;border:2px solid #a855f7}
.logo,.neon{animation:flicker 7s infinite}
.logo{text-shadow:0 0 8px #a855f7,0 0 22px #a855f788}.neon{color:#fff;text-shadow:0 0 12px #fff,0 0 30px #a855f7,0 0 60px #ec4899}
.btn{transition:box-shadow .2s,transform .1s}.btn:hover{box-shadow:0 0 26px #ec4899aa,0 0 50px #a855f755}
.card{border-color:#a855f755;animation:cardglow 5s ease-in-out infinite alternate}
.q li.next{animation:cardglow 1.6s ease-in-out infinite alternate}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes sway{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
@keyframes led{to{background-position:200vw 0,-200vw 100%,0 0,0 100%}}
@keyframes ledglow{from{opacity:.65}to{opacity:1}}
@keyframes neonbox{0%{box-shadow:0 0 30px #a855f7aa,0 0 80px #a855f744;border-color:#a855f7}50%{box-shadow:0 0 30px #38bdf8aa,0 0 80px #38bdf844;border-color:#38bdf8}100%{box-shadow:0 0 30px #ec4899aa,0 0 80px #ec489944;border-color:#ec4899}}
@keyframes cardglow{from{box-shadow:0 0 14px #a855f733}to{box-shadow:0 0 30px #38bdf866}}
@keyframes flicker{0%,18%,22%,62%,64%,100%{opacity:1}20%,63%{opacity:.55}21%{opacity:.9}}

/* ===== names + scrollable monitor queue ===== */
.nm,#name{padding:.5rem .8rem;border-radius:99px;border:1px solid var(--line);background:#0e0a1c;color:#fff;font:inherit;width:9.5rem}
#name{width:100%;border-radius:14px;padding:.9rem 1rem;font-size:1.2rem;text-align:center}
.meta>*{min-width:0}.meta small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pos{flex:none;min-width:2.4em;text-align:center;font-weight:800;font-size:.75em;border-radius:8px;padding:.2em .4em;background:#ffffff18}.q li.next .pos{background:var(--m)}
.tv-side{grid-template-rows:auto minmax(0,1fr) auto}
.tv-side .nx{display:flex;flex-direction:column;min-height:0}
.tv-side .nx .q{flex:1;min-height:0;overflow-y:auto;margin-top:.5em;padding-right:.4em;scrollbar-width:thin;scrollbar-color:#a855f7 transparent}
.tv-side .nx .q::-webkit-scrollbar{width:8px}.tv-side .nx .q::-webkit-scrollbar-thumb{background:linear-gradient(var(--p),var(--m));border-radius:8px}
.mon .q li{display:flex;gap:.7em;align-items:center;padding:.5em .7em}
.mon .meta b{-webkit-line-clamp:1;overflow-wrap:anywhere}
.tv-side h1{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.tv-side p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@media(max-aspect-ratio:1/1){.tv-side .nx .q{max-height:40vh}}