/*
 * Soul Flower Somatics — Global Reveal
 * Fade + scale scroll reveal animation without altering layout, position, or stacking contexts.
 *
 * Elements are hidden as soon as JS tags them (the script runs from the head
 * and tags nodes via MutationObserver, so above-the-fold content is hidden
 * before first paint — no flash of content). Only the visible state carries
 * the transition, so hiding is instant and only the reveal animates.
 */

html body [data-sfs-reveal].sfs-reveal {
    opacity: 0 !important;
    transform: scale(0.92) !important;
    will-change: opacity, transform;
}

html body [data-sfs-reveal].sfs-reveal.sfs-reveal-visible {
    opacity: 1 !important;
    transform: none !important;
    transition:
        opacity 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94),
        transform 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94) !important;
}

@media (prefers-reduced-motion: reduce) {
    html body [data-sfs-reveal].sfs-reveal,
    html body [data-sfs-reveal].sfs-reveal.sfs-reveal-visible {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
}