
/**
 * Supreme — Scroll reveal styles.
 *
 * The hidden state is gated behind `html.reveal-ready`, which the reveal script
 * only adds when it runs (and never when the user prefers reduced motion). So
 * without JS — or for search crawlers — nothing here applies and all content is
 * visible. The `transition` lives on a base rule that always matches the targets,
 * so removing the hidden state (via the `.is-revealed` class) animates smoothly.
 */

/* Transition is always present on the targets so the reveal animates. */
html.reveal-ready .elementor-top-section, html.reveal-ready .e-con.e-parent, html.reveal-ready .supreme-reveal {
	transition: opacity .7s ease, transform .7s ease;
}

/* Hidden (below + faded) until revealed. `supreme-no-reveal` opts a block out. */
html.reveal-ready .elementor-top-section:not(.is-revealed):not(.supreme-no-reveal), html.reveal-ready .e-con.e-parent:not(.is-revealed):not(.supreme-no-reveal), html.reveal-ready .supreme-reveal:not(.is-revealed):not(.supreme-no-reveal) {
	opacity: 0;
	transform: translateY(32px);
}

/* The footer is excluded outright — it renders on every page, and it sits inside
   the observer's negative bottom rootMargin, so on a short page it can fail to
   intersect and stay hidden permanently. Must stay in sync with EXCLUDED_REGIONS
   in reveal-on-scroll.js. */
html.reveal-ready :is(footer, .elementor-location-footer, .site-footer) :is(.elementor-top-section, .e-con.e-parent, .supreme-reveal) {
	opacity: 1 !important;
	transform: none !important;
	transition: none !important;
}

/* Belt-and-suspenders: never animate if the user prefers reduced motion. */
@media (prefers-reduced-motion: reduce) {
	html.reveal-ready .elementor-top-section, html.reveal-ready .e-con.e-parent, html.reveal-ready .supreme-reveal {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
