/**
 * Animations — page d'accueil, sobres et organiques.
 */

/* --- Pastilles-bulles flottantes (fixées au viewport) --- */
.home-landing .home-bubbles {
    position: fixed;
    inset: 0;
    z-index: 4;
    pointer-events: none;
    overflow: visible;
}

.home-landing .home-bubble {
    position: fixed;
    left: var(--b-left, 50vw);
    top: var(--b-top, 50vh);
    margin: 0;
    z-index: 4;
    width: var(--b-w, 28px);
    height: var(--b-h, 28px);
    border-radius: 999px;
    opacity: 0;
    transform: scale(0);
    animation:
        bubblePop var(--b-pop-dur, 1.8s) ease-out var(--b-delay, 0s) forwards,
        bubbleDrift var(--b-float-dur, 30s) ease-in-out calc(var(--b-delay, 0s) + var(--b-pop-dur, 1.8s)) infinite;
    will-change: transform, opacity;
}

.home-landing .home-bubble.is-bursting {
    animation: bubbleBurst var(--b-pop-dur, 1.8s) ease-out forwards !important;
}

.home-landing .home-bubble.is-bursting-scroll.is-bursting {
    animation: bubbleBurstScroll var(--b-pop-dur, 1s) cubic-bezier(0.34, 1.4, 0.64, 1) forwards !important;
}

@keyframes bubbleBurstScroll {
    0% {
        opacity: 0.42;
        transform: scale(1);
    }
    35% {
        opacity: 0.55;
        transform: scale(1.25);
    }
    100% {
        opacity: 0;
        transform: scale(0);
    }
}

@keyframes bubblePop {
    0% {
        opacity: 0;
        transform: scale(0.2) translate(0, 0);
    }
    70% {
        opacity: 0.45;
        transform: scale(1.06) translate(0, 0);
    }
    100% {
        opacity: 0.38;
        transform: scale(1) translate(0, 0);
    }
}

@keyframes bubbleDrift {
    0%, 100% {
        transform: scale(1) translate(0, 0);
    }
    25% {
        transform: scale(1.06) translate(var(--b-dx1, 30px), var(--b-dy1, -50px));
    }
    50% {
        transform: scale(0.94) translate(var(--b-dx2, -20px), var(--b-dy2, -90px));
    }
    75% {
        transform: scale(1.08) translate(var(--b-dx3, 40px), var(--b-dy3, -40px));
    }
}

@keyframes bubbleBurst {
    0% {
        opacity: 0.38;
        transform: scale(1);
    }
    50% {
        opacity: 0.2;
        transform: scale(1.12);
    }
    100% {
        opacity: 0;
        transform: scale(0.6);
    }
}

@keyframes homeFadeUp {
    from { opacity: 0; transform: translateY(24px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes homeFadeTilt {
    from { opacity: 0; transform: translateY(30px) rotate(2deg); }
    to { opacity: 1; transform: translateY(0) rotate(1.2deg); }
}

@keyframes homeKenBurns {
    from { transform: scale(1); }
    to { transform: scale(1.05); }
}

/* Navbar scroll */
.home-landing .navbar.navbar--landing {
    transition: padding 0.3s ease, box-shadow 0.3s ease;
}

.home-landing .navbar.navbar--scrolled {
    padding: 0.65rem 0;
    box-shadow: 0 4px 30px -8px rgba(99, 102, 241, 0.12);
}

/* Hero */
.home-landing.home-loaded .hero-landing-eyebrow { animation: homeFadeUp 0.65s ease 0.05s both; }
.home-landing.home-loaded .hero-landing-title { animation: homeFadeUp 0.7s ease 0.12s both; }
.home-landing.home-loaded .hero-landing-lead { animation: homeFadeUp 0.7s ease 0.2s both; }
.home-landing.home-loaded .hero-landing-actions { animation: homeFadeUp 0.7s ease 0.28s both; }
.home-landing.home-loaded .hero-landing-stats { animation: homeFadeUp 0.7s ease 0.36s both; }
.home-landing.home-loaded .hero-landing-visual { animation: homeFadeTilt 0.85s ease 0.22s both; }

/* Carrousel */
.home-landing .home-slideshow-slide.is-active img {
    animation: homeKenBurns 9s ease-out forwards;
}

.home-landing .home-slideshow-detail-inner {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    transition: opacity 0.3s ease, transform 0.3s ease;
}

.home-landing .home-slideshow-detail.is-changing .home-slideshow-detail-inner {
    opacity: 0;
    transform: translateY(8px);
}

/* Accent section */
.home-landing .home-section-accent {
    display: block;
    width: 48px;
    height: 4px;
    margin: 0 0 0.85rem;
    border-radius: 4px 12px 4px 12px;
    background: var(--hl-gradient, linear-gradient(128deg, #6366f1, #c084fc));
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
}

.home-landing .home-reveal.is-visible .home-section-accent {
    transform: scaleX(1);
}

/* Scroll reveal */
.home-landing .home-reveal {
    opacity: 0;
    transform: translateY(28px);
    transition: opacity 0.6s ease, transform 0.6s ease;
}

.home-landing .home-reveal.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.home-landing .home-stagger-item {
    opacity: 0;
    transform: translateY(24px) rotate(1deg);
    transition: opacity 0.55s ease, transform 0.55s ease;
}

.home-landing .home-stagger-item.is-visible {
    opacity: 1;
    transform: translateY(0) rotate(0deg);
}

@media (prefers-reduced-motion: reduce) {
    .home-landing .home-bubbles {
        display: none;
    }

    .home-landing .home-slideshow-slide.is-active img,
    .home-landing.home-loaded .hero-landing-eyebrow,
    .home-landing.home-loaded .hero-landing-title,
    .home-landing.home-loaded .hero-landing-lead,
    .home-landing.home-loaded .hero-landing-actions,
    .home-landing.home-loaded .hero-landing-stats,
    .home-landing.home-loaded .hero-landing-visual {
        animation: none !important;
        opacity: 1;
        transform: none;
    }

    .home-landing .home-reveal,
    .home-landing .home-stagger-item {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .home-landing .home-section-accent { transform: scaleX(1); transition: none; }
    .home-landing .home-slideshow-detail-inner { transition: none; }
}
