/* Month calendar fits the page; date selection has its own uncluttered grid. */
.requiredMark { color:var(--red);font-weight:600; }
.requiredLabel::after,
.field:has(> input:required, > select:required, > textarea:required) > label::after,
#bookingForm .field:has(.requesterNameFields input:required) > label::after,
.equipmentQuantity:has(.qty:required)::before { content:' *';color:var(--red);font-weight:600;margin-left:3px; }
.optionalText { font-size:.82em;font-weight:400;color:var(--muted); }
#availabilityCalendar .calendarGrid { grid-template-columns:repeat(7,minmax(0,1fr));overflow:visible;padding-bottom:0; }
#availabilityCalendar .calendarDay { min-width:0;min-height:100px; }
#availabilityCalendar .calendar { overflow:visible; }
#availabilityCalendar .calendarDetail { max-height:none;overflow:visible; }
#bookingCalendar { display:block!important;min-height:0!important; }
#datePicker { width:min(860px,calc(100vw - 24px));height:fit-content;min-height:0;max-height:calc(100dvh - 24px);margin:auto;border-radius:18px;overflow-y:auto; }
#datePicker[open] { display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-content:start;align-items:start; }
body:has(#datePicker[open]) { overflow:hidden; }
#datePicker .pickerHeader { grid-column:1/-1; }
#datePicker .pickerScroll { grid-column:1;grid-row:2; }
#datePicker .pickerFooter { grid-column:1;grid-row:3; }
.pickerDayEvents { grid-column:2;grid-row:2/4;min-width:0;margin:12px 22px 22px 0;padding:18px;border:1px solid var(--line);border-radius:12px;background:#faf9f7; }
.pickerEventsHead { display:flex;align-items:center;justify-content:space-between;gap:10px; }
.pickerEventsHead h3 { margin:0;font-size:.9rem;font-weight:600; }
.pickerEventsHead button { width:34px;height:34px;min-height:34px;padding:5px; }
.pickerEventsDate { color:var(--muted);font-size:.73rem;margin:5px 0 14px; }
.pickerEventItem { display:grid;gap:6px;width:100%;padding:12px;margin-top:9px;text-align:left;background:white;border:1px solid var(--line);border-radius:9px;cursor:pointer; }
.pickerEventItem:hover { border-color:#c69ca5; }.pickerEventItem strong { font-size:.78rem;font-weight:500;overflow-wrap:anywhere; }
.pickerEventItem small { color:var(--muted);font-size:.72rem; }
.pickerEventStatus { justify-self:start;font-size:.64rem;padding:3px 6px;border-radius:5px; }
.pickerEventsMessage,.pickerEventsError { font-size:.78rem;line-height:1.8; }.pickerEventsMessage { color:var(--muted); }.pickerEventsError { color:#a7283d; }
.pickerEventsMore { margin-top:14px;padding:0;border:0;background:transparent;color:var(--red);font-size:.76rem;text-decoration:underline;cursor:pointer; }
#datePicker .pickerScroll { flex:none;overflow:visible;padding:0 22px; }
#datePicker .pickerHeader { padding:20px 22px 10px; }
#datePicker .pickerFooter { grid-template-columns:1fr;padding:14px 22px 20px; }
.plainPickerHeader { display:flex;align-items:center;justify-content:space-between;gap:12px;margin:10px 0 16px; }
.plainPickerHeader strong { font-size:1rem; }
.plainPickerHeader>div { display:flex;gap:6px; }
.plainPickerHeader button { width:38px;height:38px;min-height:38px;padding:6px; }
.plainPickerGrid { display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px; }
.plainPickerWeekday { text-align:center;color:var(--muted);font-size:.73rem;padding:6px 0 10px; }
.plainPickerDay { min-width:0;min-height:42px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--ink);cursor:pointer;font-size:.86rem; }
.plainPickerDay:hover { background:#f5efed; }
.plainPickerDay.today { border-color:#d6c0c3; }
.plainPickerDay[aria-pressed=true] { background:var(--red);color:white; }
.plainPickerDay:disabled { opacity:.28;cursor:not-allowed; }
.plainPickerSelection { font-size:.75rem;color:var(--muted);margin:14px 0 4px; }
.equipmentQuantity { display:flex;align-items:center;gap:8px;margin-left:auto; }
.equipmentQuantity .qty { width:112px!important;min-height:40px!important;margin:0; }
.equipmentQuantity .qty:disabled { background:#f0f0ee;opacity:.6; }
.quantityUnit { font-size:.76rem;color:var(--muted);min-width:22px; }
.bookingReview { width:min(650px,calc(100vw - 28px));max-height:90dvh;overflow:auto;border:1px solid var(--line);border-radius:20px;padding:28px;background:white;color:var(--ink); }
.bookingReview::backdrop { background:#29232c77; }
.reviewHeading { display:flex;align-items:center;gap:14px;margin-bottom:22px; }
.reviewIcon { display:grid;place-items:center;width:44px;height:44px;background:var(--red-soft);color:var(--red);font-size:22px;border-radius:12px;flex-shrink:0; }
.reviewHeading h2 { padding:0;margin:0;font-size:1.25rem; }.reviewHeading h2:before { display:none; }
.reviewHeading p { font-size:.78rem;color:var(--muted);margin:4px 0 0; }
.reviewDetails { display:grid;grid-template-columns:130px minmax(0,1fr);gap:0;margin:0; }
.reviewDetails dt,.reviewDetails dd { margin:0;padding:11px 0;border-bottom:1px solid var(--line);font-size:.84rem;white-space:pre-wrap;overflow-wrap:anywhere; }
.reviewDetails dt { color:var(--muted); }.reviewDetails dd { color:var(--ink); }
.reviewNote { font-size:.75rem;line-height:1.8;color:var(--muted);margin:20px 0; }
#bookingReviewError { color:#b42338;font-size:.8rem; }
.reviewActions { display:flex;justify-content:flex-end;gap:10px; }
.bookingReview.sending .reviewDetails,.bookingReview.sending .reviewNote,.bookingReview.sending .reviewHeading p { display:none; }
.bookingSendProgress { display:grid;justify-items:center;text-align:center;gap:12px;padding:38px 12px; }
.bookingSendProgress strong { font-size:1rem;font-weight:600; }.bookingSendProgress p { font-size:.82rem;color:var(--muted);margin:0; }.bookingSendProgress small { font-size:.75rem;color:var(--muted); }
.sendingSpinner { width:38px;height:38px;border:3px solid #eedfe2;border-top-color:var(--red);border-radius:50%;animation:bookingSpin 1s linear infinite; }
@keyframes bookingSpin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){.sendingSpinner{animation:none;border-style:dotted;}}
.loginReload { background:transparent;border:0;color:var(--red);text-decoration:underline;font-size:.76rem;text-align:left;cursor:pointer;padding:6px 0; }
.loginFormPanel select { width:100%;min-height:48px; }
@media(max-width:600px) {
  #availabilityCalendar .calendarDay { min-height:84px;padding:6px 2px;font-size:.76rem; }
  #availabilityCalendar .calendarEvent { font-size:.63rem;padding:3px 2px;border-left-width:2px; }
  #availabilityCalendar .calendarMore { font-size:.57rem; }
  #availabilityCalendar .calendarWeekday { position:static;font-size:.7rem;padding:4px 0; }
  #datePicker { width:calc(100vw - 20px);max-width:500px;max-height:calc(100dvh - 20px); }
  #datePicker[open] { grid-template-columns:minmax(0,1fr); }
  #datePicker .pickerDayEvents { grid-column:1;grid-row:3;margin:12px 16px 0; }
  #datePicker .pickerFooter { grid-column:1;grid-row:4; }
  #datePicker .pickerScroll { padding:0 16px; }
  #datePicker .pickerHeader { padding:16px 16px 6px; }
  #datePicker .pickerFooter { padding:12px 16px 16px;gap:8px; }
  .plainPickerDay { min-height:38px; }.plainPickerWeekday { padding-bottom:6px; }
  .equipmentQuantity .qty { width:108px!important; }
  .bookingReview { padding:22px 18px; }.reviewDetails { grid-template-columns:100px minmax(0,1fr); }
  .reviewDetails dt,.reviewDetails dd { font-size:.78rem; }.reviewHeading h2 { font-size:1.08rem; }
  .reviewActions button { flex:1;padding-inline:8px; }
}
