/* Motion foundation companion styles. Colors reference the tokens in
   styles.css only; no literals live here. */

/* Native CSS smoothing must not fight the scripted scroll. Scoped to html.js
   so it only applies where the scripted engine can actually replace what it
   disables: with scripts off or failed, styles.css keeps its native
   scroll-behavior: smooth for anchor jumps. */
html.js { scroll-behavior: initial !important; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* The fixed header rides the compositor so scripted scrolling cannot make
   it shimmer. */
.site-header { transform: translateZ(0); backface-visibility: hidden; }

/* ---- Reveal utilities ----
   Deliberately empty of hidden states: the script applies start states, so
   these elements stay fully visible with scripts off. The classes exist so
   markup can opt in declaratively. */
.reveal-fade { }
.reveal-split { }
.parallax-bg { will-change: transform; }

@media (prefers-reduced-motion: reduce) {
  .parallax-bg { will-change: auto; }
}
