/* ============================================
   YOOSH Animations
   Keyframes and scroll-triggered animations.
   ============================================ */

/* -- Keyframes -- */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(24px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

@keyframes heroFloat {

    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(30px, -20px) scale(1.05);
    }

    66% {
        transform: translate(-20px, 15px) scale(0.95);
    }
}

@keyframes pulse {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: 0.6;
    }
}

@keyframes shimmer {
    0% {
        background-position: -200% 0;
    }

    100% {
        background-position: 200% 0;
    }
}

@keyframes gradientShift {
    0% {
        background-position: 0% 50%;
    }

    50% {
        background-position: 100% 50%;
    }

    100% {
        background-position: 0% 50%;
    }
}

@keyframes float {

    0%,
    100% {
        transform: translateY(0);
    }

    50% {
        transform: translateY(-8px);
    }
}

/* -- Scroll Reveal -- */
.reveal {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.6s var(--ease-out), transform 0.6s var(--ease-out);
}

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

.reveal--delay-1 {
    transition-delay: 0.1s;
}

.reveal--delay-2 {
    transition-delay: 0.2s;
}

.reveal--delay-3 {
    transition-delay: 0.3s;
}

.reveal--delay-4 {
    transition-delay: 0.4s;
}

.reveal--delay-5 {
    transition-delay: 0.5s;
}

/* -- Counter Animation -- */
.counter-animate {
    display: inline-block;
}

/* -- Typing Effect -- */
.typing-cursor {
    display: inline-block;
    width: 2px;
    height: 1.1em;
    background: var(--primary-glow);
    margin-left: 2px;
    animation: pulse 1s ease-in-out infinite;
    vertical-align: text-bottom;
}

/* -- Hover Glow -- */
.hover-glow {
    position: relative;
}

.hover-glow::before {
    content: '';
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    background: var(--gradient-hero);
    opacity: 0;
    z-index: -1;
    filter: blur(12px);
    transition: opacity var(--duration-normal) var(--ease-out);
}

.hover-glow:hover::before {
    opacity: 0.3;
}