/* ---------------------------------------------------------
   Scroll reveals — transform ONLY, never opacity as start state.
   Default (no-JS) state is the final, fully visible position;
   JS arms elements with .js-armed right before observing them.
   --------------------------------------------------------- */
.reveal {
	transform: translateY(0);
	transition: transform var(--dur-slow) var(--ease-out);
}

.reveal.js-armed { transform: translateY(28px); }
.reveal.is-visible { transform: translateY(0); }

/* Hero elements fade in with a shorter, gentler offset on load. */
.hero__copy.js-armed,
.hero__figure.js-armed { transform: translateY(16px); }

@media (prefers-reduced-motion: reduce) {
	.reveal, .reveal.js-armed { transform: none !important; transition: none !important; }
}
