/* Matching photographic frames span navigation; never fade the page to black. */
#forest-journey{position:fixed;inset:0;z-index:10000;overflow:hidden;visibility:hidden;opacity:0;pointer-events:none;background:#030d0b;contain:strict;touch-action:none}
.journey-busy #forest-journey,.journey-arriving #forest-journey{visibility:visible;pointer-events:auto}
.journey-arriving #forest-journey{opacity:1}
.journey-scene{position:absolute;inset:0;background:#030d0b url('/assets/train-scene/train-clean.webp') center/cover;transform-origin:center;will-change:transform}
.journey-scene::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(3,13,11,.72),rgba(3,13,11,.88) 45%,rgba(3,13,11,.95));z-index:2}
.journey-train,.journey-parked-train{position:absolute;left:0;top:0;width:700px;height:1080px;transform-origin:0 0;visibility:hidden}
.journey-train img,.journey-parked-train img{position:absolute;left:0;width:700px;max-width:none;pointer-events:none}
.journey-train-body{top:520px;height:90px}.journey-train-reflection{top:720px;height:120px}
/* Never restore the baked-in train, including reduced motion and failed loads. */
.bg-bleed{background-image:url('/assets/train-scene/train-clean.webp');overflow:hidden}
.bg-bleed::after{z-index:2}
.journey-static-ready .journey-parked-train{visibility:visible}
.journey-canopy{display:none}
.journey-grain{position:absolute;inset:0;background:repeating-linear-gradient(0deg,#ffffff03 0 1px,transparent 1px 3px);pointer-events:none;z-index:4}
.journey-arriving .journey-scene{transform:translateX(-7%) scale(1.18)}
/* Head script applies this before first paint, even before the body overlay is parsed. */
.journey-arriving::before{content:'';position:fixed;inset:0;z-index:9999;background:linear-gradient(180deg,rgba(3,13,11,.72),rgba(3,13,11,.88) 45%,rgba(3,13,11,.95)),url('/assets/train-scene/train-clean.webp') center/cover;transform:translateX(-7%) scale(1.18);pointer-events:none}
.journey-busy .cursor-dot,.journey-busy .cursor-ring{opacity:0!important}
html.journey-arriving::view-transition-old(root),html.journey-arriving::view-transition-new(root){animation:none;mix-blend-mode:normal}
html.journey-arriving::view-transition-old(root){opacity:0}
.journey-status{position:fixed;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(prefers-reduced-motion:reduce){#forest-journey,.journey-arriving::before,.journey-parked-train{display:none!important}}
@media print{#forest-journey,.journey-status{display:none!important}}

.journey-arriving.journey-overlay-ready::before{display:none}

/* The shared forest owns navigation; disable the previous hard shutter entirely. */
@view-transition { navigation: none; }
