/* Venue calendar: bounded, balanced slots and pricing outside the grid cards. */
.is-booking .calendar{width:100%;min-width:820px;table-layout:fixed}
.is-booking .calendar th{height:96px;padding:14px 10px;font-size:13px;background:#f7f9fc;line-height:1.4}
.is-booking .calendar th:first-child{width:78px}
.is-booking .calendar th small{margin-top:3px;font-size:11px;color:var(--muted)}
.is-booking .court-hourly-rate{display:block;margin-top:8px;color:var(--navy,#073b63);font-size:12px;font-weight:700}
.is-booking .court-hourly-rate>span{font-weight:400;color:var(--muted);font-size:11px}
.is-booking .calendar td{height:108px;padding:8px;vertical-align:middle}
.is-booking .calendar td:first-child{vertical-align:top;padding-top:18px}
.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{width:100%;max-width:132px;height:90px;min-height:90px;margin:auto;padding:10px 7px;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;box-sizing:border-box;font-size:11px;line-height:1.35}
.is-booking .calendar .slot strong{display:flex;flex-direction:column;align-items:center;gap:7px;font-size:12px;font-weight:600}
.is-booking .calendar .slot .icon{width:17px;height:17px;margin:0}
.is-booking .calendar .slot.available{background:#edf9f3;border-color:#c3e9d4}
.is-booking .calendar .slot.available:hover{background:#ddf3e7;border-color:#69a47e}
.is-booking .calendar .slot.available:hover strong{font-size:12px}
.is-booking .calendar .slot.available:hover strong:after{content:none}
.is-booking .calendar .slot span{font-size:10px}
.is-booking .calendar .slot.unavailable,.is-booking .calendar .slot.past{background:#f7f8fa;border-style:dashed}
.is-booking .calendar-scroll{scroll-padding-top:100px}
.selected-slot-price{font-weight:700;color:var(--navy,#073b63);margin-top:8px;font-size:13px}
.selected-slot-price small{font-weight:400;color:var(--muted)}
@media(max-width:600px){.is-booking .calendar{min-width:758px}.is-booking .calendar th:first-child{width:68px}.is-booking .calendar td{padding:6px}.is-booking .calendar th{padding:10px 6px}}

/* Refined hierarchy: a quiet grid, concise status guide and distinct selection. */
.calendar-key{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 2px 14px;color:#647487}
.calendar-key>div{display:flex;flex-wrap:wrap;gap:15px}
.calendar-key>div>span{display:inline-flex;align-items:center;gap:6px;font-size:11px}
.calendar-key>div>span:before{content:'';width:8px;height:8px;border-radius:50%;background:#e5eaf0;border:1px solid #cbd5e1}
.calendar-key .key-open:before{background:#4d9879;border-color:#4d9879}
.calendar-key .key-selected:before{background:#ff602c;border-color:#ff602c}
.calendar-key .key-pasalo:before{background:#138b89;border-color:#138b89}
.calendar-key small{font-size:11px;white-space:nowrap}
.is-booking .calendar-scroll{border-radius:16px;border-color:#dce4ec;box-shadow:0 4px 18px #073b6305}
.is-booking .calendar th{background:#fff;height:105px;border-bottom:2px solid #e9eef3}
.is-booking .calendar .court-heading-name{display:block;font-size:13px;line-height:1.4;color:#073b63}
.is-booking .calendar .court-hourly-rate{display:inline-block;padding:4px 8px;background:#f2f6f9;border-radius:6px;margin-top:9px;font-size:11px}
.is-booking .calendar td{height:100px;background:#fbfcfd;border-right:1px solid #edf1f5;border-bottom:1px solid #edf1f5}
.is-booking .calendar td:first-child{background:#fff;padding-top:19px;color:#627286;font-weight:600}
.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{max-width:120px;height:82px;min-height:82px;border-radius:11px}
.is-booking .calendar .slot.available{background:#fff;border:1px solid #c8e0d5;color:#246749;box-shadow:0 2px 3px #174c3504}
.is-booking .calendar .slot.available:hover{background:#eef8f3;border-color:#6aa88c;box-shadow:0 3px 9px #174c3510;transform:translateY(-2px)}
.is-booking .calendar .slot-add{display:grid;place-items:center;width:23px;height:23px;border-radius:50%;background:#eaf5ee;color:#388761;font-size:19px;font-weight:400;line-height:1}
.is-booking .calendar .slot strong{font-size:11px;gap:6px}
.is-booking .calendar .slot.available:hover strong{font-size:11px}
.is-booking .calendar .slot.selected{background:#ff602c;border-color:#ff602c;box-shadow:0 3px 9px #ff602c25;color:#fff}
.is-booking .calendar .slot.booked,.is-booking .calendar .slot.unavailable,.is-booking .calendar .slot.past{background:#f0f3f6;border-color:#e3e8ed;color:#85909f;box-shadow:none}
.is-booking .calendar .slot:focus-visible,.is-booking .calendar .pt-calendar-slot:focus-visible{outline:3px solid #073b63;outline-offset:2px}
@media(max-width:600px){.calendar-key{align-items:flex-start;flex-direction:column;gap:8px}.calendar-key>div{gap:12px}.is-booking .calendar th{height:100px}.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{max-width:114px}.is-booking .calendar-scroll{max-height:64dvh}}
.is-booking .calendar .slot .slot-add{font-size:19px}
@media(max-width:767px){
.is-booking .mobile-sticky{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;padding-bottom:max(12px,env(safe-area-inset-bottom));background:#fff;border:1px solid #dce4ec;box-shadow:0 -4px 20px #073b6310}
.is-booking .mobile-sticky>.checkout-extra{display:none}
.is-booking .mobile-sticky>div{min-width:0;display:flex;flex-direction:column;gap:4px}
.is-booking .mobile-sticky strong{font-size:18px;line-height:1.2}
.is-booking .mobile-sticky small{font-size:11px;line-height:1.4}
.is-booking .mobile-sticky>.btn{flex-shrink:0;min-height:44px;padding:10px 19px;font-size:13px}
}
/* Fill each court cell with consistent, small gutters. */
.is-booking .calendar td:not(:first-child){padding:7px}
.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{max-width:none;width:100%;height:auto;min-height:82px;aspect-ratio:1.65 / 1;margin:0}
@media(max-width:600px){.is-booking .calendar td:not(:first-child){padding:6px}.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{max-width:none}}
/* Seamless calendar cells: state is carried by text and icons, not card outlines. */
.is-booking .calendar td{background:#fff}
.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{border:0;background:transparent;box-shadow:none;border-radius:8px}
.is-booking .calendar .slot.available{background:transparent;border:0;box-shadow:none;color:#526575}
.is-booking .calendar .slot .slot-add{background:transparent;color:#708594}
.is-booking .calendar .slot.available:hover{background:#f1f5f8;border:0;box-shadow:none;transform:none;color:#073b63}
.is-booking .calendar .slot.available:hover .slot-add{color:#073b63}
.is-booking .calendar .slot.booked,.is-booking .calendar .slot.unavailable,.is-booking .calendar .slot.past,.is-booking .calendar .slot.maintenance,.is-booking .calendar .slot.closure,.is-booking .calendar .slot.private,.is-booking .calendar .slot.conversion,.is-booking .calendar .slot.adminhold{background:transparent;background-image:none;border:0;box-shadow:none;color:#8b97a4}
.is-booking .calendar .slot.selected{background:#ff602c;border:0;color:#fff;box-shadow:none}
.is-booking .calendar .pt-calendar-slot{background:transparent;color:#087d7b;border:0;box-shadow:none}
.is-booking .calendar .pt-calendar-slot:hover{background:#eef8f7}
.is-booking .calendar .pt-calendar-slot.pt-calendar-booked{background:transparent;color:#8b97a4;border:0}
.calendar-key .key-open:before{background:#708594;border-color:#708594}
/* Empty available cells remain accessible buttons; maintenance retains its hatch. */
.is-booking .calendar .slot.available strong{display:none}
.is-booking .calendar .slot.maintenance{background:repeating-linear-gradient(135deg,#f4f6f8 0,#f4f6f8 8px,#e8edf2 8px,#e8edf2 9px);color:#748393;border:0;box-shadow:none}
/* Compact time rows while retaining comfortable click targets.
   The label/detail stack drives the floor here, so the icon and the gap shrink with the row. */
.is-booking .calendar td{height:74px}
.is-booking .calendar .slot,.is-booking .calendar .pt-calendar-slot{height:62px;min-height:62px;aspect-ratio:auto;padding:5px 7px;gap:3px}
.is-booking .calendar .slot .icon{width:14px;height:14px}
.is-booking .calendar .slot strong,.is-booking .calendar .pt-calendar-slot strong{line-height:1.25}
/* Time-of-day separators. The label stays pinned to the left edge while the
   court columns scroll horizontally, so the band is readable at any scroll position. */
.is-booking .calendar tr.calendar-band td{height:auto;padding:0;text-align:left;position:static;
  background:#f3f6f9;border-right:0;border-bottom:1px solid #e3e9ef;border-top:1px solid #e3e9ef}
.is-booking .calendar tr.calendar-band:first-child td{border-top:0}
.is-booking .calendar tr.calendar-band td span{position:sticky;left:0;display:inline-block;
  padding:6px 12px;font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:#64798a}
/* Court identity and hourly rate on two header rows: name/place first, rate directly below,
   in line with the timezone note. The rate row sticks under the identity row when scrolling. */
.is-booking .calendar thead tr.calendar-head-courts th{height:58px;top:0;border-bottom:0;
  padding-bottom:0;vertical-align:bottom}
.is-booking .calendar thead tr.calendar-head-rates th{height:40px;top:58px;
  padding-top:7px;padding-bottom:11px;border-bottom:2px solid #e9eef3;vertical-align:top}
.is-booking .calendar thead tr.calendar-head-rates .court-hourly-rate{margin-top:0}
.is-booking .calendar .calendar-tz{font-size:11px;font-weight:400;color:var(--muted)}
