/* ═══════════════════════════════════════════════
   PROVAL — Scroll Reveal Animation Base Styles
   ═══════════════════════════════════════════════ */

/*
  Elements start visible (no-JS safe).
  GSAP sets initial hidden state via inline styles before animating.
  These classes are for the reduced-motion fallback only.
*/

@media (prefers-reduced-motion: reduce) {
  [data-animate],
  [data-animate-parallax] {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
    animation: none !important;
  }
}

/*
  Optional: If JS fails to load, ensure content is visible.
  GSAP will override these with inline styles when it initializes.
*/
[data-animate] {
  /* No hidden state here — GSAP handles it via gsap.set() */
}

/* GPU hint for animated elements — applied/removed by JS */
.will-animate {
  will-change: transform, opacity;
}

/* Containment for heavy grid sections to prevent layout thrash */
[data-animate-contain] {
  contain: layout style;
}
