/* Animaciones de entrada: al cargar y al recorrer la pagina.
   Las activa assets/js/components/reveal.js; sin JS o con "reducir movimiento" no se aplican. */
:root {
  --rv-dur: .75s;
  --rv-ease: cubic-bezier(.22, 1, .36, 1);
  --rv-dist: 24px;
}

/* Contenido de cabecera oculto desde el primer pintado (evita el parpadeo antes del JS) */
.rv-init :is(.hero__copy, .hero__side, .pg-intro__copy, .pg-intro__inner--single, .pe-intro__copy) > *,
.rv-init :is(.pg-intro__frame, .pe-intro__frame) { opacity: 0; }

.rv-on [data-rv] {
  opacity: 0;
  transform: translate3d(0, var(--rv-dist), 0);
  transition: opacity var(--rv-dur) var(--rv-ease), transform var(--rv-dur) var(--rv-ease);
  transition-delay: var(--rv-delay, 0s);
  will-change: opacity, transform;
}
.rv-on [data-rv="zoom"] { transform: scale(.965); }
.rv-on [data-rv="fade"] { transform: none; }
.rv-on [data-rv].is-in { opacity: 1; transform: none; }

/* Barra de las cifras: crece al aparecer */
.rv-on .cifra[data-rv] .cifra__bar {
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 1s var(--rv-ease);
  transition-delay: calc(var(--rv-delay, 0s) + .25s);
}
.rv-on .cifra[data-rv].is-in .cifra__bar { transform: none; }

@media (prefers-reduced-motion: reduce) {
  .rv-init *, .rv-on [data-rv] { opacity: 1 !important; transform: none !important; transition: none !important; }
}
