/* Premium Keyframe Animations */

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

@keyframes floatOrganic {
    0%, 100% {
        transform: translateY(0px) rotate(0deg) scale(1);
    }
    33% {
        transform: translateY(-12px) rotate(2deg) scale(1.02);
    }
    66% {
        transform: translateY(6px) rotate(-1deg) scale(0.98);
    }
}

@keyframes pulseNeon {
    0%, 100% {
        box-shadow: 0 0 15px rgba(var(--accent-primary-rgb), 0.15),
                    0 0 5px rgba(var(--accent-secondary-rgb), 0.05);
    }
    50% {
        box-shadow: 0 0 35px rgba(var(--accent-primary-rgb), 0.35),
                    0 0 15px rgba(var(--accent-secondary-rgb), 0.15);
    }
}

@keyframes spinSlow {
    from { transform: rotate(0deg); }
    to { transform: rotate(360deg); }
}

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

/* Animations Classes */
.animate-gradient {
    background-size: 200% 200%;
    animation: gradientShift 10s ease infinite;
}

.animate-float {
    animation: floatOrganic 8s ease-in-out infinite;
}

.animate-spin-slow {
    animation: spinSlow 25s linear infinite;
}

.gradient-text {
    background: linear-gradient(135deg, hsl(var(--accent-primary)) 0%, hsl(var(--accent-secondary)) 100%);
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    background-clip: text;
    display: inline-block;
}

/* Intersection Scroll Reveals */
.reveal {
    opacity: 0;
    transition: opacity 0.85s cubic-bezier(0.25, 1, 0.5, 1),
                transform 0.85s cubic-bezier(0.25, 1, 0.5, 1);
    will-change: transform, opacity;
}

.reveal-up {
    transform: translateY(35px);
}

.reveal-down {
    transform: translateY(-35px);
}

.reveal-left {
    transform: translateX(35px);
}

.reveal-right {
    transform: translateX(-35px);
}

.reveal-scale {
    transform: scale(0.96);
}

.revealed {
    opacity: 1;
    transform: translate(0) scale(1);
}
