/* Micro-interacciones — HOME (copia de trabajo, no afecta el sitio original) */
/* Solo transform y opacity. Ver js/anim-micro.js para la lógica. */

/* ---------- 1. Contador de precio (odómetro) ---------- */
.quote-price{
  display:inline-block;
  transform:translateZ(0);
  transition:transform 220ms cubic-bezier(.2,.8,.2,1),opacity 220ms ease;
}
.quote-price.is-counting{
  transform:scale(1.04);
}
.quote-price-note{
  display:inline-block;
  transition:opacity 220ms ease;
}
.quote-price-note.is-updating{
  opacity:.35;
}

/* ---------- 2. Hover de proyectos (parallax) ---------- */
.project-card{
  --px:0px;
  --py:0px;
}
.project-card img{
  transform:scale(1.06) translate3d(var(--px),var(--py),0);
  transition:transform var(--dur-slow) var(--ease-out);
  will-change:transform;
}
.project-card.is-tracking img{
  transition:transform 90ms linear;
}

/* ---------- 3. Botón WhatsApp — glow que respira ---------- */
.btn-whatsapp{
  position:relative;
  z-index:0;
}
.btn-whatsapp::after{
  content:"";
  position:absolute;
  inset:-6px;
  border-radius:12px;
  box-shadow:0 0 16px 3px rgba(107,43,226,.55);
  opacity:0;
  pointer-events:none;
  z-index:-1;
  animation:whatsappGlow 3s ease-in-out infinite;
}
.btn-whatsapp:hover::after{
  animation-play-state:paused;
}
/* Sin pulso donde la persona está llenando un formulario o leyendo (FAQ, política de datos) */
body:has(main form) .btn-whatsapp::after,
body.wa-calm .btn-whatsapp::after{
  animation:none;
  opacity:0;
}
@keyframes whatsappGlow{
  0%,100%{opacity:0;transform:scale(.96);}
  50%{opacity:1;transform:scale(1);}
}

/* ---------- Accesibilidad ---------- */
@media (prefers-reduced-motion:reduce){
  .quote-price,
  .quote-price-note,
  .project-card img{
    transition:none !important;
  }
  .quote-price.is-counting{
    transform:none;
  }
  .btn-whatsapp::after{
    animation:none;
    opacity:0;
  }
}
