/* ================================================================
   ANIMATIONS
   ================================================================ */

@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.fu{animation:fadeUp .2s ease forwards}

@keyframes pulse{0%,100%{opacity:1}50%{opacity:.4}}
.pulse{animation:pulse 1.6s ease-in-out infinite}

@keyframes spin{to{transform:rotate(360deg)}}
.spin{animation:spin .8s linear infinite}

@keyframes slideIn{from{opacity:0;transform:translateX(-8px)}to{opacity:1;transform:translateX(0)}}
.slide-in{animation:slideIn .2s ease forwards}

/* Выпадающая панель переключателя темы — fade-in + смещение сверху вниз.
   translateX(-50%) сохраняется в обоих кадрах (центрирование под кнопкой). */
@keyframes themeMenuIn{
  from{opacity:0;transform:translateX(-50%) translateY(-6px)}
  to{opacity:1;transform:translateX(-50%) translateY(0)}}

@keyframes segActivate{from{opacity:.55;transform:scale(.95)}to{opacity:1;transform:scale(1)}}
.seg-active{animation:segActivate .16s ease-out forwards}

@keyframes slideFromLeft{from{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}
.slide-left{animation:slideFromLeft .28s ease forwards}

/* Каналы · Обзор — рост прогресс-бара канала при смене таба Заявки/Продажи */
@keyframes cmBarGrow{from{transform:scaleX(0)}to{transform:scaleX(1)}}

/* Горизонтальное раскрытие вправо (flyout-детализация «Распределение по каналам») */
@keyframes slideFromRight{from{opacity:0;transform:translateX(22px)}to{opacity:1;transform:translateX(0)}}
.slide-right{animation:slideFromRight .28s ease forwards}

/* Аккордеон менеджеров (Подразделения → Рейтинг): плавное раскрытие */
@keyframes deptAccReveal{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.dept-acc{animation:deptAccReveal .26s ease forwards;transform-origin:top}

/* Гонка лидеров (Мотивация → Свод): мягкое появление снизу при открытии
   страницы. Стартует на 40px ниже + лёгкое затемнение, плавно поднимается.
   fill-mode:backwards (НЕ forwards!) — держит стартовый кадр до запуска, но
   ПОСЛЕ анимации возвращает управление transform inline-стилю, чтобы hover
   баннера (translateY(-2px)) не конфликтовал и не блокировался. */
@keyframes leaderRaceEnter{from{opacity:.95;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}
.ldr-race-enter{animation:leaderRaceEnter 1s ease-out backwards}

/* Гонка лидеров → «Мои результаты» → «Доступные призы»: появление призов
   слева направо. Старт translateX(-40px)+opacity .6 → финал translateX(0).
   Длительность и delay задаются ИНЛАЙН per-item (стаггер: первый приз самый
   медленный ~760ms, остальные быстрее ~450–600ms; delay = T−dur → все
   финишируют одновременно). fill-mode:backwards держит стартовый кадр во
   время delay и снимает transform после анимации (hover img не конфликтует). */
@keyframes prizeEnterX{from{opacity:.6;transform:translateX(-40px)}to{opacity:1;transform:translateX(0)}}

/* Матрица АВ → «Параметры расчета агентского вознаграждения»: плавное
   раскрытие аккордеона при ВХОДЕ на вкладку. Рост высоты (max-height) +
   проявление + лёгкий сдвиг сверху — единый стиль с прочими reveal-
   анимациями (ease, ~.3s). max-height:1000px заведомо превышает контент,
   поэтому после раскрытия содержимое не обрезается. Класс навешивается
   ТОЛЬКО при срабатывании one-shot флага (вход на вкладку / ручное
   разворачивание) — при переключении продуктов не применяется. */
@keyframes mavParamsReveal{from{opacity:0;max-height:0;transform:translateY(-6px)}to{opacity:1;max-height:1000px;transform:translateY(0)}}
.mav-params{animation:mavParamsReveal .34s ease forwards;overflow:hidden;transform-origin:top}
