/*! ZLPRF Datepicker CSS Fork
 * Baseline fork for [z_latepoint_reserveform]
 * Source references:
 * - LatePoint 5.2.5 front.css / front SCSS
 * - LatePoint Pro Features 1.2.4 latepoint-pro-features-front.css
 *
 * Rules are intentionally scoped to .zlprf-book-form-wrapper so the standard
 * [latepoint_book_form] remains untouched.
 */

/* =============================
   Header / footer shell fork
   ============================= */
.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w {
  display: flex;
  align-items: center;
  gap: 16px;
  padding: 24px 28px;
  min-height: 92px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
  background: #fff;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .os-heading-text,
.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .os-heading-text-library {
  margin: 0;
  font-size: 20px;
  line-height: 1.2;
  font-weight: 700;
  color: #14161d;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .latepoint-lightbox-summary-trigger,
.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .latepoint-lightbox-close {
  margin-left: auto;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 20px 28px;
  border-top: 1px solid rgba(0, 0, 0, 0.06);
  background: #fff;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer .latepoint-progress {
  flex: 1 1 auto;
  margin: 0;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer .latepoint-btn {
  flex: 0 0 auto;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer .zlprf-footer-empty-slot {
  flex: 0 0 130px;
  width: 130px;
  min-width: 130px;
  visibility: hidden;
}


/* =============================
   Lightbox body scroll / sticky footer
   ============================= */
.zlprf-book-form-wrapper,
.zlprf-book-form-wrapper .latepoint-w,
.zlprf-book-form-wrapper .latepoint-booking-form-element,
.zlprf-book-form-wrapper .latepoint-form-w,
.zlprf-book-form-wrapper .latepoint-form {
  min-height: 0;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: min(86vh, 920px);
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-form-w {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
  position: relative;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-form {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-heading-w {
  flex: 0 0 auto;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px));
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-footer {
  flex: 0 0 auto;
  margin-top: auto;
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 20;
  background: #fff;
  padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -8px 20px rgba(17, 24, 39, 0.06);
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form {
    height: calc(100dvh - 24px);
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-body {
    padding-bottom: calc(104px + env(safe-area-inset-bottom, 0px));
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-footer {
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }
}

/* =============================
   Standard datepicker fork
   ============================= */
.zlprf-book-form-wrapper .step-datepicker-w .os-dates-and-times-w {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-dates-w {
  position: relative;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w {
  display: none;
  position: relative;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .times-header {
  color: #16171d;
  font-size: 17px;
  font-weight: 400;
  text-align: center;
  padding-bottom: 10px;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .times-header .times-header-label {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  position: relative;
  z-index: 2;
  background: #fff;
  padding: 0 10px;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .th-line {
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .os-times-w {
  position: relative;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .timeslots {
  display: flex;
  justify-content: space-between;
  gap: 0;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox {
  position: relative;
  cursor: pointer;
  user-select: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot .dp-label,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox .dp-label {
  display: none;
  text-align: center;
  padding: 7px 8px;
  line-height: 1;
  background-color: #04bb03;
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  position: absolute;
  left: 50%;
  top: -8px;
  transform: translate(-50%, -100%);
  white-space: nowrap;
  transition: all .2s ease;
  z-index: 10;
}



.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot.selected:not(.is-booked):not(.is-off),
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox.selected:not(.is-booked):not(.is-off) {
  z-index: 4;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot.selected:not(.is-booked):not(.is-off) .dp-label,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox.selected:not(.is-booked):not(.is-off) .dp-label {
  display: block;
  top: -3px;
  background-color: var(--latepoint-brand-primary, #f85a5a);
  color: #fff;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot.selected:not(.is-booked):not(.is-off)::before,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox.selected:not(.is-booked):not(.is-off)::before {
  display: block;
  width: 10px;
  height: 10px;
  top: -12px;
  left: 50%;
  transform: translateX(-50%) rotate(45deg);
  background-color: var(--latepoint-brand-primary, #f85a5a);
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timeslot.selected:not(.is-booked):not(.is-off) .dp-label-capacity,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .dp-timebox.selected:not(.is-booked):not(.is-off) .dp-label-capacity {
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.hide-not-available-slots .dp-timebox.is-booked,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.hide-not-available-slots .dp-timebox.is-off,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.hide-not-available-slots .dp-timeslot.is-booked,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.hide-not-available-slots .dp-timeslot.is-off {
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-calendar-searching-info {
  padding-left: 35px;
  font-size: 15px;
  position: relative;
  font-weight: 600;
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-dates-and-times-w.is-searching .os-calendar-searching-info {
  display: block;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-calendar-searching-info:before {
  display: block;
  content: "";
  width: 20px !important;
  height: 20px !important;
  border-bottom: 2px solid var(--latepoint-brand-primary);
  border-left: 2px solid var(--latepoint-brand-primary);
  border-top: 2px solid var(--latepoint-brand-primary);
  border-right: 2px solid transparent;
  border-radius: 20px;
  position: absolute;
  top: 50%;
  left: 10px;
  transform: translate(-50%, -50%);
  animation: os-loading 700ms infinite linear;
  background-color: transparent !important;
}

/* =============================
   Standard monthly calendar fork
   (kept with original class names for future layout edits)
   ============================= */
.zlprf-book-form-wrapper .step-datepicker-w .os-weekdays,
.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 8px;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-weekdays {
  margin-bottom: 8px;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-weekdays .os-weekday {
  text-align: center;
  font-size: 16px;
  color: #555;
  padding: 4px 0;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day {
  position: relative;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day .os-day-box {
  min-height: 64px;
  border-radius: 16px;
  border: 1px solid #e5e7eb;
  background: #fff;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 0;
  transition: all .15s ease;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day.is-available .os-day-box {
  background: #eef8ea;
  border-color: #dcefd6;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day.selected .os-day-box,
.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day.is-selected .os-day-box {
  border-color: #ff5b57;
  box-shadow: inset 0 0 0 2px #ff5b57;
  background: #fff;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day.os-day-passed .os-day-box,
.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day.is-disabled .os-day-box {
  opacity: .45;
  cursor: default;
  background: #fafafa;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day .os-day-number {
  font-size: 18px;
  font-weight: 600;
  line-height: 1;
  color: #222;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day .os-day-status {
  width: 28px;
  height: 4px;
  border-radius: 999px;
  background: #8ed081;
  margin-top: 10px;
}

/* =============================
   Pro features fork
   ============================= */
.zlprf-book-form-wrapper .step-datepicker-w.show-recurring-prompt .os-dates-w,
.zlprf-book-form-wrapper .step-datepicker-w.show-recurring-prompt .time-selector-w {
  filter: blur(5px);
  pointer-events: none;
}

.zlprf-book-form-wrapper .os-recurring-bookings-unfold {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 5px;
  color: #14161d;
  font-size: 13px;
  cursor: pointer;
  margin-top: 5px;
  margin-bottom: 10px;
}

.zlprf-book-form-wrapper .os-recurring-bookings-unfold i {
  font-size: 11px;
  line-height: 1;
}

.zlprf-book-form-wrapper .os-recurring-bookings-unfold div {
  border-bottom: 1px dotted #14161d;
}

.zlprf-book-form-wrapper .os-recurring-bookings-wrapper {
  margin-bottom: 10px;
}

.zlprf-book-form-wrapper .os-recurring-bookings-count {
  margin-bottom: 5px;
  font-size: 13px;
  font-weight: 600;
  color: #14161d;
}

.zlprf-book-form-wrapper .os-recurring-unfolded-booking {
  display: flex;
  justify-content: space-between;
  font-size: 13px;
  margin-bottom: 3px;
  color: #7c85a3;
}

/* =============================
   Mobile fork
   ============================= */

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-label,
.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-label-time {
  color: #111827;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.is-disabled .dp-label,
.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.is-disabled .dp-label-time {
  color: #9ca3af;
}
@media (max-width: 767px) {
  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w {
    padding: 18px 18px 16px;
    min-height: 76px;
    gap: 12px;
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .os-heading-text,
  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-heading-w .os-heading-text-library {
    font-size: 18px;
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer {
    padding: 16px 18px;
    gap: 12px;
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer .latepoint-btn {
    min-width: 0;
  }

  .zlprf-book-form-wrapper .latepoint-booking-form-element .latepoint-form-w .latepoint-footer .zlprf-footer-empty-slot {
    flex-basis: 104px;
    width: 104px;
    min-width: 104px;
  }

  .zlprf-book-form-wrapper .step-datepicker-w .os-weekdays,
  .zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days {
    gap: 6px;
  }

  .zlprf-book-form-wrapper .step-datepicker-w .os-monthly-calendar-days .os-day .os-day-box {
    min-height: 56px;
  }
}


.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w .timeslots {
  display: block;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-bands {
  display: flex;
  flex-direction: column;
  gap: 14px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band {
  border: 1px solid #e5e7eb;
  border-radius: 12px;
  padding: 12px;
  background: #fff;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band__title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  font-weight: 700;
  font-size: 14px;
  color: #111827;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band__index {
  color: var(--latepoint-brand-primary, #f85a5a);
  font-weight: 700;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band__slots {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox {
  min-width: 88px;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  padding: 10px 12px;
  background: #fff;
  text-align: center;
  transition: all .2s ease;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox:not(.is-booked):not(.is-off):hover {
  border-color: var(--latepoint-brand-primary, #f85a5a);
  color: var(--latepoint-brand-primary, #f85a5a);
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox.selected:not(.is-booked):not(.is-off) {
  border-color: var(--latepoint-brand-primary, #f85a5a);
  background: #fff5f5;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox.is-booked,
.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox.is-off {
  opacity: .4;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band__slot-text {
  display: block;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox .dp-label {
  z-index: 20;
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band .dp-timebox {
    min-width: calc(33.333% - 6px);
    padding: 9px 8px;
  }
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-bands--range {
  gap: 16px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__title {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__title-main {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__meta {
  margin-left: auto;
  font-size: 13px;
  font-weight: 700;
  color: var(--latepoint-brand-primary, #f85a5a);
  min-width: 3.5em;
  text-align: right;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__range-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
  gap: 10px;
  align-items: start;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-column__title {
  font-size: 12px;
  font-weight: 700;
  color: #6b7280;
  margin-bottom: 8px;
  text-align: center;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-column__slots {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-divider {
  align-self: center;
  font-size: 22px;
  font-weight: 700;
  color: #9ca3af;
  padding-top: 28px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox {
  min-width: 0;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #d1d5db;
  border-radius: 10px;
  background: #fff;
  text-align: center;
  transition: all .2s ease;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox:not(.is-disabled):hover {
  border-color: var(--latepoint-brand-primary, #f85a5a);
  color: var(--latepoint-brand-primary, #f85a5a);
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.selected:not(.is-disabled) {
  border-color: var(--latepoint-brand-primary, #f85a5a);
  background: #fff1f3;
  box-shadow: inset 0 0 0 999px rgba(248, 90, 90, 0.08);
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.is-disabled {
  opacity: .45;
  cursor: default;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.is-placeholder .dp-label-time {
  letter-spacing: 1px;
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__range-grid {
    grid-template-columns: minmax(0, 1fr) 20px minmax(0, 1fr);
    gap: 8px;
  }
}
@media (max-width: 767px) {
  .zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__title {
    align-items: flex-start;
  }

  .zlprf-book-form-wrapper .step-datepicker-w .zlprf-time-band--range .zlprf-time-band__meta {
    font-size: 12px;
  }
}

/* Fix range slot labels visibility */
.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-label {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 24px;
  position: static;
  left: auto;
  top: auto;
  transform: none;
  padding: 0;
  line-height: 1.2;
  background: transparent !important;
  color: inherit;
  white-space: normal;
  text-align: center;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-label-time {
  display: block;
  width: 100%;
  font-size: 15px;
  font-weight: 700;
  text-align: center;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-success-label,
.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox .dp-label-capacity {
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.selected::before {
  display: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-range-slot.dp-timebox.selected .dp-label {
  top: auto;
  background: transparent !important;
}


.zlprf-book-form-wrapper .step-datepicker-w .zlprf-service-tabs {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 10px 0 14px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-service-tab {
  appearance: none;
  border: 1px solid #d9dde5;
  background: #fff;
  color: #1f2937;
  border-radius: 999px;
  min-height: 40px;
  padding: 0 14px;
  font-size: 13px;
  font-weight: 700;
  line-height: 1.2;
  cursor: pointer;
  transition: all .2s ease;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-service-tab:hover {
  border-color: #ef4444;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-service-tab.is-active {
  border-color: #ef4444;
  background: #fff1f2;
  color: #b91c1c;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-service-tab__label {
  display: block;
  text-align: center;
}

.zlprf-book-form-wrapper .step-datepicker-w .os-times-w.zlprf-is-loading {
  opacity: .55;
  pointer-events: none;
  transition: opacity .2s ease;
}


.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w{
  position: relative;
}

.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.zlprf-is-loading .os-times-w,
.zlprf-book-form-wrapper .step-datepicker-w .time-selector-w.zlprf-is-loading .zlprf-service-tabs{
  opacity: .45;
  pointer-events: none;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-periods-loading{
  position: absolute;
  inset: 0;
  display: none;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 10px;
  background: rgba(255,255,255,.72);
  z-index: 30;
  border-radius: 12px;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-periods-loading__spinner{
  width: 28px;
  height: 28px;
  border-radius: 999px;
  border: 3px solid #f3d1d1;
  border-top-color: #ef4444;
  animation: os-loading 700ms infinite linear;
}

.zlprf-book-form-wrapper .step-datepicker-w .zlprf-periods-loading__text{
  font-size: 13px;
  font-weight: 700;
  color: #991b1b;
}

/* =============================
   Sticky footer for service/agent steps too
   ============================= */
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__services,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__agents,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__datepicker,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__cart {
  height: min(86vh, 920px);
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .step-services-w,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .step-agents-w,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .step-datepicker-w,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .zlprf-step-cart {
  min-height: 0;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .step-services-w .os-selectable-items,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .step-agents-w .os-selectable-items,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .zlprf-agents-list {
  padding-bottom: 8px;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-body {
  scrollbar-width: thin;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-body::-webkit-scrollbar {
  width: 8px;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .latepoint-body::-webkit-scrollbar-thumb {
  background: rgba(107, 114, 128, 0.35);
  border-radius: 999px;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__services .latepoint-footer,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__agents .latepoint-footer,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__datepicker .latepoint-footer,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__cart .latepoint-footer {
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__services,
  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__agents,
  .zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__datepicker,
.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form.current-step-booking__cart {
    height: calc(100dvh - 24px);
  }
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .zlprf-step-cart .zlprf-cart-layout {
  min-height: 0;
}

.zlprf-book-form-wrapper .latepoint-booking-form-element.latepoint-lightbox-form .zlprf-step-cart .zlprf-cart-main {
  min-height: 0;
}

/* =============================
   Fix footer always-bottom selectors
   note: lightbox class is on .latepoint-w, not .latepoint-booking-form-element
   ============================= */
.zlprf-book-form-wrapper,
.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form {
  height: 100%;
  min-height: 0;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form {
  display: flex;
  flex-direction: row;
  height: min(86vh, 920px);
  max-height: min(86vh, 920px);
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-booking-form-element {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-form-w {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
  position: relative;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-form {
  display: flex;
  flex-direction: column;
  min-height: 0;
  height: 100%;
  flex: 1 1 auto;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-heading-w {
  flex: 0 0 auto;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-body {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: calc(112px + env(safe-area-inset-bottom, 0px));
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-footer {
  position: absolute !important;
  left: 0;
  right: 0;
  bottom: 0;
  margin-top: 0 !important;
  z-index: 30;
  background: #fff;
  padding-bottom: calc(20px + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -8px 20px rgba(17, 24, 39, 0.06);
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form {
    height: calc(100dvh - 24px);
    max-height: calc(100dvh - 24px);
  }

  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-body {
    padding-bottom: calc(104px + env(safe-area-inset-bottom, 0px));
  }

  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-footer {
    padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px));
  }
}

/* =============================
   Footer fixed to modal bottom without overlay gap
   ============================= */
.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form {
  height: 100dvh !important;
  max-height: 100dvh !important;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-booking-form-element {
  display: flex !important;
  flex-direction: row !important;
  min-height: 0 !important;
  height: 100% !important;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-form-w {
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  height: 100% !important;
  flex: 1 1 auto !important;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-form {
  display: flex !important;
  flex-direction: column !important;
  min-height: 0 !important;
  height: 100% !important;
  flex: 1 1 auto !important;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-heading-w {
  flex: 0 0 auto !important;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-body {
  flex: 1 1 auto !important;
  min-height: 0 !important;
  overflow-y: auto !important;
  overflow-x: hidden !important;
  -webkit-overflow-scrolling: touch;
  padding-bottom: 0 !important;
  scrollbar-gutter: stable;
}

.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-footer {
  position: relative !important;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  flex: 0 0 auto !important;
  margin-top: auto !important;
  z-index: 30 !important;
  background: #fff;
  padding-bottom: calc(16px + env(safe-area-inset-bottom, 0px)) !important;
  box-shadow: 0 -8px 20px rgba(17, 24, 39, 0.06);
}

@media (max-width: 767px) {
  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form {
    height: 100dvh !important;
    max-height: 100dvh !important;
  }

  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-body {
    padding-bottom: 0 !important;
  }

  .zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-footer {
    padding-bottom: calc(14px + env(safe-area-inset-bottom, 0px)) !important;
  }
}

/* Reset theme/user-agent form bottom margin inside modal to avoid footer gap */
.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form .latepoint-form > form,
.zlprf-book-form-wrapper .latepoint-w.latepoint-lightbox-form form.latepoint-form {
  margin-bottom: 0 !important;
}
