/*
 * reveal.css — lightweight AOS-compatible scroll reveals
 * ------------------------------------------------------------------
 * A trimmed stand-in for the full css/aos.min.css (26 KB). We reuse
 * AOS's JavaScript (js/aos.min.js) — it toggles .aos-init / .aos-animate
 * on any [data-aos] element as it scrolls into view — and supply only
 * the handful of effects this theme actually uses.
 *
 * fade-up is the house default; the rest are here so a block can opt
 * into a different motion without pulling the full library back in.
 *
 * Robustness: the hidden state is scoped to .aos-init, a class AOS only
 * adds once its JS has run. If the script ever fails to load, no element
 * is left at opacity:0 — everything renders normally.
 */

/* Base: hidden + ready to transition, but ONLY after AOS has tagged it. */
[data-aos].aos-init {
	opacity: 0;
	transition-property: opacity, transform;
	transition-duration: 700ms;
	transition-timing-function: cubic-bezier(0.25, 0.46, 0.45, 0.94); /* ease-out */
	will-change: opacity, transform;
}

/* Starting offsets (subtler than AOS's 100px). Match AOS direction naming. */
[data-aos="fade"].aos-init        { transform: none; }
[data-aos="fade-up"].aos-init     { transform: translate3d(0, 32px, 0); }
[data-aos="fade-down"].aos-init   { transform: translate3d(0, -32px, 0); }
[data-aos="fade-right"].aos-init  { transform: translate3d(-32px, 0, 0); }
[data-aos="fade-left"].aos-init   { transform: translate3d(32px, 0, 0); }
[data-aos="zoom-in"].aos-init     { transform: scale(0.96); }
[data-aos="zoom-out"].aos-init    { transform: scale(1.04); }

/* Resting (revealed) state — AOS adds .aos-animate when in view. */
[data-aos].aos-init.aos-animate {
	opacity: 1;
	transform: translate3d(0, 0, 0);
}

/* Optional per-element duration overrides (data-aos-duration="600"). */
[data-aos][data-aos-duration="400"].aos-init  { transition-duration: 400ms; }
[data-aos][data-aos-duration="500"].aos-init  { transition-duration: 500ms; }
[data-aos][data-aos-duration="600"].aos-init  { transition-duration: 600ms; }
[data-aos][data-aos-duration="700"].aos-init  { transition-duration: 700ms; }
[data-aos][data-aos-duration="800"].aos-init  { transition-duration: 800ms; }
[data-aos][data-aos-duration="900"].aos-init  { transition-duration: 900ms; }
[data-aos][data-aos-duration="1000"].aos-init { transition-duration: 1000ms; }

/* Stagger scale (data-aos-delay="150"). Applied on reveal only. */
[data-aos][data-aos-delay="50"].aos-init.aos-animate  { transition-delay: 50ms; }
[data-aos][data-aos-delay="100"].aos-init.aos-animate { transition-delay: 100ms; }
[data-aos][data-aos-delay="150"].aos-init.aos-animate { transition-delay: 150ms; }
[data-aos][data-aos-delay="200"].aos-init.aos-animate { transition-delay: 200ms; }
[data-aos][data-aos-delay="250"].aos-init.aos-animate { transition-delay: 250ms; }
[data-aos][data-aos-delay="300"].aos-init.aos-animate { transition-delay: 300ms; }
[data-aos][data-aos-delay="350"].aos-init.aos-animate { transition-delay: 350ms; }
[data-aos][data-aos-delay="400"].aos-init.aos-animate { transition-delay: 400ms; }
[data-aos][data-aos-delay="450"].aos-init.aos-animate { transition-delay: 450ms; }
[data-aos][data-aos-delay="500"].aos-init.aos-animate { transition-delay: 500ms; }
[data-aos][data-aos-delay="550"].aos-init.aos-animate { transition-delay: 550ms; }
[data-aos][data-aos-delay="600"].aos-init.aos-animate { transition-delay: 600ms; }

/* Respect reduced-motion: reveal instantly, no transform/transition.
   Belt-and-suspenders alongside the JS disable() — covers the brief
   window before init and any case where JS doesn't run. */
@media (prefers-reduced-motion: reduce) {
	[data-aos] {
		opacity: 1 !important;
		transform: none !important;
		transition: none !important;
	}
}
