/* The rear portal stays behind the original room wall; the floor is continuous. */
.hall-master-stage,.hall-master-overhead,.hall-master-curtain{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}
.hall-master-stage[hidden],.hall-master-overhead[hidden],.hall-master-curtain[hidden]{display:none}
.hall-master-curtain{z-index:5}
.hall-master-ceiling{display:none;position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-floor{top:var(--master-floor-horizon);z-index:1}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-floor svg{opacity:calc(.38 + var(--wall-power,1)*.52)}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-architecture{z-index:6}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-wall-left{transform:translateX(calc(var(--wall-open,0)*var(--master-wall-left-travel)))}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-wall-right{transform:translateX(calc(var(--wall-open,0)*var(--master-wall-right-travel)))}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-wall-contours{opacity:calc(.24 + var(--wall-power,1)*.76)}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-master-ceiling{display:block;z-index:6;clip-path:inset(0 0 calc(100% - var(--master-roof-height)) 0);opacity:calc(.24 + var(--wall-power,1)*.76)}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-volumetric-lights,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-moving-lights{z-index:7}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-title,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-atmosphere{z-index:10}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-title{inset:auto;left:var(--master-screen-x);top:var(--master-screen-y);width:var(--master-screen-width);height:var(--master-screen-height);padding:0;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr)}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-title img{width:128%;max-width:none;max-height:none}
/* Leave transparent breathing room around the complete Mermaid projection.
   The pixel mask contains the image and its halo rather than cropping 128% artwork. */
.theatre-hall[data-production="mermaid"][data-stage-layout="physical"][data-master-stage-ready="true"] .hall-title{left:calc(var(--master-screen-x) - var(--master-screen-width)*.08);top:calc(var(--master-screen-y) - var(--master-screen-height)*.08);width:calc(var(--master-screen-width)*1.16);height:calc(var(--master-screen-height)*1.16)}
.theatre-hall[data-production="mermaid"][data-stage-layout="physical"][data-master-stage-ready="true"] .hall-title img{width:86.206897%}
/* The finale projection lives inside the stage. The actual opaque wall halves
   pass in front of it; no dark backdrop or additional title mask is added. */
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"][data-title-plane="stage"] .hall-title{z-index:4}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"][data-title-plane="stage"] .hall-architecture,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"][data-title-plane="stage"] .hall-master-ceiling{mask-image:linear-gradient(to bottom,#000 0%,#000 calc(var(--wall-reveal,1)*125% - 25%),transparent calc(var(--wall-reveal,1)*125%));-webkit-mask-image:linear-gradient(to bottom,#000 0%,#000 calc(var(--wall-reveal,1)*125% - 25%),transparent calc(var(--wall-reveal,1)*125%))}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-return,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-performance-controls,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-performance-message,
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-performance-end{z-index:11}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-screen{inset:0;display:block}
.theatre-hall[data-stage-layout="physical"][data-picture-clock="media"][data-performance="playing"] .hall-screen.is-visible,
.theatre-hall[data-stage-layout="physical"][data-picture-clock="media"][data-performance="dissolving"] .hall-screen.is-visible{opacity:var(--master-picture-reveal,0)}
.theatre-hall[data-stage-layout="physical"][data-master-stage-ready="true"] .hall-screen-frame{position:absolute;left:var(--master-screen-x);top:var(--master-screen-y);width:var(--master-screen-width);height:var(--master-screen-height);max-width:none;aspect-ratio:16/9;transition:none;mask-image:linear-gradient(90deg,transparent,#000 .6%,#000 99.4%,transparent),linear-gradient(0deg,transparent,#000 .6%,#000 99.4%,transparent);-webkit-mask-image:linear-gradient(90deg,transparent,#000 .6%,#000 99.4%,transparent),linear-gradient(0deg,transparent,#000 .6%,#000 99.4%,transparent)}
