/* A compact, touch-friendly public calendar with explicit selection states. */
.booking-calendar-panel{margin-top:22px;min-width:0}
.booking-calendar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:18px}
.booking-calendar-actions [role=status]{flex:1 1 140px;line-height:1.5}
.booking-calendar-panel .booking-time-layout{display:grid;grid-template-columns:minmax(230px,.95fr) minmax(230px,1fr);gap:26px;align-items:start;margin-top:0}
.booking-calendar-panel .mini-calendar-column{min-width:0;padding-right:22px;border-right:1px solid var(--line)}
.booking-calendar-panel .mini-toolbar{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-bottom:16px}
.booking-calendar-panel .mini-toolbar h3{font-size:15px;font-weight:750;text-align:center;letter-spacing:-.25px}
.booking-calendar-panel .mini-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.booking-calendar-panel .mini-weekday{font-size:10px;letter-spacing:.02em;text-transform:uppercase;text-align:center;color:#657687;font-weight:650;padding:0 0 7px}
.booking-calendar-panel .mini-day,.booking-calendar-panel .mini-day-placeholder{position:relative;height:40px;min-width:0;width:100%;padding:0;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:13px;line-height:1;border:1px solid transparent;aspect-ratio:auto}
.booking-calendar-panel .mini-day{background:transparent;color:#344758;font-weight:600}
.booking-calendar-panel .mini-day.available{background:#eaf5f4;color:#075a62;font-weight:750}
.booking-calendar-panel .mini-day.available:hover{background:#cfe9e5;border-color:#91c6bd}
.booking-calendar-panel .mini-day.today{border:1px solid #376e80}
.booking-calendar-panel .mini-day.selected{background:var(--teal);color:white;border-color:var(--teal)}
.booking-calendar-panel .mini-day.selected:hover{background:var(--teal-dark)}
.booking-calendar-panel .mini-day:disabled{opacity:1;cursor:default}
.booking-calendar-panel .mini-day.unavailable{color:#86929e;font-weight:400}
.booking-calendar-panel .mini-grid[aria-busy=true] .mini-day{opacity:.65}
.booking-calendar-panel .availability-dot{width:3px;height:3px;border-radius:50%;background:currentColor;position:absolute;bottom:5px;left:calc(50% - 1.5px)}
.calendar-legend{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:10px;margin-top:16px;line-height:1.4}
.calendar-legend span{display:inline-flex;align-items:center;gap:6px}
.calendar-legend i{width:7px;height:7px;border-radius:50%;background:var(--teal)}
.booking-slots-column{min-width:0}
.slot-heading-row{display:flex;align-items:flex-start;gap:10px;justify-content:space-between;margin-bottom:13px}
.slot-heading-row .slot-heading{font-size:15px;line-height:1.45;margin:0 0 2px}
.slot-heading-row .small{font-size:11px}
.time-format{display:inline-flex;flex-shrink:0;border:1px solid var(--line);padding:3px;border-radius:7px;gap:1px;background:#f8fafb}
.time-format button{border:0;border-radius:4px;padding:5px 6px;line-height:1.2;background:transparent;color:var(--muted);font-size:10px;font-weight:700;min-height:28px}
.time-format button[aria-pressed=true]{background:#fff;box-shadow:0 1px 3px #102f451c;color:var(--teal)}
.booking-calendar-panel .slot-list{display:block;max-height:350px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px 4px 4px 2px;scroll-padding:8px}
.time-group+.time-group{margin-top:16px}
.time-group h4{font-size:10px;font-weight:750;color:#6b7d8d;letter-spacing:.07em;text-transform:uppercase;margin-bottom:7px}
.time-group-slots{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.booking-calendar-panel .slot-button{position:relative;display:flex;align-items:center;justify-content:center;gap:5px;min-height:43px;margin:0;padding:10px 7px;border:1px solid #cbdcde;border-radius:8px;background:#fff;color:#155e68;font-size:12px;font-weight:700;line-height:1.25;width:100%}
.booking-calendar-panel .slot-button small{font-size:9px;font-weight:500;color:var(--muted)}
.booking-calendar-panel .slot-button:hover{background:#eef8f5;border-color:#4c938c}
.booking-calendar-panel .slot-button.selected{background:var(--teal);color:#fff;border-color:var(--teal)}
.booking-calendar-panel .slot-button.selected small{color:#d1eceb}
.booking-calendar-panel .slot-check{position:absolute;right:4px;top:2px;font-size:9px}
.calendar-loading,.calendar-empty{min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:12px;font-size:12px;line-height:1.6;color:var(--muted);padding:22px 10px}
.calendar-empty strong{font-size:13px;color:var(--ink)}
.calendar-empty>.icon{width:28px;height:28px;color:#579099}
.booking-selected-time{display:flex;align-items:center;justify-content:space-between;gap:16px;border:1px solid #bddbd4;background:#f0f8f5;padding:16px 18px;border-radius:10px;margin-top:22px;scroll-margin-bottom:12px}
.booking-selected-time>div{display:flex;flex-direction:column;gap:3px;min-width:0}
.booking-selected-time .eyebrow{font-size:9px;letter-spacing:1px}
.booking-selected-time strong{font-size:13px;line-height:1.5}
.booking-selected-time .btn{flex-shrink:0}
.booking-availability-note{font-size:11px;line-height:1.6;color:var(--muted);margin-top:17px}
.booking-calendar-panel .notice .actions{margin-top:10px}
.booking-timezone-row{display:flex;align-items:flex-end;gap:12px;justify-content:space-between;padding-top:18px;margin-top:18px;border-top:1px solid var(--line)}
.booking-timezone-row .timezone-field{margin:0;flex:1;max-width:330px}
.booking-timezone-row .timezone-field select{font-size:12px;padding:9px 10px}
.booking-timezone-row .timezone-field label{font-size:11px}
.booking-timezone-row .calendar-note{margin:0;font-size:10px;max-width:170px;line-height:1.5}
.booking-timezone-row .calendar-note .icon{width:16px;height:16px}
.booking-card:has(.booking-calendar-panel){padding:28px}
@media(min-width:1150px){.booking-layout:has(.booking-calendar-panel){grid-template-columns:270px minmax(0,1fr);max-width:1120px}.booking-card:has(.booking-calendar-panel){padding:30px}}
@media(max-width:760px){.booking-calendar-panel .booking-time-layout{grid-template-columns:minmax(220px,1fr) minmax(220px,1fr);gap:20px}.booking-calendar-panel .mini-calendar-column{padding-right:18px}.booking-card:has(.booking-calendar-panel){padding:22px}.booking-selected-time{padding:14px}}
@media(max-width:600px){.booking-calendar-panel .booking-time-layout{grid-template-columns:1fr;gap:22px}.booking-calendar-panel .mini-calendar-column{padding:0 0 20px;border:0;border-bottom:1px solid var(--line)}.booking-calendar-panel .mini-day,.booking-calendar-panel .mini-day-placeholder{height:43px;font-size:14px}.booking-calendar-panel .mini-toolbar{margin-bottom:14px}.booking-calendar-panel .mini-weekday{font-size:11px}.booking-calendar-panel .slot-list{max-height:315px}.booking-calendar-panel .slot-button{min-height:47px;font-size:13px}.booking-calendar-panel .slot-button small{font-size:10px}.time-format button{min-height:34px;padding:5px 8px;font-size:11px}.booking-selected-time{flex-direction:column;align-items:stretch;gap:12px}.booking-selected-time .btn{width:100%;min-height:46px}.booking-timezone-row{align-items:flex-start;flex-direction:column;gap:12px}.booking-timezone-row .timezone-field{max-width:none;width:100%}.booking-timezone-row .calendar-note{max-width:none}.booking-card:has(.booking-calendar-panel){padding:20px}.calendar-loading,.calendar-empty{min-height:150px}.booking-calendar-actions{gap:6px}.booking-calendar-actions [role=status]{flex-basis:100%;font-size:11px}}
@media(max-width:360px){.booking-card:has(.booking-calendar-panel){padding:15px}.booking-calendar-panel .mini-grid{gap:3px}.booking-calendar-panel .mini-day,.booking-calendar-panel .mini-day-placeholder{height:38px}.time-group-slots{gap:6px}}
@media(prefers-reduced-motion:reduce){.booking-calendar-panel *{scroll-behavior:auto;transition:none}}
