/* Contact form guard - natural roaming button animation when required fields are incomplete */
.ac-evasive-submit {
  position: relative;
  z-index: 20;
  will-change: left, top, transform, filter, box-shadow;
  transition: transform 180ms cubic-bezier(.2,.9,.18,1), filter 180ms ease, box-shadow 180ms ease;
}

.ac-evasive-submit.ac-button-locked {
  cursor: not-allowed;
  filter: saturate(1.18) brightness(.98);
  box-shadow: 0 0 34px hsl(0 84% 60% / .34), 0 0 30px hsl(215 100% 60% / .28) !important;
}

.ac-evasive-submit.ac-button-roaming {
  position: fixed !important;
  z-index: 9999 !important;
  transition: left 260ms cubic-bezier(.16,.9,.24,1), top 260ms cubic-bezier(.16,.9,.24,1), transform 190ms cubic-bezier(.2,.95,.22,1), filter 180ms ease, box-shadow 180ms ease !important;
  transform: rotate(var(--ac-roam-rotate, 0deg)) scale(1.02);
  animation: ac-roaming-pulse 1.15s ease-in-out infinite;
}

.ac-evasive-submit.ac-button-dodge {
  animation: ac-dodge-pop 260ms cubic-bezier(.18,1.15,.28,1), ac-roaming-pulse 1.15s ease-in-out 260ms infinite;
}

.ac-evasive-placeholder {
  pointer-events: none;
}

.ac-form-warning {
  display: none;
  margin: -0.25rem 0 0.25rem;
  border: 1px solid hsl(35 100% 55% / .35);
  border-radius: 0.9rem;
  background: hsl(35 100% 55% / .08);
  color: hsl(42 100% 75%);
  padding: 0.8rem 1rem;
  font-size: 0.86rem;
  line-height: 1.45;
}

.ac-form-warning.is-visible {
  display: block;
}

.ac-required-missing {
  border-color: hsl(35 100% 55% / .7) !important;
}

@keyframes ac-dodge-pop {
  0% { transform: rotate(var(--ac-roam-rotate, 0deg)) scale(.94); }
  55% { transform: rotate(var(--ac-roam-rotate, 0deg)) scale(1.12); }
  100% { transform: rotate(var(--ac-roam-rotate, 0deg)) scale(1.02); }
}

@keyframes ac-roaming-pulse {
  0%, 100% { filter: saturate(1.12) brightness(.98); }
  50% { filter: saturate(1.35) brightness(1.08); }
}

@media (prefers-reduced-motion: reduce) {
  .ac-evasive-submit,
  .ac-evasive-submit.ac-button-roaming,
  .ac-evasive-submit.ac-button-dodge {
    transition: filter 180ms ease, box-shadow 180ms ease !important;
    animation: none !important;
  }
}
