/* static/css/style.css */
@keyframes float {
    0% { transform: translateY(0px) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(3deg); }
    100% { transform: translateY(0px) rotate(0deg); }
}

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

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

@keyframes glowPulse {
    0% { box-shadow: 0 0 20px rgba(16, 185, 129, 0.1); }
    50% { box-shadow: 0 0 40px rgba(16, 185, 129, 0.3); }
    100% { box-shadow: 0 0 20px rgba(16, 185, 129, 0.1); }
}

.animate-float { animation: float 8s ease-in-out infinite; }
.animate-glow { animation: glowPulse 4s infinite alternate; }

.gradient-text {
    background: linear-gradient(90deg, #3b82f6, #10b981, #3b82f6);
    background-size: 200% auto;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: gradientMove 5s linear infinite;
}

.blob {
    position: absolute;
    filter: blur(100px);
    z-index: -1;
    opacity: 0.3;
    border-radius: 50%;
}

.glass { 
    background: rgba(15, 23, 42, 0.4); 
    backdrop-filter: blur(20px); 
    -webkit-backdrop-filter: blur(20px);
    border: 1px solid rgba(255, 255, 255, 0.05); 
}

/* Global Reveal System */
.reveal { opacity: 0; }
.reveal.active { animation: fadeInUp 0.8s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.delay-100 { animation-delay: 0.1s; }
.delay-200 { animation-delay: 0.2s; }
.delay-300 { animation-delay: 0.3s; }