/* Axiora No-Code — пресеты анимаций для блоков клиентского сайта.
   Inject'ятся через <link href="/axiora-animations.css">. */

@keyframes ax-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes ax-slide-up {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ax-slide-down {
  from { opacity: 0; transform: translateY(-24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes ax-zoom-in {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes ax-bounce {
  0%   { transform: scale(1); }
  40%  { transform: scale(1.08); }
  60%  { transform: scale(0.96); }
  100% { transform: scale(1); }
}

.ax-fade-in    { animation: ax-fade-in   0.6s ease-out both; }
.ax-slide-up   { animation: ax-slide-up  0.6s ease-out both; }
.ax-slide-down { animation: ax-slide-down 0.6s ease-out both; }
.ax-zoom-in    { animation: ax-zoom-in   0.5s cubic-bezier(.2,.7,.3,1.1) both; }
.ax-bounce     { animation: ax-bounce    0.6s ease-in-out both; }

/* Плавный hover-transition для интерактивных элементов */
.ax-transition,
.ax-transition * {
  transition: all 200ms cubic-bezier(.2,.7,.3,1);
}

@media (prefers-reduced-motion: reduce) {
  .ax-fade-in, .ax-slide-up, .ax-slide-down, .ax-zoom-in, .ax-bounce {
    animation: none;
  }
}
