/* ============================================
   ANIMATIONS
   ============================================ */

@keyframes pulseGlow {
    0%,
    100% {
        opacity: 0.6;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.1);
    }
}

@keyframes borderPulse {
    0%,
    100% {
        opacity: 0.5;
    }
    50% {
        opacity: 0.8;
    }
}

@keyframes cardGlow {
    0%,
    100% {
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.9), 0 0 40px rgba(255, 213, 79, 0.2),
            inset 0 0 30px rgba(255, 213, 79, 0.05);
    }
    50% {
        box-shadow: 0 20px 60px rgba(0, 0, 0, 0.9), 0 0 60px rgba(255, 213, 79, 0.4),
            inset 0 0 40px rgba(255, 213, 79, 0.1);
    }
}

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

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

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

@keyframes statsShine {
    0% {
        left: -100%;
    }
    50%,
    100% {
        left: 100%;
    }
}

@keyframes activeSkillPulse {
    0%,
    100% {
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
    }
    50% {
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3), 0 0 16px rgba(41, 121, 255, 0.4);
    }
}

/* Battle Effects Animations */
@keyframes anim-slash-basic {
    0% {
        width: 0;
        opacity: 0;
        transform: translate(-30px, -30px) rotate(-45deg);
    }
    50% {
        width: 150px;
        opacity: 1;
        transform: translate(0, 0) rotate(-45deg);
    }
    100% {
        width: 200px;
        opacity: 0;
        transform: translate(30px, 30px) rotate(-45deg);
    }
}

@keyframes anim-slash-fire {
    0% {
        width: 0;
        opacity: 0;
        transform: translate(-40px, -40px) rotate(-45deg) scale(0.5);
    }
    50% {
        width: 200px;
        opacity: 1;
        transform: translate(0, 0) rotate(-45deg) scale(1.2);
    }
    100% {
        width: 250px;
        opacity: 0;
        transform: translate(40px, 40px) rotate(-45deg) scale(1.5);
    }
}

@keyframes anim-slash-ice {
    0% {
        width: 0;
        opacity: 0;
        left: 20%;
        top: 20%;
    }
    40% {
        width: 250px;
        opacity: 1;
        left: 50%;
        top: 50%;
        height: 15px;
    }
    100% {
        width: 300px;
        opacity: 0;
        left: 80%;
        top: 80%;
        height: 2px;
    }
}

@keyframes anim-slash-lightning {
    0% {
        height: 0;
        top: 0;
        opacity: 0;
    }
    30% {
        height: 300px;
        top: 20%;
        opacity: 1;
        width: 15px;
    }
    50% {
        background: #ffff00;
        transform: rotate(15deg) translateX(10px);
    }
    100% {
        height: 300px;
        top: 100%;
        opacity: 0;
        width: 2px;
    }
}

@keyframes anim-void-bg {
    0%,
    100% {
        opacity: 0;
    }
    50% {
        opacity: 1;
    }
}

@keyframes anim-void-core {
    0% {
        transform: scale(0);
        opacity: 1;
    }
    50% {
        transform: scale(15);
        opacity: 0.8;
        border: 2px solid #e040fb;
    }
    100% {
        transform: scale(20);
        opacity: 0;
    }
}

@keyframes anim-slash-gold {
    0% {
        width: 0;
        opacity: 0;
        transform: translate(-30px, -30px) rotate(-45deg);
    }
    50% {
        width: 200px;
        opacity: 1;
        transform: translate(0, 0) rotate(-45deg);
        box-shadow: 0 0 30px gold;
    }
    100% {
        width: 250px;
        opacity: 0;
        transform: translate(30px, 30px) rotate(-45deg);
    }
}

@keyframes hero-atk {
    0% {
        transform: translateX(0);
    }
    30% {
        transform: translateX(-20px) rotate(-10deg);
    }
    50% {
        transform: translateX(80px) rotate(10deg) scale(1.1);
    }
    100% {
        transform: translateX(0);
    }
}

@keyframes weapon-swing {
    0% {
        transform: rotate(0);
    }
    50% {
        transform: rotate(45deg) scale(1.2);
    }
    100% {
        transform: rotate(0);
    }
}

@keyframes mob-atk {
    0% {
        transform: scaleX(-1) translateX(0);
    }
    30% {
        transform: scaleX(-1) translateX(40px) scale(1.1);
    }
    100% {
        transform: scaleX(-1) translateX(0);
    }
}

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

@keyframes hero-hit {
    0% {
        filter: none;
    }
    50% {
        filter: sepia(1) hue-rotate(-50deg) saturate(3);
    }
    100% {
        filter: none;
    }
}

@keyframes floatAnim {
    0% {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
    100% {
        opacity: 0;
        transform: translateY(-50px) scale(1.5);
    }
}

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