/*
	Reveal animations — additive, removable layer.

	Hides nothing on its own. Every rule here is scoped under `.js-reveal`,
	a class that js/reveal.js adds to <html> only after it has confirmed
	IntersectionObserver support and wired up its triggers. If that script
	is missing, blocked, or errors out, `.js-reveal` never lands and every
	[data-reveal] element just renders normally, fully visible, no FOUC.

	To remove this feature entirely:
	  1. Delete the <link> to this file.
	  2. Delete the <script> tag for js/reveal.js.
	That's it — the data-reveal / data-reveal-group / data-reveal-trigger
	attributes left in the markup are inert without this stylesheet.
*/

.js-reveal [data-reveal] {
	opacity: 0;
	transform: translateY(10px);
	transition: opacity .9s ease-out, transform .9s ease-out;
	transition-delay: calc(150ms + var(--i, 0) * 180ms);
}

.js-reveal [data-reveal-group].is-revealed [data-reveal] {
	/* Most elements reveal to fully opaque; an element can opt into a
	   different resting opacity (e.g. one that's already intentionally
	   faded in its own stylesheet) via style="--reveal-opacity: 0.33". */
	opacity: var(--reveal-opacity, 1);
	transform: none;
}

@media (prefers-reduced-motion: reduce) {
	.js-reveal [data-reveal] {
		opacity: 1;
		transform: none;
		transition: none;
	}
}
