/* Анимации */
@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes slideDown {
    from {
        opacity: 0;
        transform: translateY(-20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes scaleIn {
    from {
        opacity: 0;
        transform: scale(0.95);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

/* Классы анимаций */
.fade-in {
    animation: fadeIn 0.5s ease-out forwards;
    will-change: opacity, transform;
}

.slide-down {
    animation: slideDown 0.4s ease-out forwards;
    will-change: opacity, transform;
}

.scale-in {
    animation: scaleIn 0.3s ease-out forwards;
    will-change: opacity, transform;
}

/* Задержки анимаций */
.delay-100 { animation-delay: 100ms; }
.delay-200 { animation-delay: 200ms; }
.delay-300 { animation-delay: 300ms; }
.delay-400 { animation-delay: 400ms; }
.delay-500 { animation-delay: 500ms; }

/* Префиксы для старых браузеров */
@-webkit-keyframes fadeIn {
    from {
        opacity: 0;
        -webkit-transform: translateY(20px);
    }
    to {
        opacity: 1;
        -webkit-transform: translateY(0);
    }
}

@-webkit-keyframes slideDown {
    from {
        opacity: 0;
        -webkit-transform: translateY(-20px);
    }
    to {
        opacity: 1;
        -webkit-transform: translateY(0);
    }
}

@-webkit-keyframes scaleIn {
    from {
        opacity: 0;
        -webkit-transform: scale(0.95);
    }
    to {
        opacity: 1;
        -webkit-transform: scale(1);
    }
}

/* Отключение анимаций для пользователей, предпочитающих уменьшенное движение */
@media (prefers-reduced-motion: reduce) {
    .fade-in,
    .slide-down,
    .scale-in {
        animation: none;
        transition: none;
    }
} 