:root{--booking-ink:var(--ink);--booking-plum:var(--plum);--booking-muted:#6f6474;--booking-line:#d7c9e0;--booking-error:#8f3434;--booking-success:#3d6b4f}

.booking-flow{padding:0 6% 90px;max-width:1100px;margin:0 auto}
.booking-flow>.eyebrow{color:#7a5a86}
.booking-card{background:#f1ecf5;padding:clamp(24px,4vw,44px);border-radius:4px;color:var(--booking-ink);min-width:0}
.booking-card p{color:var(--booking-muted)}
.booking-muted{font-size:14px;line-height:1.6;color:var(--booking-muted)}
.booking-title{font-family:'Playfair Display',Georgia,serif;font-size:clamp(28px,3.4vw,40px);letter-spacing:-.03em;line-height:1.12;color:var(--booking-ink);margin-bottom:24px;outline:none}
.booking-title:focus-visible{outline:2px solid #ae8cbc;outline-offset:4px}

.booking-test-banner{margin:0 0 24px;padding:14px 18px;background:#fbf3d9;border:1px solid #d9b85c;border-radius:3px;color:#5a4306;font-size:14px;line-height:1.6}
.booking-test-banner strong{font-weight:600}

.booking-steps{list-style:none;margin:0 0 32px;padding:0;display:flex;flex-wrap:wrap;gap:8px 20px;font-size:12px;letter-spacing:.4px;color:var(--booking-muted)}
.booking-steps li{position:relative;padding-left:0}
.booking-steps li.is-done{color:var(--booking-plum)}
.booking-steps li[aria-current="step"]{color:var(--booking-ink);font-weight:600}

.booking-notice{margin:0 0 24px;padding:14px 16px;background:#fbeeee;border-left:3px solid var(--booking-error);color:var(--booking-error);font-size:14px;line-height:1.6}
.booking-error{color:var(--booking-error);font-size:13px;line-height:1.5}

.booking-options{display:grid;gap:12px;margin-bottom:32px}
.booking-option{display:flex;justify-content:space-between;align-items:center;gap:16px;width:100%;padding:18px 20px;background:#fff;border:1px solid var(--booking-line);border-radius:3px;text-align:left;color:var(--booking-ink);cursor:pointer;transition:border-color .2s,box-shadow .2s,transform .2s}
.booking-option:hover{border-color:#ae8cbc;transform:translateY(-1px)}
.booking-option[aria-pressed="true"]{border-color:var(--booking-plum);box-shadow:inset 3px 0 0 var(--booking-plum)}
.booking-option-text{display:grid;gap:4px;min-width:0}
.booking-option-text strong{font-size:16px;font-weight:600}
.booking-option-text small{font-size:13px;color:var(--booking-muted);line-height:1.5}
.booking-option-meta{display:grid;justify-items:end;gap:4px;font-size:13px;color:var(--booking-muted);white-space:nowrap}
.booking-option-meta strong{font-size:16px;color:var(--booking-ink)}

.booking-week-nav{display:flex;justify-content:space-between;gap:16px;margin-bottom:16px}
.booking-link{background:none;border:0;padding:6px 0;color:var(--booking-plum);font-size:13px;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.booking-link:disabled{color:#aaa0ad;cursor:default;text-decoration:none}

.booking-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-bottom:28px}
.booking-day{display:grid;gap:2px;justify-items:center;padding:12px 4px;background:#fff;border:1px solid var(--booking-line);border-radius:3px;color:var(--booking-ink);font-size:13px;cursor:pointer;transition:border-color .2s,background .2s}
.booking-day small{font-size:11px;color:var(--booking-muted)}
.booking-day:hover:not(:disabled){border-color:#ae8cbc}
.booking-day[aria-pressed="true"]{background:var(--booking-plum);border-color:var(--booking-plum);color:#fff}
.booking-day[aria-pressed="true"] small{color:#eee6f2}
.booking-day:disabled{opacity:.45;cursor:default}

.booking-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;margin-bottom:32px}
.booking-slot{padding:12px 8px;background:#fff;border:1px solid var(--booking-line);border-radius:3px;color:var(--booking-ink);font-size:15px;cursor:pointer;transition:border-color .2s,background .2s}
.booking-slot:hover{border-color:#ae8cbc}
.booking-slot[aria-pressed="true"]{background:var(--booking-plum);border-color:var(--booking-plum);color:#fff}

.booking-field{display:flex;flex-direction:column;gap:7px;font-size:14px;margin:18px 0;color:#594460}
.booking-field input{border:1px solid var(--booking-line);border-radius:2px;background:#fff;min-height:48px;width:100%;font:16px 'DM Sans',sans-serif;color:var(--booking-ink);padding:11px 12px;min-width:0}
.booking-field input[aria-invalid="true"]{border-color:var(--booking-error)}
.booking-field input:focus-visible{outline:2px solid #ae8cbc;outline-offset:2px}
.booking-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 16px}
.booking-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.booking-privacy{margin:22px 0 32px;font-size:13px}

.booking-summary{margin:0 0 28px;background:#fff;border:1px solid var(--booking-line);border-radius:3px;padding:8px 20px}
.booking-summary-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:16px;padding:12px 0;border-bottom:1px solid #eee8f1;font-size:15px}
.booking-summary-row:last-child{border-bottom:0}
.booking-summary dt{color:var(--booking-muted);font-size:13px}
.booking-summary dd{margin:0;color:var(--booking-ink);overflow-wrap:anywhere}

.booking-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-top:8px;flex-wrap:wrap}
.booking-secondary{background:none;border:1px solid var(--booking-line);border-radius:3px;padding:14px 22px;color:var(--booking-ink);cursor:pointer;font-size:13px;transition:border-color .2s}
.booking-secondary:hover:not(:disabled){border-color:var(--booking-plum)}
.booking-card .button{border:0;cursor:pointer}
.booking-card .button:disabled,.booking-secondary:disabled{opacity:.5;cursor:not-allowed;transform:none}
.booking-card button:focus-visible{outline:2px solid #ae8cbc;outline-offset:2px}

.booking-done{text-align:left}
.booking-done-mark{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:50%;background:#dfeee5;color:var(--booking-success);font-size:24px;margin-bottom:20px}
.booking-done p{margin-bottom:12px}

@media(max-width:760px){
  .booking-flow{padding:0 5% 64px}
  .booking-form-grid{grid-template-columns:1fr}
  .booking-days{grid-template-columns:repeat(4,minmax(0,1fr))}
  .booking-option{align-items:flex-start}
  .booking-summary-row{grid-template-columns:1fr;gap:4px}
  .booking-actions{flex-direction:column-reverse;align-items:stretch}
  .booking-actions .button,.booking-secondary{justify-content:center;text-align:center}
}

@media(prefers-reduced-motion:reduce){
  .booking-option,.booking-day,.booking-slot,.booking-secondary{transition:none}
}
