:root {
  --wp--preset--color--custom-background: #f7f7f1;
  --wp--preset--color--custom-foreground: #111111;
  --wp--preset--color--custom-hover: #515151;
  --wp--preset--color--custom-gray: #7b7b7b;
  --booking-bg: #f7f7f1;
  --booking-panel: #ffffff;
  --booking-ink: #44444e;
  --booking-muted: #6d6c70;
  --booking-line: #d8d3c9;
  --booking-olive: #8d8d71;
  --booking-white: #fffef9;
  --booking-available: #dfe9d9;
  --booking-unavailable: #edd8d4;
  --booking-closed: #e1e1de;
  --booking-shadow: 0 12px 28px rgba(40, 40, 35, 0.08);
}

.has-custom-background-color {
  color: var(--wp--preset--color--custom-background) !important;
}

.has-custom-foreground-color {
  color: var(--wp--preset--color--custom-foreground) !important;
}

.has-custom-hover-color {
  color: var(--wp--preset--color--custom-hover) !important;
}

.has-custom-gray-color {
  color: var(--wp--preset--color--custom-gray) !important;
}

.has-custom-background-background-color {
  background-color: var(--wp--preset--color--custom-background) !important;
}

.has-custom-foreground-background-color {
  background-color: var(--wp--preset--color--custom-foreground) !important;
}

.has-custom-hover-background-color {
  background-color: var(--wp--preset--color--custom-hover) !important;
}

.has-custom-gray-background-color {
  background-color: var(--wp--preset--color--custom-gray) !important;
}

* {
  box-sizing: border-box;
}

body {
  margin: 0;
  background: var(--booking-bg);
  color: var(--booking-ink);
  font-family: "Palatino Linotype", "Book Antiqua", Palatino, serif;
}

.wp-site-blocks {
  width: min(calc(100% - 260px), 1760px);
  margin: 0 auto;
  background: transparent;
}

a {
  color: inherit;
}

button,
input,
textarea {
  font: inherit;
}

.booking-cover {
  margin-top: 0;
  margin-bottom: 0;
}

.booking-page-header {
  gap: 4rem;
  flex-direction: column;
  align-items: flex-start;
}

.booking-cover .wp-block-navigation {
  width: 100%;
}

.booking-cover .wp-block-navigation__container {
  display: flex;
  align-items: center;
  gap: 2.75rem;
  padding-left: 0;
  margin: 0;
  list-style: none;
}

.booking-cover .wp-block-site-logo img {
  width: 150px;
  height: auto;
}

.booking-cover .wp-block-navigation-item__content,
.booking-cover .wp-block-navigation-item__content:visited,
.booking-cover .wp-block-navigation-item__content:hover,
.booking-cover .wp-block-navigation-item__content:focus-visible,
.booking-cover .wp-block-navigation-item__label {
  color: #fff !important;
  text-decoration: none !important;
  font-family: Aboreto, serif;
  font-weight: 400 !important;
  letter-spacing: 0;
}

.booking-page-intro {
  max-width: 38rem;
  gap: 0;
  margin-top: 2.25rem;
}

.booking-page-kicker {
  margin: 0;
  color: #fff;
  font-family: Aboreto, serif;
}

.booking-main {
  width: 100%;
  margin: 0;
  padding: 2.5rem 0 4rem;
}

.booking-search-shell,
.booking-availability-block,
.booking-enquiry-panel {
  border: 1px solid #e7e6e1;
  background: var(--booking-panel);
  box-shadow: none;
}

.booking-search-shell,
.booking-enquiry-panel {
  padding: 20px;
}

.booking-search-bar {
  display: grid;
  grid-template-columns: 1.15fr 1.15fr 180px 130px 130px 1.1fr;
  gap: 10px;
  align-items: end;
}

.booking-search-field,
.booking-details-grid label,
.booking-details-message {
  display: grid;
  gap: 6px;
}

.booking-search-field span,
.booking-details-grid span,
.booking-details-message span {
  font-size: 0.82rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
}

.booking-search-field input,
.booking-details-grid input,
.booking-details-message textarea {
  width: 100%;
  min-height: 48px;
  padding: 10px 14px;
  border: 0;
  background: #f0ece4;
  color: var(--booking-ink);
  font-size: 0.95rem;
  border-radius: 0;
}

.booking-search-value,
#night-count {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 10px 14px;
  border: 0;
  background: #f0ece4;
  color: var(--booking-ink);
  font-size: 1rem;
  font-weight: 700;
  border-radius: 0;
}

#night-count {
  width: 100%;
  font-family: inherit;
}

.booking-search-options {
  display: grid;
  gap: 6px;
  align-self: stretch;
  padding: 8px 10px;
  background: #f0ece4;
}

.booking-inline-toggle {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 0.9rem;
}

.booking-inline-toggle input {
  width: 16px;
  height: 16px;
}

.booking-inline-note {
  display: flex;
  align-items: center;
  font-size: 0.85rem;
  color: rgba(17, 17, 17, 0.7);
}

.booking-currency-options {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  flex-wrap: nowrap;
  white-space: nowrap;
}

.booking-currency-options .booking-inline-toggle {
  flex: 0 0 auto;
}

.booking-pricing-note {
  margin: 4px 0 0;
  font-size: 0.82rem;
  line-height: 1.45;
  color: rgba(17, 17, 17, 0.78);
}

.booking-action,
.booking-nav-button,
.booking-mode-button {
  min-height: 48px;
  border: 0;
  background: #ece9de;
  color: var(--booking-ink);
  font-weight: 700;
  font-size: 0.95rem;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  cursor: pointer;
  border-radius: 0;
}

.booking-action--primary,
.booking-mode-button.is-active {
  background: var(--booking-olive);
  color: var(--booking-white);
}

.booking-availability-block,
.booking-enquiry-shell {
  margin-top: 14px;
}

.booking-availability-panel {
  padding: 20px;
}

.booking-form-message-wrap p {
  margin: 0;
}

.booking-availability-toolbar {
  display: flex;
  justify-content: center;
  margin-bottom: 10px;
}

.booking-availability-controls {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  flex-wrap: wrap;
}

.booking-nav-button,
.booking-mode-button {
  min-height: 38px;
  min-width: 58px;
  padding: 0 14px;
}

.booking-availability-grid {
  overflow-x: visible;
}

.booking-availability-table {
  width: 100%;
  min-width: 0;
}

.booking-availability-header,
.booking-availability-row {
  display: grid;
  grid-template-columns: 56px minmax(110px, 150px) minmax(90px, 130px) repeat(var(--booking-grid-days, 7), minmax(0, 1fr));
}

.booking-availability-header {
  margin-bottom: 8px;
}

.booking-availability-cell {
  min-height: 52px;
  padding: 8px;
  border-bottom: 1px solid var(--booking-line);
}

.booking-availability-cell--head {
  color: var(--booking-muted);
  font-size: 0.9rem;
  text-transform: uppercase;
}

.booking-availability-room {
  font-size: 0.88rem;
  font-weight: 700;
  line-height: 1.2;
}

.booking-availability-select {
  display: flex;
  align-items: center;
  justify-content: center;
}

.booking-unit-toggle input {
  width: 18px;
  height: 18px;
}

.booking-availability-meta {
  font-size: 0.7rem;
  color: var(--booking-muted);
  line-height: 1.2;
}

.booking-availability-price {
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  font-weight: 700;
  background: #ececea;
}

.booking-availability-price.is-available {
  background: var(--booking-available);
}

.booking-availability-price.is-unavailable {
  background: var(--booking-unavailable);
}

.booking-availability-price.is-closed {
  background: var(--booking-closed);
  color: var(--booking-muted);
}

.booking-details-form {
  padding: 0 18px 18px;
}

.booking-details-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}

.booking-details-message {
  margin-top: 10px;
}

.booking-form-message-wrap {
  display: grid;
  gap: 8px;
  margin: 12px 0;
}

.booking-disclaimer {
  color: var(--booking-muted);
}

.booking-form-message {
  min-height: 1.6em;
  color: #32582d;
}

.booking-form-message.is-error {
  color: #8d4033;
}

.booking-honeypot {
  position: absolute;
  left: -9999px;
}

@media (max-width: 1340px) {
  .booking-search-bar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .booking-details-grid {
    grid-template-columns: 1fr;
  }

  .booking-availability-header,
  .booking-availability-row {
    grid-template-columns: 56px 140px 100px repeat(var(--booking-grid-days, 7), minmax(92px, 1fr));
  }
}

@media (max-width: 860px) {
  .wp-site-blocks {
    width: min(calc(100% - 32px), 1760px);
  }

  .booking-main {
    padding: 2rem 0 3rem;
  }

  .booking-page-header {
    gap: 2rem;
    padding-top: 2rem !important;
    padding-right: 1.25rem !important;
    padding-bottom: 1.5rem !important;
    padding-left: 1.25rem !important;
  }

  .booking-availability-grid {
    overflow-x: auto;
  }

  .booking-availability-table {
    min-width: 860px;
  }
}
