/* SC Display — Blur Reveal (leger, sans dependance externe) */

[data-scd-reveal] {
	--scd-reveal-blur: 10px;
	--scd-reveal-duration: 0.8s;
	--scd-reveal-delay: 0s;
	--scd-reveal-offset: 0.3em;
}

/* Mode par defaut : mot par mot. Le conteneur reste invisible tant
   que le JS n'a pas decoupe le texte, pour eviter un flash de texte
   net avant le decoupage. Les mots individuels portent l'animation. */
[data-scd-reveal]:not([data-scd-reveal-split="whole"]) {
	opacity: 0;
}

[data-scd-reveal]:not([data-scd-reveal-split="whole"]).scd-reveal-split-ready {
	opacity: 1;
}

[data-scd-reveal] .scd-reveal-word {
	display: inline-block;
	opacity: 0;
	filter: blur(var(--scd-reveal-blur));
	transform: translateY(var(--scd-reveal-offset));
	transition: opacity var(--scd-reveal-duration) ease-out,
	            filter var(--scd-reveal-duration) ease-out,
	            transform var(--scd-reveal-duration) ease-out;
}

[data-scd-reveal].is-revealed .scd-reveal-word {
	opacity: 1;
	filter: blur(0);
	transform: translateY(0);
}

/* Mode "whole" (data-scd-reveal-split="whole") : l'element entier
   flou/anime en un seul bloc, sans decoupage en mots. */
[data-scd-reveal][data-scd-reveal-split="whole"] {
	opacity: 0;
	filter: blur(var(--scd-reveal-blur));
	transform: translateY(var(--scd-reveal-offset));
	transition: opacity var(--scd-reveal-duration) ease-out,
	            filter var(--scd-reveal-duration) ease-out,
	            transform var(--scd-reveal-duration) ease-out;
	transition-delay: var(--scd-reveal-delay);
}

[data-scd-reveal][data-scd-reveal-split="whole"].is-revealed {
	opacity: 1;
	filter: blur(0);
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	[data-scd-reveal],
	[data-scd-reveal] .scd-reveal-word {
		transition: none !important;
		filter: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
}
