/* reveal.css — stagger reveal on scroll (pareja de reveal.js). Reutilizable por atributo,
   aislado del motor de scroll (fullscreen.js). El estado oculto SOLO existe bajo .reveal-on
   (clase que añade reveal.js) → si el JS no corre, todo queda visible. */

.reveal-on [data-stagger] > *{
  opacity:0;
  transform:translateY(1.4rem);
  transition:opacity .55s ease, transform .55s cubic-bezier(.22,.61,.36,1);
  transition-delay:var(--reveal-delay,0ms);
}
.reveal-on [data-stagger].is-revealed > *{
  opacity:1;
  transform:none;
}

/* Convivencia con el reveal nativo de fullscreen.css: cuando un contenedor lleva
   data-stagger, reveal.js es el dueño de la cascada de sus celdas. Neutralizamos el
   reveal por-bloque/.is-in SOLO para ese contenedor (queda visible de inmediato), así
   no compite con la cascada de reveal.js. Evita tener que escribir un override por id.
   (Sus hijos siguen ocultos vía la regla .reveal-on [data-stagger] > * de arriba.) */
.fs-reveal .fs__in [data-stagger]{opacity:1; transform:none; transition:none;}

/* reduced-motion: nada queda oculto ni se anima */
@media (prefers-reduced-motion: reduce){
  .reveal-on [data-stagger] > *{opacity:1; transform:none; transition:none;}
}
