.booking-calendar{position:relative;border:1px solid var(--petal,#F3D4CA);border-radius:16px;background:#fff;padding:14px;box-shadow:0 6px 18px rgba(164,120,100,.08)}
.calendar-head{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;gap:8px;margin-bottom:10px}
.calendar-title{text-align:center;font-weight:700;font-size:18px}
.calendar-nav{width:40px;height:40px;border:1px solid #E8D5C8;border-radius:50%;background:#fff;color:#A47864;font:inherit;font-size:26px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;text-align:center;transition:background .15s ease,transform .12s ease,opacity .15s ease}
.calendar-nav span{display:block;line-height:1;transform:translateY(-1px)}
.calendar-nav:hover:not(:disabled){background:#EEE4D9}
.calendar-nav:active:not(:disabled){transform:scale(.95)}
.calendar-nav:disabled{opacity:.28;cursor:not-allowed}
.calendar-weekdays,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}
.calendar-weekdays{margin-bottom:6px;color:#A47864;font-size:13px;font-weight:700;text-align:center;text-transform:uppercase}
.calendar-day{aspect-ratio:1;border:1px solid #E8D5C8;border-radius:12px;background:#fff;color:var(--ink,#584f4c);font:inherit;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .12s ease,box-shadow .15s ease,opacity .15s ease}
.calendar-day:hover:not(:disabled):not(.calendar-day--selected){border-color:#BA978B;background:#EEE4D9;transform:translateY(-1px);box-shadow:0 6px 14px rgba(164,120,100,.14)}
.calendar-day--available{background:#F3D4CA;border-color:#E2C5BA;color:var(--ink,#584f4c)}
.calendar-day--today{background:#fff;border-color:#A47864;color:var(--ink,#584f4c);box-shadow:none}
.calendar-day--selected{background:#BA978B;border-color:#BA978B;color:#fff;box-shadow:0 8px 18px rgba(186,151,139,.35)}
.calendar-day--selected:hover:not(:disabled){background:#BA978B;border-color:#BA978B;color:#fff;box-shadow:0 8px 18px rgba(186,151,139,.35)}
.calendar-day--disabled,.calendar-day--muted{background:#FCF9F4;border-color:#EEE4D9;color:rgba(164,120,100,.62);box-shadow:none}
.calendar-day--muted.calendar-day--available{background:#F8E3DC;border-color:#E2C5BA;color:var(--ink,#584f4c)}
.calendar-day--disabled{cursor:not-allowed}
.calendar-day--disabled.calendar-day--today{border-color:#EEE4D9;box-shadow:none}
.calendar-day--selected.calendar-day--disabled{background:#BA978B;border-color:#BA978B;color:#fff;box-shadow:0 8px 18px rgba(186,151,139,.25)}
.calendar-day--muted{opacity:1}
.calendar-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;border-radius:16px;background:#fff;backdrop-filter:blur(2px);font-weight:700;color:#A47864}
@media(max-width:859px){
  .booking-calendar{padding:10px;border-radius:14px}
  .calendar-head{grid-template-columns:34px 1fr 34px;gap:6px;margin-bottom:8px}
  .calendar-title{font-size:16px}
  .calendar-nav{width:34px;height:34px;font-size:22px}
  .calendar-weekdays,.calendar-grid{gap:4px}
  .calendar-weekdays{font-size:11px;margin-bottom:4px}
  .calendar-day{border-radius:9px;font-size:14px}
}

.booking-slots-panel{position:relative;min-width:0}
.booking-slots-loading{position:absolute;right:0;top:12px;width:18px;height:18px;animation:booking-loading-reveal .15s step-end}
.booking-slots-loading::before{content:"";display:block;box-sizing:border-box;width:100%;height:100%;border:2px solid #e4d5c9;border-top-color:#9b8070;border-radius:50%;animation:booking-loading-spin .8s linear infinite}
.booking-slots-loading>span{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.booking-slots-panel .slots-date-title{padding-inline:24px}
#slots[aria-busy=true] .slot{opacity:.65;animation:booking-slots-wait .15s ease .15s both}
#slots input:disabled+label{cursor:wait}
@keyframes booking-loading-spin{to{transform:rotate(360deg)}}
@keyframes booking-loading-reveal{from{opacity:0}to{opacity:1}}
@keyframes booking-slots-wait{from{opacity:1}to{opacity:.65}}
@media(prefers-reduced-motion:reduce){.booking-slots-loading,.booking-slots-loading::before,#slots[aria-busy=true] .slot{animation:none}}
