/* Phase 6a: IntersectionObserver scroll-reveal. Loads after ww-shop.css, on
   every WooCommerce page. The `.ww-reveal` class is added purely by
   ww-shop-reveal.js (never present in server-rendered markup), so there's
   no flash-of-hidden-content risk if that script fails to load — elements
   simply stay in their normal, fully-visible state. No !important anywhere.

   `--animation-order` (set per-element by the JS, based on its index among
   sibling reveal targets) drives the stagger via transition-delay — see
   ww-shop-reveal.js for why the JS sets it once at observe-time rather than
   only on intersection. */

.ww-reveal {
	opacity: 0.01;
	transform: translateY(2rem);
	transition: opacity 400ms cubic-bezier(0, 0, 0.3, 1), transform 400ms cubic-bezier(0, 0, 0.3, 1);
	transition-delay: calc(var(--animation-order, 0) * 50ms);
}

.ww-reveal.ww-revealed {
	opacity: 1;
	transform: translateY(0);
}

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