/* H-Lead scroll reveal — fade-in-up on first viewport entry, staggered via
 * transition-delay set by scroll-reveal.js for [data-hl-stagger] groups. */
.hl-animate {
	opacity: 0;
	transform: translateY(24px);
	transition: opacity 0.6s ease, transform 0.6s ease;
	will-change: opacity, transform;
}

.hl-animate.hl-in-view {
	opacity: 1;
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	.hl-animate {
		opacity: 1;
		transform: none;
		transition: none;
		will-change: auto;
	}
}

/* Once a one-shot reveal has finished, scroll-reveal.js adds this class and
 * clears the inline transform/will-change it had set — `transform` and
 * `will-change` both create a permanent CSS stacking context for as long as
 * they're present, which traps any absolutely-positioned, high-z-index
 * children (e.g. a booking form's date/location dropdowns) so they can never
 * paint above later page sections regardless of their own z-index. */
.hl-animate--settled {
	will-change: auto;
}
