/**
 * Static, same for every page, and only loaded on pages that actually
 * contain an animated block (see WLB_Plugin::maybe_enqueue_animation_assets).
 *
 * 1) FAILSAFE. Animated blocks start at opacity:0 and rely on assets/js/
 *    animate.js to reveal them. If that script never runs -- blocked by a
 *    hardening plugin or CSP, held back by a "delay JS" optimizer, or JS is
 *    off -- the content would stay invisible forever. This zero-length
 *    animation reveals the element after 3s unless the script has started
 *    (it adds .wlb-ready to <html> on load, which cancels this). Pure CSS,
 *    so it needs no inline script and is CSP-safe. An animation overrides
 *    normal declarations regardless of selector specificity, so it also
 *    beats the generated per-block `opacity:0` rule.
 *
 * 2) REDUCED MOTION. Anyone with reduced motion enabled never sees a
 *    fade/slide/zoom, full stop -- hence !important.
 */
.wlb-animate {
	animation: wlb-failsafe 0s linear 3s forwards;
}

html.wlb-ready .wlb-animate {
	animation: none;
}

@keyframes wlb-failsafe {
	to {
		opacity: 1;
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.wlb-animate {
		transition: none !important;
		opacity: 1 !important;
		transform: none !important;
		animation: none !important;
	}
}
