/* Motion gates. Content is visible by default: hiding is scoped under html.js-motion,
   which main.js sets only after GSAP is present and motion is allowed. */
@media (prefers-reduced-motion: no-preference) {
	html {
		scroll-behavior: smooth;
	}
}

/* Gentle reveal: fade and a 24px rise, once. */
html.js-motion [data-reveal]:not(.is-revealed) {
	opacity: 0;
	transform: translateY(24px);
}

html.js-motion [data-unmask]:not(.is-unmasked) {
	clip-path: inset(0 0 100% 0);
}

/* Counting numerals keep a fixed width, so nothing beside them shifts while they count. */
[data-count] {
	font-variant-numeric: tabular-nums;
}

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		transition-duration: 0.01ms !important;
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		scroll-behavior: auto !important;
	}

	[data-reveal] {
		opacity: 1 !important;
		transform: none !important;
	}
}
