.booking-calendar{border:1px solid var(--line);border-radius:9px;padding:18px;background:#fff;margin-bottom:20px}.calendar-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:15px}.calendar-header h3{font-family:var(--sans);font-size:18px;letter-spacing:0;line-height:1.4;text-align:center}.calendar-month-button{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:var(--paper);color:var(--green);font-size:23px;line-height:1}.calendar-month-button:disabled{opacity:.35;cursor:default}.calendar-row{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}.calendar-weekdays{margin-bottom:6px}.calendar-weekday{text-align:center;font-size:11px;color:var(--muted);padding:5px 0}.calendar-cell{min-width:0}.calendar-day{display:flex;align-items:center;justify-content:center;width:100%;min-height:42px;padding:4px 0;border:1px solid transparent;border-radius:6px;background:#f1f4eb;color:var(--green);font-size:13px;line-height:1;font-weight:550}.calendar-day:not(:disabled):hover{border-color:var(--green);background:#e4ebdc}.calendar-day[aria-pressed="true"]{background:var(--green);border-color:var(--green);color:white}.calendar-day:disabled{background:#eceee8;color:#a0a69d;cursor:not-allowed}.calendar-day.calendar-today:not([aria-pressed="true"]){border-color:#adbda4}.calendar-row+.calendar-row{margin-top:5px}.calendar-legend{display:flex;flex-wrap:wrap;gap:12px;margin:15px 0 10px;font-size:10px;color:var(--muted)}.calendar-legend span{display:inline-flex;align-items:center;gap:5px}.calendar-key{width:10px;height:10px;border:1px solid #d0d9c9;border-radius:3px;background:#f1f4eb}.calendar-key.selected{background:var(--green);border-color:var(--green)}.calendar-key.unavailable{background:#eceee8;border-color:#eceee8}.calendar-selected,.calendar-status{font-size:11px;line-height:1.7;margin-top:8px}.calendar-selected{color:var(--green);font-weight:550}.calendar-status{color:var(--muted)}.calendar-selection-error{font-size:12px;line-height:1.7;color:#a03e27;margin:12px 0 0}.calendar-retry{background:none;border:0;padding:5px 0;color:var(--green);text-decoration:underline;font-size:12px}.booking-time-slots{border:0;padding:0;margin:0 0 20px;min-width:0}.booking-time-slots legend{font-size:13px;font-weight:600;margin-bottom:10px}.booking-time-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}.booking-time-option{display:block!important;position:relative;margin:0!important;min-width:0}.booking-time-option input{position:absolute;width:1px!important;height:1px;margin:0!important;padding:0!important;opacity:0}.booking-time-option span{display:flex;min-height:68px;flex-direction:column;justify-content:center;text-align:center;gap:5px;padding:10px 6px;border:1px solid var(--line);border-radius:7px;background:#fff;color:var(--green);font-size:13px;font-weight:600;cursor:pointer}.booking-time-option small{display:block;font-size:9px;font-weight:400;line-height:1.4;color:var(--muted)}.booking-time-option input:checked+span{background:var(--green);border-color:var(--green);color:#fff}.booking-time-option input:checked+span small{color:#e5eddf}.booking-time-option input:focus-visible+span{outline:3px solid #c46235;outline-offset:3px}.booking-time-option input:disabled+span{background:#eceee8;color:#969e91;cursor:not-allowed}.booking-time-option input:disabled+span small{color:#969e91}.booking-time-note{font-size:11px;line-height:1.7;color:var(--muted);margin-top:10px}.booking-calendar-error{margin-top:0}
@media(max-width:760px){.booking-calendar{padding:12px}.calendar-header{gap:7px}.calendar-header h3{font-size:16px}.calendar-row{gap:3px}.calendar-day{min-height:38px;font-size:12px}.calendar-weekday{font-size:10px}.calendar-legend{gap:9px;font-size:9px}.booking-time-options{gap:6px}.booking-time-option span{font-size:11px;padding:10px 3px;min-height:70px}.booking-time-option small{font-size:8px}.calendar-status,.calendar-selected,.booking-time-note{font-size:10px}}

/* Match each date state to its legend with colour, borders and a pattern. */
.calendar-day{position:relative;border:2px solid #4b7e43;background:#e1f2dc;color:#173d2b;font-weight:650}
.calendar-day:not(:disabled):not([aria-pressed="true"]):hover{background:#cbe8c1;border-color:#214b3d}
.calendar-day.calendar-today:not(:disabled):not([aria-pressed="true"]){border-color:#4b7e43;box-shadow:inset 0 0 0 1px #214b3d}
.calendar-day:disabled{background-color:#e2e5e8;background-image:repeating-linear-gradient(135deg,transparent 0,transparent 7px,rgba(89,99,111,.1) 7px,rgba(89,99,111,.1) 9px);border:1px solid #b9c0c8;color:#5b6470;opacity:1;cursor:not-allowed}
.calendar-day.calendar-today:disabled{border-color:#b9c0c8;box-shadow:none}
.calendar-day[aria-pressed="true"],.calendar-day[aria-pressed="true"]:hover,.calendar-day[aria-pressed="true"]:disabled{background:#214b3d;border:2px solid #15362b;color:#fff;box-shadow:inset 0 0 0 1px #fff}
.calendar-day[aria-pressed="true"]::after{content:'✓';position:absolute;top:3px;right:5px;font-size:10px;line-height:1;color:#fff}
.booking-stage .booking-calendar .calendar-legend{gap:10px;font-size:12px;margin-top:18px}
.calendar-legend>span{gap:7px;min-height:34px;padding:6px 10px;border:1px solid #4b7e43;border-radius:7px;background:#e1f2dc;color:#173d2b;font-weight:600;white-space:nowrap}
.calendar-key{position:relative;width:18px;height:18px;flex-shrink:0;border:2px solid #4b7e43;border-radius:4px;background:#e1f2dc}
.calendar-legend>span:has(.calendar-key.selected){background:#214b3d;border-color:#214b3d;color:#fff}
.calendar-key.selected{background:#214b3d;border-color:#fff}
.calendar-key.selected::after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:11px;font-style:normal;line-height:1}
.calendar-legend>span:has(.calendar-key.unavailable){background:#e2e5e8;border-color:#b9c0c8;color:#47525e}
.calendar-key.unavailable{border-color:#8c97a3;background-color:#e2e5e8;background-image:repeating-linear-gradient(135deg,transparent 0,transparent 3px,rgba(89,99,111,.25) 3px,rgba(89,99,111,.25) 5px)}
@media(max-width:760px){.booking-stage .booking-calendar .calendar-legend{font-size:11px;gap:8px}.calendar-legend>span{min-height:32px;padding:5px 8px}.calendar-day[aria-pressed="true"]::after{top:2px;right:3px;font-size:8px}.calendar-key{width:16px;height:16px}}
