/* ============================================
   SCROLL REVEAL ANIMATIONS
   ============================================ */
[data-animate] {
    opacity: 0;
    transition: opacity 0.6s ease, transform 0.6s ease;
}

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

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

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

[data-animate].visible {
    opacity: 1;
    transform: translate(0);
}

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

/* ============================================
   TYPING CURSOR
   ============================================ */
.typing-cursor {
    animation: blink 0.8s step-end infinite;
    color: var(--accent-primary);
    font-weight: 300;
}

@keyframes blink {
    50% { opacity: 0; }
}

/* ============================================
   BADGE PULSE
   ============================================ */
.badge-dot {
    animation: pulse 2s ease-in-out infinite;
}

@keyframes pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.4); }
    50% { box-shadow: 0 0 0 8px rgba(16, 185, 129, 0); }
}

/* ============================================
   HERO PARTICLES FLOAT
   ============================================ */
.hero-particles::before {
    animation: float 8s ease-in-out infinite;
}

.hero-particles::after {
    animation: float 8s ease-in-out infinite -4s;
}

@keyframes float {
    0%, 100% { transform: translate(0, 0); }
    50% { transform: translate(20px, -20px); }
}

/* ============================================
   CODE WINDOW ENTRANCE
   ============================================ */
.code-window {
    animation: slideUp 0.8s ease 0.3s both;
}

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

/* ============================================
   HERO CONTENT STAGGER
   ============================================ */
.hero-badge {
    animation: fadeIn 0.6s ease 0.1s both;
}

.hero-title {
    animation: fadeIn 0.6s ease 0.2s both;
}

.hero-subtitle {
    animation: fadeIn 0.6s ease 0.3s both;
}

.hero-description {
    animation: fadeIn 0.6s ease 0.4s both;
}

.hero-cta {
    animation: fadeIn 0.6s ease 0.5s both;
}

.hero-tech-strip {
    animation: fadeIn 0.6s ease 0.6s both;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(15px);
    }
    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;
    }

    html {
        scroll-behavior: auto;
    }

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