/* assets/css/animations.css — scroll-reveal + motion utilities (IntersectionObserver-driven) */

[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity .9s var(--ease-out-expo),transform .9s var(--ease-out-expo)}
[data-reveal].is-visible{opacity:1;transform:none}

[data-reveal-stagger]>*{opacity:0;transform:translateY(24px);transition:opacity .8s var(--ease-out-expo),transform .8s var(--ease-out-expo)}
[data-reveal-stagger].is-visible>*{opacity:1;transform:none}
[data-reveal-stagger].is-visible>*:nth-child(1){transition-delay:.05s}
[data-reveal-stagger].is-visible>*:nth-child(2){transition-delay:.12s}
[data-reveal-stagger].is-visible>*:nth-child(3){transition-delay:.19s}
[data-reveal-stagger].is-visible>*:nth-child(4){transition-delay:.26s}
[data-reveal-stagger].is-visible>*:nth-child(5){transition-delay:.33s}
[data-reveal-stagger].is-visible>*:nth-child(6){transition-delay:.40s}

.mask-reveal{display:inline-block;overflow:hidden}
.mask-reveal__inner{display:inline-block;transform:translateY(110%);transition:transform .9s var(--ease-out-expo)}
.is-visible .mask-reveal__inner,.mask-reveal.is-visible .mask-reveal__inner{transform:translateY(0)}

.parallax{will-change:transform}

.magnetic{transition:transform var(--dur-fast) var(--ease-out-expo)}

@media (prefers-reduced-motion:reduce){
  [data-reveal],[data-reveal-stagger]>*,.mask-reveal__inner{opacity:1!important;transform:none!important;transition:none!important}
}
