.hallway-flight { position:fixed;inset:0;width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:0;border:0;background:#000;color:#eee9df;overflow:hidden;opacity:1;transition:opacity 1s ease; }
.hallway-flight:not([open]) { display:none; }
.hallway-flight::backdrop { background:transparent; }
.hallway-in-transit { overflow:hidden; }
.hallway-world { position:absolute;inset:0;overflow:hidden; }
.hallway-perspective { position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:#eee9df;stroke-width:.55;opacity:.22; }
.hallway-arches,.hallway-memories { position:absolute;inset:0; }
.hallway-arch { position:absolute;left:50%;top:48%;width:min(58vw,600px);height:90vh;opacity:0;transform:translate(-50%,-50%) scale(.08);will-change:transform,opacity; }
.hallway-arch svg { width:100%;height:100%;fill:none;stroke:#eee9df;stroke-width:1; }
.hallway-etch { opacity:.35;stroke-width:.65; }
.is-flying .hallway-arch { animation:hallway-rush 2.25s cubic-bezier(.55,.03,.83,.4) var(--pass) both; }
.hallway-memory { position:absolute;left:50%;top:48%;width:clamp(110px,23vw,330px);max-height:44vh;object-fit:contain;opacity:0;transform:translate(-50%,-50%) scale(.06);filter:brightness(.75);will-change:transform,opacity;box-shadow:0 0 40px 20px #000; }
.is-flying .hallway-memory { animation:memory-pass 1.55s cubic-bezier(.32,.05,.7,.6) var(--photo-delay) both; }
.hallway-whisper { position:absolute;left:24px;right:24px;bottom:85px;text-align:center;font:9px 'Bodoni Moda',Georgia,serif;letter-spacing:.3em;opacity:0; }
.is-flying .hallway-whisper { animation:hallway-whisper 2.8s ease both; }
.hallway-skip { position:absolute;right:max(22px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom));padding:14px;border:0;background:#000;color:#eee9df;font:9px 'Bodoni Moda',Georgia,serif;letter-spacing:.16em;min-height:44px; }
.hallway-skip:focus-visible { outline:1px solid #eee9df;outline-offset:3px; }
.hallway-flight.is-opening { opacity:0;pointer-events:none; }
@keyframes hallway-rush {
  0%{opacity:0;transform:translate(-50%,-50%) scale(.08) rotate(-.3deg)}
  15%{opacity:.3}
  65%{opacity:.75;transform:translate(-50%,-49%) scale(.9) rotate(.3deg)}
  100%{opacity:0;transform:translate(-50%,-51%) scale(4.8) rotate(-.25deg)}
}
@keyframes memory-pass {
  0%{opacity:0;transform:translate(-50%,-50%) scale(.06)}
  25%{opacity:.85}
  70%{opacity:1;filter:brightness(1)}
  100%{opacity:0;transform:translate(calc(-50% + var(--away-x)),calc(-50% + var(--away-y))) scale(1.65) rotate(var(--photo-turn))}
}
@keyframes hallway-whisper { 15%,65%{opacity:.5}100%{opacity:0} }
@media(max-width:600px){.hallway-arch{width:76vw}.hallway-memory{width:34vw}}
@media(prefers-reduced-motion:reduce){.hallway-flight{transition:none}.hallway-flight *{animation:none!important}}
