/* ============================================
   ANIMATIONS
   ============================================ */

/* --- SCROLL REVEAL ANIMATIONS --- */

[data-animate] {
    opacity: 0;
    transition: opacity 0.6s ease, transform 0.6s ease;
}

[data-animate].is-visible {
    opacity: 1;
    transform: none;
}

[data-animate="fade-up"] {
    transform: translateY(24px);
}

[data-animate="fade-in"] {
    transform: none;
}

[data-animate="fade-left"] {
    transform: translateX(24px);
}

[data-animate="fade-right"] {
    transform: translateX(-24px);
}

/* Stagger delays */
[data-delay="100"] { transition-delay: 100ms; }
[data-delay="200"] { transition-delay: 200ms; }
[data-delay="300"] { transition-delay: 300ms; }
[data-delay="400"] { transition-delay: 400ms; }
[data-delay="500"] { transition-delay: 500ms; }
[data-delay="600"] { transition-delay: 600ms; }


/* --- KEYFRAME ANIMATIONS --- */

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

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

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

@keyframes tickerScroll {
    0% { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

@keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0; }
}

@keyframes gridPulse {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 0.6; }
}


/* --- UTILITY CLASSES --- */

.animate-fade-in {
    animation: fadeIn 0.6s ease forwards;
}

.animate-fade-in-up {
    animation: fadeInUp 0.6s ease forwards;
}

.animate-pulse {
    animation: pulse 2s ease-in-out infinite;
}

.animate-blink {
    animation: blink 1s step-end infinite;
}

/* Hero stagger animation */
.hero-stagger > * {
    opacity: 0;
    animation: fadeInUp 0.6s ease forwards;
}

.hero-stagger > *:nth-child(1) { animation-delay: 0.1s; }
.hero-stagger > *:nth-child(2) { animation-delay: 0.2s; }
.hero-stagger > *:nth-child(3) { animation-delay: 0.35s; }
.hero-stagger > *:nth-child(4) { animation-delay: 0.5s; }
.hero-stagger > *:nth-child(5) { animation-delay: 0.65s; }
.hero-stagger > *:nth-child(6) { animation-delay: 0.8s; }


/* --- REDUCED MOTION --- */

@media (prefers-reduced-motion: reduce) {
    [data-animate] {
        opacity: 1;
        transform: none;
        transition: none;
    }

    .hero-stagger > * {
        opacity: 1;
        animation: none;
    }
}
