/* Contact form states — Sprint 13 (no visual redesign) */
.ws-form-alert {
  display: none;
  margin-bottom: 1.25rem;
  padding: 0.9rem 1.1rem;
  border: 1px solid transparent;
  font-size: 0.95rem;
  line-height: 1.45;
}
.ws-form-alert.is-visible,
.ws-form-alert:not([hidden]) {
  display: block;
}
.ws-form-alert--success {
  background: rgba(40, 16, 16, 0.92);
  border-color: rgba(205, 37, 37, 0.45);
  color: #f6eaea;
}
.ws-form-alert--error {
  background: rgba(48, 18, 18, 0.92);
  border-color: rgba(200, 90, 90, 0.45);
  color: #f6eaea;
}
.ws-field-error {
  margin: 0.35rem 0 0;
  font-size: 0.8rem;
  color: #c45c5c;
}
.ws-field-error:not([hidden]) {
  display: block;
}
.ws-contact-form .is-invalid {
  border-color: #c45c5c !important;
}
.ws-honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.ws-contact-form.is-submitting [data-ws-submit] {
  opacity: 0.7;
  pointer-events: none;
}
