.booking { align-items: start; }
.booking > *, .booking form > * { min-width: 0; }
.booking-copy > p { color: var(--muted); line-height: 1.7; }
.booking-copy h2 { line-height: 1.05; }
.booking-copy .disclaimer { color: var(--text); }

.booking form { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; }
.booking label { font-size: .9rem; align-content: start; line-height: 1.55; letter-spacing: 0; font-weight: 500; }
.booking input, .booking select, .booking textarea { font-size: 1rem; min-width: 0; min-height: 50px; font-weight: 400; }
.booking textarea { resize: vertical; line-height: 1.6; }
.booking input[type="radio"], .booking input[type="checkbox"] {
  width: 20px; height: 20px; min-height: 0; margin: 0; padding: 0; flex: none; accent-color: var(--navy);
}
.booking input:user-invalid, .booking select:user-invalid, .booking textarea:user-invalid { border-color: var(--danger); }
.hp { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; opacity: 0; }

.group { border: 1px solid #cdd8ea; margin: 0; padding: 18px 20px 20px; display: grid; gap: 16px; min-width: 0; }
.group > legend { padding: 0 8px; font-size: .9rem; font-weight: 600; color: var(--text); }
.group.optional { grid-template-columns: 1fr; background: #fff; }
.group.optional > legend { background: var(--ivory); }

.choices { display: flex; flex-wrap: wrap; gap: 10px 22px; align-items: center; }
.choices.nested { border: 0; padding: 0; margin: 0; min-width: 0; }
.choices.nested > legend { padding: 0 0 10px; font-size: .9rem; font-weight: 500; float: left; width: 100%; }
.booking label.choice, .booking label.check {
  display: flex; align-items: flex-start; gap: 10px; font-weight: 400; cursor: pointer;
}
.booking label.choice { align-items: center; min-height: 32px; }
.booking label.check input { margin-top: 2px; }

.tiers { grid-template-columns: repeat(3, 1fr); gap: 10px; }
.booking label.tier-option {
  display: flex; align-items: center; gap: 12px; border: 1px solid #cdd8ea; padding: 14px; cursor: pointer; background: #fff;
  transition: border-color .2s, background .2s;
}
.tier-option span { display: grid; gap: 2px; }
.tier-option b { font-family: "DM Sans", serif; font-weight: 400; font-size: 1.6rem; line-height: 1.1; }
.tier-option small { color: var(--muted); font-size: .78rem; line-height: 1.4; }
.booking label.tier-option:hover { border-color: var(--accent-rule); }
.tier-option:has(input:checked) { border-color: var(--navy); background: var(--panel); outline: 1px solid var(--navy); outline-offset: -2px; }
.tiers.flash { animation: flash 1.4s ease; }
@keyframes flash { 0%, 100% { background: transparent; } 30% { background: #ffe4ec; } }

.form-note { margin: 0; color: var(--muted); font-size: .875rem; line-height: 1.65; }
#submit-btn[disabled] { opacity: .7; cursor: progress; }

.status:empty { display: none; }
.status { border: 1px solid var(--line); padding: 16px 18px; line-height: 1.65; font-size: .95rem; background: #fff; }
.status.error { border-color: var(--danger); background: #fff6f7; color: var(--text); }
.status.error strong { color: var(--danger); }
.status p { margin: 0 0 6px; }
.status p:last-child { margin: 0; }

.thank-you { border: 1px solid var(--line); background: #fff; padding: clamp(28px, 5vw, 48px); }
.thank-you:focus { outline: none; }
.thank-you h3 { font-family: "DM Sans", serif; font-weight: 400; font-size: clamp(2.2rem, 4vw, 3.2rem); margin: 0 0 16px; line-height: 1.05; }
.thank-you p { color: var(--muted); line-height: 1.7; }

@media (max-width: 850px) { .booking form { margin-top: 10px; } }
@media (max-width: 640px) {
  .booking form { grid-template-columns: 1fr; }
  .tiers { grid-template-columns: 1fr; }
  .group { padding: 16px; }
}
