/**
 * Animations discrètes — reveal on scroll, fade, slide
 * Piloté par assets/js/animations.js (IntersectionObserver)
 */

[data-reveal] {
	opacity: 0;
	transition: opacity var(--duration-slow) var(--ease-default),
		transform var(--duration-slow) var(--ease-default);
	will-change: opacity, transform;
}

[data-reveal='fade'] {
	transform: translateY(0);
}

[data-reveal='up'] {
	transform: translateY(28px);
}

[data-reveal='left'] {
	transform: translateX(-28px);
}

[data-reveal='right'] {
	transform: translateX(28px);
}

[data-reveal='scale'] {
	transform: scale(0.96);
}

[data-reveal].is-visible {
	opacity: 1;
	transform: translate(0, 0) scale(1);
}

/* Stagger children of a group */
[data-reveal-group] > * {
	transition-delay: calc(var(--reveal-index, 0) * 80ms);
}

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

/* Header scroll transition already handled in layout.css via class toggle */

.js-parallax {
	will-change: transform;
}

@media (prefers-reduced-motion: reduce) {
	.js-parallax {
		transform: none !important;
	}
}
