/* ==========================================================================
   White Square Exim — Animations (animations.css)
   Keyframes, scroll-reveal states, micro-interactions.
   All decorative motion collapses under prefers-reduced-motion.
   ========================================================================== */

/* keyframes ---------------------------------------------------------------- */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes dashMove{to{stroke-dashoffset:-140}}
@keyframes nodePulse{0%{transform:scale(.6);opacity:.8}70%{transform:scale(2.4);opacity:0}100%{opacity:0}}
@keyframes scrollDot{0%{transform:translate(-50%,0);opacity:1}70%{transform:translate(-50%,10px);opacity:0}100%{opacity:0}}
@keyframes floatY{0%,100%{transform:translateY(0)}50%{transform:translateY(-12px)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* scroll reveal ------------------------------------------------------------ */
[data-reveal]{opacity:0;transform:translateY(28px);
  transition:opacity .7s var(--ease),transform .7s var(--ease);will-change:opacity,transform}
[data-reveal="left"]{transform:translateX(-32px)}
[data-reveal="right"]{transform:translateX(32px)}
[data-reveal="zoom"]{transform:scale(.94)}
[data-reveal].is-visible{opacity:1;transform:none}

/* stagger children (delays applied via data-delay in JS or nth-child) ------- */
[data-reveal-group]>*{opacity:0;transform:translateY(26px);
  transition:opacity .6s var(--ease),transform .6s var(--ease)}
[data-reveal-group].is-visible>*{opacity:1;transform:none}
[data-reveal-group].is-visible>*:nth-child(1){transition-delay:.05s}
[data-reveal-group].is-visible>*:nth-child(2){transition-delay:.12s}
[data-reveal-group].is-visible>*:nth-child(3){transition-delay:.19s}
[data-reveal-group].is-visible>*:nth-child(4){transition-delay:.26s}
[data-reveal-group].is-visible>*:nth-child(5){transition-delay:.33s}
[data-reveal-group].is-visible>*:nth-child(6){transition-delay:.40s}

/* float motif -------------------------------------------------------------- */
.floaty{animation:floatY 6s ease-in-out infinite}
.floaty--slow{animation-duration:9s}

/* hero content entrance ---------------------------------------------------- */
.hero__content>*{animation:fadeIn .9s var(--ease) both}
.hero__content>*:nth-child(1){animation-delay:.1s}
.hero__content>*:nth-child(2){animation-delay:.22s}
.hero__content>*:nth-child(3){animation-delay:.34s}
.hero__content>*:nth-child(4){animation-delay:.46s}
.hero__content>*:nth-child(5){animation-delay:.58s}

/* reduced motion ----------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  [data-reveal],[data-reveal-group]>*{opacity:1!important;transform:none!important}
  .marquee__track,.globe-net .net-route,.globe-net .net-pulse,.floaty,
  .hero__scroll .mouse::after,.preloader__mark span{animation:none!important}
  .hero__content>*{animation:none!important}
}
