/* ==============================================
   ANIMATIONS GLOBALES – ULTRA'SON
   Inclus sur toutes les pages du site
   ============================================== */

/* --- Keyframes communs --- */
@keyframes us-fadeInUp {
    from { opacity: 0; transform: translateY(50px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes us-fadeInLeft {
    from { opacity: 0; transform: translateX(-60px); }
    to   { opacity: 1; transform: translateX(0); }
}
@keyframes us-fadeInRight {
    from { opacity: 0; transform: translateX(60px); }
    to   { opacity: 1; transform: translateX(0); }
}
@keyframes us-fadeIn {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes us-glowTitle {
    0%   { text-shadow: 0 0 0px transparent; letter-spacing: 0.05em; }
    60%  { text-shadow: 0 0 30px rgba(255,255,255,0.35), 0 0 60px rgba(255,255,255,0.15); letter-spacing: 0.12em; }
    100% { text-shadow: 0 0 10px rgba(255,255,255,0.12); letter-spacing: 0.08em; }
}

/* --- Classes utilitaires (ajoutées par le JS) --- */
.us-anim {
    opacity: 0;
    transform: translateY(45px);
    transition: opacity 0.65s ease, transform 0.65s ease;
}
.us-anim.us-visible {
    opacity: 1;
    transform: translateY(0);
}

/* H1 : apparition avec glow au chargement */
.us-h1-anim {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}
.us-h1-anim.us-visible {
    opacity: 1;
    transform: translateY(0);
    animation: us-glowTitle 1.4s ease-out 0.05s both;
}

/* Images en grille : cascade */
.us-anim-img {
    opacity: 0;
    transform: translateY(55px) scale(0.97);
    transition: opacity 0.65s ease, transform 0.65s ease, box-shadow 0.5s ease;
}
.us-anim-img.us-visible {
    opacity: 1;
    transform: translateY(0) scale(1);
}
.us-anim-img.us-visible:hover {
    box-shadow: 0 0 28px rgba(255,255,255,0.2);
}

/* Blocs texte (vente_txt, location_flex_txt, label_flex) */
.us-anim-block {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}
.us-anim-block.us-visible {
    opacity: 1;
    transform: translateY(0);
}

/* Formulaire / blocs contact */
.us-anim-slide-left {
    opacity: 0;
    transform: translateX(-50px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}
.us-anim-slide-left.us-visible {
    opacity: 1;
    transform: translateX(0);
}
.us-anim-slide-right {
    opacity: 0;
    transform: translateX(50px);
    transition: opacity 0.7s ease, transform 0.7s ease;
}
.us-anim-slide-right.us-visible {
    opacity: 1;
    transform: translateX(0);
}
