/**
 * Shared keyframe animations — единый источник правды.
 *
 * Все дашборды должны использовать эти анимации вместо
 * дублирования @keyframes в своих CSS файлах.
 *
 * Подключается через dashboard-base.css → @import.
 */

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

@keyframes fadeIn {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeInDown {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

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

@keyframes slideIn {
  from {
    opacity: 0;
    transform: translateX(-20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideInRight {
  from {
    opacity: 0;
    transform: translateX(100%);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-100%);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* ========================================================================
   PULSE / LOADING ANIMATIONS
   ======================================================================== */

/* Универсальный pulse (opacity) — для loading-индикаторов, skeleton, placeholders */
@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.5; }
}

/* Pulse с масштабированием — для привлечения внимания (кнопки, badges) */
@keyframes pulse-scale {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.05); }
}

/* Pulse с масштабированием и opacity — для маркеров на карте, иконок */
@keyframes pulse-full {
  0%, 100% {
    transform: scale(1);
    opacity: 1;
  }
  50% {
    transform: scale(1.05);
    opacity: 0.7;
  }
}

/* ========================================================================
   SPINNER
   ======================================================================== */

@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}

/* ========================================================================
   SKELETON / SHIMMER
   ======================================================================== */

@keyframes skeleton-shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

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

@keyframes modalSlideIn {
  from {
    opacity: 0;
    transform: translateY(-30px) scale(0.95);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}
