/* sections/booking-calendar.liquid */
.bkcal-wrap { padding-inline: var(--pad); padding-block-end: var(--section-pad); }
.bkcal { width: min(100%, 1100px); margin-inline: auto; display: grid; gap: var(--space-6); }
.bkcal__packages { border: 0; padding: 0; margin: 0; min-width: 0; }
.bkcal__legend { padding: 0; margin: 0 0 var(--space-3); }
.bkcal__choices { display: grid; gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); }
.bkcal__choice {
  display: grid; gap: var(--space-1); cursor: pointer; padding: var(--space-4);
  border: var(--border-width) solid var(--border); border-radius: var(--radius-lg);
  transition: border-color var(--dur-control) var(--ease), box-shadow var(--dur-control) var(--ease);
  min-height: 44px;
}
.bkcal__choice-name { font-family: var(--font-display-font, Georgia, serif); font-size: var(--fs-body-lg); }
.bkcal__choice-meta, .bkcal__choice-note { font-size: var(--fs-body); line-height: var(--lh-body); }
.bkcal__panel { display: none; }
.bkcal__panel-head { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); align-items: baseline; margin-block-end: var(--space-4); }
.bkcal__panel-name { margin: 0; font-size: var(--fs-body-lg); font-family: var(--font-display-font, Georgia, serif); }
.bkcal__panel-meta { margin: 0; font-size: var(--fs-body); }
.bkcal__days { display: grid; gap: var(--space-2); padding: 0; margin: 0; list-style: none; grid-template-columns: repeat(auto-fill, minmax(min(100%, 8.5rem), 1fr)); }
.bkcal__day { display: grid; gap: var(--space-2); align-content: start; padding: var(--space-3); border: var(--border-width) solid var(--border); border-radius: var(--radius-md); }
.bkcal__day--today { border-color: var(--accent); }
.bkcal__day--closed { opacity: .6; }
.bkcal__date { display: flex; gap: var(--space-1); align-items: baseline; margin: 0; font-variant-numeric: tabular-nums; }
.bkcal__weekday, .bkcal__number { font-weight: 500; }
.bkcal__month { font-size: var(--fs-caption); }
.bkcal__times { display: grid; gap: var(--space-1); padding: 0; margin: 0; list-style: none; }
.bkcal__time {
  display: block; text-align: center; text-decoration: none;
  padding: var(--space-2) var(--space-2); min-height: 32px; font-size: var(--fs-body); font-variant-numeric: tabular-nums;
  border: var(--border-width) solid var(--border); border-radius: var(--radius-sm);
}
.bkcal__time:hover, .bkcal__time:focus-visible { border-color: var(--accent); color: var(--accent); }
.bkcal__more, .bkcal__closed { margin: 0; font-size: var(--fs-caption); }
.bkcal__all { margin: var(--space-5) 0 0; }
.bkcal__paging { display: flex; gap: var(--space-5); flex-wrap: wrap; }

/* One panel at a time, chosen by the radio above it. The chain is long because
   a sibling combinator only looks forward, so every radio precedes every panel. */
.bkcal__radio:nth-of-type(1):checked ~ .bkcal__panel:nth-of-type(1),
.bkcal__radio:nth-of-type(2):checked ~ .bkcal__panel:nth-of-type(2),
.bkcal__radio:nth-of-type(3):checked ~ .bkcal__panel:nth-of-type(3),
.bkcal__radio:nth-of-type(4):checked ~ .bkcal__panel:nth-of-type(4),
.bkcal__radio:nth-of-type(5):checked ~ .bkcal__panel:nth-of-type(5),
.bkcal__radio:nth-of-type(6):checked ~ .bkcal__panel:nth-of-type(6),
.bkcal__radio:nth-of-type(7):checked ~ .bkcal__panel:nth-of-type(7),
.bkcal__radio:nth-of-type(8):checked ~ .bkcal__panel:nth-of-type(8),
.bkcal__radio:nth-of-type(9):checked ~ .bkcal__panel:nth-of-type(9),
.bkcal__radio:nth-of-type(10):checked ~ .bkcal__panel:nth-of-type(10),
.bkcal__radio:nth-of-type(11):checked ~ .bkcal__panel:nth-of-type(11),
.bkcal__radio:nth-of-type(12):checked ~ .bkcal__panel:nth-of-type(12) { display: block; }

.bkcal__radio:nth-of-type(1):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(1),
.bkcal__radio:nth-of-type(2):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(2),
.bkcal__radio:nth-of-type(3):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(3),
.bkcal__radio:nth-of-type(4):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(4),
.bkcal__radio:nth-of-type(5):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(5),
.bkcal__radio:nth-of-type(6):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(6),
.bkcal__radio:nth-of-type(7):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(7),
.bkcal__radio:nth-of-type(8):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(8),
.bkcal__radio:nth-of-type(9):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(9),
.bkcal__radio:nth-of-type(10):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(10),
.bkcal__radio:nth-of-type(11):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(11),
.bkcal__radio:nth-of-type(12):checked ~ .bkcal__packages .bkcal__choice:nth-of-type(12) {
  border-color: var(--accent); box-shadow: inset 0 0 0 1px var(--accent);
}

/* A radio hidden off-screen still takes focus, and its label has to show it. */
.bkcal__radio:focus-visible ~ .bkcal__packages .bkcal__choice { outline: 2px solid var(--focus-ring); outline-offset: 2px; }
