/**
 * Scroll Reveal Animations
 *
 * @package Cristina_Aparicio_Makeup
 */

/* ─── Base Reveal State ───────────────────────────────────── */

[data-reveal] {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94),
                transform 0.8s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

[data-reveal].revealed {
    opacity: 1;
    transform: translateY(0);
}

/* ─── Directional Variants ────────────────────────────────── */

[data-reveal="left"] {
    opacity: 0;
    transform: translateX(-40px);
}

[data-reveal="left"].revealed {
    opacity: 1;
    transform: translateX(0);
}

[data-reveal="right"] {
    opacity: 0;
    transform: translateX(40px);
}

[data-reveal="right"].revealed {
    opacity: 1;
    transform: translateX(0);
}

/* ─── Hero Animations ─────────────────────────────────────── */

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

@keyframes heroLineGrow {
    from { transform: scaleY(0); }
    to { transform: scaleY(1); }
}

.hero__line {
    animation: heroLineGrow 0.8s ease 0.2s both;
    transform-origin: top;
}

.hero__kicker {
    animation: heroFadeIn 0.8s ease 0.4s both;
}

.hero__title {
    animation: heroFadeIn 0.8s ease 0.6s both;
}

.hero__tagline {
    animation: heroFadeIn 0.8s ease 0.8s both;
}

.hero__btns {
    animation: heroFadeIn 0.8s ease 1s both;
}

.hero__scroll {
    animation: heroFadeIn 0.8s ease 1.2s both;
}

/* ─── Page Hero Animation ─────────────────────────────────── */

.page-hero .eyebrow {
    animation: heroFadeIn 0.6s ease 0.2s both;
}

.page-hero__title {
    animation: heroFadeIn 0.6s ease 0.3s both;
}

.page-hero__sub {
    animation: heroFadeIn 0.6s ease 0.4s both;
}

/* ─── Timeline Alternating Animation ──────────────────────── */

.tl-item:nth-child(odd) [data-reveal] {
    transform: translateX(-30px);
    opacity: 0;
}

.tl-item:nth-child(even) [data-reveal] {
    transform: translateX(30px);
    opacity: 0;
}

.tl-item:nth-child(odd) [data-reveal].revealed,
.tl-item:nth-child(even) [data-reveal].revealed {
    transform: translateX(0);
    opacity: 1;
}

/* ─── Fade In Up Animation (for filter reappear) ──────────── */

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

/* ─── Reduced Motion ──────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    [data-reveal],
    [data-reveal="left"],
    [data-reveal="right"] {
        opacity: 1;
        transform: none;
    }

    .hero__line,
    .hero__kicker,
    .hero__title,
    .hero__tagline,
    .hero__btns,
    .hero__scroll {
        animation: none;
        opacity: 1;
        transform: none;
    }
}
