@keyframes fadeInUp{
    from{opacity:0;transform:translateY(20px);}
    to{opacity:1;transform:translateY(0);}
}
@keyframes slideInLeft{
    from{opacity:0;transform:translateX(-30px);}
    to{opacity:1;transform:translateX(0);}
}
@keyframes slideInRight{
    from{opacity:0;transform:translateX(30px);}
    to{opacity:1;transform:translateX(0);}
}
@keyframes scaleIn{
    from{opacity:0;transform:scale(0.9);}
    to{opacity:1;transform:scale(1);}
}
@keyframes glowPulse{
    0%,100%{box-shadow:0 0 8px rgba(255,125,0,0.3);}
    50%{box-shadow:0 0 24px rgba(255,125,0,0.6);}
}
@keyframes shimmer{
    0%{background-position:-200% 0;}
    100%{background-position:200% 0;}
}
.kj-shimmer{
    background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);
    background-size:200% 100%;
    animation:shimmer 1.5s infinite;
}
.hero-content{animation:fadeInUp 0.8s ease forwards;}
.kj-card{animation:scaleIn 0.5s ease forwards;}
.btn--primary:hover{animation:glowPulse 1.5s infinite;}
@keyframes bounceIn{
    0%{opacity:0;transform:scale(0.3);}
    50%{opacity:1;transform:scale(1.05);}
    70%{transform:scale(0.9);}
    100%{transform:scale(1);}
}
.slot-result .win-text{animation:bounceIn 0.6s ease forwards;}
@keyframes rotate360{
    from{transform:rotate(0deg);}
    to{transform:rotate(360deg);}
}
.loading-spinner{
    width:24px;
    height:24px;
    border:3px solid var(--kj-neutral-200);
    border-top-color:var(--kj-btn-primary);
    border-radius:50%;
    animation:rotate360 0.8s linear infinite;
}
@keyframes countdownPulse{
    0%{color:var(--kj-btn-primary);}
    50%{color:var(--kj-error);}
    100%{color:var(--kj-btn-primary);}
}
.tournament-timer{animation:countdownPulse 2s infinite;}
