/* =========================================================================
   Kairis — reveal.css
   Aparición al scroll de [data-reveal]  (pareja de js/reveal.js)

   Solo eso: los dos remates globales que vivían aquí (transición de color de
   los enlaces de texto y sombra de .btn-primary:hover) se han movido a
   css/styles.css. Dependían del orden de carga y del hecho de que este
   componente estuviera en todas las páginas, y ninguna de las dos cosas
   estaba garantizada.
   ========================================================================= */

/* -------------------------------------------------------------------------
   Reveal al scroll

   El estado escondido cuelga de html.js-reveal, clase que pone js/reveal.js
   al arrancar. Sin JS —o con prefers-reduced-motion— la clase no existe y
   estas reglas no aplican: el contenido se ve desde el primer pintado y no
   hay salto de layout (opacity y transform no reflowean).
   ------------------------------------------------------------------------- */

html.js-reveal [data-reveal]:not(.is-revealed) {
  /* .0001 y no 0: algunos navegadores saltan el pintado de las capas con
     opacidad 0 y la transición arranca a tirones. */
  opacity: 0.0001;
  transform: translateY(14px);
}

/* .is-revealing solo vive mientras dura la aparición; js/reveal.js la retira
   al terminar para no pisar las transiciones propias de cada componente
   (.route-card, .inquiry-card y compañía animan transform en :hover). */
html.js-reveal [data-reveal].is-revealing {
  transition:
    opacity 0.55s cubic-bezier(0.22, 0.61, 0.36, 1),
    transform 0.55s cubic-bezier(0.22, 0.61, 0.36, 1);
  transition-delay: var(--reveal-delay, 0ms);
  will-change: opacity, transform;
}

/* .is-revealed no declara nada a propósito: al dejar de cumplirse el :not()
   el elemento vuelve a su CSS natural y el :hover funciona intacto. */

@media (prefers-reduced-motion: reduce) {
  /* Cinturón y tirantes: js/reveal.js ni siquiera pone la clase con esta
     preferencia, pero si alguien la cambia con la página abierta el
     contenido se queda visible igualmente. */
  html.js-reveal [data-reveal]:not(.is-revealed) {
    opacity: 1;
    transform: none;
  }

  html.js-reveal [data-reveal].is-revealing {
    transition: none;
    will-change: auto;
  }
}

/* Al imprimir no hay scroll ni IntersectionObserver: lo que quedó bajo el
   pliegue nunca recibe .is-revealed y se imprimiría en blanco. Aquí se anula
   el estado escondido entero. */
@media print {
  html.js-reveal [data-reveal]:not(.is-revealed),
  html.js-reveal [data-reveal].is-revealing {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}
