/**
 * reduce-motion.css — Global @media (prefers-reduced-motion: reduce)
 *
 * Lote 6 Track 2 (2026-06-22) del audit nc-product-review --ui-ux.
 * Respeta la preferencia OS-level del usuario para reducir movimiento.
 * Aplica a TODA la app (no solo a componentes nuevos).
 *
 * WCAG 2.2 SC 2.3.3 Animation from Interactions (Level AAA en 2.2).
 * También importante para usuarios con motion sickness, vestibular disorders.
 *
 * Estrategia: reducir duration a 0.001ms (NO 0s) para que listeners de
 * transitionend/animationend SIGAN disparándose (sino apps que dependen de
 * ellos se rompen silenciosamente). Mantener el SET de la propiedad final
 * pero saltar el camino animado.
 */
@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.001ms !important;
        animation-iteration-count: 1 !important;
        animation-delay: 0ms !important;
        transition-duration: 0.001ms !important;
        transition-delay: 0ms !important;
        scroll-behavior: auto !important;
    }

    /* Caso especial: parallax / scroll-triggered. */
    [data-animate-on-scroll],
    [data-parallax] {
        transform: none !important;
    }

    /* Spinner de carga: necesita seguir rotando para indicar progreso,
       pero a velocidad reducida (mantener affordance sin marear). */
    .fa-spin,
    .fa-pulse,
    .fa-spinner {
        animation-duration: 1.5s !important;
    }
}
