/* ═══════════════════════════════════════════════════════════
   PLANO DE OURO PAULISTA — animations.css
   Animações mínimas (cliente pediu "sem muita animação")
   ═══════════════════════════════════════════════════════════ */

/* ── KEYFRAMES GLOBAIS ── */

@keyframes fadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeDown {
  from { opacity: 0; transform: translateY(-24px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes fadeLeft {
  from { opacity: 0; transform: translateX(-20px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes fadeRight {
  from { opacity: 0; transform: translateX(20px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.92); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes lineGrow {
  from { width: 0; }
  to   { width: 48px; }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes checkmark {
  0%   { stroke-dashoffset: 100; }
  100% { stroke-dashoffset: 0; }
}

/* ── CLASSES DE ENTRADA POR SCROLL ── */

/* Fade up — padrão (scroll para baixo) */
.anim {
  opacity: 0;
  transform: translateY(24px);
  transition: none;
}
.anim.visivel {
  animation: fadeUp var(--dur-media, 450ms) var(--ease-spring, cubic-bezier(0.34,1.56,0.64,1)) both;
}

/* Fade down — ao rolar para cima */
.anim.from-top { transform: translateY(-24px); }
.anim.from-top.visivel { animation-name: fadeDown; }

/* Fade simples */
.anim-fade {
  opacity: 0;
}
.anim-fade.visivel {
  animation: fadeIn var(--dur-media, 450ms) ease both;
}

/* Slide da esquerda */
.anim-esq {
  opacity: 0;
  transform: translateX(-20px);
}
.anim-esq.visivel {
  animation: fadeLeft var(--dur-media, 450ms) var(--ease-padrao, cubic-bezier(0.4,0,0.2,1)) both;
}

/* Slide da direita */
.anim-dir {
  opacity: 0;
  transform: translateX(20px);
}
.anim-dir.visivel {
  animation: fadeRight var(--dur-media, 450ms) var(--ease-padrao, cubic-bezier(0.4,0,0.2,1)) both;
}

/* Scale */
.anim-scale {
  opacity: 0;
  transform: scale(0.92);
}
.anim-scale.visivel {
  animation: scaleIn var(--dur-media, 450ms) var(--ease-spring, cubic-bezier(0.34,1.56,0.64,1)) both;
}

/* ── DELAYS ── */
.anim.visivel.delay-1,
.anim-fade.visivel.delay-1,
.anim-esq.visivel.delay-1,
.anim-dir.visivel.delay-1,
.anim-scale.visivel.delay-1 { animation-delay: 0.08s; }

.anim.visivel.delay-2,
.anim-fade.visivel.delay-2,
.anim-esq.visivel.delay-2,
.anim-dir.visivel.delay-2,
.anim-scale.visivel.delay-2 { animation-delay: 0.16s; }

.anim.visivel.delay-3,
.anim-fade.visivel.delay-3,
.anim-esq.visivel.delay-3,
.anim-dir.visivel.delay-3,
.anim-scale.visivel.delay-3 { animation-delay: 0.24s; }

.anim.visivel.delay-4,
.anim-fade.visivel.delay-4,
.anim-esq.visivel.delay-4,
.anim-dir.visivel.delay-4,
.anim-scale.visivel.delay-4 { animation-delay: 0.32s; }

.anim.visivel.delay-5,
.anim-fade.visivel.delay-5,
.anim-esq.visivel.delay-5,
.anim-dir.visivel.delay-5,
.anim-scale.visivel.delay-5 { animation-delay: 0.40s; }

.anim.visivel.delay-6,
.anim-fade.visivel.delay-6,
.anim-esq.visivel.delay-6,
.anim-dir.visivel.delay-6,
.anim-scale.visivel.delay-6 { animation-delay: 0.48s; }

/* ── LINHA DOURADA ANIMADA ── */
.divisor-ouro-anim {
  width: 0;
  height: 3px;
  background: linear-gradient(90deg, #C9933A, #f0d9a8);
  border-radius: 2px;
  margin: 1.5rem 0;
}
.divisor-ouro-anim.visivel {
  animation: lineGrow 0.6s var(--ease-padrao, cubic-bezier(0.4,0,0.2,1)) both;
}
.divisor-ouro-anim.centro { margin-left: auto; margin-right: auto; }

/* ── CONTADOR NUMÉRICO ── */
.stat-num-anim {
  opacity: 0;
  transform: translateY(16px);
}
.stat-num-anim.visivel {
  animation: countUp 0.5s var(--ease-spring, cubic-bezier(0.34,1.56,0.64,1)) both;
}

/* ── HOVER TRANSITIONS — sem nenhuma animação em tela, só ao interagir ── */
.card-hover {
  transition: transform 0.28s cubic-bezier(0.4,0,0.2,1),
              box-shadow 0.28s cubic-bezier(0.4,0,0.2,1),
              border-color 0.28s cubic-bezier(0.4,0,0.2,1);
}
.card-hover:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 32px rgba(0,0,0,.10);
}

/* ── PREFERS REDUCED MOTION ── */
@media (prefers-reduced-motion: reduce) {
  .anim,
  .anim-fade,
  .anim-esq,
  .anim-dir,
  .anim-scale {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
  }
  .divisor-ouro-anim { width: 48px; animation: none; }
  .stat-num-anim { opacity: 1; transform: none; animation: none; }
  .card-hover:hover { transform: none; }
  * {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
  }
}
