/*
 * Opacity and translate only. Blur filters stay off so the page can scroll
 * without repainting every revealed block.
 */
[data-reveal="block"] {
	opacity: 0;
	transform: translateY(22px);
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

[data-reveal="block"].is-revealed {
	opacity: 1;
	transform: translateY(0);
}

.reveal-sentence {
	display: inline-block;
	opacity: 0;
	transform: translateY(14px);
	transition:
		opacity var(--duration-slow) var(--ease-premium),
		transform var(--duration-slow) var(--ease-premium);
}

.is-revealed .reveal-sentence {
	opacity: 1;
	transform: translateY(0);
}

/* Staggered hero entrance — brand first, then supporting line, then CTAs */
html:not(.is-loaded) .hero__content > * {
	opacity: 0;
}

html.is-loaded .hero__logo {
	animation: olv-hero-rise 1s var(--ease-premium) 0.05s both;
}

html.is-loaded .hero__eyebrow {
	animation: olv-hero-rise 1s var(--ease-premium) 0.15s both;
}

html.is-loaded .hero__brand {
	animation: olv-hero-rise 1.1s var(--ease-premium) 0.28s both;
}

html.is-loaded .hero__rule {
	animation: olv-hero-rule 0.9s var(--ease-premium) 0.48s both;
}

html.is-loaded .hero__tagline {
	animation: olv-hero-rise 1.05s var(--ease-premium) 0.58s both;
}

html.is-loaded .hero__sub {
	animation: olv-hero-rise 1s var(--ease-premium) 0.7s both;
}

html.is-loaded .hero__actions {
	animation: olv-hero-rise 1s var(--ease-premium) 0.82s both;
}

html.is-loaded .hero__scroll {
	animation: olv-hero-rise 0.9s var(--ease-premium) 1.05s both;
}

@keyframes olv-hero-rise {
	from {
		opacity: 0;
		transform: translateY(22px);
	}
	to {
		opacity: 1;
		transform: translateY(0);
	}
}

@keyframes olv-hero-rule {
	from {
		opacity: 0;
		transform: scaleX(0);
	}
	to {
		opacity: 1;
		transform: scaleX(1);
	}
}

@media (prefers-reduced-motion: reduce) {
	[data-reveal="block"],
	[data-reveal="block"].is-revealed,
	.reveal-sentence,
	.is-revealed .reveal-sentence {
		transform: none;
		transition: opacity var(--duration-fast) var(--ease-standard);
		transition-delay: 0s !important;
	}

	html:not(.is-loaded) .hero__content > *,
	html.is-loaded .hero__logo,
	html.is-loaded .hero__eyebrow,
	html.is-loaded .hero__brand,
	html.is-loaded .hero__rule,
	html.is-loaded .hero__tagline,
	html.is-loaded .hero__sub,
	html.is-loaded .hero__actions,
	html.is-loaded .hero__scroll {
		animation: none;
		opacity: 1;
		transform: none;
	}
}
