/**
 * Custom animations — laurasolano.com
 * 1. Scroll reveal (fade + translateY al entrar en viewport)
 */

.reveal {
	opacity: 0;
	transform: translateY(32px);
	transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
		transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
	will-change: opacity, transform;
}

.reveal.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.reveal-stagger-item {
	opacity: 0;
	transform: translateY(32px);
	transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1),
		transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
	transition-delay: calc(var(--reveal-index, 0) * 90ms);
	will-change: opacity, transform;
}

.reveal-stagger.is-visible .reveal-stagger-item {
	opacity: 1;
	transform: translateY(0);
}

/**
 * 1b. Reveal de texto tipo "apertura" (cortina / clip-path)
 */
.reveal-text-open {
	opacity: 0;
	clip-path: inset(0 0 100% 0);
	transition: clip-path 0.9s cubic-bezier(0.16, 1, 0.3, 1),
		opacity 0.5s ease-out;
	will-change: clip-path, opacity;
}

.reveal-text-open.is-visible {
	opacity: 1;
	clip-path: inset(0 0 0% 0);
}

@media (prefers-reduced-motion: reduce) {
	.reveal,
	.reveal-stagger-item,
	.reveal-text-open {
		opacity: 1;
		transform: none;
		clip-path: none;
		transition: none;
	}
}
