/* ============================================================
   Cascade Hideaway — Quiet Urban Luxury design system
   Loaded after the page's inline styles; overrides are scoped
   to `.theme-quiet-luxury` so existing booking JS/CSS hooks
   (#heroBookBar, qbw*, #bookingSubmit …) are never touched.
============================================================ */

:root {
  --ch-ink: #2a1f16;
  --ch-mahogany: #2b1713;
  --ch-mahogany-soft: #3a211c;
  --ch-parchment: #f1ebe1;
  --ch-bone: #f9f6f0;
  --ch-brass: #7a5a2b;
  --ch-brass-dark: #7a5a2b;
  --ch-stone: #5c4d3f;
  --ch-line: rgb(43 23 19 / 14%);
  --ch-success: #2f6b45;
  --ch-danger: #9f3a33;
  --ch-focus: #b98745;
  --ch-radius-s: 4px;
  --ch-radius-m: 8px;
  --ch-radius-l: 16px;
  --ch-shadow-paper: 0 18px 50px rgb(43 23 19 / 9%);
  --ch-ease: cubic-bezier(.16, 1, .3, 1);
  --ch-container: 90rem;
}

.theme-quiet-luxury {
  margin: 0;
  color: var(--ch-ink);
  background: var(--ch-bone);
  font-family: Raleway, system-ui, sans-serif;
  font-size: 1rem;
  line-height: 1.65;
}

.theme-quiet-luxury :where(h1, h2, h3) {
  font-family: "Cormorant Garamond", Georgia, serif;
  font-weight: 400;
  text-wrap: balance;
}

/* ── Hero: a single, centered image-led arrival ────────────── */

/* Rule-of-thirds hero split, implemented as three grid rows so each block owns
   an exact vertical band instead of fighting flex auto-margins:
     row 1 (3fr, ~upper half)  - property name + trust proof, vertically centred
                                  so its optical centre sits at the mid-point of
                                  the upper half, not merely somewhere near top.
     row 2 (1fr, ~one sixth)   - dead air. Keeps the booking card from reading as
                                  an extension of the title block.
     row 3 (2fr, ~lower third) - the booking decision, vertically centred inside
                                  its own band so it never drifts into row 2.
   Rows 1 and 3 are `minmax(min-content, Nfr)`, not bare `Nfr`: on a short
   viewport (a landscape phone, ~812x375) an `Nfr` row can be compressed below
   its own content's height, and with `overflow: hidden` below that silently
   clips the booking card's CTA button instead of the container growing past
   `min-height` the way the old flex layout always did. min-content keeps that
   growth-instead-of-clip behaviour; the fr proportions still govern once there
   is slack space to distribute. */
.luxury-hero-grid {
  display: grid;
  grid-template-rows: minmax(min-content, 3fr) minmax(0, 1fr) minmax(min-content, 2fr);
  justify-items: center;
  /* Chromium resolves `min-height: <length>` into a definite grid-container
     block size and sizes the fr tracks against that fixed budget only — it
     does NOT grow the container past it even when a `minmax(min-content, …)`
     row needs more, so the length-only form still clips at short viewports.
     `max(min-content, …)` keeps min(100svh, 58rem) as the floor everywhere it
     already has slack, but lets the box grow to its own intrinsic minimum
     (now driven by the min-content row tracks above) whenever content needs
     more room than that floor provides. */
  min-height: max(min-content, min(100svh, 58rem));
  padding: clamp(7rem, 11vw, 9rem) 1.25rem clamp(3rem, 6vw, 4.5rem);
  margin: 0;
  overflow: hidden;
  background: var(--ch-mahogany);
  position: relative;
  isolation: isolate;
}

.luxury-hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
  min-width: 0;
  min-height: 0;
  margin: 0;
  overflow: hidden;
}

.luxury-hero-media img,
.luxury-hero-media .hero-slide img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}

.luxury-hero-copy {
  grid-row: 1;
  align-self: center;
  justify-self: center;
  /* Cancel the legacy .hero-content margin-top (inline <style>, same element,
     same 0,0,1,0 specificity) - grid alignment now owns vertical placement, so
     that offset would otherwise push the block below the "middle of the upper
     half" position it needs to hold. */
  margin-top: 0;
  width: min(100%, 45rem);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  padding: 0;
  border: 0;
  text-align: center;
  position: relative;
  z-index: 2;
}

.theme-quiet-luxury .hero-overlay {
  z-index: 1;
  background: linear-gradient(90deg, rgb(23 13 10 / .60), rgb(23 13 10 / .42) 50%, rgb(23 13 10 / .60)),
    linear-gradient(0deg, rgb(23 13 10 / .54), transparent 45%, rgb(23 13 10 / .34));
}

.theme-quiet-luxury .hero-grain { z-index: 1; opacity: .14; }

.theme-quiet-luxury .luxury-hero-copy .eyebrow.hero-eyebrow {
  margin: 0 0 1.25rem;
  color: #e5c384;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  font-family: Raleway, system-ui, sans-serif;
}

.theme-quiet-luxury .luxury-hero-copy .hero-title {
  margin: 0;
  color: var(--ch-bone);
  font-size: clamp(3.5rem, 7vw, 7.5rem);
  line-height: .9;
  letter-spacing: -.035em;
  text-shadow: 0 3px 18px rgb(17 9 7 / .42);
}

.theme-quiet-luxury .luxury-hero-copy .hero-tagline,
.theme-quiet-luxury .luxury-hero-copy .hero-trust-strip { color: rgb(251 248 242 / .92); }
.theme-quiet-luxury .luxury-hero-copy .hero-trust-badge { color: #e5c384; }

.theme-quiet-luxury .hero-proof {
  display: flex;
  justify-content: space-between;
  gap: 1rem;
  margin-top: 2rem;
  padding-block: 1rem;
  color: var(--ch-ink);
  border-block: 1px solid var(--ch-line);
  text-decoration: none;
}

.theme-quiet-luxury .hero-rate { margin: 1rem 0 0; font-variant-numeric: tabular-nums; }
.theme-quiet-luxury .hero-rate span { display: block; color: var(--ch-stone); font-size: .875rem; }

/* Preserve transform ownership: this wrapper owns layout, `.hero-bk-inner`
   (already the JS-owned inner node) owns any animation.

   Frosted glass: a neutral, low-tint pane that reads as frozen glass over the
   photograph rather than as a brown panel painted on top of it. The tint is
   white-based so the blurred hero stays recognisable behind it; the amber note
   is kept to a faint top-edge sheen only. */
.theme-quiet-luxury .hero-bk {
  position: relative;
  inset: auto;
  /* Lives in .luxury-hero-grid's row 3 (the lower third) and is centred inside
     that band on both axes, so it reads as a distinct call-to-action rather
     than an extension of the title block above it. */
  grid-row: 3;
  align-self: center;
  justify-self: center;
  /* Width is capped by two independent budgets, not one: the usual viewport
     -width cap so it never spans edge-to-edge, plus a viewport-*height* cap
     (44svh) so on short/landscape screens the card shrinks with the hero
     instead of swelling to fill its row and outweighing the title above it. */
  width: min(calc(100% - 2.5rem), 26.5rem, 44svh);
  margin: clamp(1.5rem, 2.5vw, 2rem) auto 0;
  overflow: visible;
  border: 1px solid rgb(255 255 255 / .26);
  border-radius: 14px;
  background:
    linear-gradient(160deg, rgb(255 250 240 / .20), rgb(255 250 240 / .05) 48%),
    linear-gradient(135deg, rgb(46 27 14 / .22), rgb(28 16 6 / .30));
  box-shadow:
    0 22px 54px rgb(10 5 4 / .34),
    inset 0 1px 0 rgb(255 255 255 / .34),
    inset 0 -1px 0 rgb(255 255 255 / .07);
  backdrop-filter: blur(32px) saturate(1.5) brightness(1.04);
  -webkit-backdrop-filter: blur(32px) saturate(1.5) brightness(1.04);
  animation: none;
  transform: none;
  z-index: 3;
}

/* Browsers without backdrop-filter get an opaque-enough fallback instead of a
   near-transparent card floating over a busy photograph. */
@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))) {
  .theme-quiet-luxury .hero-bk {
    background: linear-gradient(135deg, rgb(52 31 16 / .88), rgb(28 16 6 / .90));
  }
}

.theme-quiet-luxury .hero-bk-fields {
  border: 1px solid rgb(229 218 202 / .78);
  border-radius: var(--ch-radius-s);
  background: rgb(242 236 226 / .94);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .45);
}

/* The booking panel shares the hero's dark surface, retaining high contrast. */
.theme-quiet-luxury .hero-bk-eyebrow { color: rgb(251 248 242 / .84); }
.theme-quiet-luxury .hero-bk-field {
  min-height: 4rem;
  padding: .7rem 1rem;
  background: transparent;
}
.theme-quiet-luxury .hero-bk-label {
  color: #5a4838;
  font-family: Raleway, system-ui, sans-serif;
  font-size: var(--step--2);
  font-weight: 600;
  letter-spacing: .12em;
  text-shadow: none;
}
.theme-quiet-luxury .hero-bk-date-val {
  color: #3d332b;
  font-family: Raleway, system-ui, sans-serif;
  font-size: .94rem;
  font-weight: 500;
  line-height: 1.2;
  text-shadow: none;
}
.theme-quiet-luxury .hero-bk-date-val.is-placeholder { color: #5a4838; }
.theme-quiet-luxury .hero-bk-field.is-active { background: rgb(155 116 67 / .10); }
.theme-quiet-luxury .hero-bk-sep--mid { background: rgb(94 76 58 / .20); }

.theme-quiet-luxury .hero-bk-cta {
  min-height: 48px;
  color: var(--ch-bone);
  background: var(--ch-brass-dark);
  border: 1px solid var(--ch-brass-dark);
  border-radius: var(--ch-radius-s);
  box-shadow: none;
  transition: background-color 180ms var(--ch-ease), transform 120ms var(--ch-ease);
}

.theme-quiet-luxury .hero-bk-cta:active { transform: scale(.97); }
.theme-quiet-luxury :focus-visible { outline: 2px solid var(--ch-focus); outline-offset: 3px; }

/* Booking-date controls: parchment, not white, with quiet ink contrast.
   These selectors deliberately target the interactive IDs as well as the
   component classes so legacy hero declarations cannot reintroduce the
   white-on-white, shadowed treatment on a cached or reordered stylesheet. */
.theme-quiet-luxury #heroBookBar .hero-bk-fields {
  background: linear-gradient(135deg, rgb(239 229 214 / .98), rgb(222 204 179 / .98));
  border-color: rgb(236 217 187 / .74);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .34), 0 1px 0 rgb(20 10 6 / .10);
}
.theme-quiet-luxury #heroBookBar .hero-bk-inner { padding: .58rem .70rem .64rem; }
.theme-quiet-luxury #heroBookBar .hero-bk-eyebrow {
  margin-bottom: .45rem;
  font-size: var(--step--2);
  letter-spacing: .18em;
}
.theme-quiet-luxury #heroBookBar .hero-bk-field {
  min-height: 2.95rem;
  padding: .44rem .8rem;
  transition: background-color 160ms var(--ch-ease), box-shadow 160ms var(--ch-ease);
}
.theme-quiet-luxury #heroBookBar .hero-bk-field:hover,
.theme-quiet-luxury #heroBookBar .hero-bk-field.is-active {
  background: rgb(111 76 42 / .10);
  box-shadow: inset 0 -2px 0 rgb(118 85 47 / .72);
}
.theme-quiet-luxury #heroBookBar .hero-bk-label {
  color: #5a4838;
  font-size: var(--step--2);
  font-weight: 700;
  letter-spacing: .14em;
  line-height: 1.1;
  text-shadow: none !important;
}
.theme-quiet-luxury #heroBookBar .hero-bk-date-val,
.theme-quiet-luxury #heroBookBar .hero-bk-date-val.is-placeholder {
  color: #47382d;
  font-size: .84rem;
  font-weight: 600;
  letter-spacing: -.01em;
  line-height: 1.3;
  text-shadow: none !important;
}
.theme-quiet-luxury #heroBookBar .hero-bk-date-val.is-placeholder { color: #5a4838; }
.theme-quiet-luxury #heroBookBar .hero-bk-sep--mid { background: rgb(81 56 37 / .22); }
.theme-quiet-luxury #heroBookBar .hero-bk-field:focus-visible {
  outline: 2px solid #b98745;
  outline-offset: -3px;
}

@media (max-width: 767px) {
  .luxury-hero-grid { min-height: 50rem; padding: 7rem 1rem 5rem; }
  .luxury-hero-media { height: auto; }
  .luxury-hero-copy { padding: 0; }
  .theme-quiet-luxury .hero-bk { margin: 1.75rem 1.25rem 3rem; }
  .theme-quiet-luxury .luxury-hero-copy .hero-title { font-size: clamp(3.5rem, 17vw, 5.5rem); }
  .theme-quiet-luxury .hero-proof { align-items: flex-start; flex-direction: column; }
  /* Phone: the thin italic tagline sat on the pale cushion and nearly vanished. */
  .theme-quiet-luxury .luxury-hero-copy .hero-tagline {
    color: #fff;
    font-weight: 500;
    text-shadow: 0 1px 3px rgb(17 9 7 / .85), 0 0 14px rgb(17 9 7 / .65);
  }
  .theme-quiet-luxury .luxury-hero-copy .hero-trust-badge {
    color: #f6e3b4;
    font-weight: 600;
    text-shadow: 0 1px 3px rgb(17 9 7 / .85), 0 0 14px rgb(17 9 7 / .65);
  }
}

/* Keep the location line inside the booking card so it never sits behind it. */
.theme-quiet-luxury #heroBookBar .hero-location {
  position: static;
  inset: auto;
  z-index: auto;
  justify-content: center;
  margin: .5rem auto 0;
  font-size: var(--step--2);
  letter-spacing: .07em;
  line-height: 1.3;
  color: rgb(251 248 242 / .62);
  text-align: center;
}

.theme-quiet-luxury #heroBookBar .hero-bk-cta {
  min-height: 44px;
  margin-top: .55rem;
  font-size: var(--step--2);
}

/* Desktop hero split: the property name owns the upper half, the booking
   decision sits in the lower third (see the grid-row placement on
   .luxury-hero-copy and .theme-quiet-luxury .hero-bk above). This keeps the
   two actions distinct instead of making the form compete with the property
   name. The old translateY nudge on .luxury-hero-copy is gone — the grid rows
   place it exactly, so a manual offset would only fight that placement.

   NOTE: this comment previously had no opening delimiter, so the CSS parser
   swallowed the whole `@media (min-width: 768px)` block below it as an invalid
   rule. That silently dropped the desktop hero offsets and left the booking
   card pinned directly under the review line. tests/css-integrity.test.mjs
   guards against that regression — this block, and the margin-top inside it,
   must keep existing even though the grid rows now do the primary placement. */
@media (min-width: 768px) {
  .theme-quiet-luxury .hero-bk {
    /* Small residual nudge inside row 3 only — breathing room above the card,
       not the mechanism that puts it in the lower third. */
    margin-top: clamp(0.5rem, 1.5vh, 1rem);
  }
}

/* ── Soft glass surfaces: quiet Apple-like depth, not decoration ───────── */

.theme-quiet-luxury .amenities-note,
.theme-quiet-luxury .airbnb-proof-embed,
.theme-quiet-luxury .review-card,
.theme-quiet-luxury .faq-item {
  border: 1px solid rgb(83 54 31 / .11);
  border-radius: var(--ch-radius-l);
  background: rgb(255 252 247 / .62);
  box-shadow: 0 12px 32px rgb(43 23 19 / .06), inset 0 1px 0 rgb(255 255 255 / .72);
  backdrop-filter: blur(14px) saturate(1.08);
  -webkit-backdrop-filter: blur(14px) saturate(1.08);
}

.theme-quiet-luxury .amenities-note {
  border-inline-start: 2px solid var(--ch-brass);
}

.theme-quiet-luxury .review-card {
  border-bottom: 1px solid rgb(83 54 31 / .11);
}

.theme-quiet-luxury .faq-list {
  display: grid;
  gap: .65rem;
}

.theme-quiet-luxury .faq-item:first-child {
  border-top: 1px solid rgb(83 54 31 / .11);
}

.theme-quiet-luxury .faq-item summary {
  padding: 1.15rem 1.25rem;
}

.theme-quiet-luxury .faq-answer {
  padding-inline: 1.25rem;
}

.theme-quiet-luxury .rate-card,
.theme-quiet-luxury .rate-discount {
  border-radius: var(--ch-radius-l);
  background: rgb(255 247 233 / .055);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / .10);
  backdrop-filter: blur(12px) saturate(1.08);
  -webkit-backdrop-filter: blur(12px) saturate(1.08);
}

@media (hover: hover) and (pointer: fine) {
  .theme-quiet-luxury .amenities-note,
  .theme-quiet-luxury .airbnb-proof-embed,
  .theme-quiet-luxury .review-card,
  .theme-quiet-luxury .faq-item,
  .theme-quiet-luxury .rate-card {
    transition: transform 220ms var(--ch-ease), box-shadow 220ms var(--ch-ease), border-color 220ms var(--ch-ease);
  }

  .theme-quiet-luxury .review-card:hover,
  .theme-quiet-luxury .faq-item:hover,
  .theme-quiet-luxury .rate-card:hover {
    border-color: rgb(155 116 67 / .28);
    box-shadow: 0 16px 36px rgb(43 23 19 / .10), inset 0 1px 0 rgb(255 255 255 / .78);
    transform: translateY(-2px);
  }
}

/* ── Editorial sections below the hero ───────────────────────── */

.theme-quiet-luxury .editorial-proof,
.theme-quiet-luxury .editorial-gallery {
  max-width: var(--ch-container);
  margin-inline: auto;
}

/* ── Mobile: remove booking-funnel obstruction ───────────────── */

@media (max-width: 767px) {
  /* The section-nav pill bar competes with the funnel and is clipped at
     narrow widths — hide it below 768px per the mobile IA contract. */
  .theme-quiet-luxury #sectionNav.section-nav { display: none !important; }

  /* Concierge visibility is governed by JS (.is-hidden / bookingVis), but
     hard-disable pointer/paint while hidden to avoid any residual overlap. */
  .theme-quiet-luxury .concierge-float.is-hidden { pointer-events: none; }

  /* Persistent bottom booking CTA, shown until #booking enters the viewport. */
  .theme-quiet-luxury .sticky-book-cta {
    position: fixed;
    left: 0; right: 0; bottom: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    padding: .75rem 1rem calc(.75rem + env(safe-area-inset-bottom, 0px));
    background: var(--ch-bone);
    border-top: 1px solid var(--ch-line);
    box-shadow: 0 -8px 24px rgb(43 23 19 / 8%);
    transform: translateY(0);
    transition: transform 180ms var(--ch-ease), opacity 140ms var(--ch-ease);
  }
  .theme-quiet-luxury .sticky-book-cta.is-hidden {
    transform: translateY(100%);
    opacity: 0;
    pointer-events: none;
  }
  .theme-quiet-luxury .sticky-book-cta-rate {
    font-family: Raleway, system-ui, sans-serif;
    font-size: .8125rem;
    color: var(--ch-stone);
  }
  .theme-quiet-luxury .sticky-book-cta-btn {
    min-height: 44px;
    min-width: 44px;
    padding: 0 1.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--ch-bone);
    background: var(--ch-brass-dark);
    border: 1px solid var(--ch-brass-dark);
    border-radius: var(--ch-radius-s);
    font-weight: 600;
    text-decoration: none;
    transition: background-color 180ms var(--ch-ease), transform 120ms var(--ch-ease);
  }
  .theme-quiet-luxury .sticky-book-cta-btn:active { transform: scale(.97); }
}

@media (min-width: 768px) {
  .theme-quiet-luxury .sticky-book-cta { display: none; }
}

/* ── Airbnb proof embed container (Task 5A) ──────────────────── */

.theme-quiet-luxury .airbnb-proof-embed {
  max-width: 42rem;
  margin: clamp(2rem, 4vw, 3rem) auto 0;
  padding: 1.5rem;
  border: 1px solid var(--ch-line);
  border-radius: var(--ch-radius-m);
  background: var(--ch-bone);
  min-height: 8rem;
  contain: layout;
}
.theme-quiet-luxury .airbnb-proof-embed-title {
  margin: 0 0 .75rem;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ch-stone);
}
.theme-quiet-luxury .airbnb-proof-embed-loading {
  font-size: .875rem;
  color: var(--ch-stone);
}
.theme-quiet-luxury .airbnb-proof-badge {
  display: inline-flex;
  align-items: baseline;
  gap: .4em;
  color: var(--ch-ink);
  text-decoration: none;
  border-bottom: 1px solid var(--ch-line);
  padding-bottom: .15em;
}
.theme-quiet-luxury .airbnb-proof-badge strong { font-family: "Cormorant Garamond", Georgia, serif; font-size: 1.25rem; }
.theme-quiet-luxury .airbnb-proof-badge-date { color: var(--ch-stone); font-size: .8125rem; }
.theme-quiet-luxury .airbnb-proof-embed-hint {
  margin: .5rem 0 0;
  font-size: .8125rem;
  color: var(--ch-stone);
}
.theme-quiet-luxury .reviews-verified-note {
  margin: .5rem 0 0;
  font-size: .75rem;
  color: var(--ch-stone);
}

.theme-quiet-luxury .footer-legal-links {
  display: flex;
  flex-wrap: wrap;
  gap: .5em;
  margin-top: .75rem;
  font-size: .8125rem;
}
.theme-quiet-luxury .footer-legal-links,
.theme-quiet-luxury .footer-legal-links a { color: rgb(247 242 232 / 0.82); }
.theme-quiet-luxury .footer-legal-links a:hover,
.theme-quiet-luxury .footer-legal-links a:focus-visible { color: #e5c384; }

.theme-quiet-luxury .booking-legal-note {
  margin: .75rem 0 0;
  font-size: .8125rem;
  color: rgb(247 242 232 / .72);
}
.theme-quiet-luxury .booking-legal-note a { color: #e5c384; }

/* ── Motion & interaction contract ───────────────────────────── */

@media (hover: none), (pointer: coarse) {
  .theme-quiet-luxury .hero-bk-cta:hover,
  .theme-quiet-luxury .sticky-book-cta-btn:hover { background: var(--ch-brass-dark); }
}

@media (prefers-reduced-motion: reduce) {
  .theme-quiet-luxury *,
  .theme-quiet-luxury *::before,
  .theme-quiet-luxury *::after { scroll-behavior: auto; }
}

/* ── Minimum 44×44 CSS px touch targets (P2 accessibility fix) ──
   Enlarge the hit area without inflating the visual footprint,
   using padding + a transparent border-box rather than resizing
   the visible glyph/icon. */
.theme-quiet-luxury .cal-nav-btn,
.theme-quiet-luxury .qbw-picker-nav-btn,
.theme-quiet-luxury .rv-arrow,
.theme-quiet-luxury .contact-type-pill,
.theme-quiet-luxury .sr-toggle-btn,
.theme-quiet-luxury .cal-change-btn,
.theme-quiet-luxury .cal-month-notice-jump,
.theme-quiet-luxury .qbw-month-notice-jump,
.theme-quiet-luxury #continueToPayment,
.theme-quiet-luxury #bookingSubmit,
.theme-quiet-luxury .loc-cta-btn {
  min-height: 44px;
  min-width: 44px;
}
.theme-quiet-luxury .cal-nav-btn,
.theme-quiet-luxury .qbw-picker-nav-btn,
.theme-quiet-luxury .rv-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

/* Calendar day cells were sizing to ~42px on narrow mobile widths — a hair
   under the 44px minimum touch target. Tighten the grid gap slightly and
   guarantee the minimum, letting the track grow instead of overflowing. */
.theme-quiet-luxury .cal-days { gap: 1px; }
.theme-quiet-luxury .cal-day { min-width: 44px; min-height: 44px; }

/* ── Desktop booking: one focused column, not a two-panel canyon ── */

@media (min-width: 900px) {
  .theme-quiet-luxury .booking-section { padding-block: clamp(4rem, 8vw, 7rem); }
  .theme-quiet-luxury .booking-inner {
    grid-template-columns: minmax(0, 42rem);
    justify-content: center;
    gap: 1.5rem;
  }
  .theme-quiet-luxury .booking-lead {
    width: 100%;
    max-width: 42rem;
    padding: 0;
    text-align: center;
  }
  .theme-quiet-luxury .booking-lead .section-label { justify-content: center; }
  .theme-quiet-luxury .booking-lead .gold-rule-sm { margin-inline: auto; }
  .theme-quiet-luxury .booking-form-col { width: 100%; max-width: 42rem; }
}
