.hall{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:28px;align-items:start}.show-kicker,.eyebrow{font:12px/1.5 var(--ww-font-mono);margin:0 0 12px}.musical-title{font-size:clamp(38px,4vw,54px);margin:0 0 18px}.musical-tagline{font-size:18px}.show-intro{margin-bottom:16px}.stage-column{min-width:0}.musical-note{max-width:75ch;margin:0 0 18px}.stage-frame{position:relative;overflow:hidden;aspect-ratio:16/10;min-height:320px;border:1px solid var(--ww-lilac-haze);border-radius:8px;background:var(--ww-lilac-haze)}.scene-background{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.prop-layer,.character-layer{position:absolute;inset:0;pointer-events:none}.character-layer{z-index:3}.prop-layer{z-index:2}.footlights,.stage-vignette,.stage-sweep,.stage-setting,.act-badge{display:none}.scene-transition{display:none}.surtitle{min-height:56px;padding-top:12px}.beat-caption{font-size:14px}.playbill{padding-top:0;min-width:0}.ticket{background:var(--ww-lilac-haze);padding:20px;border-radius:8px;height:auto!important}.ticket-measure{position:absolute;left:-10000px;visibility:hidden}.scene-title{font:600 24px/1.2 var(--ww-font-display);margin:0 0 10px}.scene-caption{font-size:14px;line-height:1.55}.ticket-meta{margin:16px 0 0;font-size:12px}.ticket-meta>div{display:grid;grid-template-columns:55px 1fr;gap:10px;margin:5px 0}.ticket-meta dt{font-family:var(--ww-font-mono)}.ticket-meta dd{margin:0;overflow-wrap:anywhere}.progress-wrap{height:4px;background:var(--ww-lilac-haze);margin:20px 0 12px}.progress-bar{height:100%;width:0;background:var(--ww-foxglove)}.controls{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.controls button,.scene-list button{font:600 14px/1.4 var(--ww-font-body);color:var(--ww-slate);background:var(--ww-cream);border:1px solid var(--ww-slate);border-radius:8px;min-height:44px;cursor:pointer;padding:8px}.controls .primary{background:var(--ww-slate);color:var(--ww-cream)}.controls button:hover{border-color:var(--ww-foxglove)}.hint{font-size:11px;line-height:1.6;margin:12px 0 22px}kbd{font-family:var(--ww-font-mono)}.scene-list{padding:0;list-style:none;margin:0}.scene-list li{margin-bottom:5px}.scene-list button{display:flex;text-align:left;gap:10px;width:100%;border-color:var(--ww-lilac-haze);font-size:13px;font-weight:400}.scene-list button.active{background:var(--ww-lilac-haze);font-weight:600}.scene-list .num{font:12px/1.6 var(--ww-font-mono)}.act-divider{font:12px/1.5 var(--ww-font-mono);padding-top:10px}.credits{font-size:11px;margin:18px 0}.dialogue{position:absolute!important;left:4%!important;right:4%;top:4%!important;bottom:auto!important;max-width:none!important;width:auto!important;transform:none!important;background:var(--ww-cream);color:var(--ww-slate);padding:10px 14px;border:1px solid var(--ww-slate);border-radius:8px;z-index:30;opacity:0;pointer-events:none}.dialogue.show{opacity:1}.dialogue .who{font-weight:700;font-size:12px;margin:0 0 3px}.dialogue .what{font-size:14px;line-height:1.4;margin:0}.actor{position:absolute;left:var(--ax,50%);bottom:var(--ay,6%);width:var(--aw,120px);z-index:var(--az,3);transform:translateX(-50%) scale(var(--collision-scale,1)) scaleX(var(--aflip,1));transform-origin:center bottom;opacity:0;transition:left 1100ms,bottom 900ms,opacity 360ms}.actor.on{opacity:1}.actor.speaking{z-index:20}.actor .body{display:block;margin:auto;max-height:240px;max-width:100%;width:auto;animation:var(--asset-loop,character-bob 3.8s ease-in-out infinite)}.actor .nametag{display:none}.actor.walking .body{animation:walk-cycle .46s infinite}.actor.speaking .body{animation:speak-lean .5s infinite}.stage-asset{position:absolute;left:var(--asset-left,50%);bottom:var(--asset-bottom,8%);z-index:var(--asset-z,2);width:var(--asset-width,120px);transform:translateX(-50%) rotate(var(--asset-rotate,0deg)) scaleX(var(--asset-flip,1)) scale(var(--asset-scale,1)) scale(var(--collision-scale,1));transform-origin:center bottom;animation:var(--asset-loop,none)}.prop{--asset-width:100px}.floating-prop{--asset-z:8}.motion-work,.motion-sway,.motion-restless,.motion-bus,.motion-hustle,.motion-lounge,.motion-sizzle,.motion-alone,.motion-glow{--asset-loop:character-bob 3.8s ease-in-out infinite}.motion-dance{--asset-loop:dance-bounce .62s ease-in-out infinite}.motion-dance2{--asset-loop:dance-kick .74s ease-in-out infinite}.motion-sing{--asset-loop:speak-lean .9s ease-in-out infinite}.motion-drift,.motion-pulse,.motion-spark{--asset-loop:character-bob 5s ease-in-out infinite}@keyframes character-bob{0%,100%{translate:0 0}50%{translate:0 -5px}}@keyframes walk-cycle{0%,100%{transform:rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}@keyframes speak-lean{0%,100%{transform:rotate(0deg)}50%{transform:translateY(-3px) rotate(1deg)}}@keyframes dance-bounce{0%,100%{translate:0 0;rotate:-3deg}50%{translate:0 -8px;rotate:3deg}}@keyframes dance-kick{0%,100%{translate:0 0}50%{translate:8px -6px;rotate:5deg}}#songAudio{display:none}
@media(max-width:1024px){.hall{grid-template-columns:minmax(0,1fr) 270px;gap:20px}.stage-frame{aspect-ratio:4/3}.actor .body{max-height:180px}}
@media(max-width:720px){.hall{grid-template-columns:1fr;gap:20px}.stage-frame{min-height:340px;aspect-ratio:1}.actor .body{max-height:150px}.dialogue .what{font-size:13px}.show-intro{margin-bottom:12px}.surtitle{min-height:0}.controls{grid-template-columns:repeat(3,1fr)}.scene-list{display:grid;grid-template-columns:1fr 1fr;gap:6px}.act-divider{grid-column:1/-1}.scene-list button{height:100%}.musical-title{font-size:38px}}
@media(prefers-reduced-motion:reduce){.actor,.actor .body,.stage-asset{animation:none!important;transition:none!important}.actor.on{opacity:1}}
