/* Monumental foyer: mirrored architectural planes, one floor and integrated uplights. */
.theatre-view .foyer-sky{background:radial-gradient(ellipse 46% 73% at 50% 22%,#111316 0%,#040506 43%,#010203 81%),#010203}
.theatre-view .foyer-milky-way{display:none}
.foyer-architecture{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.foyer-room-geometry{display:block;width:100%;height:100%;overflow:hidden}
.theatre-view .foyer-stardust{opacity:.23;mask-image:linear-gradient(transparent 8%,#000 35%,#000 68%,transparent 90%)}
.theatre-view .foyer-floor{background:transparent}
.theatre-view .foyer-floor::before,.theatre-view .foyer-floor>svg,.theatre-view .foyer-floor-ray,.theatre-view .foyer-floor-glow{display:none}
.theatre-view .foyer-door-frame,.theatre-exit-door .exit-door-leaves{inset:7px 7px 0;border:5px solid #111315;border-bottom:0;background:#090a0c;box-shadow:inset 0 1px 1px #ffffff38,inset 1px 0 #ffffff1a,inset -1px 0 #ffffff1a,0 0 0 1px #ffffff12}
.theatre-view .foyer-door-leaf,.theatre-exit-door .exit-door-leaf{overflow:hidden;background:linear-gradient(180deg,#1b1e21,#0c0e10 37%,#030405 72%,#101215);box-shadow:inset 0 0 38px #00000015}
.theatre-view .foyer-door-leaf.is-right,.theatre-exit-door .exit-door-leaf.is-right{background:linear-gradient(180deg,#1b1e21,#0c0e10 37%,#030405 72%,#101215);border-left:1px solid #030405a6}
.door-base-light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse 32% 100% at 50% 115%,#f7f8fa60,transparent 84%),radial-gradient(ellipse 88% 62% at 50% 106%,#eceff314,transparent 90%)}
.door-base-light::after{content:'';position:absolute;bottom:0;left:43%;width:14%;height:3px;border-radius:50%;background:#fff;box-shadow:0 -5px 18px #ffffff85,0 -22px 33px #ffffff24;filter:blur(1px)}
.theatre-view .foyer-door-contour,.theatre-view .foyer-door-color-wipe{z-index:4}
.theatre-view .foyer-door-outline{stroke-width:1.4}
.theatre-view .foyer-door-rim{stroke-width:3.2;opacity:.7}
.theatre-view .foyer-door-bloom{stroke-width:11;opacity:.29}
.theatre-view .foyer-door-halo{stroke-width:30;opacity:.15}
.theatre-exit-door>svg{z-index:4}
@media(min-width:1280px) and (min-height:720px){
 .theatre-view .foyer-space{--door-width:17.571884984cqw;--door-height:34.3375cqw;--foyer-edge:9.5cqw}
 .theatre-view .foyer-door-space{top:auto;bottom:19.95%;width:var(--door-width);height:var(--door-height)}
 .theatre-view .foyer-panel{top:47%;width:clamp(252px,17.5cqw,310px);height:clamp(390px,26.8cqw,470px);border-width:5px;background:linear-gradient(135deg,#ffffff0c,#17191b85 48%,#ffffff04);box-shadow:0 0 0 1px #ffffff24,inset 0 0 0 1px #ffffff14,0 24px 50px #0009}
 .theatre-view .foyer-identity{left:var(--foyer-edge);right:auto}
 .theatre-view .foyer-bill{right:var(--foyer-edge);left:auto}
 .theatre-view .foyer-identity h1{font-size:clamp(17px,1.3cqw,23px)}
 .theatre-view .foyer-play h3{font-size:clamp(13px,.9cqw,16px)}
 .theatre-view .foyer-play p{font-size:clamp(10px,.66cqw,12px)}
}
@media(max-width:1279px),(max-height:719px){
 .foyer-architecture{opacity:.85}
 .theatre-view .foyer-door-space{--door-width:clamp(150px,19vw,220px);--door-height:clamp(320px,40vw,470px)}
}
@media(max-width:900px){
 .foyer-architecture{top:430px;bottom:0}
 .theatre-view .foyer-door-space{top:660px;--door-width:150px;--door-height:320px}
}
@media(max-width:760px){
 .foyer-architecture{top:870px;bottom:0}
 .theatre-view .foyer-door-space{top:1040px;--door-width:150px;--door-height:320px}
}

/* The curtain of colour originates at y594 of the 600-unit live door, not at the screen centre. */
.room-show-reflections{opacity:0;transition:opacity .8s ease}
.has-ticket .room-show-reflections{opacity:1;transition-duration:3.6s}
/* Surface washes share the ticket's gradual reveal, without independent pulse layers. */
.room-reflection-field{animation:none;opacity:.8}
.room-reflection-field.is-high{opacity:.45}
.theatre-view .foyer-page-bar{justify-content:flex-end}
.theatre-view .foyer-page-bar .foyer-page-tools{gap:18px}
.foyer-desktop-return{font-size:12px!important;line-height:1.5;padding:6px 13px!important;border-radius:9px;white-space:nowrap;letter-spacing:.015em}
@media(min-width:1280px) and (min-height:720px){
 .theatre-view:not(.theatre-in-hall) .topbar{background:#ffffff03;border-color:#ffffff14;box-shadow:inset 0 1px #ffffff0b;backdrop-filter:blur(8px)}
 .theatre-view:not(.theatre-in-hall) .footer{bottom:1.65%;align-items:center;min-height:30px}
 .theatre-view .footer>.foyer-desktop-return{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:#ffffff06;color:#bdc1c6;border-color:#ffffff20;transition:background .6s,color .6s}
 .theatre-view .footer>.foyer-desktop-return:hover{background:#ffffff12;color:#fff}
 .theatre-view .foyer-door-light{animation-duration:11s}
 .theatre-view .foyer-door-halo{opacity:.1}
 .theatre-view .door-base-light{opacity:.75}
}
@media(max-width:1279px),(max-height:719px){
 .theatre-view:not(.theatre-in-hall) .footer{position:relative;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px}
 .theatre-view .footer>.foyer-desktop-return{margin:auto}
}
@media(prefers-reduced-motion:reduce){.room-reflection-field{animation:none}.room-show-reflections,.has-ticket .room-show-reflections{transition-duration:.4s}}

/* The wave and its floor reflection share a single bounded SVG and animation timeline. */
.theatre-view .foyer-aurora{inset:0;left:0;top:0;width:100%;height:100%;z-index:1;overflow:hidden}
.theatre-view .foyer-door{filter:none}
.theatre-view .foyer-aurora-haze{display:none}
.theatre-view .aurora-veils{filter:none}
.theatre-view .aurora-current,.theatre-view .has-ticket .aurora-current{animation:none;opacity:.86}
.theatre-view .has-ticket .foyer-aurora{transition:opacity 3.6s cubic-bezier(.42,0,.58,1),visibility 0s}
.room-floor-grid{opacity:.82;transition:opacity 3.6s ease}
.has-ticket .room-floor-grid{opacity:1}
/* One centre emitter for the complete doorway; each leaf receives half of its wash. */
.door-base-light{background:radial-gradient(ellipse 64% 100% at 100% 115%,#f7f8fa45,transparent 84%)}
.door-base-light.is-right{background:radial-gradient(ellipse 64% 100% at 0% 115%,#f7f8fa45,transparent 84%)}
.door-base-light::after{display:none}
.theatre-view .door-base-light{transition:opacity 3.6s ease-in-out}
.theatre-view .has-ticket .door-base-light{opacity:.12}
@media(prefers-reduced-motion:reduce){.theatre-view .has-ticket .foyer-aurora,.room-floor-grid{transition-duration:.4s}}
/* Diffuse light above the door and its shorter floor reflection share the sill.
   A bounded viewport SVG avoids multiplying the existing aurora filter buffers. */
.foyer-door-beam{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.foyer-door-beam>svg{display:block;width:100%;height:100%;overflow:hidden}
.door-beam-white{opacity:.85;transition:opacity 3.6s ease-in-out}
.door-beam-colour{opacity:0;transition:opacity 3.6s ease-in-out}
.has-ticket .door-beam-white{opacity:0}
.has-ticket .door-beam-colour{opacity:1}
@media(max-width:900px){.foyer-door-beam{top:430px}}
@media(max-width:760px){.foyer-door-beam{top:870px}}
@media(prefers-reduced-motion:reduce){.door-beam-white,.door-beam-colour{transition-duration:.4s}}
