/* animations.css */
@keyframes float {
    0%, 100% { transform: translateY(0px) rotate(0deg); }
    50% { transform: translateY(-8px) rotate(180deg); }
}
@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.7; } }
@keyframes shimmer { 0% { transform: translateX(-20px); } 100% { transform: translateX(20px); } }
@keyframes setCompleted {
    0% { transform: scale(1); }
    50% { transform: scale(1.04); }
    100% { transform: scale(1); }
}
@keyframes exerciseSlideIn { from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); } }
@keyframes cardSelect { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(1); } }
@keyframes daySelect { 0% { transform: scale(1); } 50% { transform: scale(1.03); } 100% { transform: scale(1); } }
@keyframes spin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } }
@keyframes slideDown { from { opacity: 0; transform: translateX(-50%) translateY(-20px); } to { opacity: 1; transform: translateX(-50%) translateY(0); } }
@keyframes messageSlide { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes typingDot { 0%, 60%, 100% { opacity: 0.3; transform: scale(1); } 30% { opacity: 1; transform: scale(1.2); } }

/* NEW: Premium animations */
@keyframes slideUp {
    from { opacity: 0; transform: translateY(20px); }
    to { opacity: 1; transform: translateY(0); }
}
@keyframes slideIn {
    from { opacity: 0; transform: translateX(20px); }
    to { opacity: 1; transform: translateX(0); }
}
@keyframes skeletonShimmer {
    0% { background-position: -200% 0; }
    100% { background-position: 200% 0; }
}
@keyframes rippleEffect {
    0% { transform: scale(0); opacity: 0.6; }
    100% { transform: scale(4); opacity: 0; }
}
@keyframes pressDown {
    0% { transform: scale(1); }
    100% { transform: scale(0.98); }
}
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Dashboard WOW animations */
@keyframes dashSlideUp {
    from { opacity: 0; transform: translateY(24px) scale(0.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes dashSlideLeft {
    0% { transform: translateX(0) scale(1); }
    40% { transform: translateX(-16px) scale(0.97); }
    100% { transform: translateX(0) scale(1); }
}
@keyframes dashSlideRight {
    0% { transform: translateX(0) scale(1); }
    40% { transform: translateX(16px) scale(0.97); }
    100% { transform: translateX(0) scale(1); }
}
/* Slide + fade для табов тренировок */
@keyframes cubeOutLeft {
    from { transform: translateX(0); opacity: 1; }
    to { transform: translateX(-30%); opacity: 0; }
}
@keyframes cubeInRight {
    from { transform: translateX(20%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}
@keyframes cubeOutRight {
    from { transform: translateX(0); opacity: 1; }
    to { transform: translateX(30%); opacity: 0; }
}
@keyframes cubeInLeft {
    from { transform: translateX(-20%); opacity: 0; }
    to { transform: translateX(0); opacity: 1; }
}
@keyframes ringFill {
    from { stroke-dashoffset: 263.89; }
}
@keyframes ctaBreath {
    0%, 100% { box-shadow: 0 4px 16px rgba(var(--primary-rgb), 0.20); transform: scale(1); }
    50% { box-shadow: 0 6px 20px rgba(var(--primary-rgb), 0.28); transform: scale(1.008); }
}
@keyframes ringGlow {
    0%, 100% { filter: drop-shadow(0 0 6px var(--primary)); }
    50% { filter: drop-shadow(0 0 12px var(--primary)); }
}
@keyframes celebrationBurst {
    0% { transform: scale(0.9); opacity: 0; }
    50% { transform: scale(1.03); }
    100% { transform: scale(1); opacity: 1; }
}
@keyframes confettiDrop {
    0% { transform: translateY(-20px) rotate(0deg); opacity: 0; }
    50% { opacity: 1; }
    100% { transform: translateY(10px) rotate(360deg); opacity: 0; }
}

