.session-choice-main { max-width: 960px; }
.session-choice-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; padding: 0; margin: 32px 0 24px; border: 0; }
.session-choice { display: flex; align-items: flex-start; gap: 16px; padding: 26px; border: 1px solid var(--line); border-radius: 8px; background: var(--surface); cursor: pointer; }
.session-choice:has(input:checked) { border-color: var(--gold); box-shadow: inset 0 0 0 1px var(--gold); }
.session-choice input { flex: 0 0 20px; width: 20px; height: 20px; margin: 6px 0 0; accent-color: #b98a36; }
.session-choice > span { display: grid; gap: 12px; min-width: 0; }
.session-choice strong { font-size: 24px; line-height: 1.2; }
.session-choice small, .session-choice span span { font-size: 16px; line-height: 1.6; }
.session-choice b { font-size: 15px; line-height: 1.5; }
.session-back { display: inline-block; margin-top: 24px; }
[data-session-choice] { margin-bottom: 24px; }
.online-summary { align-self: start; position: sticky; top: 100px; }
.online-summary dl, .online-summary dt, .online-summary dd { margin: 0; }
.online-summary dt { margin-top: 16px; font-size: 13px; }
.online-summary dd { font-weight: 700; }
[data-online-portal] .booking-actions { flex-wrap: wrap; }
[data-online-documents] { margin-top: 28px; }
[data-online-slots]:empty { display: none; }
.online-hold-bar { position: sticky; top: 8px; z-index: 10; display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 14px 0; margin-bottom: 20px; background: var(--paper); border-block: 1px solid var(--line-strong); }
.online-hold-bar p { margin: 0; font-size: 15px; }
.online-hold-bar strong { white-space: nowrap; font-variant-numeric: tabular-nums; color: var(--ink); }
.online-hold-bar .booking-secondary { padding: 8px 14px; }
.online-calendar-heading { display: grid; grid-template-columns: 42px minmax(0, 1fr) 42px; align-items: center; gap: 10px; margin: 24px 0 18px; }
.online-calendar-heading h3 { margin: 0; text-align: center; font-size: 19px; line-height: 1.4; text-transform: capitalize; }
.online-calendar-heading button { width: 42px; height: 42px; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface); color: var(--ink); font-size: 24px; cursor: pointer; }
.online-calendar-weekdays, .online-calendar-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 5px; }
.online-calendar-weekdays { margin-bottom: 8px; text-align: center; color: var(--muted); font-size: 13px; }
.online-calendar-days button { width: 100%; height: 42px; padding: 0; border: 1px solid var(--line-strong); border-radius: 6px; background: var(--surface); color: var(--ink); font: inherit; font-size: 16px; font-variant-numeric: tabular-nums; cursor: pointer; }
.online-calendar-days button:not(:disabled):hover { border-color: var(--gold); background: var(--surface-strong); }
.booking-page .online-calendar-days button[aria-pressed="true"] { border-color: #f5d38b; background: linear-gradient(180deg, #f5d38b, #d9ad57); color: #080604; font-weight: 750; }
.booking-page :is(.online-calendar-heading, .online-calendar-days) button:disabled { border-color: transparent; color: var(--muted); opacity: .4; cursor: default; }
.online-calendar-times { min-width: 0; margin: 26px 0 18px; padding: 0; border: 0; }
.online-calendar-times legend { padding: 0; margin-bottom: 14px; font-size: 16px; color: var(--ink); font-weight: 650; }
.online-calendar-times .booking-slots { grid-template-columns: repeat(3, minmax(0, 1fr)); max-height: none; overflow: visible; }
.online-calendar-times .booking-slots label { justify-content: center; padding: 12px 6px; gap: 8px !important; font-size: 15px; font-variant-numeric: tabular-nums; }
.online-calendar-times .booking-slots label:has(input:checked) { border-color: #f5d38b; background: linear-gradient(180deg, #f5d38b, #d9ad57); color: #080604; }
.online-calendar-times input { width: 16px; height: 16px; margin: 0; accent-color: #70501b; }
@media (max-width: 360px) { .online-calendar-times .booking-slots { grid-template-columns: repeat(2, minmax(0, 1fr)); } .online-calendar-heading h3 { font-size: 17px; } }
.booking-page [data-online-form] .booking-check { display: flex; align-items: flex-start; gap: 12px; }
.booking-page [data-online-form] .booking-check input { flex: 0 0 20px; width: 20px; height: 20px; margin-top: 4px; accent-color: #b98a36; }
.booking-page :is(.session-choice, .online-summary, [data-online-portal]) a { overflow-wrap: anywhere; }
@media (max-width: 900px) { .session-choice-grid { grid-template-columns: 1fr; } .online-summary { position: static; } .session-choice { padding: 22px; } }
