/* ═══════════════════════════════════════════════════════════════════════
   MOVIMIENTO · la puerta de salida · 3-sep-2026

   Auditoría de hoy contra Build in Amsterdam: ellos escriben
   `prefers-reduced-motion` DIECINUEVE veces, más que breakpoints de
   escritorio. Nosotros teníamos 82 transiciones y animaciones repartidas en
   siete hojas, y SIETE escapes. `joy.css` con 23 animaciones y cero.
   `viaje.css` con 29 y cero.

   Eso no es un detalle de accesibilidad: es la causa de dos fallos que nos
   mordieron hoy. El Chrome de esta máquina pide menos movimiento, así que
   las tarjetas no aparecían en las capturas y el globo no volaba. Pasamos
   horas mirando pantallas que mentían.

   Esta hoja va LA ÚLTIMA, después de todas las demás.

   La regla que la ordena: **quitar el movimiento nunca puede quitar el
   contenido.** Un `*{animation:none}` a lo bruto deja invisible todo lo que
   entra con un revelado, que es como se rompió esta web en agosto. Por eso
   aquí, además de parar, se fuerza el estado final.
   ═══════════════════════════════════════════════════════════════════════ */

@media (prefers-reduced-motion: reduce){

  /* 1 · Parar. Casi todo, y sin excepciones escondidas. */
  *, *::before, *::after{
    animation-duration: .001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .001ms !important;
    scroll-behavior: auto !important;
  }

  /* 2 · Y garantizar que lo que entraba animado se QUEDA visible. Sin esto,
         parar la animación es esconder el contenido para siempre. */
  .rev, .gcard, .ruta, .dentro,
  .tienda__intro, .metodo, .prueba, .recop, .faq{
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
  }

  /* 3 · Nada de paralaje ni de inclinación por puntero: son transformaciones
         atadas al movimiento del ratón o del scroll. */
  .gcard__cover, .gcard__visual::after, .cursor{
    transform: none !important;
  }
  .gcard__visual::after{ opacity: 0 !important; }

  /* 4 · El mundo se queda quieto. El giro continuo lo para viaje.js; esto
         cubre lo que el motor no controla. */
  #viaje [class*="pulse"], #viaje [class*="blink"], #viaje .status-dot{
    animation: none !important;
  }
  .dual__mundo #viaje{ transition: none !important; }
}

/* ═══ Hovers con puntero de verdad ═══════════════════════════════════════
   En táctil no hay hover: hay un toque que deja el estado pegado hasta que
   tocas otra cosa. Las tarjetas se quedaban levantadas después de pulsarlas.
   Build cierra sus hovers con `(hover:hover) and (pointer:fine)`; aquí se
   cierran los que MUEVEN algo. Los que solo cambian color se quedan: no
   estorban y ayudan al que navega con teclado. */
@media (hover: none), (pointer: coarse){
  .gcard:hover .gcard__cover{ transform: none; }
  .gcard:hover .gcard__visual::after{ opacity: 0; }
  .gcard:hover{ transform: none; }
}
