.booking-dialog { container-type:inline-size; width:min(70rem,calc(100% - 3rem)); max-width:70rem; background:#fff; color:var(--ink); overflow-anchor:none; scroll-padding-block:calc(var(--booking-header-height,0rem) + 1.25rem) 1.25rem; }
.booking-dialog .review-heading { position:sticky; top:0; z-index:2; background:#fff; padding:1.75rem 2.25rem; border-bottom:0.0625rem solid var(--line); }
.booking-dialog .review-heading h2 { font-size:2rem; }
.booking-dialog .review-heading p { font-size:var(--text-body); }
.booking-content { container-type:inline-size; padding:0 2.25rem 2.25rem; }
.booking-notice { margin-block:1.25rem; padding:0.75rem 1rem; background:var(--fog); font-size:var(--text-caption); line-height:1.5; color:var(--muted); }
.booking-progress { display:flex; flex-wrap:wrap; list-style:none; gap:1.75rem; padding:0 0 1.25rem; margin:0 0 1.75rem; border-bottom:0.0625rem solid var(--line); }
.booking-progress li { display:flex; align-items:center; gap:0.5625rem; color:var(--muted); font-size:var(--text-small); }
.booking-progress li>span { width:1.75rem; height:1.75rem; border:0.0625rem solid var(--line); border-radius:50%; display:grid; place-items:center; font-size:var(--text-caption); }
.booking-progress li[aria-current=step] { color:var(--ink); font-weight:550; }
.booking-progress li[aria-current=step]>span { background:var(--red); color:#fff; border-color:var(--red); }
.booking-layout { display:grid; grid-template-columns:minmax(0,1fr) 20rem; gap:2.5rem; align-items:start; }
.booking-panels { min-width:0; }
.booking-panels h3 { font-size:1.5rem; font-weight:550; line-height:1.3; letter-spacing:-.02em; }
.booking-panels h4 { font-size:var(--text-body); font-weight:500; }
.booking-muted { color:var(--muted); font-size:var(--text-small); line-height:1.65; margin-top:0.5rem; }
.booking-calendar { margin-top:1.5rem; border:0.0625rem solid var(--line); border-radius:0.25rem; padding:1.125rem; }
.calendar-heading { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:0.75rem; margin-bottom:0.75rem; }
.calendar-heading>div { display:flex; gap:0.25rem; }
.calendar-heading button { width:2.25rem; height:2.25rem; display:grid; place-items:center; border:0; background:transparent; border-radius:50%; }
.calendar-heading button:hover:enabled { background:var(--fog); }
.calendar-heading button:disabled { opacity:.35; }
.calendar-weekdays,.calendar-days { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:min(0.25rem,1vw); }
.calendar-weekdays span { font-size:var(--text-caption); text-align:center; padding-block:0.25rem 0.625rem; color:var(--muted); }
.calendar-days button { position:relative; min-width:0; width:min(2.625rem,100%); height:auto; min-height:0; aspect-ratio:1; justify-self:center; padding:0; font-size:var(--text-body); line-height:1; border:0; border-radius:50%; background:transparent; }
.calendar-days button:not(:disabled)::after { content:''; position:absolute; bottom:0.3125rem; left:calc(50% - 0.09375rem); width:0.1875rem; height:0.1875rem; border-radius:50%; background:currentColor; }
.calendar-days button:disabled { color:#999a9d; }
.calendar-days button:hover:enabled { background:var(--fog); }
.calendar-days button[aria-pressed=true] { background:var(--ink); color:#fff; }
.calendar-days button[aria-pressed=true]::after { display:none; }
.booking-time-options { margin-top:1.5rem; }
.booking-slots { display:grid; grid-template-columns:repeat(auto-fill,minmax(min(100%,6.75rem),1fr)); grid-auto-rows:1fr; gap:0.625rem; margin-top:0.75rem; }
.booking-slots button { width:100%; min-width:0; min-height:3rem; padding:0.625rem; font-size:var(--text-body); font-variant-numeric:tabular-nums; white-space:nowrap; border:0.0625rem solid var(--line); border-radius:0.1875rem; background:#fff; }
.booking-slots button:hover { border-color:var(--ink); }
.booking-slots button[aria-pressed=true] { border-color:var(--ink); background:var(--ink); color:#fff; }
#booking-customer-form { margin-top:2rem; padding-top:1.75rem; border-top:0.0625rem solid var(--line); }
.booking-fields { display:grid; grid-template-columns:1fr 1fr; gap:1.125rem 1rem; margin-top:1.25rem; }
.booking-fields label { display:block; font-size:var(--text-body); font-weight:500; }
.booking-fields input { display:block; width:100%; min-height:3.125rem; padding:0.75rem; border:0.0625rem solid #b1b2b6; border-radius:0.1875rem; background:#fff; color:var(--ink); margin-top:0.5rem; font-size:1.0625rem; font-weight:400; }
.booking-fields .field-wide { grid-column:1/-1; }
#booking-address { padding:0; margin:1.5rem 0 0; border:0; }
#booking-address legend { font-size:1rem; font-weight:500; }
.booking-primary { margin-top:1.75rem; width:100%; }
.booking-next-note { font-size:var(--text-caption); text-align:center; }
.booking-summary { position:static; padding:1.5rem; background:var(--fog); border-radius:0.1875rem; }
.booking-dialog[data-pin-summary] .booking-summary { position:sticky; top:calc(var(--booking-header-height,0rem) + 1.25rem); }
.booking-summary-heading { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:0.375rem 1rem; }
.booking-summary-title { font-size:1.125rem; font-weight:550; }
.booking-summary-total { font-size:2rem; font-weight:500; line-height:1.2; letter-spacing:-.025em; font-variant-numeric:tabular-nums; }
.booking-summary-caption { grid-column:1/-1; font-size:var(--text-caption); color:var(--muted); }
.booking-summary-body { padding-top:1.25rem; margin-top:1.25rem; border-top:0.0625rem solid var(--line); }
.booking-summary-actions { display:flex; flex-wrap:wrap; justify-content:space-between; gap:0.25rem 1rem; margin-top:0.75rem; }
.booking-summary .copy-status:empty { display:none; }
.booking-subtle { display:inline-flex; align-items:center; min-height:2.75rem; padding:0.5rem 0; border:0; background:transparent; text-decoration:underline; text-underline-offset:0.25rem; font-size:var(--text-caption); }
.booking-summary .review-details { margin:0; }
.booking-summary .review-details>div { margin-bottom:0.75rem; padding:0; border:0; }
.booking-summary .review-details dt { font-size:var(--text-caption); }
.booking-summary .review-details dd { font-size:var(--text-body); line-height:1.6; margin-top:0.1875rem; overflow-wrap:anywhere; }
.booking-summary .review-lines { margin-top:1.25rem; padding-top:1rem; border-top:0.0625rem solid var(--line); font-size:var(--text-body); }
.booking-summary .review-lines>div { flex-wrap:wrap; gap:0.375rem 1rem; }
.booking-summary .review-lines dd { margin-left:auto; }
.booking-summary .review-small { margin-top:0.75rem; font-size:var(--text-caption); }
.booking-error { padding:0.875rem 1rem; margin:0 0 1.5rem; background:#fff0f1; color:#891a26; font-size:var(--text-body); border-radius:0.1875rem; }
.booking-appointment { margin-top:1.5rem; padding-block:1.25rem; border-block:0.0625rem solid var(--line); }
.booking-appointment p:first-child { font-size:1.125rem; font-weight:500; }
.booking-appointment p { font-size:var(--text-body); }
#booking-chosen-location,#booking-customer-summary { margin-top:0.625rem; color:var(--muted); overflow-wrap:anywhere; }
.booking-hold { margin-top:1rem; font-size:var(--text-caption); color:var(--muted); font-variant-numeric:tabular-nums; }
.booking-deposit { display:flex; flex-wrap:wrap; justify-content:space-between; align-items:center; gap:1.25rem; margin-top:2rem; }
.booking-deposit>span { font-size:1.125rem; font-weight:500; }
.booking-deposit small { display:block; font-size:var(--text-caption); color:var(--muted); font-weight:400; }
.booking-deposit strong { font-size:2.5rem; font-weight:500; line-height:1.2; letter-spacing:-.03em; }
#booking-demo-checkout { padding:1.25rem; margin-top:1.75rem; background:var(--fog); }
#booking-demo-checkout .booking-primary { margin-top:1.25rem; }
#booking-live-checkout { margin-top:1.75rem; padding:1.5rem; border:0.0625rem solid var(--line); border-radius:0.5rem; background:#fff; }
.booking-payment-heading { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.booking-payment-heading>div { min-width:0; }
.booking-payment-heading h4 { margin-top:0.375rem; font-size:1.25rem; font-weight:550; }
.booking-payment-eyebrow { display:flex; align-items:center; gap:0.375rem; color:#3c6248; font-size:var(--text-caption); }
.booking-payment-eyebrow svg { width:0.875rem; height:0.875rem; flex:none; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.booking-clover-logo { width:5.25rem; height:auto; flex:none; }
.booking-payment-note { margin-top:0.875rem; color:var(--muted); font-size:var(--text-small); line-height:1.6; }
#booking-payment-progress { margin-top:1.75rem; padding-top:1.5rem; border-top:0.0625rem solid var(--line); }
.booking-card-fields { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:1.25rem 1rem; margin-top:1.5rem; }
.booking-card-fields>div { min-width:0; font-size:var(--text-body); }
.booking-card-fields .field-wide { grid-column:1/-1; }
.booking-card-label { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:0.25rem 0.5rem; }
.booking-card-label small { font-size:var(--text-caption); color:var(--muted); }
.booking-card-field { box-sizing:border-box; height:3.5rem; padding:0.875rem 1rem; margin-top:0.5rem; border:0.0625rem solid #a8aaac; border-radius:0.25rem; background:#fff; }
.booking-card-field:focus-within,.booking-card-field[data-focused] { border-color:var(--ink); outline:0.125rem solid var(--ink); outline-offset:0.125rem; }
.booking-card-field[data-invalid] { border-color:#a32635; background:#fffafb; }
.booking-card-field[data-invalid]:focus-within,.booking-card-field[data-invalid][data-focused] { outline-color:#a32635; }
.booking-card-field iframe { display:block; width:100%; height:100%; min-height:0; border:0; }
.booking-card-help { display:block; margin-top:0.5rem; font-size:var(--text-caption); color:var(--muted); line-height:1.6; }
.booking-card-help a { text-underline-offset:0.2rem; }
.booking-payment-card .booking-primary { margin-top:1.5rem; }
.booking-payment-card .booking-next-note { margin-top:0.875rem; }
.booking-card-error { color:#891a26; font-size:var(--text-small); line-height:1.5; margin-top:0.375rem; }
.booking-card-error:empty { display:none; }
#booking-payment-progress { padding:1.25rem; background:var(--fog); border:0; }
.booking-test-options { margin-top:1rem; font-size:var(--text-caption); }
.booking-test-options summary { cursor:pointer; min-height:1.875rem; }
.booking-complete-mark { display:grid; place-items:center; width:3rem; height:3rem; border:0.0625rem solid var(--ink); border-radius:50%; margin-bottom:1.5rem; }
.booking-complete-mark svg { width:1.625rem; height:1.625rem; }
.booking-confirmation-details { margin:1.75rem 0; }
.booking-confirmation-details>div { padding:0.875rem 0; border-bottom:0.0625rem solid var(--line); display:flex; justify-content:space-between; gap:1.5rem; font-size:var(--text-body); }
.booking-confirmation-details dt { color:var(--muted); }
.booking-confirmation-details dd { margin:0; text-align:right; max-width:65%; overflow-wrap:anywhere; }
.booking-calendar-export { padding-bottom:1.5rem; margin-bottom:1.5rem; border-bottom:0.0625rem solid var(--line); }
.booking-calendar-actions { display:flex; flex-wrap:wrap; gap:0.25rem 1.5rem; margin-top:0.5rem; }
.booking-calendar-actions a { font-size:var(--text-small); }
@media(max-width:50rem) {
 .booking-layout { grid-template-columns:minmax(0,1fr) 17rem; gap:1.5rem; }
 .booking-summary { padding:1.125rem; }
 .booking-content { padding-inline:1.5rem; }
 .booking-dialog .review-heading { padding:1.5rem; }
 .booking-progress { gap:1.25rem; }
}
@media(max-width:40rem) {
 .booking-dialog { width:100%; max-width:none; height:100%; max-height:100svh; margin:0; border-radius:0; }
 .booking-dialog .review-heading { padding:1.125rem min(1.25rem,5vw); gap:min(1.75rem,4vw); }
 .booking-dialog .review-heading>div { min-width:0; }
 .booking-dialog .review-heading h2 { font-size:1.75rem; }
 .booking-dialog .review-heading p { font-size:var(--text-caption); }
 .booking-content { padding:0 min(1.25rem,5vw) 1.75rem; }
 .booking-notice { margin-block:1rem; font-size:var(--text-caption); }
 .booking-progress { justify-content:space-between; gap:0.625rem; margin-bottom:1.25rem; padding-bottom:1rem; }
 .booking-progress li { font-size:var(--text-caption); gap:0.375rem; }
 .booking-progress li>span { width:1.5rem; height:1.5rem; flex:none; font-size:var(--text-caption); }
 .booking-layout { display:flex; flex-direction:column; gap:1.75rem; }
 .booking-panels,.booking-summary { width:100%; }
 .booking-summary { position:static; order:-1; padding:1rem; }
 .booking-summary-total { font-size:1.875rem; }
 .booking-summary .review-details { display:grid; grid-template-columns:1fr 1fr; gap:0.75rem 1rem; }
 .booking-summary .review-details>div { margin:0; min-width:0; }
 .booking-summary .review-details>div:nth-child(n+3) { grid-column:1/-1; }
 .booking-summary .review-small { font-size:var(--text-caption); }
 .booking-panels h3 { font-size:1.375rem; }
 .booking-calendar { padding:min(0.875rem,3vw); }
 .booking-fields { gap:1rem 0.75rem; }
 .booking-fields label:has([name=email]),.booking-fields label:has([name=phone]) { grid-column:1/-1; }
 .booking-confirmation-details>div { font-size:var(--text-small); }
}

@container(max-width:40rem) {
 .booking-layout { display:flex; flex-direction:column; gap:1.75rem; }
 .booking-panels,.booking-summary { width:100%; } .booking-summary { position:static; order:-1; }
 .booking-summary .review-details { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:0.75rem 1rem; }
 .booking-summary .review-details>div:nth-child(n+3) { grid-column:1/-1; }
}
@container(max-width:26rem) {
 .booking-fields label:has([name=city]),.booking-fields label:has([name=postalCode]) { grid-column:1/-1; }
 #booking-live-checkout { padding:1.25rem; }
 .booking-card-label { display:block; } .booking-card-label small { display:none; }
 .booking-card-fields { column-gap:0.75rem; }
 .booking-card-field { padding-inline:0.625rem; }
}
@container(max-width:20rem) {
 #booking-live-checkout { padding:1rem; }
 .booking-clover-logo { width:4.25rem; }
 .booking-card-fields { grid-template-columns:minmax(0,1fr); }
 .booking-card-label { display:flex; } .booking-card-label small { display:inline; }
}
@container(max-width:12rem) {
 .calendar-days button::after { display:none; }
 .booking-summary-heading { grid-template-columns:minmax(0,1fr); }
 .booking-summary .review-details { grid-template-columns:minmax(0,1fr); }
 .booking-progress { gap:0.75rem; } .booking-progress li { flex:1 1 100%; }
 .booking-fields { grid-template-columns:minmax(0,1fr); }
}

@container(max-width:32rem) { .booking-dialog .review-heading { position:static; } }
@media(max-height:28rem) { .booking-dialog .review-heading { position:static; } }

/* Activity + error placement: every wait is visible, every problem lands where the visitor is looking. */
.booking-activity { position:sticky; top:var(--booking-header-height,0rem); z-index:2; display:flex; align-items:center; gap:0.625rem; margin:0; padding:0.625rem 2.25rem; background:var(--fog); color:var(--ink); font-size:var(--text-small); border-bottom:0.0625rem solid var(--line); }
.booking-spinner { width:1rem; height:1rem; flex:none; border:0.125rem solid currentColor; border-right-color:transparent; border-radius:50%; animation:booking-spin .8s linear infinite; }
.booking-primary[aria-busy=true] { justify-content:center; gap:0.625rem; }
.booking-primary[aria-busy=true]::before { content:''; width:1rem; height:1rem; flex:none; border:0.125rem solid currentColor; border-right-color:transparent; border-radius:50%; animation:booking-spin .8s linear infinite; }
.booking-calendar[aria-busy=true] .calendar-days { animation:booking-pulse 1.2s ease-in-out infinite; }
.booking-slot-skeleton { display:block; min-height:3rem; border-radius:0.1875rem; background:var(--fog); animation:booking-pulse 1.2s ease-in-out infinite; }
.booking-slot-skeleton:nth-child(2n) { animation-delay:.15s; }
.booking-fields input[aria-invalid=true] { border-color:#c0182a; box-shadow:0 0 0 0.125rem #fff0f1; }
.booking-error { scroll-margin-block:calc(var(--booking-header-height,0rem) + 4rem) 1rem; outline:none; }
form .booking-error, .booking-time-options .booking-error { margin:1.5rem 0 0; }
@keyframes booking-spin { to { transform:rotate(360deg); } }
@keyframes booking-pulse { 0%,100% { opacity:1; } 50% { opacity:.45; } }
@media(max-width:50rem) { .booking-activity { padding-inline:1.5rem; } }
@media(max-width:40rem) { .booking-activity { padding-inline:min(1.25rem,5vw); } }
@container(max-width:32rem) { .booking-activity { top:0; } }
@media(max-height:28rem) { .booking-activity { top:0; } }
@media(prefers-reduced-motion:reduce) { .booking-spinner,.booking-primary[aria-busy=true]::before,.booking-calendar[aria-busy=true] .calendar-days,.booking-slot-skeleton { animation-duration:2.4s; } }

/* Clover injects a page-level footer and Google a floating reCAPTCHA badge; both disclosures live inside the card form instead. */
.clover-footer { display:none !important; }
.grecaptcha-badge { visibility:hidden !important; }
.booking-legal { font-size:var(--text-caption); line-height:1.6; margin-top:0.875rem; }
.booking-legal a { color:inherit; text-decoration:underline; text-underline-offset:0.15em; }
