/**
 * GSAP Block Animations - Frontend Styles v2.2
 *
 * Le masquage anti-FOUC est conditionne a la classe .gsap-js posee sur <html>
 * par soht_gsap_head_guard(). Si GSAP ne se charge pas, la classe .gsap-failed
 * est ajoutee au bout de 3 s et tout redevient visible.
 * Sans ce garde-fou, un CDN bloque laissait le contenu invisible.
 */

/* État initial des éléments animés */
.gsap-js:not(.gsap-failed) .gsap-animated:not(.gsap-initialized) {
    opacity: 0;
}

/* Assurer que les éléments peuvent être transformés */
.gsap-animated,
.gsap-parallax,
.gsap-pin {
    will-change: transform, opacity;
}

/* Éviter le flash de contenu non animé */
.gsap-js:not(.gsap-failed) [data-gsap-animation]:not([data-gsap-animation="none"]):not(.gsap-initialized) {
    visibility: hidden;
}

[data-gsap-animation].gsap-initialized {
    visibility: visible;
}

/* Stagger container - enfants cachés initialement */
.gsap-js:not(.gsap-failed) .gsap-stagger-container:not(.gsap-initialized) > * {
    opacity: 0;
}

/* Pin - Assurer un bon fonctionnement */
.gsap-pin {
    position: relative;
}

/* Parallax - Overflow visible pour les effets qui dépassent */
.gsap-parallax {
    overflow: visible;
}

/* Container pour les éléments parallax avec overflow caché */
.gsap-parallax-wrapper {
    overflow: hidden;
}

/* Filet de sécurité : GSAP absent ou en échec de chargement */
.gsap-failed .gsap-animated,
.gsap-failed .gsap-parallax,
.gsap-failed .gsap-pin,
.gsap-failed [data-gsap-animation],
.gsap-failed [data-gsap-parallax],
.gsap-failed [data-gsap-pin],
.gsap-failed .gsap-stagger-container > * {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
}

/* Optimisation des performances / accessibilité */
@media (prefers-reduced-motion: reduce) {
    .gsap-animated,
    .gsap-parallax,
    .gsap-pin,
    .gsap-stagger-container > *,
    [data-gsap-animation],
    [data-gsap-parallax],
    [data-gsap-pin] {
        animation: none !important;
        transition: none !important;
        opacity: 1 !important;
        transform: none !important;
        visibility: visible !important;
    }

    /* Désactiver le pin en mode reduced motion */
    .pin-spacer {
        display: contents !important;
    }
}

/* Fallback pour les navigateurs sans JS
   (.gsap-js n'est jamais posée si le JS ne s'exécute pas, mais on double
   la protection pour les thèmes qui ajoutent eux-mêmes .no-js) */
.no-js .gsap-animated,
.no-js .gsap-parallax,
.no-js .gsap-pin,
.no-js [data-gsap-animation],
.no-js [data-gsap-parallax],
.no-js [data-gsap-pin] {
    opacity: 1 !important;
    visibility: visible !important;
    transform: none !important;
}
