/* Progressive enhancement: the document stays usable without animation. */
.hero-scroll-stage{position:relative;padding-bottom:24px;height:calc(var(--hero-height,680px) - var(--hero-collapse,0px) + var(--hero-flow-y,0px) + 24px);overflow-anchor:none}
.hero-scroll-stage .hero{position:relative;top:0;height:calc(var(--hero-height,680px) - var(--hero-collapse,0px));min-height:0;transform:translateY(var(--hero-flow-y,0px));transform-origin:center 15%;border-radius:var(--hero-radius,25px);will-change:height,transform}
.hero-scroll-stage .hero::before{transform:translateY(var(--hero-image-y,0px)) scale(var(--hero-image-scale,1.06));will-change:transform}
.hero-scroll-stage .hero-content{transform:translateY(var(--hero-text-y,0px));opacity:var(--hero-text-opacity,1);will-change:transform}
.motion-reveal{transition:opacity .9s cubic-bezier(.22,1,.36,1),transform 1.05s cubic-bezier(.22,1,.36,1);transition-delay:var(--reveal-delay,0ms)}
.motion-reveal.motion-pending{opacity:0;transform:translateY(var(--reveal-y,58px))}
.about.motion-about{transform:scale(var(--about-scale,.985));transform-origin:center;transition:opacity .8s ease;will-change:transform}
.about.motion-about.motion-pending{transform:translateY(var(--reveal-y,58px)) scale(.985)}
.about.motion-about .about-visual img{transform:translateY(var(--about-image-y,0px)) scale(1.06);will-change:transform}
@media(max-width:620px){.hero-scroll-stage .hero{top:0}.motion-reveal.motion-pending{transform:translateY(var(--reveal-y,34px))}}
@media(prefers-reduced-motion:reduce){.hero-scroll-stage{height:auto!important;padding-bottom:0}.hero-scroll-stage .hero{position:relative;top:0;transform:none;min-height:var(--hero-height,600px)}.hero-scroll-stage .hero::before,.hero-scroll-stage .hero-content,.about.motion-about,.about.motion-about .about-visual img{transform:none!important;opacity:1!important}.motion-reveal,.motion-reveal.motion-pending{opacity:1;transform:none;transition:none}}

/* Reserve only the scroll distance needed to contract, then release immediately. */
.hero-scroll-stage .hero::before{inset:-40px;transform-origin:center;backface-visibility:hidden}.hero-scroll-stage .hero h1{transform:translateY(calc(var(--hero-progress,0)*-14px))}.hero-scroll-stage .hero .eyebrow{transform:translateY(calc(var(--hero-progress,0)*-18px))}.hero-scroll-stage .hero .actions{transform:translateY(calc(var(--hero-progress,0)*5px))}@media(prefers-reduced-motion:reduce){.hero-scroll-stage .hero h1,.hero-scroll-stage .hero .eyebrow,.hero-scroll-stage .hero .actions{transform:none}}

/* Match the published composition at rest; crop vertically during contraction. */
.hero-scroll-stage .hero::before{inset:0 0 auto;height:var(--hero-height,720px);transform:translateY(var(--hero-image-y,0px));transform-origin:center top}.motion-reveal.motion-pending.project,.motion-reveal.motion-pending.edit-feature,.motion-reveal.motion-pending.design-feature{transform:translateY(var(--reveal-y,58px)) scale(.98)}@media(max-width:620px){.motion-reveal.motion-pending.project,.motion-reveal.motion-pending.edit-feature,.motion-reveal.motion-pending.design-feature{transform:translateY(var(--reveal-y,34px)) scale(.99)}}@media(prefers-reduced-motion:reduce){.motion-reveal.motion-pending.project,.motion-reveal.motion-pending.edit-feature,.motion-reveal.motion-pending.design-feature{transform:none}}

.hero-scroll-stage .hero-content>p{transform:translateY(calc(var(--hero-progress,0)*-6px));will-change:transform}.hero-scroll-stage .hero h1,.hero-scroll-stage .hero .eyebrow,.hero-scroll-stage .hero .actions{will-change:transform}@media(prefers-reduced-motion:reduce){.hero-scroll-stage .hero-content>p{transform:none!important}}

/* Mobile: avoid scroll-driven resizing and expensive layout changes. */
@media(max-width:620px){.hero-scroll-stage{height:calc(var(--hero-height,640px) + 24px)}.hero-scroll-stage .hero{height:var(--hero-height,640px);transform:none;border-radius:18px;will-change:auto}.hero-scroll-stage .hero::before{inset:0;height:100%;transform:none;will-change:auto}.hero-scroll-stage .hero-content{will-change:transform}.about.motion-about,.about.motion-about.motion-pending{transform:none;will-change:auto}.about.motion-about .about-visual img{transform:none;will-change:auto}.motion-reveal{transition-duration:.55s,.65s}.motion-reveal.motion-pending.project,.motion-reveal.motion-pending.edit-feature,.motion-reveal.motion-pending.design-feature{transform:translateY(var(--reveal-y,18px))}.hero-scroll-stage .hero h1,.hero-scroll-stage .hero .eyebrow,.hero-scroll-stage .hero .actions{will-change:auto}}
