/* Only the Forest homepage opening scene receives the reference treatment. */
.forest-viewport-measure{position:fixed;top:0;left:0;width:0;height:100vh;height:100lvh;visibility:hidden;pointer-events:none;contain:strict}
.home-hero-photo-track{display:contents}
body.forest-home.sticky-forest-opening .home-hero-photo-track{display:block;position:absolute;inset:0 auto auto 0;width:100%;height:var(--forest-track-height);z-index:-2;pointer-events:none}
body.forest-home.sticky-forest-opening .home-hero-photo-track>.hero-image{position:sticky;inset:var(--forest-sticky-top) auto auto 0;width:100%;z-index:auto;transform:none!important;will-change:auto}
/* Let the departing scene overlap the next section. Contain wide cloud
   textures at the page boundary rather than cutting them at the hero edge. */
body.forest-home .home-hero{overflow:visible}
/* Frame the photograph independently of the space reserved for section copy.
   Crossfade once; dimming it again exposes a dark block before the roof. */
body.forest-home .hero-image{height:100vw;min-height:100svh;transform:translate3d(0,var(--forest-hero-shift,0px),0);opacity:var(--forest-hero-opacity,1);filter:none}
/* The page curtain handles arrival; keep scroll in charge of image opacity. */
body.forest-home.entering .hero-image{animation:none}
body.forest-home .hero-title{opacity:var(--forest-copy-opacity,1)}
/* The complete Vision group waits for the opening sentence to clear. */
body.forest-home .home-studio>.approach-copy{opacity:var(--forest-studio-opacity,1)}
body[data-page="home"].forest-home .hero-title :is(h1,.hero-introduction){opacity:1;transition:none}
.forest-photo-canvas{display:none}
body.forest-home .hero-image img{filter:none;object-position:center;visibility:visible}
/* Retain the intact photograph beneath refraction, including after resize. */
body.forest-home .forest-photo-canvas{position:absolute;inset:0;z-index:0;width:100%;height:100%;display:block;opacity:0;pointer-events:none;user-select:none}
body.forest-home .forest-photo-canvas[data-photo-ready="true"]{opacity:1}
body.forest-home .forest-flow-canvas{position:absolute;left:0;z-index:1;display:block;pointer-events:none;user-select:none}
@media(prefers-reduced-motion:reduce),(max-width:767px),(hover:none),(pointer:coarse){body.forest-home .forest-flow-canvas{display:none}body.forest-home .hero-image[data-forest-flow]>img{opacity:1}}
body.forest-home .home-hero::after{display:none}
/* Cloud travel follows the reference's own square stage, independently of
   the shorter responsive hero used for this site's content layout. */
body.forest-home .home-hero .cloud-field{--cloud-opacity:1;height:100vw;opacity:1;mask-image:none;overflow:visible;transform:translate3d(0,var(--forest-cloud-shift,0px),0)}
body.forest-home.entering .home-hero .cloud-field{animation:none}
body.forest-home .home-hero .cloud-layer{left:0;top:-18.375vw;width:233.75vw;height:112.5vw;opacity:1;filter:none}
body.forest-home .home-hero .cloud-layer-b{left:0;top:0;width:168.75vw;height:81.25vw;opacity:1;filter:none}
body.forest-home .home-hero .cloud-track{animation:none;transform:none;align-items:flex-start}
body.forest-home .home-hero .cloud-track img{height:auto;animation:forest-cloud-first 100s linear -50s infinite;animation-play-state:paused}
body.forest-home .home-hero .cloud-track img+img{animation-name:forest-cloud-second;animation-delay:0s}
body.forest-home .home-hero .cloud-layer:where(.forest-cloud-visible) .cloud-track img{animation-play-state:running}
body.forest-home:is(.menu-open,.motion-paused) .home-hero .cloud-track img{animation-play-state:paused}
@keyframes forest-cloud-first{from{transform:translateX(100%)}to{transform:translateX(-100%)}}
@keyframes forest-cloud-second{from{transform:translateX(0)}to{transform:translateX(-200%)}}
@media(max-width:767px){
 body.forest-home .hero-image{height:296.2686567164vw}
 body.forest-home .home-hero .cloud-field{height:296.2686567164vw}
 body.forest-home .home-hero .cloud-layer{top:34.8258706468vw;width:139.8009950249vw;height:67.4129353234vw}
 body.forest-home .home-hero .cloud-layer-b{top:54.7263681592vw;width:193.7810945274vw;height:93.2835820896vw}
}
/* With no coverage motion, retain a continuous static image for the full scene. */
@media(prefers-reduced-motion:reduce){body.forest-home .hero-image{height:100%;transform:none;opacity:1;filter:none}body.forest-home .home-hero .cloud-track img{animation:none!important}}

