/* -------------------- Floating CTA -------------------- */
.floating-contact-cta {
  position: fixed;
  right: 1.25rem;
  bottom: 1.25rem;
  z-index: 90;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.85rem 1.25rem;
  background: var(--primary);
  color: #FFFFFF;
  border-radius: 999px;
  box-shadow: var(--shadow-lg);
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
}
.floating-contact-cta:hover { background: var(--primary-dark); color: #FFFFFF; }
.floating-contact-cta svg {
  width: 20px; height: 20px;
  fill: none; stroke: currentColor;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}
.floating-contact-cta {
  transition: opacity 0.25s ease, transform 0.25s ease, background 0.15s ease, color 0.15s ease;
  /* Periodic halo pulse — soft teal ring expands out from the pill once
     every 5s. Reads as "active / live" without nagging. The base
     shadow-lg stays present; the second shadow drives the ring. */
  animation: floatingCtaHalo 5s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}
/* Pause the pulse on hover so the hover bg color reads cleanly */
.floating-contact-cta:hover { animation-play-state: paused; }
.floating-contact-cta.is-hidden {
  opacity: 0;
  transform: translateY(20px) scale(0.85);
  pointer-events: none;
  animation: none; /* don't burn cycles when off-screen */
}
@keyframes floatingCtaHalo {
  0% {
    box-shadow: var(--shadow-lg), 0 0 0 0 rgba(20, 184, 166, 0.55);
  }
  60% {
    box-shadow: var(--shadow-lg), 0 0 0 16px rgba(20, 184, 166, 0);
  }
  100% {
    box-shadow: var(--shadow-lg), 0 0 0 0 rgba(20, 184, 166, 0);
  }
}
@media (prefers-reduced-motion: reduce) {
  .floating-contact-cta { animation: none; }
}
@media (max-width: 640px) {
  .floating-contact-cta-label { display: none; }
  /* Tighter circular footprint on mobile so it stays out of body content */
  .floating-contact-cta { padding: 0.7rem; right: 1rem; bottom: 1rem; }
  .floating-contact-cta svg { width: 22px; height: 22px; }
}

