/**
 * Garde-fou AOS — le contenu reste visible si le JavaScript ne tourne pas.
 *
 * aos.css met opacity:0 sur [data-aos^=fade] et [data-aos^=zoom]. Sans AOS
 * initialisé, tout le contenu animé du site resterait donc invisible.
 * L'attribut de classe .js-aos est posé sur <html> par un script inline
 * (cf. idcom_aos_garde_fou() dans config/loader.php) : il n'existe que si le
 * JavaScript s'exécute, ce qui rend la mise en page dégradée sûre.
 *
 * La spécificité doit dépasser celle des sélecteurs doublés d'AOS
 * ([data-aos^=fade][data-aos^=fade], soit 0-2-0) : html:not(.js-aos) + attribut
 * donne 0-2-1.
 */

html:not(.js-aos) [data-aos^="fade"],
html:not(.js-aos) [data-aos^="zoom"] {
	opacity: 1;
	transform: none;
}

/**
 * Mouvement réduit — le contenu s'affiche tout de suite, sans fondu.
 *
 * AOS ne lit pas `prefers-reduced-motion`. Depuis que la grille des catégories
 * de l'accueil est échelonnée (jusqu'à 450 ms de délai), une personne ayant
 * demandé moins d'animation attendrait le contenu sans raison : on neutralise
 * l'état de départ ET la transition, ce qui rend le délai sans effet.
 *
 * Même contrainte de spécificité que ci-dessus : AOS double ses sélecteurs
 * ([data-aos^=fade][data-aos^=fade], 0-2-0), une media query n'ajoutant rien
 * il faut doubler aussi. `html` + attribut doublé donne 0-2-1.
 */
@media (prefers-reduced-motion: reduce) {
	html [data-aos^="fade"][data-aos^="fade"],
	html [data-aos^="zoom"][data-aos^="zoom"] {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
