/* TV-only presentation; shared media and overlay geometry stays unchanged. */
.tv{background:#080b18;color:#fff;height:100dvh}
.tv main{height:100dvh;width:100%;display:grid;grid-template-columns:minmax(0,79fr) minmax(0,21fr);padding:10px;gap:12px;background:#080b18}
.tv[data-mode=idle] main{grid-template-columns:1fr}
.tv[data-mode=idle] .stage,.tv[data-mode=idle] .sidebar,.tv[data-mode=playing] .idle-promo{display:none}
.tv .stage{border-radius:20px;background:radial-gradient(ellipse at 25% 35%,#37205c88,transparent 65%),linear-gradient(140deg,#151530,#080b18 55%,#241438);isolation:isolate}
.tv .wall-layer{inset:24px;animation:none;overflow:visible}
.tv .wall-layer.leaving{animation:fade-out .4s ease forwards}
.tv .wall-scene{background:transparent;z-index:1}
.tv .scene-media{background:transparent}
.tv .ambient-image{position:absolute;inset:-24px;width:calc(100% + 48px);height:calc(100% + 48px);object-fit:cover;filter:blur(42px);opacity:.48;transform:scale(1.08);pointer-events:none;z-index:-2}
.tv .ambient-shade{position:absolute;inset:-24px;background:#080b1870;z-index:-1;pointer-events:none}
.tv .wall-scene .media-bounds{border-radius:8px;outline:0;box-shadow:0 0 9px #a855f766,0 0 3px #ec489960}
.tv .wall-scene .media-bounds::after{content:'';position:absolute;inset:0;border:2px solid #d899f6;box-shadow:inset 0 0 7px #ec489955,0 0 8px #a855f755;border-radius:8px;pointer-events:none;z-index:4}
.tv .wall-scene.has-quote:has(.quote-gif) .media-bounds{box-shadow:0 0 6px #a855f760}
.tv .wall-scene.has-quote:has(.quote-gif) .media-bounds::after{opacity:.65;box-shadow:inset 0 0 4px #a855f72b}
.digital-decor{position:absolute;inset:14px;width:calc(100% - 28px);height:calc(100% - 28px);pointer-events:none;z-index:0;overflow:hidden;border-radius:18px}
.corner-geometry path{vector-effect:non-scaling-stroke}
.corner-facet{fill:#6d28d917;stroke-width:.6px}
.decor-sparks{opacity:.7;filter:drop-shadow(0 0 2px #a855f7)}
.led-border{position:absolute;inset:14px;pointer-events:none;z-index:3}
.led-border svg{display:block;width:100%;height:100%;overflow:visible}
.led-border rect{fill:none;stroke-linecap:round;stroke-linejoin:round}
.led-base{stroke:#6d28d9;stroke-width:2.5px}
.led-depth{stroke:#6d28d944;stroke-width:7px;filter:drop-shadow(0 0 4px #a855f74d)}
.led-core{stroke:#d390f4;stroke-width:1px;opacity:.65;filter:drop-shadow(0 0 2px #a855f7)}
.led-nodes{stroke:#d68cf6;stroke-width:2.8px;stroke-dasharray:1.2 11.3;stroke-dashoffset:-2;filter:drop-shadow(0 0 3px #c15bfa) drop-shadow(0 0 6px #ec489960)}
.led-runner{stroke:#a855f7;stroke-width:3.5px;stroke-dasharray:10 90;filter:drop-shadow(0 0 3px #a855f7) drop-shadow(0 0 5px #a855f780);animation:led-travel 7s linear infinite}
.led-runner.led-pink{stroke:#ec4899;stroke-width:2.5px;stroke-dasharray:3 97;filter:drop-shadow(0 0 3px #ec489980)}
@keyframes led-travel{from{stroke-dashoffset:0}to{stroke-dashoffset:-100}}
.tv .sidebar{border:1px solid #a855f728;border-radius:14px;padding:clamp(16px,1.6vw,30px);gap:clamp(10px,1.6vh,20px);background:radial-gradient(ellipse at 15% 0%,#44217e33,transparent 60%),linear-gradient(160deg,#10132a,#080d1d 65%,#15102b);overflow:hidden;justify-content:center}
.tv .brand{font-size:clamp(14px,1.05vw,21px);justify-content:center;margin:0;gap:10px}
.tv .brand-mark{width:clamp(28px,2.4vw,46px);height:clamp(28px,2.4vw,46px);border-radius:10px;background:linear-gradient(145deg,#a18aff,#6035db);box-shadow:0 0 12px #6d28d933}
.tv .promo-heading{background:linear-gradient(125deg,#a78bfa,#ef99d3 65%,#f4c5d6);background-clip:text;color:transparent;font-weight:700;font-style:italic;line-height:1.15;margin:0;letter-spacing:-.04em}
.tv .sidebar .promo-heading{font-size:clamp(23px,2.65vw,51px)}
.tv .sidebar p{margin:0;color:#e4e3f2;line-height:1.65;font-size:clamp(13px,1.05vw,20px)}
.tv .qr{background:#fff;border-radius:18px;padding:12px;object-fit:contain;box-shadow:0 6px 22px #0003;flex-shrink:0}
.tv .sidebar .qr{width:100%;max-width:280px;max-height:36vh;aspect-ratio:1;align-self:center}
.tv .promo-media span{font-size:.92em;color:#d4cee7}
.tv .queue-copy{padding-top:18px;border-top:1px solid #a78bfa33;white-space:nowrap}
.tv .queue-copy strong{color:#ec4899;font-size:1.45em;margin:0 4px}
.idle-promo{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:clamp(10px,1.7vh,20px);border:1px solid #6d28d966;border-radius:20px;background:radial-gradient(ellipse at 20% 40%,#6d28d91a,transparent 60%),radial-gradient(ellipse at 85% 80%,#ec489915,transparent 60%),#080b18;box-shadow:inset 0 0 24px #6d28d90f}
.tv .idle-promo .promo-heading{font-size:clamp(32px,5.4vh,65px)}
.tv .idle-promo .qr{width:clamp(200px,35vh,390px);height:clamp(200px,35vh,390px)}
.tv .idle-promo p{margin:0;color:#e4e3f2;font-size:clamp(16px,2vh,24px);line-height:1.5}
.tv .idle-promo .queue-copy{padding:10px 35px 0}
.tv #fullscreen{position:fixed;right:18px;bottom:10px;z-index:5;font-size:11px;min-height:30px;padding:5px 9px;opacity:.2}
.tv #fullscreen:hover,.tv #fullscreen:focus-visible{opacity:1}
.tv .connection{position:fixed;bottom:5px;left:24px;max-width:70%;margin:0;z-index:5;font-size:12px;min-height:0;background:#080b18bb;border-radius:5px}
.tv .connection:empty{display:none}
@media(prefers-reduced-motion:reduce){.led-runner{display:none;animation:none}.tv .wall-layer.leaving{animation:none;opacity:0}}
@media(max-height:600px){.tv main{padding:6px;gap:6px}.tv .sidebar{padding:10px;gap:8px}.tv .sidebar .qr{max-height:32vh}.tv .sidebar .brand{font-size:12px}.tv .sidebar .promo-heading{font-size:22px}.tv .sidebar p{font-size:11px}.tv .queue-copy{padding-top:8px}.tv .idle-promo{gap:8px}.tv .idle-promo .qr{width:30vh;height:30vh;min-width:120px;min-height:120px}.tv .idle-promo .promo-heading{font-size:28px}.tv .idle-promo p{font-size:12px}}
