.booking-layout{grid-template-columns:.8fr 1.2fr;align-items:start}.appointment-widget{padding:32px}.booking-service{display:flex;gap:18px;align-items:center;padding-bottom:27px;border-bottom:1px solid var(--line)}.booking-service h2{font-size:25px;letter-spacing:-.5px}.booking-service p{font-size:12px;margin-top:8px}.booking-service .form-step{font-size:9px;margin-bottom:9px}.service-symbol{display:flex;flex-direction:column;align-items:center;justify-content:center;border-radius:17px;width:67px;height:76px;background:var(--teal-light);color:var(--teal);font:31px var(--serif);flex-shrink:0}.service-symbol>span{font:9px var(--sans);letter-spacing:2px;margin-top:4px}.booking-section{padding:26px 0;border-bottom:1px solid var(--line)}.booking-section h3{display:flex;align-items:center;gap:11px;font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:0;margin-bottom:20px}.step-number{display:grid;place-items:center;border-radius:50%;width:26px;height:26px;background:var(--teal-light);color:var(--teal);font-size:11px}.hours-note{font-size:12px;margin-top:-8px;margin-bottom:16px}.date-picker-button{width:100%;display:flex;align-items:center;gap:15px;text-align:left;border:1px solid #a9c4b9;background:#f2f6f0;padding:15px 18px;border-radius:12px;color:var(--teal)}.date-picker-button:hover{background:#e9f0e9}.date-picker-button small{display:block;font-size:10px;color:var(--text);margin-bottom:2px}.date-picker-button strong{display:block;font-weight:600;font-size:14px}.date-chevron{margin-left:auto;font-size:22px}.slot-heading{display:flex;justify-content:space-between;align-items:center;margin:22px 0 12px;font-size:12px;color:var(--teal-dark);font-weight:600}.availability-key{display:flex;gap:6px;align-items:center;font-size:10px;font-weight:400}.availability-key i,.calendar-legend i{display:block;width:6px;height:6px;border-radius:50%;background:#407b62}.time-slots{display:grid;grid-template-columns:repeat(3,1fr);gap:9px}.time-slot{padding:13px 7px;border:1px solid #ccdacf;border-radius:10px;background:#fffefa;color:var(--teal-dark);text-align:center;transition:background .2s,border-color .2s}.time-slot strong{display:block;font-size:13px;font-weight:600;white-space:nowrap}.time-slot small{display:block;font-size:9px;margin-top:4px;color:#64816c}.time-slot:hover:not(:disabled){border-color:var(--teal);background:#edf3ec}.time-slot.selected{background:var(--teal);color:white;border-color:var(--teal)}.time-slot.selected small{color:#dceae7}.time-slot:disabled{background:#efefec;border-color:#e7e7e0;color:#979e98;cursor:not-allowed}.time-slot:disabled strong{text-decoration:line-through;text-decoration-thickness:1px}.time-slot:disabled small{color:#838b84}.slots-empty{grid-column:1/-1;font-size:12px;padding:20px 10px;background:var(--cream);text-align:center;border-radius:10px}.slot-message{font-size:10px;margin-top:12px}.availability-retry{background:none;border:0;padding:8px 0;color:var(--teal);text-decoration:underline;font-size:12px}.appointment-widget .form-row{margin-top:5px}.appointment-widget .booking-section label:last-child{margin-bottom:0}.existing-check{display:flex!important;align-items:flex-start;gap:10px;font-weight:400!important;margin-top:18px;font-size:11px!important}.booking-form .existing-check input{width:17px;height:17px;min-height:17px;accent-color:var(--teal);flex-shrink:0;margin:3px 0 0;padding:0}.existing-check>span{color:var(--text)!important}.appointment-total{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-top:24px;padding:17px;background:var(--teal-light);border-radius:12px}.appointment-total>div>strong{display:block;font-size:12px;color:var(--teal-dark);font-weight:600}.appointment-total>div>span{display:block;font-size:10px;margin-top:5px}.appointment-total>strong{font:28px var(--serif);color:var(--teal);white-space:nowrap}.booking-submit{width:100%;margin-top:18px}.booking-submit:disabled{background:#c5cfca;border-color:#c5cfca;color:#465e52;box-shadow:none;transform:none;cursor:not-allowed}.booking-error{background:#fff0ea;border:1px solid #edc5b4;color:#8c4635;padding:13px 16px;border-radius:10px;font-size:12px;margin-top:18px}.calendar-dialog{width:min(460px,calc(100vw - 32px));max-height:calc(100dvh - 36px);overflow:auto;border:1px solid #dee7dd;border-radius:22px;padding:27px;background:#fffefa;color:var(--text);box-shadow:0 25px 100px #133b3933}.calendar-dialog::backdrop{background:#173d4266;backdrop-filter:blur(4px)}.calendar-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.calendar-top .eyebrow{font-size:9px;margin-bottom:8px;letter-spacing:1.3px}.calendar-top h2{font-size:31px}.calendar-close{border:0;background:#f1f2ec;border-radius:50%;width:34px;height:34px;font-size:25px;line-height:1;color:var(--teal);flex-shrink:0}.calendar-note{font-size:11px;margin-top:13px}.calendar-month{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:26px 0 19px}.calendar-month h3{font-family:var(--sans);font-size:15px;font-weight:600;letter-spacing:0}.calendar-month button{width:35px;height:35px;border:1px solid #d8e2d6;border-radius:50%;background:transparent;color:var(--teal)}.calendar-month button:disabled{opacity:.3;cursor:default}.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.calendar-weekdays{font-size:10px;text-align:center;margin-bottom:9px}.calendar-weekdays span:nth-child(2),.calendar-weekdays span:nth-child(3),.calendar-weekdays span:nth-child(6){color:var(--teal);font-weight:700}.calendar-grid button{aspect-ratio:1;border:1px solid #b8d0c3;background:#edf4ed;color:var(--teal-dark);border-radius:9px;font-size:13px;font-weight:600;position:relative;min-width:0;padding:0}.calendar-grid button:not(:disabled)::after{content:'';width:3px;height:3px;border-radius:50%;background:var(--teal);position:absolute;bottom:5px;left:calc(50% - 1.5px)}.calendar-grid button:disabled{border-color:transparent;background:#f6f5f0;color:#acb1a8;font-weight:400;cursor:not-allowed}.calendar-grid button.chosen{background:var(--teal);color:#fff;border-color:var(--teal)}.calendar-grid button.chosen::after{background:white}.calendar-grid button.is-today{box-shadow:inset 0 0 0 1px #9fac9e}.calendar-grid button:not(:disabled):hover{border-color:var(--teal);box-shadow:0 0 0 1px var(--teal)}.calendar-status{font-size:11px;min-height:20px;margin:17px 0}.calendar-legend{display:flex;gap:20px;border-top:1px solid var(--line);padding-top:16px;font-size:10px}.calendar-legend>span{display:flex;gap:6px;align-items:center}.calendar-legend>span:last-child i{background:#c5c9c0}.booking-success{grid-column:2;background:var(--teal-light);padding:42px 32px;border-radius:22px;text-align:center}.success-check{display:grid;place-items:center;margin:0 auto 24px;width:60px;height:60px;background:var(--teal);color:white;border-radius:50%;font-size:25px}.booking-success h2{font-size:35px;margin-bottom:24px}.booking-success p{font-size:13px;margin-bottom:19px}.booking-success [data-confirm-date]{font-size:16px;color:var(--teal-dark);font-weight:600}.booking-reference{border-block:1px solid #c9d8cd;padding:15px 0}.booking-success .success-note{font-size:11px;margin-top:22px}.success-note a{text-decoration:underline}.booking-success .quiet-link{border:0;background:transparent;padding:10px}.booking-success:focus{outline:none}
@media(max-width:1000px){.booking-layout{grid-template-columns:.8fr 1.2fr;gap:25px}.appointment-widget{padding:25px}.booking-service h2{font-size:22px}.time-slot strong{font-size:12px}.booking-service{gap:13px}.service-symbol{width:55px;height:66px}}
@media(max-width:850px){.booking-layout{grid-template-columns:1fr;max-width:640px}.contact-column .contact-photo{display:none}.first-visit{padding:25px}.first-visit h2{font-size:29px}.contact-details{display:none}.booking-success{grid-column:auto}.appointment-widget .form-row{grid-template-columns:1fr 1fr;gap:15px}.booking-service h2{font-size:26px}}
@media(max-width:480px){.appointment-widget{padding:22px 17px}.booking-service{gap:13px}.booking-service h2{font-size:21px}.service-symbol{width:51px;height:63px;font-size:26px}.booking-service .form-step{font-size:8px;letter-spacing:.8px}.booking-service p{font-size:11px}.time-slots{gap:7px}.time-slot{padding:13px 4px}.time-slot strong{font-size:11px}.appointment-widget .form-row{grid-template-columns:1fr;gap:0}.date-picker-button{padding:13px}.date-picker-button strong{font-size:12px}.appointment-total{padding:14px}.appointment-total>strong{font-size:25px}.calendar-dialog{padding:22px 18px}.calendar-weekdays,.calendar-grid{gap:5px}.calendar-top h2{font-size:28px}.calendar-top .eyebrow{font-size:8px}.calendar-grid button{min-height:36px}.booking-success{padding:30px 22px}}
/* Home visits share the same appointment calendar, with travel time reserved. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.location-options{display:grid;grid-template-columns:1fr 1fr;gap:12px;border:0;padding:0;margin:0}
.booking-form .location-options label{margin:0;position:relative;cursor:pointer}
.booking-form .location-options input{position:absolute;opacity:0;width:1px;height:1px;min-height:0;padding:0}
.location-options label>span{display:block;padding:18px 16px;border:1px solid #d6dfd3;border-radius:13px;background:var(--cream);color:var(--teal-dark)!important}
.location-options strong{display:block;font-size:14px;font-weight:600}.location-options small{display:block;font-size:10px;margin-top:5px;font-weight:400}
.location-options input:checked+span{border-color:var(--teal);box-shadow:inset 0 0 0 1px var(--teal);background:var(--teal-light)}
.location-options input:focus-visible+span{outline:3px solid var(--coral);outline-offset:3px}
.home-details{padding:20px 17px;margin-top:16px;background:#f8f0e6;border:1px solid #e9ddcd;border-radius:13px}
.home-explanation{font-size:12px;line-height:1.8;margin-bottom:20px}.home-explanation strong{color:var(--teal-dark)}
.travel-info{font-size:11px;margin-block:12px}.price-breakdown{font-size:10px;margin-top:10px;line-height:1.7;color:var(--coral)}
.pending-explanation{padding:16px;border:1px solid #c4d3c7;border-radius:12px}
.appointment-total:has(+.price-breakdown:not([hidden]))>strong{font-size:24px}
@media(max-width:480px){.location-options{gap:8px}.location-options label>span{padding:14px 10px}.location-options strong{font-size:13px}.location-options small{font-size:9px}.home-details{padding:17px 13px}.appointment-total:has(+.price-breakdown:not([hidden]))>strong{font-size:21px}}

/* Compact progressive booking: one task at a time. */
.booking-progress{display:flex;justify-content:space-between;gap:5px;list-style:none;padding:0;margin:22px 0 26px;font-size:12px}
.booking-progress li{padding:7px 8px;border-bottom:2px solid var(--line)}
.booking-progress [aria-current=step]{color:var(--teal-dark);border-color:var(--teal);font-weight:700}
.flow-title{font-size:23px;line-height:1.3;margin-bottom:20px;outline:none}
.flow-next{width:100%;margin-top:22px}
.flow-actions{display:flex;justify-content:space-between;align-items:center;gap:15px;margin-top:20px;flex-wrap:wrap}
.flow-selection{font-size:14px;color:var(--teal);margin:12px 0 16px}
.review-contact{font-size:14px;overflow-wrap:anywhere}
[data-flow-step="3"] .booking-section{padding-top:5px}
[data-flow-step="3"] .home-details{margin-top:18px}
[data-flow-step="4"] .booking-legal-note{font-size:12px;line-height:1.6}
[data-back-contact],[data-back-place]{margin-top:16px}
.calendar-dialog{width:min(480px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overscroll-behavior:contain}
.calendar-close,.calendar-month button{min-width:44px;min-height:44px}
.calendar-grid button{min-height:44px}
.booking-modal-open{overflow:hidden}
.appointment-widget{scroll-margin-top:20px;min-width:0}
@media(max-width:850px){
.booking-layout{display:flex;flex-direction:column;gap:30px}
.appointment-widget,.booking-success{width:100%;order:0}
.contact-column{order:1;width:100%;display:grid;grid-template-columns:1fr 1fr;gap:20px}
.contact-column .contact-photo{display:none}
.booking-heading{padding-block:28px}
}
@media(max-width:540px){
.appointment-widget{padding:20px 16px}
.booking-service{gap:12px;padding-bottom:18px}
.booking-service h2{font-size:22px!important;overflow-wrap:anywhere}
.service-symbol{width:48px;height:60px;font-size:26px}
.booking-progress{font-size:11px;margin-block:16px 22px}
.booking-progress li{padding:7px 3px}
.flow-title{font-size:22px}
.appointment-widget input:not([type=radio]):not([type=checkbox]){font-size:16px;min-height:46px}
.appointment-widget .form-row{grid-template-columns:1fr}
.flow-actions .button{width:100%}
.contact-column{display:block}
.contact-details{margin-top:25px}
.calendar-dialog{padding:18px;border-radius:18px}
.calendar-month{margin:15px 0 10px}
.calendar-top h2{font-size:25px}
.time-slots{grid-template-columns:repeat(2,minmax(0,1fr))}
.time-slot{min-height:58px}
.calendar-grid{gap:3px}
}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.time-slot{transition:none}}
