/* ===== v3: Holo HUD chrome + Pixar 3D moments. Loaded after app.css. =====
   Perf rules: animate transform/opacity only, no backdrop-filter, no fixed multi-layer backgrounds. */
:root{
  --navy:#040a16;--cyan:#3fd6ff;--amber:#ffb340;--gold:#ffd75e;--live:#ff3b4e;
  --card:rgba(6,16,32,.92);--card-solid:#07142a;--ink:#e6f6ff;--muted:#8fb0c9;
  --hud-line:rgba(63,214,255,.32);
  --display:'Audiowide',ui-rounded,system-ui,sans-serif;
}
body{background:#040a16;background-image:none}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(900px 500px at 12% -10%,rgba(63,214,255,.16),transparent 60%),
    radial-gradient(800px 480px at 100% 0,rgba(255,179,64,.10),transparent 55%),
    linear-gradient(rgba(63,214,255,.045) 1px,transparent 1px) 0 0/48px 48px,
    linear-gradient(90deg,rgba(63,214,255,.045) 1px,transparent 1px) 0 0/48px 48px,
    #040a16;
  transform:translateZ(0)}
h1,h2,h3{text-shadow:0 0 12px rgba(63,214,255,.35)}
.eyebrow{color:var(--cyan);text-shadow:none}
a{color:var(--cyan)}

/* top bar: solid, no backdrop blur (blur re-composites every scroll frame on phones) */
.topbar{background:rgba(3,9,20,.97);backdrop-filter:none;border-bottom:1px solid var(--hud-line);
  box-shadow:0 1px 0 rgba(63,214,255,.12),0 10px 26px rgba(0,0,0,.45)}
.logo-img{animation:neon-op 7s infinite;filter:drop-shadow(0 0 8px rgba(63,214,255,.5));will-change:opacity}
@keyframes neon-op{0%,18.5%,21%,23.5%,79%,81.5%,100%{opacity:1}19.5%,22.5%{opacity:.72}80.5%{opacity:.88}}
.nav a{border-radius:6px;font-family:var(--font);letter-spacing:.02em;transition:transform .18s ease,background .18s,border-color .18s}
.nav a.on{background:rgba(63,214,255,.12);border-color:rgba(63,214,255,.6);box-shadow:inset 0 -2px 0 var(--cyan)}

/* HUD panel: glass + corner brackets painted as static background layers */
.card,.tile,.hud{background:
    linear-gradient(var(--cyan),var(--cyan)) 0 0/16px 2px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 0 0/2px 16px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 100% 0/16px 2px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 100% 0/2px 16px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 0 100%/16px 2px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 0 100%/2px 16px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 100% 100%/16px 2px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 100% 100%/2px 16px no-repeat,
    linear-gradient(180deg,rgba(10,26,50,.94),rgba(4,12,26,.94));
  border-radius:6px;border:1px solid var(--hud-line);backdrop-filter:none;
  box-shadow:0 0 0 1px rgba(63,214,255,.05) inset,0 14px 32px rgba(0,0,0,.45)}
.card.inner{background:rgba(63,214,255,.05);border-radius:6px}
.modal{border-radius:8px;background:linear-gradient(180deg,#0a1a32,#050e1e);border-color:rgba(63,214,255,.4)}
.modal-bg{backdrop-filter:none;background:rgba(2,6,14,.82)}

/* buttons: HUD bevel + scan-sweep tick on hover/press (transform/opacity only) */
.btn,.tbtn,.tool,.opt,.seg button,.lib-item,.lesson-btn,.arcade-card{position:relative;overflow:hidden}
.btn{border-radius:4px;clip-path:polygon(10px 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%,0 10px);
  background:linear-gradient(180deg,rgba(63,214,255,.12),rgba(63,214,255,.04));border:1px solid rgba(63,214,255,.45);
  box-shadow:none;font-family:var(--font);letter-spacing:.02em;transition:transform .15s ease}
.btn:hover{transform:translateY(-1px);box-shadow:none}
.btn:active{transform:translateY(1px) scale(.98);box-shadow:none}
.btn::after,.tbtn::after,.tool::after{content:"";position:absolute;top:0;bottom:0;left:-40%;width:40%;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(160,240,255,.35),transparent);transform:translateX(-120%);opacity:0}
.btn:hover::after,.tbtn:hover::after,.tool:hover::after{animation:sweep .55s ease-out}
@keyframes sweep{0%{transform:translateX(0);opacity:1}100%{transform:translateX(360%);opacity:0}}
.btn:active::before,.tbtn:active::before,.tool:active::before{content:"";position:absolute;inset:0;background:rgba(63,214,255,.25);animation:tick .18s steps(2) both;pointer-events:none}
@keyframes tick{from{opacity:1}to{opacity:0}}
.btn.primary{background:linear-gradient(180deg,#5fe2ff,#1aa6d6);color:#021220;border-color:#9ff0ff;box-shadow:none}
.btn.danger{background:rgba(255,59,78,.14);border-color:rgba(255,59,78,.55);box-shadow:none}
.tbtn,.tool{border-radius:4px;background:rgba(63,214,255,.08);box-shadow:inset 0 0 0 1px rgba(63,214,255,.3);transition:transform .15s ease}
.tbtn.primary{background:linear-gradient(180deg,#5fe2ff,#1aa6d6);box-shadow:none}
.tool.on{background:rgba(63,214,255,.22);box-shadow:inset 0 0 0 1px var(--cyan),inset 0 -2px 0 var(--cyan)}
.tool.on,.tool:hover{transform:translateY(-1px)}
.seg{border-radius:6px;background:rgba(63,214,255,.05);border-color:rgba(63,214,255,.2)}
.seg button{border-radius:4px}
.seg button.on{background:rgba(63,214,255,.18);box-shadow:inset 0 -2px 0 var(--cyan)}
input,select,textarea{border-radius:4px;border:1px solid rgba(63,214,255,.3);background:rgba(2,8,18,.8)}
.tele,.transport{border-radius:6px;background:rgba(63,214,255,.05);border:1px solid rgba(63,214,255,.16)}
.swatch{border-radius:3px;transform:rotate(45deg) scale(.82);border:2px solid rgba(255,255,255,.85)}
.swatch.on{transform:rotate(45deg) scale(1.05);border-color:#fff;box-shadow:0 0 0 2px var(--cyan)}
.tick{border-radius:1px;transform:translateX(-50%) rotate(45deg);background:var(--gold)}
.tick.callout{background:var(--cyan)}
.lib-item,.lesson-btn{border-radius:6px}
.lib-item:hover,.lib-item.on{background:rgba(63,214,255,.1);border-color:rgba(63,214,255,.45);box-shadow:inset 3px 0 0 var(--cyan)}

/* play stage: holo frame (static shadows; the canvas draws its own HUD overlay) */
.stage{background:#040a16;border-radius:8px;box-shadow:0 0 0 1px rgba(63,214,255,.55),0 0 24px rgba(63,214,255,.22),0 16px 40px rgba(0,0,0,.6)}
.stage-canvas{background:#040a16}

/* LIVE diamond: snaps on, then pulses via a scaled pseudo ring */
.live-badge{background:none;box-shadow:none;padding:2px 8px 2px 4px;color:#ff98a2;font:400 11px var(--display);letter-spacing:.16em;gap:8px;border-radius:0}
.live-badge i{position:relative;width:12px;height:12px;border-radius:1px;background:var(--live);box-shadow:0 0 10px rgba(255,59,78,.8);
  transform:rotate(45deg);animation:snap-on .42s cubic-bezier(.2,1.6,.4,1) both}
.live-badge i::after{content:"";position:absolute;inset:-3px;border:2px solid var(--live);border-radius:1px;animation:ring 1.4s ease-out .42s infinite;opacity:0}
@keyframes snap-on{0%{transform:rotate(45deg) scale(0);opacity:0}55%{transform:rotate(45deg) scale(1.45);opacity:1}100%{transform:rotate(45deg) scale(1)}}
@keyframes ring{0%{transform:scale(1);opacity:.9}100%{transform:scale(2.3);opacity:0}}
.live-dot{position:relative;border-radius:1px;transform:rotate(45deg);animation:snap-on .42s cubic-bezier(.2,1.6,.4,1) both;box-shadow:0 0 10px rgba(255,59,78,.7)}
.live-dot::after{content:"";position:absolute;inset:-3px;border:2px solid var(--live);animation:ring 1.4s ease-out .42s infinite;opacity:0}
.live{animation:blink-op 1.2s infinite}@keyframes blink-op{50%{opacity:.4}}

/* score bump: transform only */
.sb-score.bump{animation:bump2 .8s cubic-bezier(.34,1.56,.64,1)}@keyframes bump2{30%{transform:scale(1.5)}}
.bar i{transform-origin:left center;animation:grow2 1s cubic-bezier(.34,1.56,.64,1) both}@keyframes grow2{from{transform:scaleX(0)}}
.sb-card{background:linear-gradient(160deg,#050d1c,#0b1830 55%,#25080f);border-radius:6px}
.drive-field{background:repeating-linear-gradient(90deg,#062036 0 9.6%,rgba(63,214,255,.8) 9.6% 10%,#05192b 10% 19.6%,rgba(63,214,255,.8) 19.6% 20%);box-shadow:inset 0 0 0 1px rgba(63,214,255,.6)}

/* ===== Home: Pixar hero ===== */
.hero.hero-v3{display:block;padding:0;overflow:hidden;min-height:clamp(340px,42vw,560px);background:#06080f;border-color:rgba(255,179,64,.35)}
.hero-art,.hero-art img,.hero-shade{position:absolute;inset:0;width:100%;height:100%}
.hero-art img{object-fit:cover;object-position:62% 40%;display:block}
.hero-art{transform:translate3d(calc(var(--px,0) * -12px),calc(var(--py,0) * -8px),0) scale(1.06);will-change:transform;transition:transform .25s ease-out}
.hero-shade{background:linear-gradient(90deg,rgba(4,8,16,.94) 0%,rgba(4,8,16,.78) 34%,rgba(4,8,16,.1) 62%,transparent 100%),linear-gradient(0deg,rgba(4,8,16,.75),transparent 40%)}
.hero-v3 .hero-copy{position:relative;z-index:2;max-width:560px;padding:clamp(18px,3vw,40px)}
.hero-v3 h1{text-shadow:0 2px 0 rgba(0,0,0,.4),0 0 18px rgba(255,179,64,.35)}
.hero-v3 h1 .pop{color:var(--gold);animation:none;text-shadow:0 0 16px rgba(255,215,94,.6)}
.hero-mascot{background:none!important;border:0!important;padding:0!important;box-shadow:none!important;position:absolute;z-index:3;right:clamp(8px,3vw,40px);bottom:clamp(8px,2vw,24px);width:clamp(110px,15vw,200px);height:auto;
  transform:translate3d(calc(var(--px,0) * 14px),calc(var(--py,0) * 10px),0);will-change:transform;transition:transform .25s ease-out;pointer-events:auto;cursor:pointer}
.hero-mascot img{width:100%;height:auto;display:block;transform-origin:50% 100%;animation:hop 1.9s cubic-bezier(.3,0,.3,1) infinite;filter:drop-shadow(0 10px 14px rgba(0,0,0,.5))}
@keyframes hop{
  0%,100%{transform:translateY(0) scale(1.08,.9)}
  12%{transform:translateY(0) scale(.94,1.08)}
  40%{transform:translateY(-34px) scale(.98,1.03) rotate(-3deg)}
  62%{transform:translateY(-6px) scale(1,1) rotate(2deg)}
  72%{transform:translateY(0) scale(1.1,.88)}
  82%{transform:translateY(0) scale(.97,1.03)}}
.home-board{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px;margin-top:16px;align-items:start}
.home-board .tiles{margin:0}
.home-board .hero-stage{position:relative}
@media (max-width:860px){.home-board{grid-template-columns:1fr}.hero.hero-v3{min-height:460px}.hero-v3 .hero-copy{padding-bottom:150px}.hero-shade{background:linear-gradient(180deg,rgba(4,8,16,.9) 0%,rgba(4,8,16,.7) 55%,rgba(4,8,16,.2) 100%)}}
.tile{border-radius:6px;transition:transform .2s ease}
.tile:hover{transform:translateY(-4px);box-shadow:0 0 0 1px rgba(63,214,255,.45) inset,0 14px 28px rgba(0,0,0,.45)}
.tile-ico{border-radius:6px;background:radial-gradient(circle at 50% 50%,rgba(63,214,255,.2),transparent 70%),#061428;box-shadow:inset 0 0 0 1px rgba(63,214,255,.4)}

/* avatars: Pixar character portraits in a team-colour ring */
.avatar{overflow:hidden;position:relative;box-shadow:0 0 0 2px var(--ring,#3fd6ff),0 0 10px rgba(63,214,255,.25)}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}

/* celebration mascot (score moments) */
.celebrate{position:fixed;left:50%;bottom:-10px;z-index:310;width:min(46vw,300px);pointer-events:none;transform:translateX(-50%)}
.celebrate img{width:100%;height:auto;display:block;transform-origin:50% 100%;animation:cel-jump 1.7s cubic-bezier(.3,0,.3,1) both;filter:drop-shadow(0 12px 18px rgba(0,0,0,.55))}
@keyframes cel-jump{
  0%{transform:translateY(110%) scale(.9,1.1);opacity:0}
  18%{transform:translateY(0) scale(1.12,.86);opacity:1}
  28%{transform:translateY(0) scale(.92,1.1)}
  52%{transform:translateY(-38%) scale(1,1.02) rotate(-6deg)}
  70%{transform:translateY(0) scale(1.1,.9)}
  80%{transform:translateY(0) scale(1,1)}
  100%{transform:translateY(115%) scale(.95,1.05);opacity:1}}

/* ===== Man Cave (Pixar room + layered, transform-only decor) ===== */
.cave-stage{border-radius:8px;aspect-ratio:16/9;background:#140b06;box-shadow:0 0 0 1px rgba(255,179,64,.45),0 16px 36px rgba(0,0,0,.5)}
.cave-bg{position:absolute;inset:-3%;width:106%;height:106%;object-fit:cover;display:block;
  transform:translate3d(calc(var(--px,0) * -10px),calc(var(--py,0) * -6px),0);will-change:transform;transition:transform .25s ease-out}
.cave-mood{position:absolute;inset:0;pointer-events:none;mix-blend-mode:soft-light}
.cave-fg{position:absolute;inset:0;transform:translate3d(calc(var(--px,0) * 6px),calc(var(--py,0) * 4px),0);will-change:transform;transition:transform .25s ease-out}
.cave-item{position:absolute;transform-origin:50% 0}
.cave-item svg{display:block;width:100%;height:auto;overflow:visible}
.cave-item.pennant-i{animation:sway2 4s ease-in-out infinite}@keyframes sway2{50%{transform:rotate(5deg)}}
.cave-item .bob-h{transform-origin:50% 90%;animation:bob2 1.6s ease-in-out infinite}@keyframes bob2{25%{transform:rotate(-9deg)}75%{transform:rotate(9deg)}}
.cave-neon{position:absolute;left:4%;top:8%;width:25%;animation:neon-op 6s infinite;will-change:opacity}
.cave-neon svg{display:block;width:100%;height:auto}
.cave-tint{position:absolute;pointer-events:none;mix-blend-mode:color;border-radius:6px}
.lamp-glow{position:absolute;left:0;top:18%;width:24%;height:60%;pointer-events:none;background:radial-gradient(closest-side,rgba(255,200,120,.38),transparent);mix-blend-mode:screen;animation:breathe 4.5s ease-in-out infinite;will-change:opacity}
@keyframes breathe{50%{opacity:.6}}
.hotspot{position:absolute;border:0;padding:0;background:transparent;cursor:pointer;border-radius:10px}
.hotspot::before{content:"";position:absolute;inset:0;border-radius:inherit;box-shadow:0 0 0 2px rgba(255,215,94,.85),0 0 22px rgba(255,215,94,.55);opacity:0;transition:opacity .2s}
.hotspot:hover::before,.hotspot:focus-visible::before{opacity:1}
.hotspot .hs-label{position:absolute;left:50%;bottom:-4px;transform:translate(-50%,100%);white-space:nowrap;font:800 13px var(--font);color:#fff;background:rgba(4,8,16,.85);border:1px solid rgba(255,215,94,.6);padding:3px 9px;border-radius:4px;opacity:.9;transition:transform .2s ease}
.hotspot:hover .hs-label{transform:translate(-50%,100%) translateY(-3px)}
.hotspot .hs-ping{position:absolute;right:-6px;top:-6px;width:12px;height:12px;border-radius:2px;transform:rotate(45deg);background:var(--gold);box-shadow:0 0 10px rgba(255,215,94,.9)}
.hotspot .hs-ping::after{content:"";position:absolute;inset:-3px;border:2px solid var(--gold);animation:ring 1.8s ease-out infinite}
.cave-tv{position:absolute;pointer-events:none;overflow:hidden;border-radius:3px}
.cave-tv .playview,.cave-tv .stage{height:100%;box-shadow:none;border-radius:0}
.cave-tv .stage-canvas{height:100%;object-fit:cover;aspect-ratio:auto}
.cave-mascot{position:absolute;left:66%;bottom:4%;width:9%;z-index:2;cursor:pointer;border:0;background:none;padding:0}
.cave-mascot img{width:100%;height:auto;display:block;transform-origin:50% 100%;animation:idle-bounce 2.4s ease-in-out infinite;filter:drop-shadow(0 8px 10px rgba(0,0,0,.6))}
@keyframes idle-bounce{0%,100%{transform:translateY(0) scale(1.04,.96)}45%{transform:translateY(-8%) scale(.97,1.03)}}
.cave-mascot.jump img{animation:hop 1s cubic-bezier(.3,0,.3,1) 1}
.arcade-card{border-radius:6px;background:linear-gradient(160deg,#2a1a0c,#0c0a12);border-color:rgba(255,179,64,.35);box-shadow:none;transition:transform .2s ease;padding:0;overflow:hidden}
.arcade-card .arc-art{display:block;width:100%;aspect-ratio:16/9;object-fit:cover;transition:transform .35s ease}
.arcade-card:hover .arc-art{transform:scale(1.06)}
.arcade-card .arc-body{padding:10px 12px 12px;display:flex;flex-direction:column;gap:2px}
.arcade-card:hover{transform:translateY(-4px)}
.game-canvas{border-radius:8px;box-shadow:0 0 0 1px rgba(255,179,64,.45),0 10px 24px rgba(0,0,0,.45)}
.qr-wrap{animation:none;border-radius:8px;background:linear-gradient(135deg,#3fd6ff,#ffb340 55%,#ff3b4e)}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .hero-art,.hero-mascot,.cave-bg,.cave-fg{transform:none!important}
  .celebrate{display:none}
}
.vid-thumb{position:relative;overflow:hidden;border-radius:6px}
.vid-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vid-thumb .yt-play{position:relative}
.logo-img{width:auto}.hero-logo{width:auto}.sub-logo{width:auto}
.card.hero-gc{background:linear-gradient(110deg,rgba(4,8,16,.94) 0%,rgba(30,6,12,.78) 55%,rgba(4,8,16,.25) 100%),url('../img/v3/hero-768.webp') 70% 40%/cover no-repeat;border-color:rgba(255,59,78,.45)}
.cave-scene{position:absolute;inset:-3%;width:106%;height:106%;transform:translate3d(calc(var(--px,0) * -10px),calc(var(--py,0) * -6px),0);transition:transform .25s ease-out;will-change:transform}
.cave-scene .cave-bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:none;transition:none}
.cave-decor,.cave-decor-slot{position:absolute;inset:0}
/* Static HUD overlay for live play views (frame, corner ticks, scanlines, vignette).
   One composited layer instead of a full-canvas alpha blit every frame. */
.stage.holo-hud::after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;
  background:
    linear-gradient(var(--cyan),var(--cyan)) 10px 10px/34px 3px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 10px 10px/3px 34px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) calc(100% - 10px) 10px/34px 3px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) calc(100% - 10px) 10px/3px 34px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 10px calc(100% - 10px)/34px 3px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) 10px calc(100% - 10px)/3px 34px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) calc(100% - 10px) calc(100% - 10px)/34px 3px no-repeat,
    linear-gradient(var(--cyan),var(--cyan)) calc(100% - 10px) calc(100% - 10px)/3px 34px no-repeat,
    repeating-linear-gradient(0deg,rgba(160,230,255,.035) 0 1px,transparent 1px 3px),
    radial-gradient(ellipse at center,transparent 55%,rgba(2,5,12,.55) 100%);
  box-shadow:inset 0 0 0 2px rgba(63,214,255,.55),inset 0 0 18px rgba(63,214,255,.25)}
.playview.compact .stage.holo-hud::after{background-size:20px 2px,2px 20px,20px 2px,2px 20px,20px 2px,2px 20px,20px 2px,2px 20px,auto,auto}

.hero-mascot.hit{right:10%;bottom:22%;width:17%;height:42%;transform:none;border-radius:40%}
.hero-mascot.hit:focus-visible{outline:2px solid var(--gold)}
@media (max-width:600px){
  .hotspot .hs-label{bottom:2px;transform:translate(-50%,0);font-size:10px;padding:2px 5px}
  .hotspot:hover .hs-label{transform:translate(-50%,-2px)}
  .hotspot .hs-ping{width:8px;height:8px;right:-3px;top:-3px}
}

/* ===== ManCaveCast demo (self-running #demo loop) ===== */
body.demo-mode .confetti,body.demo-mode .celebrate{z-index:400}

body.demo-mode{display:flex;flex-direction:column;height:100dvh;overflow:visible}
body.demo-mode .foot{display:none}
body.demo-mode #app{padding:8px 12px 10px;flex:1;min-height:0;height:auto;box-sizing:border-box;overflow:hidden}
body.demo-mode .topbar{border-bottom-color:rgba(255,59,78,.45);flex:none}
@media (max-width:1320px){
  body.demo-mode .nav a[data-r="games"] .nl, body.demo-mode .nav a[data-r="chat"] .nl{display:none}
}
.demo-chip{display:inline-flex;align-items:center;gap:6px;margin-right:8px;padding:3px 8px;border:1px solid rgba(63,214,255,.45);
  border-radius:99px;color:#e6f6ff;text-decoration:none;font:700 10px var(--display);letter-spacing:.08em;
  background:rgba(63,214,255,.08);white-space:nowrap;flex:none}
.demo-chip:hover{border-color:var(--cyan);color:#fff}
.demo-chip .live-badge{margin:0}
.demo-page{height:100%;display:flex;flex-direction:column;gap:0;padding:0}
.demo-loop-bar{height:3px;background:rgba(63,214,255,.12);margin:0 0 8px;border-radius:99px;overflow:hidden;flex:none}
.demo-loop-bar i{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--cyan),var(--gold));
  transform:scaleX(0);transform-origin:left center;will-change:transform}
.demo-shell{flex:1;min-height:0;display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,380px);grid-template-rows:minmax(0,1fr);gap:12px;align-items:stretch}
.demo-stage{position:relative;display:flex;flex-direction:column;min-height:0;padding:10px 10px 0;overflow:hidden}
.demo-stage-head{display:flex;align-items:center;gap:10px;padding:0 6px 8px;flex:none}
.demo-replay{flex:1;min-height:0;display:flex;border-radius:6px;overflow:hidden}
.demo-replay .playview,.demo-replay .stage{height:100%;width:100%}
.demo-replay .stage-canvas{width:100%;height:100%;object-fit:contain}
.mcc-mark{display:inline-flex;align-items:baseline;font:700 13px/1 var(--display);letter-spacing:.16em;color:#fff;
  text-shadow:0 0 10px rgba(63,214,255,.55)}
.mcc-mark.lg{font-size:18px;letter-spacing:.18em}
.mcc-mark .mcc-man{color:#fff}
.mcc-mark .mcc-cave{color:var(--gold);text-shadow:0 0 10px rgba(255,215,94,.45)}
.mcc-mark .mcc-cast{color:var(--cyan)}
.demo-bug{position:absolute;top:70px;left:14px;z-index:3;min-width:min(520px,76%);
  background:linear-gradient(160deg,rgba(5,13,28,.88),rgba(11,24,48,.88) 55%,rgba(37,8,15,.82));
  border:1px solid rgba(63,214,255,.4);border-radius:6px;padding:6px 10px;pointer-events:none;
  box-shadow:0 8px 24px rgba(0,0,0,.4)}
.demo-bug .sb-main{margin-top:0;gap:6px}
.demo-bug .sb-score{font-size:28px;text-shadow:0 0 12px rgba(63,214,255,.4)}
.demo-bug .sb-clock{font-size:18px}
.demo-bug .sb-name{font-size:12px}
.demo-bug .blob{width:28px;height:28px;font-size:16px}
.demo-bug .sb-mid{padding:4px 8px}
.demo-bug .sb-dd{font-size:10px}
.demo-lower{position:absolute;left:14px;right:14px;bottom:12px;z-index:3;display:flex;flex-direction:column;gap:4px;
  pointer-events:none;background:linear-gradient(90deg,rgba(4,10,22,.92),rgba(4,10,22,.72) 70%,rgba(4,10,22,.35));
  border:1px solid rgba(63,214,255,.35);border-left:3px solid var(--cyan);border-radius:4px;padding:8px 12px}
.demo-lower-brand{display:flex;align-items:center;gap:8px}
.demo-announce{margin:0;font:700 15px/1.25 var(--font);color:#e6f6ff;opacity:0;transform:translateY(6px);
  animation:none;transition:opacity .35s ease,transform .35s ease}
.demo-announce.in{opacity:1;transform:none}
.demo-side{display:flex;flex-direction:column;gap:10px;min-height:0;height:100%;max-height:100%;overflow:hidden}
.demo-invite{display:flex;align-items:center;gap:12px;padding:10px 12px;flex:none}
.demo-invite-copy{display:flex;flex-direction:column;gap:2px;min-width:0}
.demo-invite-copy b{font:700 15px var(--display)}
.demo-invite-copy small{color:var(--muted);line-height:1.3}
.demo-code{display:inline-block;margin-top:4px;padding:2px 8px;border:1px solid rgba(63,214,255,.4);border-radius:4px;
  font:700 13px ui-monospace,monospace;letter-spacing:.14em;color:var(--gold)}
.demo-qr{width:96px!important;height:96px!important;flex:none;border-radius:12px}
.demo-chat-card{flex:1 1 0;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.demo-chat-card .chat{flex:1 1 auto;height:auto!important;min-height:0!important;max-height:none;display:flex;flex-direction:column}
.demo-chat-list{flex:1 1 auto;min-height:140px;overflow:auto}
.demo-who-card{flex:none;padding:8px 12px}
.demo-who-card h3{margin:0 0 6px;font-size:14px}
.demo-who{display:flex;flex-direction:row;flex-wrap:nowrap;gap:4px;max-height:none;overflow:visible;justify-content:space-between}
.demo-who-row{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;min-width:0;text-align:center}
.demo-who-row b{display:block;font-size:10px;line-height:1.15;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.demo-who-row small{color:var(--muted);font-size:9px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.demo-poll{margin:8px 0;padding:8px;border:1px solid rgba(63,214,255,.3);border-radius:6px;background:rgba(63,214,255,.06)}
.demo-poll.hidden{display:none}
.demo-poll-q{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:6px}
.demo-poll-q small{color:var(--muted)}
.demo-poll-opt{position:relative;display:flex;justify-content:space-between;align-items:center;padding:4px 8px;margin-top:3px;
  border-radius:4px;overflow:hidden;border:1px solid rgba(63,214,255,.15);font:800 12px var(--font)}
.demo-poll-opt.lead{border-color:rgba(255,215,94,.55)}
.demo-poll-fill{position:absolute;inset:0;background:linear-gradient(90deg,rgba(63,214,255,.2),rgba(255,215,94,.25));
  transform:scaleX(0);transform-origin:left center;transition:transform .4s ease;pointer-events:none}
.demo-poll-lab,.demo-poll-pct{position:relative;z-index:1}
.demo-poll-pct{color:var(--gold);font-variant-numeric:tabular-nums}
@media (max-width:860px){
  body.demo-mode{height:auto;min-height:100dvh;overflow:auto}
  body.demo-mode #app{height:auto;flex:none;overflow:visible}
  .demo-page{height:auto}
  .demo-shell{grid-template-columns:1fr;grid-template-rows:auto auto;height:auto}
  .demo-side{height:auto;max-height:none;overflow:visible}
  .demo-stage{min-height:0}
  .demo-replay{min-height:200px;max-height:34vh}
  .demo-invite{padding:8px 10px}
  .demo-qr{width:72px!important;height:72px!important}
  .demo-chat-card{min-height:38vh;flex:1 1 auto}
  .demo-bug{min-width:auto;right:14px;top:58px}
  .demo-bug .sb-score{font-size:22px}
  .demo-logo-lg{height:32px!important}
}
@media (prefers-reduced-motion:reduce){
  .demo-announce,.demo-poll-fill,.demo-loop-bar i{transition:none}
  .msg.msg-in{animation:none}
}

/* ===== ManCaveCast neon logo (transparent cutout) ===== */
.mcc-logo-pic{display:inline-flex;align-items:center;line-height:0;flex:none;max-width:100%}
.mcc-logo{width:auto;height:64px;max-width:100%;display:block;object-fit:contain;filter:drop-shadow(0 0 10px rgba(168,85,247,.45))}
.page-head .mcc-logo{height:72px}
.invite .mcc-logo-pic{margin:0 auto 10px;display:block}
.invite .mcc-logo{height:110px;margin:0 auto;filter:drop-shadow(0 0 12px rgba(168,85,247,.55))}
.demo-logo{height:28px;filter:drop-shadow(0 0 8px rgba(168,85,247,.5))}
.demo-logo-lg{height:48px}
.demo-invite-logo{height:44px;margin:0 0 4px}
.tile-mcc-logo{height:72px;margin:0 0 8px;filter:drop-shadow(0 0 8px rgba(168,85,247,.4))}
.tile.tile-mcc{border-color:rgba(168,85,247,.35)}
.hotspot-mcc .mcc-logo-pic{position:absolute;top:7%;right:6%;left:auto;transform:none;width:16%;max-width:64px;height:auto;pointer-events:none;z-index:2;filter:drop-shadow(0 2px 6px rgba(0,0,0,.7))}
.hotspot-mcc .hs-mcc-logo{width:100%;height:auto}
.page-head:has(.mcc-logo-pic){align-items:flex-start}
@media (max-width:600px){
  .page-head .mcc-logo{height:52px}
}
@media (max-width:860px){
  .tile-mcc-logo{height:60px}
  .hotspot-mcc .mcc-logo-pic{width:20%;max-width:52px;top:6%;right:5%}
}
