/* ============================================================
   ANIMATIONS — Keyframes e estados de revelação por scroll
   ============================================================ */

/* Estado inicial dos elementos animados */
[data-animate] {
  opacity: 0;
  transition: opacity var(--transition-slow), transform var(--transition-slow);
  will-change: opacity, transform;
}

[data-animate="fade-up"] {
  transform: translateY(32px);
}

[data-animate="fade-left"] {
  transform: translateX(32px);
}

[data-animate="fade-right"] {
  transform: translateX(-32px);
}

/* Estado revelado (adicionado via Intersection Observer) */
[data-animate].is-visible {
  opacity: 1;
  transform: none;
}

/* Atraso escalonado para grids (cards em sequência) */
[data-animate].is-visible[data-delay="1"] { transition-delay: 80ms; }
[data-animate].is-visible[data-delay="2"] { transition-delay: 160ms; }
[data-animate].is-visible[data-delay="3"] { transition-delay: 240ms; }
[data-animate].is-visible[data-delay="4"] { transition-delay: 320ms; }
[data-animate].is-visible[data-delay="5"] { transition-delay: 400ms; }
[data-animate].is-visible[data-delay="6"] { transition-delay: 480ms; }

/* Pulso do dot do badge */
@keyframes pulse-dot {
  0% {
    box-shadow: 0 0 0 0 rgba(109, 40, 168, 0.5);
  }
  70% {
    box-shadow: 0 0 0 8px rgba(109, 40, 168, 0);
  }
  100% {
    box-shadow: 0 0 0 0 rgba(109, 40, 168, 0);
  }
}

/* Flutuação suave dos chips do hero */
@keyframes float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

/* Brilho ambiente do hero */
@keyframes drift {
  0%,
  100% {
    transform: translate(0, 0) scale(1);
  }
  50% {
    transform: translate(12px, -12px) scale(1.05);
  }
}

/* Respeita a preferência de movimento reduzido */
@media (prefers-reduced-motion: reduce) {
  [data-animate] {
    opacity: 1 !important;
    transform: none !important;
  }

  .badge-dot,
  .floating-chip,
  .placeholder-glow {
    animation: none !important;
  }
}
