/* Animation initial states. JS removes/animates these as elements come in. */

/* While JS is loading, hide animated elements to avoid a flash before reveal. */
html.has-js [data-animate],
html.has-js [data-animate-stagger] > * {
  opacity: 0;
  will-change: opacity, transform;
}

html.has-js [data-animate="up"]      { transform: translate3d(0, 24px, 0); }
html.has-js [data-animate="up-sm"]   { transform: translate3d(0, 12px, 0); }
html.has-js [data-animate="up-lg"]   { transform: translate3d(0, 40px, 0); }
html.has-js [data-animate="left"]    { transform: translate3d(24px, 0, 0); }
html.has-js [data-animate="right"]   { transform: translate3d(-24px, 0, 0); }
html.has-js [data-animate="fade"]    { transform: none; }
html.has-js [data-animate="scale"]   { transform: scale(0.96); }
html.has-js [data-animate-stagger] > * { transform: translate3d(0, 18px, 0); }

/* Hero image needs a slight scale to allow Ken Burns-like settling */
html.has-js .hero__image { transform: scale(1.06); }

/* Final CTA glow drifts */
html.has-js .final-cta__glow,
html.has-js .summary__glow {
  will-change: transform;
}

/* Number-counter targets */
.count-up { font-variant-numeric: tabular-nums; }

/* Reduced motion: skip everything; show content immediately */
@media (prefers-reduced-motion: reduce) {
  html.has-js [data-animate],
  html.has-js [data-animate-stagger] > *,
  html.has-js .hero__image {
    opacity: 1 !important;
    transform: none !important;
  }
}
