/* Gradient background animation */
@keyframes gradientShift {
    0%, 100% { background-position: 0% 50%; }
    50% { background-position: 100% 50%; }
}

/* Floating animation for orbs */
@keyframes float {
    0%, 100% { transform: translateY(0px) translateX(0px) scale(1); }
    25% { transform: translateY(-30px) translateX(20px) scale(1.1); }
    50% { transform: translateY(-10px) translateX(-15px) scale(0.9); }
    75% { transform: translateY(-20px) translateX(10px) scale(1.05); }
}

/* Cursor blink */
@keyframes blink { 
    50% { opacity: 0; } 
}

/* Typewriter effect */
@keyframes typing { 
    from { width: 0; } 
    to { width: 100%; } 
}

/* Fade in elements from bottom */
@keyframes fadeInUp { 
    to { opacity: 1; transform: translateY(0); } 
}

/* Particle animation */
@keyframes particleFloat {
    0% { transform: translateY(100vh) translateX(0); opacity: 0; }
    10% { opacity: 1; }
    90% { opacity: 1; }
    100% { transform: translateY(-100px) translateX(100px); opacity: 0; }
}

/* Typewriter class */
.typewriter { 
    overflow: hidden; 
    white-space: nowrap; 
    animation: typing 2s steps(20, end); 
}

/* Fade in class */
.fade-in { 
    animation: fadeInUp 0.8s ease-out forwards; 
    opacity: 0; 
    transform: translateY(20px); 
}