/* ==========================================================
   کتابخانه‌ی انیمیشن‌های مشترک بازی
   ========================================================== */

@keyframes float-y {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-10px); }
}
@keyframes float-slow {
    0%, 100% { transform: translateY(0) translateX(0); }
    50%      { transform: translateY(-14px) translateX(6px); }
}
@keyframes bounce-in {
    0%   { transform: scale(0.3); opacity: 0; }
    60%  { transform: scale(1.08); opacity: 1; }
    100% { transform: scale(1); }
}
@keyframes pop {
    0%   { transform: scale(1); }
    50%  { transform: scale(1.15); }
    100% { transform: scale(1); }
}
@keyframes shake {
    0%, 100% { transform: translateX(0); }
    20%      { transform: translateX(-8px); }
    40%      { transform: translateX(8px); }
    60%      { transform: translateX(-6px); }
    80%      { transform: translateX(6px); }
}
@keyframes wiggle {
    0%, 100% { transform: rotate(0deg); }
    25%      { transform: rotate(-4deg); }
    75%      { transform: rotate(4deg); }
}
@keyframes fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes fade-slide-up {
    from { opacity: 0; transform: translateY(24px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes spin-slow {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}
@keyframes glow-pulse {
    0%, 100% { filter: drop-shadow(0 0 6px rgba(255, 209, 102, 0.5)); }
    50%      { filter: drop-shadow(0 0 18px rgba(255, 209, 102, 0.9)); }
}
@keyframes sparkle {
    0%   { transform: scale(0) rotate(0deg); opacity: 0; }
    50%  { transform: scale(1) rotate(180deg); opacity: 1; }
    100% { transform: scale(0) rotate(360deg); opacity: 0; }
}
@keyframes cloud-drift {
    from { transform: translateX(-10%); }
    to   { transform: translateX(110%); }
}
@keyframes confetti-fall {
    0%   { transform: translateY(-10vh) rotate(0deg); opacity: 1; }
    100% { transform: translateY(110vh) rotate(720deg); opacity: 0.4; }
}
@keyframes heartbeat {
    0%, 100% { transform: scale(1); }
    15%      { transform: scale(1.2); }
    30%      { transform: scale(1); }
}
@keyframes progress-fill {
    from { width: 0%; }
}

.anim-float       { animation: float-y 3.2s ease-in-out infinite; }
.anim-float-slow   { animation: float-slow 6s ease-in-out infinite; }
.anim-bounce-in    { animation: bounce-in 0.5s cubic-bezier(.34,1.56,.64,1) both; }
.anim-pop          { animation: pop 0.35s ease; }
.anim-shake        { animation: shake 0.5s ease; }
.anim-wiggle       { animation: wiggle 2.4s ease-in-out infinite; }
.anim-fade-in      { animation: fade-in 0.4s ease both; }
.anim-fade-up      { animation: fade-slide-up 0.5s cubic-bezier(.22,1,.36,1) both; }
.anim-spin-slow    { animation: spin-slow 12s linear infinite; }
.anim-glow         { animation: glow-pulse 2s ease-in-out infinite; }
.anim-heartbeat    { animation: heartbeat 1.2s ease-in-out infinite; }

.stagger-1 { animation-delay: .05s; }
.stagger-2 { animation-delay: .12s; }
.stagger-3 { animation-delay: .2s; }
.stagger-4 { animation-delay: .28s; }
