/* =========================================
   ANIMATIONS — keyframes e efeitos visuais
   ========================================= */

/* Hero fade-up */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* Scroll pulse (linha hero) */
@keyframes scrollPulse {
  0%, 100% { opacity: .4; }
  50%       { opacity: 1; }
}

/* Ripple (hero) */
@keyframes rippleOut {
  0%   { transform: translate(-50%, -50%) scale(.15); opacity: .7; }
  100% { transform: translate(-50%, -50%) scale(1);   opacity: 0;  }
}

/* Partículas (hero) */
@keyframes floatUp {
  0%   { transform: translateY(105vh) scale(0);  opacity: 0;  }
  10%  { opacity: 1; }
  90%  { opacity: .4; }
  100% { transform: translateY(-8vh) scale(1.4); opacity: 0;  }
}

/* Ícone decorativo (sustentabilidade) */
@keyframes floatDeco {
  0%, 100% { transform: translateY(0);    }
  50%       { transform: translateY(-12px); }
}

/* Imagem do mapa */
@keyframes floatImg {
  0%, 100% { transform: translateY(0);   }
  50%       { transform: translateY(-8px); }
}

/* Carrossel infinito */
@keyframes scrollInfinite {
  from { transform: translateX(0);    }
  to   { transform: translateX(-50%); }
}

/* WhatsApp pulse */
@keyframes waPulse {
  0%, 100% { box-shadow: 0 4px 16px rgba(37,211,102,.45), 0 0 0 0   rgba(37,211,102,.35); }
  50%       { box-shadow: 0 4px 16px rgba(37,211,102,.45), 0 0 0 11px rgba(37,211,102,0);  }
}

/* Ripple hero elements */
.ripple {
  position: absolute; border-radius: 50%;
  border: 1px solid rgba(91, 200, 245, .14);
  pointer-events: none;
  animation: rippleOut 8s ease-out infinite;
}
.ripple:nth-child(2) { width: 300px; height: 300px; top: 50%; left: 50%; animation-delay: 0s; }
.ripple:nth-child(3) { width: 560px; height: 560px; top: 50%; left: 50%; animation-delay: 2.5s; }
.ripple:nth-child(4) { width: 820px; height: 820px; top: 50%; left: 50%; animation-delay: 5s; }

/* Partícula */
.particle {
  position: absolute; border-radius: 50%;
  background: rgba(91, 200, 245, .45);
  pointer-events: none;
  animation: floatUp linear infinite;
}
