/*
 * ECONS scroll motion — additive layer.
 *
 * Applied only when scroll-motion.js has successfully planned the page, so a
 * broken/missing script can never leave content hidden.
 *
 * Rules of the house: transform and opacity only (no layout thrash), and every
 * effect is disabled under prefers-reduced-motion.
 */

@media (prefers-reduced-motion: reduce) {
	.e-motion-ready .e-stagger > * {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
	.e-motion-ready .e-drift {
		transform: none !important;
	}
}

/* Staggered entry: children of a section settle in sequence rather than the
   whole block arriving as one slab. */
.e-motion-ready .e-stagger > * {
	opacity: 0;
	transform: translate3d(0, 18px, 0);
	transition:
		opacity 0.62s cubic-bezier(0.22, 0.61, 0.36, 1),
		transform 0.62s cubic-bezier(0.22, 0.61, 0.36, 1);
	transition-delay: calc(var(--e-i, 0) * 65ms);
	will-change: opacity, transform;
}

.e-motion-ready .e-stagger.is-in > * {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

/* Media drift: images travel slightly slower than the text around them.
   Only applied where the container clips, so no edges can show. */
.e-motion-ready .e-drift {
	transform: translate3d(0, var(--e-dy, 0px), 0);
	will-change: transform;
}
