/* Reveal start states exist only when JS is running and motion is allowed.
   Without .js (or with .reduced-motion) content is fully visible. */
.js:not(.reduced-motion) [data-reveal] { opacity: 0; transform: translate3d(0, 40px, 0); }
.js:not(.reduced-motion) [data-parallax] { will-change: transform; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition: none !important; animation: none !important; scroll-behavior: auto !important; }
  [data-reveal], [data-parallax] { opacity: 1 !important; transform: none !important; }
}
