/* Sagamento Toolkit — Word Reveal
   Réglages par défaut, surchargeables élément par élément via style="--sg-duration: 900ms" etc. */

.sg-anim-words {
	--sg-duration: 850ms;
	--sg-scale: 0.68;
	--sg-shift: 0.3em;
	--sg-blur: 6px;
	--sg-ease: cubic-bezier(0.22, 0.68, 0.24, 1);
}

/* Masqué uniquement si le JS tourne, et seulement jusqu'au découpage des mots. */
.sg-js .sg-anim-words:not(.sg-ready) {
	visibility: hidden;
}

.sg-anim-words .sg-word {
	display: inline-block;
	opacity: 0;
	filter: blur(var(--sg-blur));
	transform: translateY(var(--sg-shift)) scale(var(--sg-scale));
	transform-origin: 50% 80%;
	will-change: opacity, transform, filter;
	transition:
		opacity var(--sg-duration) var(--sg-ease) var(--sg-delay, 0ms),
		filter var(--sg-duration) var(--sg-ease) var(--sg-delay, 0ms),
		transform var(--sg-duration) var(--sg-ease) var(--sg-delay, 0ms);
}

.sg-anim-words.sg-in .sg-word {
	opacity: 1;
	filter: blur(0);
	transform: translateY(0) scale(1);
}

/* Le mot animé ne doit pas rogner les jambages ni les accents. */
.sg-anim-words .sg-word {
	padding-bottom: 0.06em;
	margin-bottom: -0.06em;
}

/* Bloc dont l'animation WPBakery a été neutralisée : visible tout de suite,
   l'apparition des mots prend le relais. */
.sg-builder-off {
	opacity: 1 !important;
	animation: none !important;
	transform: none !important;
}

/* Accessibilité : aucun mouvement si l'utilisateur l'a demandé. */
@media (prefers-reduced-motion: reduce) {
	.sg-anim-words .sg-word {
		opacity: 1;
		filter: none;
		transform: none;
		transition: none;
	}
}
