/* Calendar states: empty dates stay visible, but never look bookable. */
.booking-calendar{--pink-dark:#C76A99;--booked:#83cf9a;padding:24px;margin:0 0 28px;min-width:0;box-shadow:0 16px 48px rgba(0,0,0,.12)}
.calendar-head,.calendar-toolbar,.calendar-paging,.calendar-view,.calendar-legend{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.calendar-head{justify-content:space-between;gap:18px;margin-bottom:22px}.calendar-head h2{margin:0 0 5px;font-size:1.25rem}.calendar-head p{margin:0;color:var(--bone-2);font-size:.88rem}
.calendar-view{background:var(--ink-2);padding:4px;border:1px solid var(--line);border-radius:12px;gap:4px}.calendar-view .btn{min-width:76px;border:0;min-height:40px}
.calendar-toolbar{justify-content:space-between;margin-bottom:16px}.calendar-paging{flex-wrap:nowrap;gap:8px}.calendar-paging .btn{width:44px;height:44px;font-size:1.3rem;padding:0}.calendar-period{font-size:1.02rem;font-weight:600;min-width:190px;text-align:center;font-variant-numeric:tabular-nums}
.calendar-shortcuts{display:flex;gap:8px}.calendar-shortcuts .btn{min-height:44px}
.calendar-legend{font-size:.78rem;color:var(--bone-2);gap:10px 18px;margin:18px 0 0;padding-top:16px;border-top:1px solid var(--line)}
.calendar-legend>span{display:inline-flex;gap:6px;align-items:center}.calendar-dot{width:8px;height:8px;display:inline-block;border-radius:50%;flex:none}.calendar-dot.classes{background:var(--pink)}.calendar-dot.personal{background:var(--pink-dark)}.calendar-dot.booked{background:var(--booked)}.calendar-dot.none{background:#68646a}.calendar-dot.waiting{background:transparent;border:1px dashed var(--bone-2)}
.calendar-grid,.calendar-weekdays{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.calendar-weekdays{text-align:center;font-size:.75rem;letter-spacing:.06em;text-transform:uppercase;padding:0 0 10px;color:var(--bone-2)}
.calendar-date{position:relative;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:3px;width:100%;min-height:76px;min-width:0;border:1px solid var(--line);border-radius:11px;background:var(--ink-2);color:var(--bone);font:inherit;padding:10px 2px;cursor:pointer;transition:background .15s,border-color .15s}
.calendar-number{font-size:1.1rem;font-weight:600;font-variant-numeric:tabular-nums}.calendar-date-label{font-size:.65rem;line-height:1.25;letter-spacing:.02em}.calendar-dots{display:flex;gap:4px;height:8px}.calendar-date .calendar-dot{width:5px;height:5px;box-shadow:0 0 0 1px rgba(0,0,0,.15)}
.calendar-date.is-available{background:var(--pink);border-color:var(--pink);color:#281522}
[data-calendar-mode="pt"] .calendar-date.is-available{background:var(--pink-dark);border-color:var(--pink-dark);color:#21151c}
.calendar-date.is-booked{background:var(--booked);border-color:var(--booked);color:#102819}
.calendar-date.is-pending{background:#342b32;border:2px dashed var(--pink);color:var(--bone)}
.calendar-date.is-waitlist{border:1px dashed #c9b899;background:#292621;color:#e5dac7}
.calendar-date.is-unavailable{background:#151518;border-color:rgba(236,230,218,.05);color:#726e77;cursor:default}.calendar-date.is-unavailable .calendar-dots{opacity:.55}
.calendar-date.selected{outline:2px solid var(--bone);outline-offset:2px}.calendar-date.is-today .calendar-number{text-decoration:underline;text-underline-offset:4px}
.calendar-date:enabled:hover{filter:brightness(1.08);border-color:var(--bone)}.calendar-date:focus-visible,.calendar-week-links a:focus-visible{outline:3px solid #fff;outline-offset:3px}
.calendar-grid[aria-busy="true"] .calendar-date{color:var(--bone-2);background:var(--ink-2)}
.calendar-hint{margin:16px 0 0;font-size:.86rem;color:var(--bone-2);min-height:1.5em}.calendar-empty{margin-top:14px;padding:16px;border:1px dashed var(--line-2);border-radius:10px;color:var(--bone-2);font-size:.88rem}.calendar-empty p{margin:0}.calendar-retry{margin-top:12px}
.calendar-week-day{min-width:0}.calendar-week-links{font-size:.8rem;overflow-wrap:anywhere;margin-top:8px;color:var(--bone-2)}.calendar-week-links a{display:block;padding:10px 8px;border:1px solid var(--line);border-radius:8px;background:var(--ink-2);margin-bottom:6px;color:var(--bone);text-decoration:none;min-height:44px}.calendar-week-links a:hover{border-color:var(--pink);color:var(--pink)}.calendar-week-day.is-empty .calendar-week-links{color:#85808b}
.booking-intro{color:var(--bone-2);max-width:65ch;font-size:.95rem;margin-bottom:20px}.booking-tabs{gap:4px;background:var(--panel);border:1px solid var(--line);padding:4px;border-radius:12px;display:inline-flex}.booking-tabs a{border:none;min-height:44px;display:flex;align-items:center;padding:10px 18px}.booking-page .banner{background:transparent;border-color:var(--line);color:var(--bone-2)}
.session-list-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px}.session-list-head h2{margin:0;font-size:1.1rem;line-height:1.4}.session-list-head a{font-size:.85rem}.booking-page .day{scroll-margin-top:96px}.booking-page .day h3{font-size:.85rem;color:var(--bone-2);letter-spacing:.06em}.booking-page .slot{padding:18px;gap:20px;scroll-margin-top:96px}.booking-page .slot .time{min-width:64px}.booking-page .slot .small{color:var(--bone-2)}.booking-page .slot .right{max-width:280px}.booking-page .slot .right .btn{min-height:44px}.booking-page .slot.full{opacity:1}.booking-page .pill.confirmed{color:#83cf9a;border-color:#568a66}.booking-page .slot .meter{height:4px;margin-top:10px}
.pt-request{display:grid;gap:8px;width:240px;max-width:100%;text-align:left}.pt-request input,.pt-request select{width:100%;min-width:0}.pt-request label{color:var(--bone-2)}.pt-request select{outline:none}.pt-request select:focus-visible{outline:2px solid var(--pink)}.pt-request small{font-size:.75rem;line-height:1.4;color:var(--bone-2)}
[data-booking-day][hidden],.calendar-weekdays[hidden],[data-second-person-wrap][hidden],[data-calendar-empty][hidden],[data-calendar-retry][hidden]{display:none!important}
@media(max-width:720px){.booking-calendar{padding:16px;margin-bottom:24px}.calendar-head{gap:12px;margin-bottom:18px}.calendar-head h2{font-size:1.1rem}.calendar-head p{font-size:.82rem}.calendar-toolbar{gap:12px}.calendar-paging{width:100%;justify-content:space-between}.calendar-period{min-width:0;font-size:.95rem}.calendar-shortcuts{width:100%;justify-content:space-between}.calendar-grid,.calendar-weekdays{gap:5px}.calendar-date{min-height:50px;border-radius:8px;padding:6px 0}.calendar-date-label{display:none}.calendar-number{font-size:.95rem}.calendar-weekdays{font-size:.65rem}.calendar-legend{font-size:.7rem;gap:9px 12px}.calendar-legend .calendar-dot{width:7px;height:7px}.calendar-grid.is-week{grid-template-columns:1fr;gap:8px}.calendar-grid.is-week .calendar-week-day{display:grid;grid-template-columns:90px minmax(0,1fr);gap:12px;align-items:center}.calendar-grid.is-week .calendar-date{min-height:56px}.calendar-grid.is-week .calendar-date-label{display:block}.calendar-week-links{margin:0}.calendar-week-links a{margin:0 0 4px}.calendar-week-day.is-empty .calendar-date{min-height:44px}.calendar-head .calendar-view{margin-left:auto}.calendar-view .btn{min-width:65px;padding:8px}.booking-page .slot{padding:16px;gap:12px}.booking-page .slot .right{width:100%;max-width:none;align-items:stretch;text-align:left}.pt-request{width:100%}.booking-intro{font-size:.9rem}.session-list-head{align-items:flex-start}.session-list-head a{flex:none}.booking-tabs{display:flex}.booking-tabs a{justify-content:center;flex:1;padding:9px 10px}.booking-page .day{scroll-margin-top:90px}}
@media(prefers-reduced-motion:reduce){.calendar-date{transition:none}}
@media(forced-colors:active){.calendar-date.is-unavailable{color:GrayText}.calendar-date.selected{outline:3px solid Highlight}.calendar-dot{border:1px solid CanvasText}}

.booking-page[data-calendar-view="month"] [data-booking-day]>h3{display:none}
@media(max-width:720px){.calendar-head{display:block}.calendar-head .calendar-view{width:max-content;margin:14px 0 0}.booking-page .slot .right .pill{align-self:flex-start}.booking-page .slot .right form .btn,.booking-page .slot .right>a.btn{width:100%}}

.calendar-grid.is-week .calendar-week-day.is-empty .calendar-date-label{display:none}
