/* ═══════════════════════════════════════════════════════
   QUDRAX ANIMATIONS — Keyframes & Initial States
   ═══════════════════════════════════════════════════════ */

/* ── Initial hidden states for GSAP reveal ── */
.qx-reveal,
.qx-reveal--left,
.qx-reveal--right,
.qx-reveal--scale {
    opacity: 0;
    transform: translateY(40px);
}

.qx-reveal--left  { transform: translateX(-40px); }
.qx-reveal--right { transform: translateX(40px); }
.qx-reveal--scale { transform: scale(0.95); opacity: 0; }


/* ── Keyframes ── */
@keyframes qx-float {
    0%, 100% { transform: translateX(-50%) translateY(0); }
    50%      { transform: translateX(-50%) translateY(-8px); }
}

@keyframes qx-marquee {
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}

@keyframes qx-pulse-glow {
    0%, 100% { box-shadow: 0 0 20px rgba(139, 92, 246, 0.1); }
    50%      { box-shadow: 0 0 40px rgba(139, 92, 246, 0.25); }
}

@keyframes qx-gradient-shift {
    0%   { background-position: 0% 50%; }
    50%  { background-position: 100% 50%; }
    100% { background-position: 0% 50%; }
}

@keyframes qx-spin-slow {
    0%   { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}


/* ── Animated gradient background ── */
.qx-animated-gradient {
    background-size: 200% 200%;
    animation: qx-gradient-shift 8s ease infinite;
}


/* ── Hand feature transition states ── */
.qx-hand-feature {
    opacity: 0.4;
    transition: opacity 0.4s ease, transform 0.4s ease;
}
.qx-hand-feature.is-visible,
.qx-hand-feature:hover {
    opacity: 1;
}


/* ── Stats number animated gradient ── */
.qx-stats__number {
    background-size: 200% 200%;
    animation: qx-gradient-shift 4s ease infinite;
}


/* ── Card hover glow ── */
.qx-card--glass {
    transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);
}


/* ── Smooth scroll body state ── */
html.lenis, html.lenis body {
    height: auto;
}

.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}

.lenis.lenis-stopped {
    overflow: hidden;
}
