.booking-page { max-width:1200px; padding-block:36px 72px; }
.booking-layout { grid-template-columns:260px minmax(0,1fr); gap:64px; align-items:start; }
.booking-intro { position:sticky; top:32px; }
.booking-intro h1 { font-size:32px; line-height:1.2; }
.booking-intro>p { font-size:14px; line-height:1.7; }
.booking-contact { margin-top:28px; }
.booking-contact a { font-size:20px; }
.gv-wizard { display:block; min-width:0; scroll-margin-top:24px; }
.gv-wizard fieldset { border:0; padding:0; margin:0 0 28px; min-width:0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
.gv-wizard legend { float:left; width:100%; padding:0 0 24px; font-size:24px; font-weight:600; line-height:1.25; }
.gv-wizard legend:focus { outline:none; }
.gv-wizard legend+* { clear:both; }
.gv-wizard fieldset>*:not(.form-field) { grid-column:1/-1; }
.gv-progress { display:grid; grid-template-columns:1.2fr 1fr .8fr; gap:16px; margin-bottom:32px; border-bottom:1px solid var(--line); }
.gv-progress button { display:flex; align-items:center; gap:10px; border:0; border-bottom:2px solid transparent; padding:0 0 16px; background:transparent; color:var(--muted); font:600 13px/1.4 var(--font-body); text-align:left; }
.gv-progress button span { display:grid; place-items:center; width:28px; height:28px; flex:none; border-radius:50%; background:#f0f1f2; color:#5c6164; }
.gv-progress button[aria-current] { color:var(--red); border-bottom-color:var(--red); }
.gv-progress button[aria-current] span { color:#fff; background:var(--red); }
.gv-progress button.is-complete span { background:#e5eee8; color:#305e4b; }
.gv-wizard [data-booking-step="0"]>.gv-services { grid-column:1; }
.gv-wizard [data-booking-step="0"]>.gv-date-area { grid-column:2; }
.gv-services { display:grid; grid-template-columns:1fr; gap:8px; }
.gv-service { position:relative; display:flex; align-items:center; min-height:64px; gap:12px; padding:8px 12px; border:1px solid #d8dcdd; border-radius:4px; cursor:pointer; font-size:13px; font-weight:600; line-height:1.4; }
.gv-service input { position:absolute; opacity:0; width:1px; height:1px; }
.gv-service img { width:44px; height:44px; object-fit:cover; border-radius:2px; flex:none; }
.gv-service-name { flex:1; }
.gv-service-symbol { display:grid; place-items:center; width:44px; height:44px; flex:none; background:#f0f2f2; color:#5c6164; border-radius:2px; }
.gv-service-symbol svg { width:22px; height:22px; }
.gv-service-change { display:none; border:0; background:transparent; color:var(--red); font:600 13px/1.5 var(--font-body); padding:0; cursor:pointer; }
.gv-radio-mark { display:block; width:16px; height:16px; border:1px solid #a7afb1; border-radius:50%; flex:none; }
.gv-service:has(input:checked) { border-color:var(--red); box-shadow:inset 0 0 0 1px var(--red); background:#fff7f6; }
.gv-service input:checked~.gv-radio-mark { border:5px solid var(--red); }
.gv-service:has(input:focus-visible) { outline:3px solid #f6b8b2; outline-offset:2px; }
.gv-date-area { min-width:0; padding-left:24px; border-left:1px solid var(--line); }
.gv-date-area h2 { font-size:18px; margin-bottom:10px; }
.gv-date-area p { font-size:13px; line-height:1.6; }
.gv-date-optional { display:flex; align-items:center; gap:8px; font-size:13px; margin-top:18px; }
.gv-date-optional input { accent-color:var(--red); width:16px; height:16px; }
.gv-calendar-state { margin-top:18px; }
.gv-calendar-wrap { min-width:0; margin-top:20px; }
.gv-calendar-wrap[aria-busy=true] { opacity:.5; }
.gv-calendar-wrap input.gv-date-enhanced { display:none; }
.gv-calendar-key { display:flex; flex-wrap:wrap; gap:16px; margin-top:20px; font-size:11px; color:var(--muted); }
.gv-calendar-key span { display:flex; align-items:center; gap:6px; }
.gv-calendar-key i { width:10px; height:10px; border:1px solid #6e7578; }
.gv-calendar-key span:last-child i { background:#e7e9ea; border-color:#e7e9ea; }
.gv-selected-date { min-height:24px; margin-top:16px; color:var(--ink); font-weight:600; }
.gv-wizard .flatpickr-calendar { width:100%; max-width:none; box-shadow:none; border:1px solid var(--line); border-radius:4px; font-family:var(--font-body); padding:12px; background:#fff; }
.gv-wizard .flatpickr-calendar:before,.gv-wizard .flatpickr-calendar:after { display:none; }
.gv-wizard .flatpickr-rContainer,.gv-wizard .flatpickr-days,.gv-wizard .dayContainer { width:100%; min-width:0; max-width:none; }
.gv-wizard .dayContainer { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:2px; padding-top:8px; }
.gv-wizard .flatpickr-day { width:100%; max-width:none; height:38px; line-height:38px; border-radius:3px; font-size:13px; color:#202124; }
.gv-wizard .flatpickr-day.selected { background:var(--red); border-color:var(--red); color:#fff; }
.gv-wizard .flatpickr-day.today { border-color:var(--red); }
.gv-wizard .flatpickr-day.flatpickr-disabled { color:#aab0b3; background:#f5f6f6; }
.gv-wizard .flatpickr-day.prevMonthDay,.gv-wizard .flatpickr-day.nextMonthDay { color:#aab0b3; }
.gv-wizard .flatpickr-months { margin-bottom:8px; }
.gv-wizard .flatpickr-current-month { font-size:14px; padding-top:5px; }
.gv-wizard .flatpickr-current-month input.cur-year { font:600 14px var(--font-body); }
.gv-wizard .flatpickr-weekday { font-size:11px; color:var(--muted); font-weight:500; }
.gv-wizard .flatpickr-prev-month,.gv-wizard .flatpickr-next-month { top:8px; padding:10px; }
.gv-wizard .flatpickr-prev-month { left:8px; }
.gv-wizard .flatpickr-next-month { right:8px; }
.gv-wizard-actions { display:flex; align-items:center; gap:16px; border-top:1px solid var(--line); padding-top:24px; }
.gv-wizard-actions>[data-step-next],.gv-wizard-actions>[type=submit] { margin-left:auto; white-space:nowrap; }
.gv-step-summary { font-size:12px; color:var(--muted); }
.gv-review { display:grid; grid-template-columns:140px minmax(0,1fr); gap:0 24px; margin:0 0 8px; }
.gv-review dt,.gv-review dd { padding:13px 0; border-bottom:1px solid var(--line); font-size:14px; margin:0; overflow-wrap:anywhere; }
.gv-review dt { color:var(--muted); }
.gv-review dd { font-weight:500; white-space:pre-wrap; }
.gv-error { margin-bottom:24px; }
.gv-wizard .form-consent { font-size:13px; line-height:1.6; }
.gv-wizard .form-consent a { text-decoration:underline; }
.gv-wizard .form-heading { font-size:18px; margin-top:10px; }
.gv-wizard .form-submit { width:auto; }
@media(max-width:600px) { .gv-services.is-compact .gv-service:not(:has(input:checked)) { display:none; } .gv-service-change { display:inline-flex; justify-self:end; margin-top:4px; padding-block:6px; } }
@media(max-width:1100px) { .booking-layout { grid-template-columns:220px minmax(0,1fr); gap:36px; } .gv-date-area { grid-template-columns:1fr; gap:20px; } .gv-calendar-wrap { max-width:380px; } .gv-calendar-state:empty { display:none; } }
@media(max-width:800px) { .booking-layout { grid-template-columns:1fr; gap:32px; } .booking-intro { position:static; display:block; max-width:600px; } .booking-intro h1 { margin-bottom:12px; } .booking-intro .booking-contact { display:none; } }
@media(max-width:600px) { .booking-page { padding-block:24px 40px; } .booking-page .back-link { margin-bottom:22px; } .booking-intro h1 { font-size:28px; } .gv-progress { gap:10px; margin-bottom:24px; grid-template-columns:1fr 1fr .85fr; } .gv-progress button { font-size:11px; gap:6px; padding-bottom:12px; } .gv-progress button span { width:24px; height:24px; } .gv-wizard legend { font-size:20px; padding-bottom:20px; } .gv-services { grid-template-columns:1fr; gap:8px; } .gv-service { min-height:64px; padding:8px 12px; font-size:14px; } .gv-service img { width:44px; height:44px; } .gv-date-area { grid-template-columns:1fr; padding-top:24px; gap:16px; } .gv-calendar-wrap { max-width:none; } .gv-date-area .gv-calendar-key { margin-top:12px; } .gv-wizard .flatpickr-day { height:38px; line-height:38px; } .gv-wizard fieldset { gap:18px 12px; } .gv-wizard-actions { flex-wrap:wrap; gap:12px; } .gv-step-summary { width:100%; order:-1; } .gv-wizard-actions .button { font-size:13px; padding-inline:14px; } .gv-review { grid-template-columns:1fr; gap:0; } .gv-review dt { padding-bottom:0; border:0; font-size:12px; } .gv-review dd { padding-top:5px; } }
@media(max-width:600px) { .gv-wizard [data-booking-step="0"]>.gv-services,.gv-wizard [data-booking-step="0"]>.gv-date-area { grid-column:1/-1; } .gv-date-area { padding-left:0; border-left:0; border-top:1px solid var(--line); } }
@media(max-width:359px) { .gv-wizard fieldset { grid-template-columns:1fr; } .gv-progress button { flex-direction:column; align-items:flex-start; } .gv-wizard .flatpickr-calendar { padding:8px; } }
