/* ============================================
   ANIMATIONS — Vice City / West Coast Chill
   ============================================ */

@keyframes gridDrift {
    from { background-position: 0 0; }
    to { background-position: 80px 80px; }
}

/* Loading: Uzwil map slowly lighting up from darkness */
@keyframes mapLightUp {
    0%   { filter: brightness(0.1) saturate(0.22) contrast(1.05); }
    55%  { filter: brightness(0.4) saturate(0.65) contrast(1.05); }
    100% { filter: brightness(0.92) saturate(1.15) contrast(1.08); }
}

/* Loading: a single street-light flicking on */
@keyframes lightOn {
    0%   { opacity: 0; transform: scale(0.4); }
    55%  { opacity: 1; transform: scale(1.3); }
    70%  { opacity: 0.65; }
    100% { opacity: 0.9; transform: scale(1); }
}

/* Loading: GTA-style spinner rotation */
@keyframes spinGta {
    to { transform: rotate(360deg); }
}

@keyframes logoFloat {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-8px); }
}

@keyframes heroLogoFloat {
    0%, 100% {
        transform: translateY(0);
        filter: drop-shadow(0 12px 60px rgba(255, 45, 146, 0.4));
    }
    50% {
        transform: translateY(-12px);
        filter: drop-shadow(0 20px 80px rgba(255, 45, 146, 0.6));
    }
}

@keyframes sunGlow {
    0%, 100% {
        transform: translateX(-50%) scale(1);
        opacity: 0.9;
    }
    50% {
        transform: translateX(-50%) scale(1.05);
        opacity: 1;
    }
}

@keyframes palmSway {
    0%, 100% { transform: rotate(-2deg); }
    50% { transform: rotate(2deg); }
}

@keyframes softPulse {
    0%, 100% { opacity: 1; transform: translateX(-50%) scale(1); }
    50% { opacity: 0.6; transform: translateX(-50%) scale(0.98); }
}

@keyframes blink {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.5; }
}

@keyframes scrollWheel {
    0% { opacity: 0; transform: translateY(0); }
    50% { opacity: 1; }
    100% { opacity: 0; transform: translateY(10px); }
}

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

@keyframes barFill {
    from { transform: scaleX(0); }
    to { transform: scaleX(1); }
}

@keyframes moneyFall {
    0% {
        transform: translateY(-100px) rotate(0deg);
        opacity: 0;
    }
    10% { opacity: 0.6; }
    90% { opacity: 0.6; }
    100% {
        transform: translateY(800px) rotate(720deg);
        opacity: 0;
    }
}

.scroll-fade {
    opacity: 0;
    transform: translateY(40px);
    transition: opacity 1s cubic-bezier(0.16, 1, 0.3, 1), transform 1s cubic-bezier(0.16, 1, 0.3, 1);
}

.scroll-fade.visible {
    opacity: 1;
    transform: translateY(0);
}

@keyframes shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-6px); }
    75% { transform: translateX(6px); }
}

.shake {
    animation: shake 0.4s ease;
}

@keyframes slideInLeft {
    from { transform: translateX(-40px); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

@keyframes slideInRight {
    from { transform: translateX(40px); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}

@keyframes zoomIn {
    from { transform: scale(0.95); opacity: 0; }
    to { transform: scale(1); opacity: 1; }
}

@keyframes neonPulse {
    0%, 100% {
        box-shadow: 0 0 16px rgba(255, 45, 146, 0.4);
    }
    50% {
        box-shadow: 0 0 32px rgba(255, 45, 146, 0.8), 0 0 64px rgba(255, 45, 146, 0.4);
    }
}
