/* ============================================================
   CIBERFORENSE — animations.css
   Movimento discreto e performático (transform/opacity apenas,
   nada que dispare layout/paint pesado — bom para INP/CLS)
   ============================================================ */

/* ---------- Reveal ao rolar (ativado via IntersectionObserver) ---------- */
.reveal,
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .7s ease, transform .7s ease;
  will-change: opacity, transform;
}

.reveal.in-view,
.reveal-stagger.in-view > * {
  opacity: 1;
  transform: none;
}

/* Escalonamento dos filhos (até 12 itens) */
.reveal-stagger.in-view > *:nth-child(1)  { transition-delay: .00s; }
.reveal-stagger.in-view > *:nth-child(2)  { transition-delay: .06s; }
.reveal-stagger.in-view > *:nth-child(3)  { transition-delay: .12s; }
.reveal-stagger.in-view > *:nth-child(4)  { transition-delay: .18s; }
.reveal-stagger.in-view > *:nth-child(5)  { transition-delay: .24s; }
.reveal-stagger.in-view > *:nth-child(6)  { transition-delay: .30s; }
.reveal-stagger.in-view > *:nth-child(7)  { transition-delay: .36s; }
.reveal-stagger.in-view > *:nth-child(8)  { transition-delay: .42s; }
.reveal-stagger.in-view > *:nth-child(9)  { transition-delay: .48s; }
.reveal-stagger.in-view > *:nth-child(10) { transition-delay: .54s; }
.reveal-stagger.in-view > *:nth-child(11) { transition-delay: .60s; }
.reveal-stagger.in-view > *:nth-child(12) { transition-delay: .66s; }

/* ---------- Badge: pulso do ponto ---------- */
@keyframes pulse-dot {
  0%, 100% { transform: scale(1);   opacity: 1; }
  50%      { transform: scale(1.5); opacity: .55; }
}
.badge-dot { animation: pulse-dot 2.2s ease-in-out infinite; }

/* ---------- Chips de evidência: flutuação suave ---------- */
@keyframes float-a {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-9px); }
}
@keyframes float-b {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(8px); }
}
.chip-1 { animation: float-a 6s   ease-in-out infinite; }
.chip-2 { animation: float-b 7.5s ease-in-out infinite; }
.chip-3 { animation: float-a 8.5s ease-in-out infinite .8s; }

/* Indicador "ao vivo" da cadeia de custódia */
@keyframes blink-live {
  0%, 100% { opacity: 1; }
  50%      { opacity: .3; }
}
.dot-live { animation: blink-live 1.6s ease-in-out infinite; }

/* ---------- Glow dos halos do hero ---------- */
@keyframes drift-glow {
  0%, 100% { transform: translate(0, 0)     scale(1); }
  50%      { transform: translate(-24px, 18px) scale(1.06); }
}
.hero-glow-1 { animation: drift-glow 14s ease-in-out infinite; }
.hero-glow-2 { animation: drift-glow 18s ease-in-out infinite reverse; }

/* ---------- Hover: ícone do card ganha leve rotação ---------- */
.card:hover .card-ico { transform: rotate(-6deg) scale(1.06); }
.card-ico { transition: transform .35s ease; }

/* ---------- FAQ: abertura suave do conteúdo ---------- */
.faq-item p {
  animation: faq-open .35s ease both;
}
@keyframes faq-open {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: none; }
}

/* ---------- Botão primário: brilho que percorre no hover ---------- */
.btn-primary { position: relative; overflow: hidden; }
.btn-primary::after {
  content: "";
  position: absolute;
  top: 0; left: -80%;
  width: 50%; height: 100%;
  background: linear-gradient(100deg, transparent, rgba(255,255,255,.35), transparent);
  transform: skewX(-20deg);
  transition: left .55s ease;
}
.btn-primary:hover::after { left: 130%; }

/* ---------- Acessibilidade: respeitar preferência do usuário ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal,
  .reveal-stagger > * {
    opacity: 1;
    transform: none;
  }
}
