/* ============================================================================
   Анимации
   ============================================================================ */

@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

main {
    opacity: 0;
    /* Начальное состояние - невидимый контент, появится с fade in эффектом */
    transition: opacity 400ms ease-in-out;
    /* Без постоянного will-change / translateZ на всём main — иначе превышается бюджет
       памяти compositor (предупреждение Chromium о will-change). */
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Класс для плавного появления контента */
main.page-loaded {
    opacity: 1;
}

header.app-header {
    opacity: 1;
    /* Header не анимируется для статичности */
}

/* SPA transitions: плавный fade/slide при смене контента */
main.spa-leave {
    opacity: 0;
    transform: translateY(2px);
    transition: opacity 150ms ease-out, transform 150ms ease-out;
}

main.spa-enter {
    opacity: 0;
    transform: translateY(2px);
    transition: opacity 150ms ease-in, transform 150ms ease-in;
}

main.spa-enter-active {
    opacity: 1;
    transform: translateY(0);
    transition: opacity 200ms ease-out, transform 200ms ease-out;
}

/* Лёгкое мерцание для денежных сумм (например, эквайринг — вкладка «Учёт») */
@keyframes numeric-soft-shimmer {
    0%, 100% {
        opacity: 1;
        filter: brightness(1);
    }
    45% {
        opacity: 0.82;
        filter: brightness(1.08);
    }
    55% {
        opacity: 0.88;
        filter: brightness(1.04);
    }
}

.numeric-soft-shimmer {
    display: inline-block;
    font-variant-numeric: tabular-nums;
    animation: numeric-soft-shimmer 3.2s ease-in-out infinite;
}

@media (prefers-reduced-motion: reduce) {
    .numeric-soft-shimmer {
        animation: none;
    }
}
