/* Homepage-only motion map. Each section owns one visual language. */
.home-choreography :is(.range-grid,.range-extra,.production-journal,.inquiry-section){overflow:clip}
.home-choreography .range-tile{perspective:1200px}
.brand-site.home-choreography .brand-slide{transition:opacity .2s,visibility .2s}
.brand-site.home-choreography .brand-slide.is-active{transition:none}
.home-choreography .hero-fragments{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--parts),1fr);z-index:-2;overflow:hidden;pointer-events:none}
.home-choreography .hero-fragment{position:relative;overflow:hidden;min-width:0}
.home-choreography .hero-fragment img{position:absolute;top:0;left:calc(var(--part) * -100%);width:calc(var(--parts) * 100%);max-width:none;height:100%;object-fit:cover;object-position:65% center}
.home-choreography .scene-0>.hero-scene,.home-choreography .scene-2>.hero-scene{visibility:hidden}
@media(prefers-reduced-motion:no-preference){
 .home-choreography .hero-slide.is-active{animation:none}
 .home-choreography .scene-0.is-active .hero-fragment{animation:hero-strip-assemble 1500ms cubic-bezier(.2,.75,.2,1) both;animation-delay:calc(var(--part) * 100ms)}
 .home-choreography .scene-1.is-active .hero-scene{animation:hero-diagonal-open 1800ms cubic-bezier(.22,.7,.16,1) both}
 .home-choreography .scene-2.is-active .hero-fragment{animation:hero-double-close 1900ms cubic-bezier(.18,.75,.15,1) both}
 .home-choreography .scene-0.is-active .brand-hero-copy>*{animation:hero-title-cut 850ms cubic-bezier(.2,.75,.2,1) both;animation-delay:.55s}
 .home-choreography .scene-1.is-active .brand-hero-copy>*{animation:hero-title-side 1000ms cubic-bezier(.2,.75,.2,1) both;animation-delay:.45s}
 .home-choreography .scene-2.is-active .brand-hero-copy>*{animation:hero-title-spread 1000ms cubic-bezier(.2,.75,.2,1) both;animation-delay:.6s}
 .home-choreography .hero-slide.is-active .brand-hero-copy p{animation-delay:.85s}
 .home-choreography .hero-slide.is-active .brand-hero-copy .btn{animation-delay:1s}
}
@keyframes hero-strip-assemble{from{transform:translateY(calc(var(--direction) * 105%))}to{transform:translateY(0)}}
@keyframes hero-diagonal-open{from{clip-path:polygon(70% 0,70% 0,30% 100%,30% 100%);transform:scale(1.12)}to{clip-path:polygon(0 0,100% 0,100% 100%,0 100%);transform:scale(1)}}
@keyframes hero-double-close{from{transform:translateX(calc(var(--direction) * 104%)) scale(1.08);opacity:.3}to{transform:translateX(0) scale(1);opacity:1}}
@keyframes hero-title-cut{from{clip-path:inset(100% 0 0);transform:translateY(45px)}to{clip-path:inset(0);transform:none}}
@keyframes hero-title-side{from{opacity:0;transform:translateX(-70px)}to{opacity:1;transform:none}}
@keyframes hero-title-spread{from{opacity:0;transform:translateY(20px) scale(.94)}to{opacity:1;transform:none}}
@media(max-width:767px){
 .home-choreography .scene-0 .hero-fragments{display:none}
 .home-choreography .scene-0>.hero-scene{visibility:visible}
 .home-choreography .scene-2 .hero-fragment img{object-position:40% center}
}
@media(max-width:767px) and (prefers-reduced-motion:no-preference){
 .home-choreography .scene-0.is-active .hero-scene{animation:hero-mobile-fold 1200ms cubic-bezier(.2,.75,.2,1) both}
}
@keyframes hero-mobile-fold{from{clip-path:inset(0 50%);transform:translateY(40px)}to{clip-path:inset(0);transform:none}}
@media(prefers-reduced-motion:reduce){
 .home-choreography .hero-fragments{display:none}
 .home-choreography .scene-0>.hero-scene,.home-choreography .scene-2>.hero-scene{visibility:visible}
 .home-choreography [data-home-motion]{clip-path:none!important;transform:none!important;opacity:1!important}
}
