/* ==========================================================================
   DS01: FUSÃO CRIATIVA DESIGN SYSTEM — ANIMATIONS.CSS
   Física de Molas (Springs), Micro-animações e Interações Vivas
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. KEYFRAMES DE ANIMAÇÃO
   -------------------------------------------------------------------------- */

/* Pulso Neon Suave (Status Live) */
@keyframes neonPulse {
  0% {
    box-shadow: 0 0 0 0 rgba(50, 215, 75, 0.6);
  }
  70% {
    box-shadow: 0 0 0 9px rgba(50, 215, 75, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(50, 215, 75, 0);
  }
}

/* Pulso Laranja Solar Vibrante (Matheus Frazão Halo Status) */
@keyframes orangePulse {
  0% {
    box-shadow: 0 0 0 0 rgba(254, 135, 1, 0.75);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(254, 135, 1, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(254, 135, 1, 0);
  }
}

@keyframes crimsonPulse {
  0% {
    box-shadow: 0 0 0 0 rgba(254, 135, 1, 0.75);
  }
  70% {
    box-shadow: 0 0 0 10px rgba(254, 135, 1, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(254, 135, 1, 0);
  }
}

/* Rotação Contínua Fluida (Anel da Logo) */
@keyframes spinSlow {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

/* Efeito Shimmer em Badges e Destaques */
@keyframes shimmerPass {
  0% {
    transform: translateX(-100%);
  }
  100% {
    transform: translateX(100%);
  }
}

/* Respiração Suave de Luz Ambiente */
@keyframes ambientBreathe {
  0%, 100% {
    opacity: 0.6;
    transform: scale(1);
  }
  50% {
    opacity: 0.9;
    transform: scale(1.08);
  }
}

/* Entrada de Modal com Mola */
@keyframes modalSpringIn {
  0% {
    opacity: 0;
    transform: translate(-50%, -46%) scale(0.92);
  }
  100% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

/* --------------------------------------------------------------------------
   2. CLASSES DE ANIMAÇÃO & UTILITÁRIOS
   -------------------------------------------------------------------------- */

.animate-spin-slow {
  animation: spinSlow 24s linear infinite;
}

.animate-pulse-neon {
  animation: neonPulse 2.2s infinite;
}

.animate-pulse-orange {
  animation: orangePulse 2.2s infinite;
}

.animate-pulse-crimson {
  animation: crimsonPulse 2.2s infinite;
}

.animate-breathe {
  animation: ambientBreathe 8s ease-in-out infinite;
}

/* Efeito de Revelação na Rolagem (IntersectionObserver) */
.reveal-init {
  opacity: 1;
  transform: none;
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
}

.reveal-active,
.reveal-init.reveal-active {
  opacity: 1 !important;
  transform: translateY(0) !important;
}

/* Escalonamento de Filhos (Stagger) */
.stagger-1 { transition-delay: 0.08s; }
.stagger-2 { transition-delay: 0.16s; }
.stagger-3 { transition-delay: 0.24s; }
.stagger-4 { transition-delay: 0.32s; }
.stagger-5 { transition-delay: 0.40s; }

/* Micro-interação Hover em Cards com Física */
.spring-hover {
  transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1),
              box-shadow 0.4s cubic-bezier(0.16, 1, 0.3, 1),
              border-color 0.3s ease;
}

.spring-hover:hover {
  transform: translateY(-6px);
}

/* Toast Notification Animation */
@keyframes toastSlideUp {
  0% {
    opacity: 0;
    transform: translate(-50%, 20px) scale(0.95);
  }
  100% {
    opacity: 1;
    transform: translate(-50%, 0) scale(1);
  }
}

@keyframes toastSlideDown {
  0% {
    opacity: 1;
    transform: translate(-50%, 0) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(-50%, 20px) scale(0.95);
  }
}
