/* ============================================================
   ADVANCED FUTURISTIC ANIMATIONS
   ============================================================ */

/* Preloader pulse and rotation */
@keyframes preloaderPulse {
    0%, 100% {
        transform: scale(1);
        box-shadow: 0 0 20px rgba(124, 58, 237, 0.2);
    }
    50% {
        transform: scale(1.05);
        box-shadow: 0 0 40px rgba(124, 58, 237, 0.45), 0 0 80px rgba(6, 182, 212, 0.2);
    }
}

/* Floating effect for widgets & elements */
@keyframes float {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-8px);
    }
}
.animate-float {
    animation: float 6s ease-in-out infinite;
}

/* Neon border spin */
@keyframes spin-border {
    to {
        transform: rotate(360deg);
    }
}

/* Glitch animation */
@keyframes glitch {
    0% {
        clip-path: inset(40% 0 61% 0);
        transform: skew(0.3deg);
    }
    20% {
        clip-path: inset(92% 0 1% 0);
        transform: skew(-0.5deg skewX(-5deg));
    }
    40% {
        clip-path: inset(15% 0 80% 0);
        transform: skew(0.8deg);
    }
    60% {
        clip-path: inset(80% 0 5% 0);
        transform: skew(-0.2deg);
    }
    80% {
        clip-path: inset(3% 0 92% 0);
        transform: skew(0.5deg skewX(5deg));
    }
    100% {
        clip-path: inset(40% 0 61% 0);
        transform: skew(0.3deg);
    }
}
.glitch-hover:hover {
    animation: glitch 1s linear infinite;
}

/* Text decryption reveal placeholder (initial load fade) */
@keyframes letterIn {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Scroll reveal triggers */
[data-reveal] {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1), transform 0.8s cubic-bezier(0.16, 1, 0.3, 1);
    will-change: transform, opacity;
}
[data-reveal].in {
    opacity: 1;
    transform: translateY(0);
}
[data-reveal="scale"] {
    transform: scale(0.96) translateY(10px);
}
[data-reveal="scale"].in {
    transform: scale(1) translateY(0);
}
[data-reveal="left"] {
    transform: translateX(-30px);
}
[data-reveal="left"].in {
    transform: translateX(0);
}
[data-reveal="right"] {
    transform: translateX(30px);
}
[data-reveal="right"].in {
    transform: translateX(0);
}

/* Transition Delay Helpers */
.delay-1 { transition-delay: 0.1s; }
.delay-2 { transition-delay: 0.2s; }
.delay-3 { transition-delay: 0.3s; }
.delay-4 { transition-delay: 0.4s; }
.delay-5 { transition-delay: 0.5s; }

/* Pulse animation for R&D active states */
@keyframes rnPulse {
    0% {
        transform: scale(0.95);
        box-shadow: 0 0 0 0 rgba(6, 182, 212, 0.5);
    }
    70% {
        transform: scale(1);
        box-shadow: 0 0 0 10px rgba(6, 182, 212, 0);
    }
    100% {
        transform: scale(0.95);
        box-shadow: 0 0 0 0 rgba(6, 182, 212, 0);
    }
}

/* Ambient light translation */
@keyframes ambientMove {
    0%, 100% {
        transform: translate(0, 0) scale(1);
    }
    33% {
        transform: translate(30px, -40px) scale(1.1);
    }
    66% {
        transform: translate(-40px, 20px) scale(0.95);
    }
}
.ambient-glow {
    animation: ambientMove 15s ease-in-out infinite;
}

/* Sparkle element for buttons */
@keyframes buttonSparkle {
    0% {
        transform: scale(0.5) translate(0, 0);
        opacity: 1;
    }
    100% {
        transform: scale(1.5) translate(var(--x, 20px), var(--y, 20px));
        opacity: 0;
    }
}

/* Text Line sliding animation for hero */
@keyframes heroLineUp {
    0% {
        transform: translateY(105%);
    }
    100% {
        transform: translateY(0);
    }
}
.hero-line-animation {
    animation: heroLineUp 1.2s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
