/* Cursor Animations */
@keyframes cursorPulse {
    0% {
        transform: translate(-50%, -50%) scale(0.8);
        opacity: 0.7;
        border-width: 3px;
    }
    50% {
        transform: translate(-50%, -50%) scale(1.3);
        opacity: 0.4;
        border-width: 1px;
    }
    100% {
        transform: translate(-50%, -50%) scale(0.8);
        opacity: 0.7;
        border-width: 3px;
    }
}

@keyframes particleExplode {
    0% {
        opacity: 1;
        transform: translate(-50%, -50%) scale(1);
        filter: blur(0px);
    }
    50% {
        opacity: 0.7;
        filter: blur(1px);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(4) rotate(90deg);
        filter: blur(3px);
    }
}

@keyframes waveExpandSoft {
    0% {
        opacity: 0.7;
        transform: translate(-50%, -50%) scale(0.5);
    }
    100% {
        opacity: 0;
        transform: translate(-50%, -50%) scale(3.5);
    }
}

/* Background Animations */
@keyframes wave {
    0% { transform: rotate(0deg) scale(1); }
    50% { transform: rotate(180deg) scale(1.05); }
    100% { transform: rotate(360deg) scale(1); }
}

@keyframes float {
    0%, 100% {
        transform: translateY(0) translateX(0) scale(1);
    }
    25% {
        transform: translateY(-120px) translateX(80px) scale(1.1);
    }
    50% {
        transform: translateY(-180px) translateX(-120px) scale(0.9);
    }
    75% {
        transform: translateY(-90px) translateX(-60px) scale(1.05);
    }
}

@keyframes floatShape {
    0%, 100% {
        transform: translateY(0) rotate(0deg) scale(1);
        border-radius: 30% 70% 70% 30% / 30% 30% 70% 70%;
    }
    25% {
        transform: translateY(-120px) rotate(120deg) scale(1.1);
        border-radius: 70% 30% 30% 70% / 70% 70% 30% 30%;
    }
    50% {
        transform: translateY(-60px) rotate(240deg) scale(0.9);
        border-radius: 50% 50% 50% 50% / 70% 30% 70% 30%;
    }
    75% {
        transform: translateY(-180px) rotate(360deg) scale(1.05);
        border-radius: 30% 70% 50% 50% / 50% 50% 30% 70%;
    }
}

/* Text Animations */
@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-60px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

@keyframes fadeInPerspective {
    from {
        opacity: 0;
        transform: perspective(1000px) rotateY(20deg) scale(0.9);
    }
    to {
        opacity: 1;
        transform: perspective(1000px) rotateY(0deg) scale(1);
    }
}

/* Component Animations */
@keyframes rippleAnimation {
    to {
        transform: scale(4.5);
        opacity: 0;
    }
}

@keyframes scrollWheel {
    0% {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
    50% {
        opacity: 0.3;
        transform: translateX(-50%) translateY(15px);
    }
    100% {
        opacity: 1;
        transform: translateX(-50%) translateY(0);
    }
}

@keyframes pulseFlutter {
    0%, 100% { transform: scale(1) rotate(0deg); }
    50% { transform: scale(1.12) rotate(5deg); }
}

@keyframes growLine {
    to {
        opacity: 1;
        width: 100px;
    }
}
@keyframes navLinkFade {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }

}

/* Tilt Instruction Overlay Animation */
@keyframes slideOutUp {
    from {
        transform: translateY(0);
        opacity: 1;
    }
    to {
        transform: translateY(-100%);
        opacity: 0;
    }
}