/* ============================================
   ANIMATIONS: все @keyframes сайта, reveal и prefers-reduced-motion.
   Сами `animation: …` остаются в правилах своих компонентов.
   Грузится после компонентов: reduced-motion должен перебить их `animation`.
   ============================================ */

/* ---- KEYFRAMES ---- */
/* прелоадер (base.css) */
@keyframes logoPulse { 0%, 100% { opacity: 0.8; } 50% { opacity: 1; } }
@keyframes loadBar { to { width: 100%; } }

/* кнопки .btn--gold / .btn--outline (components/buttons.css): мягкая золотая подсветка */
@keyframes btnBreath {
  0%, 100% { filter: drop-shadow(0 0 5px rgb(var(--gold-1-rgb) / 0.3)); }
  50% { filter: drop-shadow(0 0 12px rgb(var(--gold-1-rgb) / 0.7)); }
}

/* первый экран (landing/hero.css) */
@keyframes heroZoom {
  from { transform: scale(1); }
  to { transform: scale(1.04); }
}
@keyframes fogMove { to { transform: translateX(50%); } }
@keyframes lightPulse {
  from { opacity: 0.5; }
  to { opacity: 1; }
}
@keyframes onlinePulse {
  0%, 100% { opacity: 0.8; }
  50% { opacity: 1; }
}

/* попап и тосты (components/overlays.css) */
@keyframes modalIn {
  from { opacity: 0; transform: translateY(20px) scale(0.97); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes toastIn {
  from { opacity: 0; transform: translateX(40px); }
  to { opacity: 1; transform: translateX(0); }
}

/* ---- REVEAL ANIMATIONS ----
   Начальное состояние блоков с .reveal на главной; плавное появление запускает initHeroAnimations() (GSAP).
   Если GSAP не загрузился, app.js ставит .no-gsap и блоки показываются сразу. */
.landing .reveal { opacity: 0; transform: translateY(30px); }
.landing.no-gsap .reveal { opacity: 1; transform: none; }

/* ---- REDUCED MOTION ---- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
  .hero__bg-image { animation: none; }
  .hero__fog { animation: none; }
  .landing .reveal { opacity: 1; transform: none; }
  .hero__light { animation: none; }
}
