html:has(.drawer-layer),
body:has(.drawer-layer) {
  width: 100%;
  max-width: 100%;
  overflow: hidden;
}

.drawer-layer {
  width: 100vw;
  max-width: 100vw;
  overflow: hidden;
}

.drawer {
  display: flex;
  flex-direction: column;
  width: min(650px, 100vw);
  max-width: 100vw;
  min-width: 0;
  height: 100vh;
  height: 100dvh;
  padding: 0 !important;
  overflow: hidden;
  overscroll-behavior: contain;
}

.drawer,
.drawer * {
  min-inline-size: 0;
}

.drawer .booking-intro {
  flex: 0 0 auto;
  padding: 42px 42px 0;
}

.drawer .booking-form {
  display: flex !important;
  flex: 1 1 auto;
  flex-direction: column;
  gap: 0 !important;
  min-height: 0;
  overflow: hidden;
}

.drawer .booking-form-fields {
  display: grid;
  flex: 1 1 auto;
  gap: 14px;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: auto;
  padding: 2px 42px 18px;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

.drawer .booking-submit-error {
  flex: 0 0 auto;
  margin: 0;
  padding: 8px 42px;
  background: #fff4ef;
  border-top: 1px solid rgba(179, 67, 43, .2);
}

.drawer .two,
.drawer .three {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.drawer .three {
  grid-template-columns: minmax(0, 1.4fr) minmax(0, .8fr) minmax(0, .8fr);
}

.drawer input,
.drawer select,
.drawer textarea,
.drawer button {
  max-width: 100%;
}

.drawer textarea {
  resize: vertical;
}

.drawer .check {
  align-items: flex-start;
  gap: 10px;
}

.drawer .check input[type="checkbox"] {
  flex: 0 0 20px;
  width: 20px;
  height: 20px;
  min-inline-size: 20px;
  margin: 2px 0 0;
  padding: 0;
}

.drawer .booking-checkout {
  position: relative;
  z-index: 3;
  display: grid;
  flex: 0 0 auto;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 18px;
  margin: 0;
  padding: 14px 42px calc(14px + env(safe-area-inset-bottom));
  border-top: 1px solid var(--line, #d9d0c1);
  background: var(--cream, #fffaf1);
  box-shadow: 0 -10px 28px rgba(37, 51, 45, .08);
}

.drawer .booking-price-summary {
  display: grid;
  gap: 1px;
  line-height: 1.25;
}

.drawer .booking-price-summary strong {
  font-size: 1.05rem;
}

.drawer .booking-price-summary small {
  color: var(--muted, #6d756f);
  font-size: .72rem;
}

.drawer .booking-checkout .submit {
  width: auto;
  white-space: nowrap;
}

@media (max-width: 780px) {
  .drawer .booking-submit-error {
    padding-inline: 20px;
  }

  .drawer .booking-intro {
    padding: 36px 20px 0;
  }

  .drawer .two,
  .drawer .three {
    grid-template-columns: minmax(0, 1fr);
  }

  .drawer input,
  .drawer select,
  .drawer textarea {
    font-size: 16px;
  }

  .drawer .booking-form-fields {
    padding: 2px 20px 14px;
  }

  .drawer .booking-checkout {
    gap: 10px;
    margin: 0;
    padding: 11px 20px calc(11px + env(safe-area-inset-bottom));
  }

  .drawer .booking-price-summary strong {
    font-size: .98rem;
  }

  .drawer .booking-price-summary small {
    font-size: .64rem;
  }

  .drawer .booking-checkout .submit {
    padding: 12px 16px;
    font-size: .78rem;
  }
}

@media (max-width: 390px) {
  .drawer .booking-checkout {
    grid-template-columns: minmax(0, .9fr) minmax(145px, 1.1fr);
    padding-inline: 14px;
  }

  .drawer .booking-checkout .submit {
    width: 100%;
    padding-inline: 10px;
  }
}
