/* Shared form layer (S43) — contact + booking handlers.
   Loaded after styles.css and v2.css. Field, grid, error and consent shells
   come from v2.css; this file adds the states, the honeypot, the Turnstile
   slot and the light-on-green treatment for the contact section. */

/* ── Honeypot: present for bots, invisible and untabbable for people ───── */
.honeypot {
  position: absolute !important;
  left: -9999px !important;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

/* ── Status messages (aria-live target) ─────────────────────────────────── */
.form-status {
  margin: 0 0 22px;
  padding: 15px 18px;
  border: 1px solid #cbd5c2;
  background: var(--paper);
  color: var(--green);
  font-size: .84rem;
  line-height: 1.6;
  border-radius: 3px;
}

.form-status[data-state="success"] {
  border-color: #9dbb92;
  background: #eef4e9;
}

.form-status[data-state="error"] {
  border-color: #d4a295;
  background: #fff4ed;
  color: #8d3326;
}

.form-status a {
  color: inherit;
  text-decoration: underline;
}

/* ── Invalid fields ────────────────────────────────────────────────────── */
.form-field input[aria-invalid="true"],
.form-field select[aria-invalid="true"],
.form-field textarea[aria-invalid="true"] {
  border-color: #b4573f;
  background: #fff8f5;
}

/* ── Contact form card ─────────────────────────────────────────────────── */
/* The shared .form-grid owns the column gap; the status region, consent,
   privacy note and Turnstile slot stay on the full width so every field
   starts on the same left edge. */
.contact-form .form-status,
.contact-form .turnstile-slot {
  grid-column: 1 / -1;
}

.contact-form .check-line {
  margin: 0;
  font-size: .84rem;
}

.contact-form .privacy-note {
  margin: 0 !important;
  padding: 0;
  background: none;
}

.contact-form .turnstile-slot {
  margin: 0;
}

.contact-form .button {
  margin-top: 6px;
}

.form-help {
  font-size: .76rem;
  line-height: 1.7;
  margin: 14px 0 0;
}

/* ── Turnstile ─────────────────────────────────────────────────────────── */
.turnstile-slot {
  margin: 16px 0 0;
  min-height: 0;
}

.turnstile-slot:empty {
  display: none;
}

/* ── Booking submit state ──────────────────────────────────────────────── */
.booking-status {
  margin: 0 0 20px;
}

.booking-success {
  padding: 26px 24px;
  border: 1px solid #cbd5c2;
  background: var(--paper);
  border-radius: 3px;
  margin-bottom: 24px;
}

.booking-success h3 {
  font-size: 1.4rem;
  color: var(--green);
  margin-bottom: 12px;
}

.booking-success p {
  font-size: .88rem;
  color: var(--muted);
  margin: 0 0 10px;
}

.booking-success a {
  color: var(--green);
  text-decoration: underline;
}

.whatsapp-fallback {
  display: inline-block;
  margin-top: 16px;
  font-size: .8rem;
  color: var(--green);
  text-decoration: underline;
}

.whatsapp-fallback[aria-disabled="true"] {
  opacity: .5;
  pointer-events: none;
}

.booking-submit-row {
  display: grid;
  gap: 2px;
}

.booking-submit-row .button[disabled] {
  opacity: .65;
  cursor: progress;
}

@media print {
  .form-status,
  .honeypot,
  .turnstile-slot,
  .whatsapp-fallback {
    display: none !important;
  }
}
