.light-entering{overflow:hidden}.light-entering body>header,.light-entering .review-bar,.light-entering .room-status,.light-entering .night-hero-copy,.light-entering .hero-bottom,.light-entering .chapter-rail,.light-entering .find-light{opacity:0!important;transition:opacity .35s ease!important;pointer-events:none}
.light-passage{position:fixed;inset:0;z-index:150;isolation:isolate;overflow:hidden;pointer-events:auto;--passage-duration:1350ms;background:#07101820}
.passage-room{position:absolute;inset:0;background:url('/assets/fireside-room.webp') 60% center/cover;opacity:0;--mask-core:0px;--mask-edge:1px;mask-image:radial-gradient(circle at var(--passage-x) var(--passage-y),#000 0,#000 var(--mask-core),transparent var(--mask-edge));-webkit-mask-image:radial-gradient(circle at var(--passage-x) var(--passage-y),#000 0,#000 var(--mask-core),transparent var(--mask-edge))}
.passage-frame{border:0;position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .18s ease;pointer-events:none;background:#071018}.passage-frame.ready{opacity:1}
.passage-glow{position:absolute;inset:0;background:radial-gradient(circle at var(--passage-x) var(--passage-y),#dfb07188 0,#c1905340 12%,#a1753a0d 42%,transparent 70%);opacity:0;pointer-events:none;mix-blend-mode:screen}
.passage-skip{position:absolute;right:35px;bottom:26px;z-index:3;padding:12px;min-height:44px;color:#e3d1b8;font-size:11px;letter-spacing:.1em;border-bottom:1px solid #c8a77966;text-shadow:0 1px 7px #000;background:#07101880;box-sizing:border-box}.passage-skip:focus-visible{outline:1px solid #c8a779;outline-offset:5px}
.playing .passage-room{animation:roomPassage var(--passage-duration) cubic-bezier(.22,.5,.3,1) forwards}.playing .passage-glow{animation:lightBloom var(--passage-duration) ease-in-out forwards}
.passage-whisper{position:absolute;left:5%;right:5%;top:70%;margin:0;text-align:center;font-family:var(--serif,Georgia,serif);font-size:clamp(18px,2vw,25px);letter-spacing:.15em;color:#e4d3ba;text-shadow:0 2px 15px #030c12;opacity:0;pointer-events:none}.playing .passage-whisper{animation:passageWords var(--passage-duration) ease-in-out forwards}
.passage-door{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:62% 47%;transform-origin:62% 47%}.antique-passage .passage-room{background:#0c171d;mask-image:none;-webkit-mask-image:none}.antique-passage .passage-glow{background:radial-gradient(ellipse at 62% 47%,#e5b56d45,transparent 60%)}.antique-passage.playing .passage-door{animation:doorApproach var(--passage-duration) cubic-bezier(.2,.75,.25,1) forwards}.antique-passage.playing .passage-room{animation:doorArrival var(--passage-duration) ease-in-out forwards}
@keyframes roomPassage{0%,10%{opacity:0}45%{opacity:.6}85%,100%{opacity:1}}@keyframes lightBloom{0%{opacity:0}30%{opacity:.6}55%{opacity:.8}100%{opacity:0}}@keyframes passageWords{0%,15%{opacity:0;transform:translateY(4px)}35%,65%{opacity:.9;transform:none}100%{opacity:0;transform:none}}@keyframes doorApproach{0%{transform:scale(1);opacity:1}55%{opacity:1}100%{transform:scale(1.12);opacity:0}}@keyframes doorArrival{0%,35%{opacity:0}100%{opacity:1}}
@media(max-width:700px){.passage-room{background-position:80% center}.passage-skip{right:20px;bottom:20px}.passage-door{object-position:60% center}}
@media(prefers-reduced-motion:reduce){.light-passage{display:none}}
