/**
 * Scroll reveal — paired with js/reveal.js.
 *
 * `.js-reveal` is added by JS only. Without JS this file matches nothing, so
 * content is never hidden from crawlers or from a browser where the script
 * failed. The whole block is additionally gated on `no-preference`, so a
 * reduced-motion visitor sees every section at full opacity immediately.
 */
@media (prefers-reduced-motion: no-preference) {
	.js-reveal {
		opacity: 0;
		transform: translateY(16px);
		transition:
			opacity 400ms cubic-bezier(.2, .8, .2, 1) var(--reveal-delay, 0ms),
			transform 400ms cubic-bezier(.2, .8, .2, 1) var(--reveal-delay, 0ms);
		will-change: opacity, transform;
	}

	.js-reveal.is-revealed {
		opacity: 1;
		transform: none;
		will-change: auto;
	}
}
