/* ───────────────────────────────────────────────────────────
   MOTION — reveals contenidos. Solo opacity / transform / clip-path.
   ─────────────────────────────────────────────────────────── */
[data-reveal] { will-change: opacity, transform; transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), clip-path var(--dur) var(--ease); }
[data-reveal="up"]    { opacity: 0; transform: translate3d(0, 28px, 0); }
[data-reveal="fade"]  { opacity: 0; }
[data-reveal="scale"] { opacity: 0; transform: scale(0.94); }
[data-reveal="clip"]  { clip-path: inset(0 0 12% 0 round var(--r-media)); opacity: 0; transform: translate3d(0, 16px, 0); }
[data-reveal].is-in   { opacity: 1; transform: none; clip-path: inset(0 0 0 0 round var(--r-media)); }
[data-reveal="clip"].is-in { clip-path: inset(0 0 0 0 round 0); }
.fullbleed[data-reveal="clip"] { clip-path: inset(0 0 12% 0); }
.fullbleed[data-reveal="clip"].is-in { clip-path: inset(0); }

[data-parallax], [data-scale] { will-change: transform; }

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

/* Modo estático (?motion=0): mismo comportamiento que reduced-motion */
html.no-motion [data-reveal] { opacity: 1 !important; transform: none !important; clip-path: none !important; transition: none !important; }
html.no-motion [data-parallax], html.no-motion [data-scale] { transform: none !important; }
html.no-motion .hero__scroll-line { animation: none; }
