/* Shared motion layer. Opacity and transform only, 0.32s ease-out, one language for every page.
   Default state is fully visible, so the page is complete without JavaScript. */
@keyframes rv-in { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: none; } }

@media (prefers-reduced-motion: no-preference) {
  /* 1. Native scroll-driven reveal where the browser supports it (no JavaScript). */
  @supports (animation-timeline: view()) {
    .reveal { animation: rv-in 0.32s ease-out both; animation-timeline: view(); animation-range: entry 0% entry 30%; }
  }
  /* 2. Fallback: motion-core.js adds .js-reveal only when scroll timelines are unsupported. */
  .js-reveal .reveal { opacity: 0; transform: translateY(16px); }
  .js-reveal .reveal.is-in { opacity: 1; transform: none; transition: opacity 0.32s ease-out, transform 0.32s ease-out; }
  /* 3. ROAS matrix cells wait for GSAP; motion-core.js removes this class if GSAP does not load. */
  .js-matrix .matrix__c { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .reveal { animation: none; opacity: 1; transform: none; transition: none; }
}
@media print { .reveal { animation: none !important; opacity: 1 !important; transform: none !important; } }

/* Lenis */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }
