/* Animations d'apparition au scroll — chargé sur toutes les pages, avec
   assets/js/modules/animations.js (IntersectionObserver natif, remplace
   WOW.js) qui ajoute .animated aux éléments "wow fadeInUp" etc., .visible
   aux .fade-up et .is-visible aux .uw-reveal quand ils entrent à l'écran.
   Extrait de css/style.css (bloc "Animate.css") : seules les animations
   réellement utilisées dans le HTML ont été gardées (fadeIn, fadeInUp,
   fadeInDown, fadeInLeft, fadeInRight), sans préfixes -webkit-. */

.animated {
	animation-duration: 1s;
	animation-fill-mode: both;
	opacity: 1;
}

.animated.infinite {
	animation-iteration-count: infinite;
}

.wow-outer {
	position: relative;
	overflow: hidden;
}

@keyframes fadeIn {
	0% {
		opacity: 0;
	}

	100% {
		opacity: 1;
	}
}

.fadeIn {
	animation-name: fadeIn;
}

@keyframes fadeInUp {
	0% {
		opacity: 0;
		transform: translate3d(0, 100%, 0);
	}

	100% {
		opacity: 1;
		transform: none;
	}
}

.fadeInUp {
	animation-name: fadeInUp;
}

@keyframes fadeInDown {
	0% {
		opacity: 0;
		transform: translate3d(0, -100%, 0);
	}

	100% {
		opacity: 1;
		transform: none;
	}
}

.fadeInDown {
	animation-name: fadeInDown;
}

@keyframes fadeInLeft {
	0% {
		opacity: 0;
		transform: translate3d(-100%, 0, 0);
	}

	100% {
		opacity: 1;
		transform: none;
	}
}

.fadeInLeft {
	animation-name: fadeInLeft;
}

@keyframes fadeInRight {
	0% {
		opacity: 0;
		transform: translate3d(100%, 0, 0);
	}

	100% {
		opacity: 1;
		transform: none;
	}
}

.fadeInRight {
	animation-name: fadeInRight;
}

/* Mobile / tablette : tout arrive par le bas, quelle que soit l'animation
   choisie (fadeInLeft, fadeInRight, fadeIn...) — même rendu que l'ancien
   comportement mobile (fadeInUp 0.6s ease-out), et évite qu'un fadeInLeft/
   Right (décalage de 100 % de la largeur) ne déborde de l'écran. */
@media (max-width: 991.98px) {
	.wow.animated {
		animation-name: fadeInUp;
		animation-duration: .6s;
		animation-timing-function: ease-out;
	}
}

/* ── Apparition des modules de l'accueil au scroll (sans WOW) ──
   .uw-reveal : ajoutée sur la balise racine de chaque module par
   includes/page_accueil.inc.php ; .is-visible : ajoutée par
   assets/js/modules/animations.js quand le module entre à l'écran.
   transform:none une fois visible (et non translateY(0)) pour ne pas
   casser les fonds en background-attachment:fixed (CTA, contact). */
.uw-reveal {
	opacity: 0;
	transform: translateY(40px);
	transition: opacity .9s cubic-bezier(.25, .8, .25, 1), transform .9s cubic-bezier(.25, .8, .25, 1);
}

.uw-reveal.is-visible {
	opacity: 1;
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.animated {
		animation: none !important;
	}

	.uw-reveal {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* ── .fade-up (repris de css/style.css) : classe .visible ajoutée par
   js/script.js (intro 1/2/3, menu, slider, témoignages) ── */
.fade-up {
	opacity: 0;
	transform: translateY(30px);
	transition: opacity .6s ease, transform .6s ease;
}

.fade-up.visible {
	opacity: 1;
	transform: translateY(0);
}
