/* static/css/utils/animations.css */
/* Все анимации проекта */

/* ===== FADE АНИМАЦИИ ===== */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes fadeInDown {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ===== SHAKE АНИМАЦИЯ (ДЛЯ ОШИБОК) ===== */
@keyframes shake {
    0%, 100% {
        transform: translateX(0);
    }
    25% {
        transform: translateX(-4px);
    }
    75% {
        transform: translateX(4px);
    }
}

/* ===== PULSE АНИМАЦИЯ (ДЛЯ ЗАГРУЗКИ) ===== */
@keyframes pulse {
    0%, 100% {
        opacity: 0.6;
    }
    50% {
        opacity: 1;
    }
}

/* ===== SPIN АНИМАЦИЯ (ДЛЯ СПИННЕРА) ===== */
@keyframes spin {
    0% {
        transform: rotate(0deg);
    }
    100% {
        transform: rotate(360deg);
    }
}

/* ===== КЛАССЫ ДЛЯ АНИМАЦИЙ ===== */
.animate-fade-in {
    animation: fadeIn var(--transition-base) ease;
}

.animate-fade-in-up {
    animation: fadeInUp var(--transition-base) ease;
}

.animate-fade-in-down {
    animation: fadeInDown var(--transition-base) ease;
}

.animate-shake {
    animation: shake 0.3s ease-in-out;
}

.animate-pulse {
    animation: pulse 1.5s infinite;
}

/* ===== СПИННЕР ЗАГРУЗКИ ===== */
.loading-spinner {
    display: inline-block;
    width: 20px;
    height: 20px;
    border: 2px solid var(--color-border);
    border-top: 2px solid var(--color-primary);
    border-radius: var(--radius-round);
    animation: spin 1s linear infinite;
}

.loading-spinner-sm {
    width: 16px;
    height: 16px;
    border-width: 2px;
}

.loading-spinner-lg {
    width: 32px;
    height: 32px;
    border-width: 3px;
}

/* ===== ИНДИКАТОР ЗАГРУЗКИ ===== */
.loader {
    font-size: var(--font-size-xs);
    color: var(--color-primary);
    animation: pulse 1.5s infinite;
}

/* ===== ПЕРЕХОДЫ ===== */
.transition-all {
    transition: all var(--transition-base);
}

.transition-fast {
    transition: all var(--transition-fast);
}

.transition-slow {
    transition: all var(--transition-slow);
}

/* ===== АНИМАЦИЯ ДЛЯ МОДАЛЬНЫХ ОКОН ===== */
@keyframes modalSlideIn {
    from {
        opacity: 0;
        transform: translateY(-30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.modal-animate {
    animation: modalSlideIn var(--transition-base) ease;
}