.booking-page { background:#f4f7f1; }
.booking-hero { padding:58px 0 78px; background:#0c1a15; color:#eef7f1; }
.booking-heading { max-width:760px; margin-bottom:36px; }
.booking-heading .eyebrow { color:#91b29b; }
.booking-heading h1 { font:500 clamp(38px,5vw,68px)/1.04 var(--display); letter-spacing:-2.7px; }
.booking-heading > p:not(.eyebrow) { max-width:650px; margin-top:20px; color:#adc1b2; font-size:16px; line-height:1.8; }
.booking-shell { display:grid; grid-template-columns:1fr; background:#fff; color:#1e432c; border:1px solid #d5e1d3; border-radius:18px; overflow:hidden; box-shadow:0 28px 70px #04110b40; }
.booking-picker { display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); align-items:start; gap:32px; padding:34px; min-width:0; }
.booking-picker > .booking-step,.booking-picker > h2,.booking-picker > .booking-note { display:none; }
.booking-shell [hidden] { display:none !important; }
.booking-times-panel { min-width:0; }
.booking-times-panel h2 { margin:0 0 20px; }
.booking-details { padding:42px max(34px,calc((100% - 680px)/2)); background:#edf4e9; }
.booking-step { display:flex; align-items:center; gap:12px; margin-bottom:18px; color:#6d8973; font-size:10px; font-weight:600; letter-spacing:1.4px; text-transform:uppercase; }
.booking-step span { display:grid; place-items:center; width:25px; height:25px; border:1px solid #a9bda9; border-radius:50%; color:#396047; }
.booking-shell h2 { font:500 27px/1.2 var(--display); letter-spacing:-.7px; margin-bottom:10px; }
.booking-note { color:#718576; font-size:13px; line-height:1.7; }
.booking-calendar { width:100%; min-width:0; margin:0; padding:0; border:0; background:#fff; }
.booking-calendar-head { display:grid; grid-template-columns:46px minmax(0,1fr) 46px; gap:12px; align-items:center; margin-bottom:24px; }
.booking-calendar-head strong { text-align:center; font:500 clamp(21px,2.3vw,30px)/1.3 var(--display); letter-spacing:-1px; }
.booking-calendar-head button { width:46px; height:52px; border:1px solid #d0ddd0; border-radius:8px; background:#f5faf2; color:#458b77; font-size:22px; cursor:pointer; }
.booking-calendar-head button:disabled { opacity:.28; cursor:not-allowed; }
.booking-weekdays,.booking-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:8px; }
.booking-weekdays { margin-bottom:16px; color:#87998a; font-size:12px; text-align:center; }
.booking-calendar-day { position:relative; display:grid; place-items:center; min-width:0; min-height:52px; padding:0; border:1px solid #d8e4d4; border-radius:10px; background:#f9fcf7; color:#173522; font:500 16px var(--body); cursor:pointer; }
.booking-calendar-day:not(:disabled):hover { border-color:#8eb59a; background:#edf7ef; }
.booking-calendar-day[aria-selected="true"] { border-color:#438c70; background:#8ef0c4; color:#17462d; font-weight:700; box-shadow:0 0 0 2px #29704d20; }
.booking-calendar-day[aria-selected="true"]::after { content:'✓'; position:absolute; right:5px; top:3px; font-size:11px; }
.booking-calendar-day:disabled { color:#acb8ae; border-color:#eef2ed; background:#f6f8f5; cursor:not-allowed; }
.booking-calendar-day.is-outside-month { opacity:.45; }
.booking-slots { display:grid; grid-template-columns:1fr; gap:12px; }
.booking-slot { min-height:56px; border:1px solid #bfd9c5; border-radius:10px; background:#f7fbf5; color:#28543a; padding:14px 16px; text-align:left; font:600 16px var(--body); cursor:pointer; }
.booking-slot:hover,.booking-slot[aria-selected="true"] { border-color:#1f6b4f; background:#1f6b4f; color:#fff; }
.booking-state { min-height:24px; margin-top:18px; color:#667d6d; font-size:12px; line-height:1.7; }
.booking-calendar-day:focus-visible,.booking-slot:focus-visible,.booking-calendar-head button:focus-visible { outline:2px solid #1f6b4f; outline-offset:3px; }
.booking-state.is-error { color:#9a452f; }
.booking-summary { margin:20px 0; padding:16px; border:1px solid #cbdaca; border-radius:7px; background:#fff; }
.booking-summary strong,.booking-summary span { display:block; }
.booking-summary strong { font:500 16px/1.4 var(--display); }
.booking-summary span { margin-top:5px; color:#768b7b; font-size:11px; }
.booking-back { margin:0 0 18px; padding:0; border:0; background:transparent; color:#315b40; font:600 11px/1.4 var(--body); text-decoration:underline; text-underline-offset:3px; }
.booking-back:hover { color:#1f6b4f; }
.booking-form label { display:block; margin-bottom:14px; color:#526c59; font-size:11px; }
.booking-form input { display:block; width:100%; margin-top:6px; padding:11px 12px; border:1px solid #c3d3c3; border-radius:5px; background:#fff; color:#183d28; }
.booking-form input:focus { outline:2px solid #619f77; outline-offset:2px; }
.booking-form .button { width:100%; min-height:48px; margin-top:5px; }
.booking-form .form-note { margin-top:13px; color:#7b8b7c; font-size:10px; line-height:1.6; }
.booking-status { margin-top:12px; color:#9a452f; font-size:12px; line-height:1.6; }
.booking-success { grid-column:1 / -1; padding:42px; border:0; }
.booking-success h2 { font-size:31px; }
.booking-success p { margin-top:13px; color:#5f7967; line-height:1.75; }
.booking-meta { display:flex; flex-wrap:wrap; gap:12px 24px; margin-top:25px; color:#8da898; font-size:11px; }
.booking-meta span::before { content:'✓'; color:#8ef0c4; margin-right:7px; }
@media(max-width:850px) {
  .booking-picker { grid-template-columns:1fr; }
  .booking-state { margin-top:18px; }
}
@media(max-width:560px) {
  .booking-hero { padding:38px 0 55px; }
  .booking-heading h1 { letter-spacing:-1.7px; }
  .booking-picker,.booking-details { padding:24px 18px; }
  .booking-calendar-day { min-height:40px; font-size:13px; }
  .booking-weekdays,.booking-days { gap:4px; }
  .booking-weekdays { font-size:10px; }
  .booking-calendar-head { grid-template-columns:38px minmax(0,1fr) 38px; }
  .booking-calendar-head button { width:38px; height:44px; }
}
@media(max-width:360px) {
  body:has([data-booking]) .header .nav-shell { gap:6px; }
  body:has([data-booking]) .header .button { padding:10px 12px; }
}