/* Booking flow */
.booking-body { background: var(--off-white); }
.booking-header { position: absolute; z-index: 4; inset: 0 0 auto; width: var(--wrap); height: 82px; margin-inline: auto; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--line-dark); color:var(--off-white); }
.booking-back { color:#D0D2CA; text-decoration:none; font-size:11px; font-weight:600; }
.booking-back span { color:var(--lime); margin-left:10px; }
.booking-hero { min-height:380px; padding:138px max(56px, calc((100vw - 1320px)/2)) 58px; position:relative; display:flex; align-items:end; justify-content:space-between; gap:48px; background:var(--charcoal); color:var(--off-white); overflow:hidden; }
.booking-hero::after { content:""; position:absolute; width:310px; height:310px; right:9%; top:82px; border:1px solid rgba(193,240,120,.22); border-radius:50%; box-shadow:0 0 0 36px rgba(193,240,120,.025),0 0 0 72px rgba(193,240,120,.025); pointer-events:none; }
.booking-hero-inner { position:relative; z-index:1; max-width:700px; }
.booking-hero .eyebrow { margin-bottom:22px; }
.booking-hero h1 { font-size:clamp(60px,8vw,106px); line-height:.91; }
.booking-hero h1 span { color:var(--lime); }
.booking-hero-inner > p:last-child { max-width:460px; margin:20px 0 0; color:#B9BDB3; font-size:14px; }
.booking-hero-index { position:relative; z-index:1; padding-bottom:5px; color:#9A9E94; font-size:9px; letter-spacing:.14em; white-space:nowrap; }
.booking-main { padding:94px 0 110px; }
.booking-shell { width:min(1040px,calc(100% - 64px)); margin:auto; }
.booking-heading { display:flex; justify-content:space-between; align-items:end; gap:48px; margin-bottom:45px; }
.booking-heading .eyebrow { margin-bottom:12px; }
.booking-heading h2 { margin:0; font-size:clamp(44px,5vw,66px); line-height:1; }
.booking-heading > p { max-width:355px; margin:0 0 5px; color:#666A62; font-size:12px; }
.booking-alert { margin:0 0 26px; padding:17px 20px; border-left:3px solid #82964F; background:#E7E9DF; color:#30342D; font-size:13px; }
.booking-alert.error { border-color:#A54E3E; background:#F2E4E1; }
.booking-alert.success { border-color:#82964F; background:#E5EED9; }
.booking-alert a { font-weight:700; }
.booking-step { padding:30px 0 35px; border-top:1px solid var(--line-light); }
.step-title { display:flex; align-items:center; gap:17px; margin-bottom:22px; }
.step-title > span { color:#748B4A; font:500 16px var(--heading); }
.step-title h3 { margin:0; font-size:27px; }
.service-options { display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }
.service-choice { min-height:120px; position:relative; padding:20px; border:1px solid rgba(23,25,22,.17); background:transparent; cursor:pointer; text-align:left; color:var(--ink); transition:border-color .18s ease,background-color .18s ease; }
.service-choice:hover,.service-choice[aria-checked="true"] { border-color:#728544; background:#E8EADF; }
.service-choice[aria-checked="true"]::after { content:"✓"; position:absolute; right:16px; top:15px; color:#5F7735; font-size:13px; }
.service-choice strong { display:block; padding-right:15px; font:500 23px var(--heading); }
.service-choice span { display:block; margin-top:5px; color:#6A6E65; font-size:11px; }
.service-choice b { display:block; margin-top:14px; font-size:12px; }
.calendar-controls { display:flex; align-items:center; gap:13px; margin:-3px 0 19px 42px; }
.calendar-controls label,.booking-field label { font-size:11px; font-weight:700; }
.calendar-controls input { min-height:38px; padding:5px 10px; border:1px solid #C9CBC2; background:transparent; color:var(--ink); font:600 12px var(--body); }
.calendar-controls p { margin:0 0 0 auto; color:#777B72; font-size:10px; }
.calendar-layout { display:grid; grid-template-columns:1.1fr .9fr; gap:48px; margin-left:42px; }
.calendar-weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,minmax(32px,1fr)); gap:6px; }
.calendar-weekdays { margin-bottom:9px; }
.calendar-weekdays span { padding:5px 0; text-align:center; color:#7A7E74; font-size:9px; font-weight:700; letter-spacing:.08em; }
.calendar-days button,.calendar-days .calendar-blank { aspect-ratio:1/1; min-height:36px; }
.calendar-days button { border:1px solid transparent; background:transparent; color:#A0A39A; font-size:11px; cursor:not-allowed; }
.calendar-days button.has-times { border-color:rgba(23,25,22,.16); color:var(--ink); cursor:pointer; }
.calendar-days button.has-times:hover,.calendar-days button.selected { border-color:var(--charcoal); background:var(--charcoal); color:var(--off-white); }
.calendar-days button:focus-visible,.time-choice:focus-visible,.service-choice:focus-visible { outline:2px solid #718844; outline-offset:2px; }
.calendar-empty { margin:14px 0 0; color:#777B72; font-size:11px; }
.times-panel { min-height:190px; padding-left:28px; border-left:1px solid var(--line-light); }
.times-label { margin:5px 0 14px; color:#74796F; font-size:9px; font-weight:700; letter-spacing:.12em; }
.time-options { display:grid; grid-template-columns:repeat(3,minmax(68px,1fr)); gap:8px; }
.time-choice { min-height:40px; border:1px solid rgba(23,25,22,.18); background:transparent; color:var(--ink); font-size:11px; font-weight:600; cursor:pointer; }
.time-choice:hover,.time-choice.selected { border-color:var(--charcoal); background:var(--charcoal); color:var(--off-white); }
.booking-fields { display:grid; grid-template-columns:repeat(3,1fr); gap:22px; margin-left:42px; }
.booking-field label { display:block; margin-bottom:7px; }
.booking-field label span { color:#888C83; font-weight:400; }
.booking-field input { width:100%; min-height:46px; padding:9px 0; border:0; border-bottom:1px solid #B8BBB1; border-radius:0; outline:none; background:transparent; color:var(--ink); font:500 13px var(--body); }
.booking-field input:focus { border-color:#718844; box-shadow:0 1px #718844; }
.booking-privacy-note { margin:18px 0 0 42px; color:#777B72; font-size:10px; }
.booking-submit-row { display:flex; justify-content:space-between; align-items:center; gap:20px; padding:25px 0 0; border-top:1px solid var(--line-light); }
.booking-summary { color:#65695F; font-size:11px; }
.booking-submit-row .button { min-width:215px; }
.booking-submit-row .button:disabled { opacity:.45; cursor:not-allowed; transform:none; }
.booking-legal { max-width:540px; margin:15px 0 0 auto; color:#85897F; text-align:right; font-size:9px; }
.booking-footer { min-height:84px; padding:18px max(32px,calc((100vw - 1320px)/2)); display:flex; align-items:center; justify-content:space-between; gap:20px; border-top:1px solid var(--line-light); color:#73776E; font-size:9px; letter-spacing:.06em; }
.booking-footer .wordmark { color:var(--charcoal); font-size:12px; }
.booking-footer .wordmark span { color:#718844; }
.booking-footer > a:last-child { color:#58683A; text-decoration:none; font-size:10px; font-weight:700; }
.booking-footer > span { text-align:center; }
@media(max-width:760px) {
  .booking-header { width:calc(100% - 40px); height:70px; }
  .booking-header .wordmark { font-size:11px; }
  .booking-back { font-size:9px; }
  .booking-hero { min-height:340px; padding:125px 24px 43px; }
  .booking-hero::after { right:-140px; top:100px; }
  .booking-hero-index { display:none; }
  .booking-main { padding:62px 0 72px; }
  .booking-shell { width:calc(100% - 40px); }
  .booking-heading { display:block; margin-bottom:32px; }
  .booking-heading > p { margin-top:17px; }
  .booking-heading h2 { font-size:48px; }
  .booking-step { padding:24px 0 27px; }
  .step-title { gap:12px; }
  .step-title h3 { font-size:23px; }
  .service-options { grid-template-columns:1fr; gap:8px; }
  .service-choice { min-height:93px; padding:14px 16px; }
  .service-choice strong { font-size:20px; }
  .service-choice b { margin-top:8px; }
  .calendar-controls { flex-wrap:wrap; margin-left:0; }
  .calendar-controls p { flex-basis:100%; margin-left:0; }
  .calendar-layout { display:block; margin-left:0; }
  .calendar-weekdays,.calendar-days { gap:3px; }
  .calendar-days button,.calendar-days .calendar-blank { min-height:36px; }
  .times-panel { min-height:0; margin-top:24px; padding:20px 0 0; border-top:1px solid var(--line-light); border-left:0; }
  .time-options { grid-template-columns:repeat(4,minmax(55px,1fr)); }
  .booking-fields { grid-template-columns:1fr; gap:16px; margin-left:0; }
  .booking-privacy-note { margin-left:0; }
  .booking-submit-row { display:block; }
  .booking-submit-row .button { width:100%; margin-top:15px; }
  .booking-legal { text-align:left; }
  .booking-footer { flex-wrap:wrap; padding:18px 20px; }
  .booking-footer > span { order:3; flex-basis:100%; text-align:left; }
}
