/* ===== ANIMACIONES ===== */

/* Pulse glow para el botón de chat */
@keyframes pulse-glow {
  0%, 100% {
    opacity: 0.75;
  }
  50% {
    opacity: 1;
  }
}

/* Animación del fondo */
@keyframes background-shift {
  0% {
    background-position: 0% 100%;
  }
  100% {
    background-position: 0% 300%;
  }
}

/* Animación de entrada para las tarjetas */
@keyframes slide-up {
  from {
    opacity: 0;
    transform: translateY(20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* Animación de hover para botones */
@keyframes button-hover {
  0% {
    transform: translateY(0);
  }
  100% {
    transform: translateY(-2px);
  }
}

/* Animación de typing para el chat */
@keyframes typing {
  0%, 20% {
    opacity: 0;
  }
  50% {
    opacity: 1;
  }
  100% {
    opacity: 0;
  }
}

/* Clases de animación */
.animate-pulse-glow {
  animation: pulse-glow 2s ease-in-out infinite;
}

.animate-background-shift {
  animation: background-shift 5s linear infinite;
}

.animate-slide-up {
  animation: slide-up 0.6s ease-out;
}

.animate-typing {
  animation: typing 1.5s ease-in-out infinite;
}

/* Transiciones suaves */
.transition-all {
  transition: all 0.3s ease-in-out;
}

.transition-transform {
  transition: transform 0.3s ease-in-out;
}

.transition-opacity {
  transition: opacity 0.3s ease-in-out;
}

/* Estados de hover mejorados */
.hover-lift:hover {
  transform: translateY(-4px);
}

.hover-scale:hover {
  transform: scale(1.02);
}

.hover-glow:hover {
  box-shadow: 0 10px 25px rgba(155, 110, 253, 0.3);
}

/* Animaciones de entrada escalonadas */
.stagger-1 {
  animation-delay: 0.1s;
}

.stagger-2 {
  animation-delay: 0.2s;
}

.stagger-3 {
  animation-delay: 0.3s;
}

.stagger-4 {
  animation-delay: 0.4s;
}

/* Animación de carga */
@keyframes spin {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.animate-spin {
  animation: spin 1s linear infinite;
}

/* Animación de fade in */
@keyframes fade-in {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}

.animate-fade-in {
  animation: fade-in 0.5s ease-out;
}

/* Animación de slide in desde la derecha */
@keyframes slide-in-right {
  from {
    opacity: 0;
    transform: translateX(20px);
  }
  to {
    opacity: 1;
    transform: translateX(0);
  }
}

.animate-slide-in-right {
  animation: slide-in-right 0.5s ease-out;
}

/* Animación de bounce suave */
@keyframes bounce-soft {
  0%, 100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-5px);
  }
}

.animate-bounce-soft {
  animation: bounce-soft 2s ease-in-out infinite;
}

/* Animación de shimmer para efectos de carga */
@keyframes shimmer {
  0% {
    background-position: -200px 0;
  }
  100% {
    background-position: calc(200px + 100%) 0;
  }
}

.animate-shimmer {
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.1), transparent);
  background-size: 200px 100%;
  animation: shimmer 1.5s infinite;
}

/* Animación de pulso para elementos importantes */
@keyframes pulse-important {
  0%, 100% {
    box-shadow: 0 0 0 0 rgba(155, 110, 253, 0.4);
  }
  50% {
    box-shadow: 0 0 0 10px rgba(155, 110, 253, 0);
  }
}

.animate-pulse-important {
  animation: pulse-important 2s infinite;
}

/* Animación de rotación para iconos */
@keyframes rotate {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

.animate-rotate {
  animation: rotate 1s linear infinite;
}

/* Animación de escala para elementos interactivos */
@keyframes scale-in {
  from {
    transform: scale(0);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

.animate-scale-in {
  animation: scale-in 0.3s ease-out;
}

/* Animación de desvanecimiento */
@keyframes fade-out {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
  }
}

.animate-fade-out {
  animation: fade-out 0.3s ease-out;
}

/* Animación de slide down */
@keyframes slide-down {
  from {
    opacity: 0;
    transform: translateY(-20px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.animate-slide-down {
  animation: slide-down 0.5s ease-out;
}
