/**
 * Micro-interactions et animations d'apparition.
 * Légères, rapides, désactivées via prefers-reduced-motion.
 */

/* Apparition douce des sections au scroll (pilotée par main.js).
   Le contenu est VISIBLE par défaut : l'état masqué (.reveal--pending)
   n'est posé que par JavaScript, uniquement si IntersectionObserver est
   disponible. JS cassé ou absent = aucun contenu caché. */
.reveal {
	transition: opacity 480ms var(--ease), transform 480ms var(--ease);
}

.reveal--pending {
	opacity: 0;
	transform: translateY(18px);
	will-change: opacity, transform;
}

/* Décalage progressif dans les grilles */
.reveal:nth-child(2) { transition-delay: 60ms; }
.reveal:nth-child(3) { transition-delay: 120ms; }
.reveal:nth-child(4) { transition-delay: 180ms; }

/* Ouverture de la recherche */
.search-overlay.is-open .search-overlay__panel {
	animation: meefq-pop 240ms var(--ease);
}

@keyframes meefq-pop {
	from {
		opacity: 0;
		transform: translateY(-14px) scale(0.98);
	}
	to {
		opacity: 1;
		transform: none;
	}
}

/* Loader discret (chargements de filtres) */
.loader {
	display: inline-block;
	width: 22px;
	height: 22px;
	border: 3px solid var(--c-primary-050);
	border-top-color: var(--c-primary);
	border-radius: 50%;
	animation: meefq-spin 700ms linear infinite;
}

@keyframes meefq-spin {
	to { transform: rotate(360deg); }
}

/* Halo animé très lent du hero (décoratif uniquement) */
.hero .poly-decor span {
	animation: meefq-drift 22s ease-in-out infinite alternate;
}

.hero .poly-decor .p2 { animation-duration: 28s; }

@keyframes meefq-drift {
	from { transform: translate3d(0, 0, 0); }
	to { transform: translate3d(2rem, 1.5rem, 0); }
}

/* ---------- Respect de prefers-reduced-motion ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
		scroll-behavior: auto !important;
	}

	.reveal--pending {
		opacity: 1;
		transform: none;
	}
}
