/* Scroll animations (only active when JS adds .js-anim) */
.js-anim .anim{opacity:0;transform:translateY(28px);transition:opacity .75s cubic-bezier(.2,.7,.2,1),transform .75s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s);will-change:opacity,transform}
.js-anim .anim.anim-left{transform:translateX(-36px)}
.js-anim .anim.anim-right{transform:translateX(36px)}
.js-anim .anim.anim-zoom{transform:scale(.94)}
.js-anim .anim.in{opacity:1;transform:none}
/* Hover polish */
.btn,.nav-cta{transition:transform .25s ease,box-shadow .25s ease,background-color .25s ease,color .25s ease}
.btn:hover,.nav-cta:hover{transform:translateY(-2px)}
.lift{transition:transform .35s ease,box-shadow .35s ease,border-color .35s ease}
.lift:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.35)}
.zoomwrap{overflow:hidden}
.zoomwrap img{transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.zoomwrap:hover img{transform:scale(1.04)}
/* Floating hero photo */
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.float-soft{animation:floaty 6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){
  .js-anim .anim{opacity:1!important;transform:none!important;transition:none!important}
  .float-soft{animation:none}.lift:hover,.btn:hover{transform:none}.zoomwrap:hover img{transform:none}
}
