/* HH Motion. Lenis required CSS (lenis 1.3.26 dist/lenis.css) plus reveal states. */

html.lenis,
html.lenis body {
	height: auto;
}

/* Frameworks like ACSS set scroll-behavior: smooth on html, which fights Lenis. */
.lenis.lenis-smooth {
	scroll-behavior: auto !important;
}

.lenis:not(.lenis-autoToggle).lenis-stopped {
	overflow: clip;
}

.lenis [data-lenis-prevent],
.lenis [data-lenis-prevent-wheel],
.lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical],
.lenis [data-lenis-prevent-horizontal] {
	overscroll-behavior: contain;
}

.lenis.lenis-smooth iframe {
	pointer-events: none;
}

.lenis.lenis-autoToggle {
	transition-property: overflow;
	transition-duration: 1ms;
	transition-behavior: allow-discrete;
}

/*
 * Reveals start hidden only under html.hh-motion, which the head script adds
 * when motion is allowed. No JS, blocked JS or reduced motion = visible.
 * Opacity only: hidden elements keep their space, so nothing shifts.
 */
html.hh-motion [data-reveal]:not([data-reveal="stagger"]):not(.is-revealed),
html.hh-motion [data-reveal="stagger"]:not(.is-revealed) > * {
	opacity: 0;
}

@media (prefers-reduced-motion: reduce) {
	html.hh-motion [data-reveal]:not([data-reveal="stagger"]):not(.is-revealed),
	html.hh-motion [data-reveal="stagger"]:not(.is-revealed) > * {
		opacity: 1;
	}
}
