/* ============================================================
   SGCOR — Animações
   Estados iniciais só se aplicam com JS ativo (.js-enabled),
   garantindo que nada fique escondido se o JavaScript falhar.
   ============================================================ */

.js-enabled [data-anim] {
  opacity: 0;
  will-change: transform, opacity;
}

.js-enabled [data-anim="fade-up"] {
  transform: translateY(30px);
}

.js-enabled [data-anim="fade-left"] {
  transform: translateX(-40px);
}

.js-enabled [data-anim="fade-right"] {
  transform: translateX(40px);
}

.js-enabled [data-anim="zoom-in"] {
  transform: scale(0.9);
}

.js-enabled [data-anim="slide-up"] {
  transform: translateY(50px);
}

/* Estado final (aplicado pelo módulo de animações) */
.js-enabled [data-anim].is-inview {
  opacity: 1;
  transform: none;
  transition: opacity 0.8s ease, transform 0.8s cubic-bezier(0.33, 1, 0.68, 1);
  transition-delay: var(--anim-delay, 0s);
}

.js-enabled [data-anim="slide-up"].is-inview {
  transition-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

/* Card central do processo de migração: entrada específica da spec */
.js-enabled [data-process-center][data-anim="fade-up"] {
  transform: translateY(32px);
}

.js-enabled [data-process-center][data-anim="fade-up"].is-inview {
  transform: none;
  transition: opacity 0.7s cubic-bezier(0.22, 1, 0.36, 1),
    transform 0.7s cubic-bezier(0.22, 1, 0.36, 1);
  transition-delay: var(--anim-delay, 0s);
}

/* Mobile: distâncias menores e duração mais curta */
@media (max-width: 767px) {
  .js-enabled [data-anim="fade-up"] {
    transform: translateY(20px);
  }

  .js-enabled [data-anim="fade-left"],
  .js-enabled [data-anim="fade-right"] {
    transform: translateY(15px);
  }

  .js-enabled [data-anim="zoom-in"] {
    transform: scale(0.95);
  }

  .js-enabled [data-anim="slide-up"] {
    transform: translateY(30px);
  }

  .js-enabled [data-anim].is-inview {
    transition-duration: 0.6s;
  }
}

/* ============================================================
   Reduced motion: todo conteúdo aparece imediatamente,
   sem loops, sem física, sem parallax.
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .js-enabled [data-anim],
  .js-enabled .hero__anim {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  .hero__bar {
    animation: none !important;
  }

  .btn--halo::before {
    animation: none !important;
  }

  .physics-stage {
    display: none !important;
  }

  .pain__chips {
    display: flex !important;
  }

  .demo__particle {
    display: none !important;
  }

  .float-card {
    animation: none !important;
    transform: none !important;
  }

  .insurers__track {
    animation: none !important;
    flex-wrap: wrap;
    width: 100%;
    justify-content: center;
  }

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* Save-Data: classe aplicada via JS */
.save-data .physics-stage,
.save-data .demo__particle {
  display: none !important;
}

.save-data .pain__chips {
  display: flex !important;
}

.save-data .btn--halo::before {
  animation: none !important;
}
