/* ============================================================================
   CRESTLINE DESIGN SYSTEM
   Loaded AFTER concept-2.css and inner.css so it settles the five things that
   had drifted across 28 pages:

     1. PALETTE   white ground, wine as the single brand accent
     2. TYPE      one scale for h1-h6 and body (was 32 different h3 sizes)
     3. CONTROLS  one button language + one link language (was 28 classes)
     4. SCRIMS    decorative overlays removed, legibility ones kept
     5. SPACING   one 4px-based rhythm (was 56 arbitrary gap values)
   ========================================================================= */

/* ---------- 1. PALETTE --------------------------------------------------- */
:root {
  --paper:      #FFFFFF;
  --ivory:      #FFFFFF;
  --cream:      #F7F5F2;
  --surface:    #FFFFFF;
  --surface-2:  #F7F5F2;

  --ink:        #3E2E12;   /* bronze-black, 13.09:1 on white */
  --muted:      #5A4E3C;   /* warm grey-brown body copy */

  /* THE BRAND GOLD, sampled from the logo gradient (#F5D576 -> #C29D48).
     Gold is 2.04:1 on white, so --gold is decorative / for dark grounds and
     --gold-ink is the accessible gold used for text and links on white. */
  --gold:       #C29D48;
  --gold-light: #F5D576;
  --gold-mid:   #D9B04F;
  --gold-deep:  #8A6B2A;
  --gold-ink:   #8A6B2A;
  --gold-tint:  rgba(194, 157, 72, 0.10);

  /* aliases: the whole codebase says --wine, so it now resolves to gold and
     every existing rule adopts the brand palette without being rewritten */
  --wine:       #8A6B2A;
  --wine-deep:  #6B521F;
  --wine-soft:  #C29D48;
  --wine-tint:  rgba(194, 157, 72, 0.10);

  --brown:      #2E2413;
  --brown-deep: #1E180C;   /* the dark band ground */

  --peach:      #F5D576;   /* the light end of the logo gradient */
  --peach-soft: #FAE9BE;

  --hair:        rgba(62, 46, 18, 0.14);
  --hair-strong: rgba(62, 46, 18, 0.26);

  /* ---------- 5. SPACING: a single 4px-based rhythm ----------------------- */
  --sp-1: 4px;  --sp-2: 8px;  --sp-3: 12px; --sp-4: 16px; --sp-5: 24px;
  --sp-6: 32px; --sp-7: 48px; --sp-8: 64px; --sp-9: 96px;

  --section-y:    clamp(56px, 7vw, 96px);
  --section-y-sm: clamp(40px, 5vw, 64px);
  --head-mb:      clamp(24px, 3vw, 40px);
  --card-gap:     clamp(16px, 2vw, 24px);
  --pad-x:        clamp(40px, 10vw, 144px);

  /* ---------- 2. TYPE SCALE ---------------------------------------------- */
  --fs-h1:   clamp(34px, 5.2vw, 64px);
  --fs-h2:   clamp(28px, 3.6vw, 44px);
  --fs-h3:   clamp(20px, 1.9vw, 26px);
  --fs-h4:   clamp(17px, 1.4vw, 20px);
  --fs-h5:   16px;
  --fs-h6:   14px;
  --fs-body: clamp(15px, 1.05vw, 17px);
  --fs-sm:   14px;
  --fs-xs:   12.5px;

  --lh-tight: 1.12; --lh-head: 1.2; --lh-body: 1.7;

  /* Headings take a geometric sans that echoes the CRESTLINE wordmark
     (wide-set, high-waisted caps). Body stays Inter. */
  --f-display: 'Jost', 'Century Gothic', 'Futura', system-ui, sans-serif;
  --f-italic:  'Jost', 'Century Gothic', system-ui, sans-serif;
  --f-body:    'Inter', system-ui, -apple-system, sans-serif;
  --radius-lg: 6px; --radius-md: 4px; --radius-sm: 2px;
}

html, body { background: var(--paper); color: var(--ink); }
.lw-alt, .lw-sec--alt { background: var(--surface-2); }

/* ---------- 2. TYPOGRAPHY ------------------------------------------------ */
h1, .lw-h1, .lw-pg-title, .lw-hero-title {
  font-family: var(--f-display); font-size: var(--fs-h1);
  line-height: var(--lh-tight); letter-spacing: -0.015em;
  color: var(--ink); margin: 0 0 var(--sp-4); text-wrap: balance;
}
h2, .lw-h2 {
  font-family: var(--f-display); font-size: var(--fs-h2);
  line-height: var(--lh-head); letter-spacing: -0.012em;
  color: var(--ink); margin: 0 0 var(--sp-4); text-wrap: balance;
}
h3, .lw-h3 {
  font-family: var(--f-display); font-size: var(--fs-h3);
  line-height: 1.28; letter-spacing: -0.006em;
  color: var(--ink); margin: 0 0 var(--sp-3); text-wrap: balance;
}
h4, .lw-h4 {
  font-family: var(--f-body); font-size: var(--fs-h4); font-weight: 600;
  line-height: 1.35; color: var(--ink); margin: 0 0 var(--sp-2);
}
h5, .lw-h5 {
  font-family: var(--f-body); font-size: var(--fs-h5); font-weight: 600;
  line-height: 1.4; color: var(--ink); margin: 0 0 var(--sp-2); letter-spacing: 0.01em;
}
h6, .lw-h6 {
  font-family: var(--f-body); font-size: var(--fs-h6); font-weight: 600;
  line-height: 1.4; color: var(--muted); margin: 0 0 var(--sp-2);
  letter-spacing: 0.06em; text-transform: uppercase;
}
h1 em, h2 em, h3 em, .lw-h1 em, .lw-h2 em, .lw-h3 em {
  font-family: var(--f-italic); font-style: italic; color: var(--wine); letter-spacing: 0;
}

p, .lw-body, .lw-p {
  font-family: var(--f-body); font-size: var(--fs-body);
  line-height: var(--lh-body); color: var(--muted); margin: 0 0 var(--sp-4);
}
p:last-child { margin-bottom: 0; }
li { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--muted); }

.lw-eyebrow, .lw-pg-eyebrow, .lw-sec-kicker {
  font-family: var(--f-body); font-size: var(--fs-xs); font-weight: 600;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--wine);
  margin: 0 0 var(--sp-3); display: flex; align-items: center; gap: var(--sp-2);
}
.lw-eyebrow-dash { width: 26px; height: 1px; background: var(--wine); display: inline-block; }
.lw-eyebrow-brass { color: var(--peach); }
.lw-eyebrow-brass .lw-eyebrow-dash { background: var(--peach); }

/* ---------- 3. ONE BUTTON LANGUAGE -------------------------------------- */
.lw-btn, .lw-head-cta, .lw-bl-soon-cta {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--sp-2);
  font-family: var(--f-body); font-size: var(--fs-sm); font-weight: 600;
  letter-spacing: 0.04em; text-transform: uppercase; line-height: 1;
  padding: 14px 26px; min-height: 46px;
  border-radius: var(--radius-md); border: 1px solid transparent;
  text-decoration: none; cursor: pointer;
  transition: background .22s var(--ease), color .22s var(--ease),
              border-color .22s var(--ease);
}
.lw-btn:focus-visible, .lw-link:focus-visible, a:focus-visible, button:focus-visible {
  outline: 2px solid var(--wine); outline-offset: 2px;
}
.lw-btn-solid, .lw-btn-primary, .lw-bl-soon-cta, .lw-btn-brass {
  background: var(--wine); color: #fff; border-color: var(--wine);
}
.lw-btn-solid:hover, .lw-btn-primary:hover, .lw-bl-soon-cta:hover, .lw-btn-brass:hover {
  background: var(--wine-deep); border-color: var(--wine-deep); color: #fff;
}
.lw-btn-outline, .lw-btn-secondary {
  background: transparent; color: var(--wine); border-color: var(--wine);
}
.lw-btn-outline:hover, .lw-btn-secondary:hover {
  background: var(--wine); color: #fff; border-color: var(--wine);
}
.lw-on-dark .lw-btn-outline, .lw-props .lw-btn-outline,
footer .lw-btn-outline, .lw-footer .lw-btn-outline {
  color: #fff; border-color: rgba(255,255,255,0.55);
}
.lw-on-dark .lw-btn-outline:hover, .lw-props .lw-btn-outline:hover,
footer .lw-btn-outline:hover, .lw-footer .lw-btn-outline:hover {
  background: #fff; color: var(--wine); border-color: #fff;
}
.lw-btn-sm { padding: 10px 18px; min-height: 38px; font-size: var(--fs-xs); }
.lw-btn-lg { padding: 17px 34px; min-height: 54px; }

/* ---------- 3b. ONE HYPERLINK LANGUAGE --------------------------------- */
.lw-body a:not(.lw-btn), .lw-tc-block li a:not(.lw-btn),
.lw-story-body a:not(.lw-btn), .lw-faq-a a:not(.lw-btn),
.lw-tc-block a, .lw-more-link {
  color: var(--wine); text-decoration: underline; text-underline-offset: 3px;
  text-decoration-thickness: 1px; transition: color .2s var(--ease);
}
.lw-body a:not(.lw-btn):hover, .lw-tc-block li a:not(.lw-btn):hover,
.lw-story-body a:not(.lw-btn):hover, .lw-faq-a a:not(.lw-btn):hover,
.lw-tc-block a:hover, .lw-more-link:hover { color: var(--wine-deep); }

/* navigation is never prose: no underline anywhere in nav, menu, footer
   columns, breadcrumbs or tabs */
.lw-header a, .lw-nav a, .lw-menu a, .lw-prop-bar a,
.lw-crumb a, .lw-crumbs a, .lw-foot-col a, .lw-foot-links a,
.lw-mobar a, .lw-tab-name, .lw-drop-name, nav a {
  text-decoration: none;
}
.lw-foot-col a:hover, .lw-foot-links a:hover, .lw-crumb a:hover {
  text-decoration: underline; text-underline-offset: 3px;
}

.lw-link, .lw-rs-link, .lw-op-link, .lw-ev-card-link, .lw-sec-cta {
  display: inline-flex; align-items: center; gap: var(--sp-2);
  font-family: var(--f-body); font-size: var(--fs-xs); font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--wine);
  text-decoration: none; border-bottom: 1px solid transparent; padding-bottom: 2px;
  transition: color .2s var(--ease), border-color .2s var(--ease);
}
.lw-link:hover, .lw-rs-link:hover, .lw-op-link:hover,
.lw-ev-card-link:hover, .lw-sec-cta:hover {
  color: var(--wine-deep); border-bottom-color: var(--wine-deep);
}
.lw-link-light { color: var(--peach); }
.lw-link-light:hover { color: #fff; border-bottom-color: #fff; }
.lw-link-dark { color: var(--wine); }
.lw-link-arrow { display: inline-flex; align-items: center; }

.lw-foot-links a, .lw-foot-col a {
  color: rgba(255,255,255,0.78); text-decoration: none;
  font-size: var(--fs-sm); transition: color .2s var(--ease);
}
.lw-foot-links a:hover, .lw-foot-col a:hover {
  color: #fff; text-decoration: underline; text-underline-offset: 3px;
}

/* ---------- 4. SCRIMS: decorative overlays removed --------------------- */
.lw-props::before, .lw-offers::before, .lw-concierge::before,
.lw-home-pk::before, .lw-of-cta::before, .lw-abt-invite::before {
  content: none !important; display: none !important;
}
.lw-hero-caption::before { content: none !important; display: none !important; }
.lw-ev-card figure::after, .lw-collage-item::after,
.lw-gl-item::after, .lw-home-pk-card::after {
  content: none !important; display: none !important;
}
/* the gallery magnifier icon is an affordance, not a scrim -- keep it */
.lw-gl-mason .lw-gl-item::after {
  content: '00e' !important; display: grid !important;
}

/* KEPT because removing these measured below WCAG minimums:
     .lw-header::before  logo over the hero video, 1.09:1 -> 3.9:1
     .lw-hero-veil       caption and booking form legibility
     .lw-pg-hero::after  inner-page banner text                        */

/* ---------- 5. SPACING RHYTHM ------------------------------------------ */
.lw-sec, .lw-section { padding-top: var(--section-y); padding-bottom: var(--section-y); }
.lw-sec-sm { padding-top: var(--section-y-sm); padding-bottom: var(--section-y-sm); }
.lw-sec-head, .lw-dine-head, .lw-props-top, .lw-sec-top { margin-bottom: var(--head-mb); }

.lw-rooms-grid, .lw-fac-grid, .lw-gal-grid, .lw-loc-grid, .lw-mp-grid,
.lw-home-rooms-grid, .lw-offers-grid, .lw-ev-grid, .lw-props-grid,
.lw-dine-grid, .lw-blog-grid, .lw-team-grid { gap: var(--card-gap); }

.lw-btn-row, .lw-sec-ctas, .lw-404-links, .lw-hero-actions {
  display: flex; flex-wrap: wrap; gap: var(--sp-3);
}
.lw-card, .lw-offer-body, .lw-rm-card-body, .lw-ev-card-body,
.lw-jr-body, .lw-fac-card, .lw-dinefeat-card { padding: var(--sp-5); }

.lw-body, .lw-sec-head p, .lw-props-lede, .lw-dine-head p { max-width: 68ch; }
.lw-sec-head, .lw-dine-head, .lw-props-intro { max-width: 46rem; }

/* ---------- surfaces on a white ground --------------------------------- */
.lw-card, .lw-offer-card, .lw-rm-card, .lw-ev-card, .lw-fac-card, .lw-jr-card {
  background: var(--surface); border: 1px solid var(--hair); border-radius: var(--radius-lg);
}
hr, .lw-rule { border: 0; border-top: 1px solid var(--hair); margin: var(--sp-6) 0; }

/* ============================================================
   SPECIFICITY BRIDGE
   The bare h1..h6/p rules above lost to the older component rules,
   which are more specific. These re-issue every selector that already
   declared a heading or paragraph font-size, at the scale value, so the
   scale wins by matching specificity rather than by !important.
   ============================================================ */

/* --- H2 --- */
.lw-bl-featured-body h2,
.lw-dine-head .lw-h2,
.lw-h2,
.lw-props-top .lw-h2 {
  font-size: var(--fs-h2);
  font-family: var(--f-display);
  line-height: var(--lh-head);
}

/* --- H3 --- */
.lw-au-mv-col h3,
.lw-au-val h3,
.lw-bl-body h3,
.lw-bl-soon h3,
.lw-bookpop-head h3,
.lw-ct-form h3,
.lw-ct-info h3,
.lw-dine-body h3,
.lw-dinefeat-top h3,
.lw-dn-cross-body h3,
.lw-dp-body h3,
.lw-ex-body h3,
.lw-fc-card h3,
.lw-home-pk-cap h3,
.lw-home-room-body h3,
.lw-jr-body h3,
.lw-loc-info h3,
.lw-menu-info h3,
.lw-mp-body h3,
.lw-news-copy h3,
.lw-of-empty h3,
.lw-offer-body h3,
.lw-op-card h3,
.lw-props-panel h3,
.lw-ritual h3,
.lw-rs-body h3,
.lw-tc-block h3 {
  font-size: var(--fs-h3);
  font-family: var(--f-display);
  line-height: 1.28;
}

/* --- H4 --- */
.lw-ct-block h4,
.lw-dinemini h4,
.lw-ev-card-body h4,
.lw-home-nb-body h4,
.lw-loc-way h4 {
  font-size: var(--fs-h4);
  font-family: var(--f-body);
  font-weight: 600;
  line-height: 1.35;
}

/* --- H5 --- */
.lw-foot-col h5 {
  font-size: var(--fs-h5);
  font-family: var(--f-body);
  font-weight: 600;
  line-height: 1.35;
}

/* --- BODY COPY --- */
.lw-abt-chap-body p,
.lw-abt-copy p,
.lw-au-mv-col p,
.lw-au-quote p,
.lw-au-val p,
.lw-bl-body p,
.lw-bl-featured-body p,
.lw-bl-soon p,
.lw-body,
.lw-ct-block p,
.lw-ct-form > p,
.lw-ct-info p,
.lw-dine-body p,
.lw-dine-head .lw-body,
.lw-dinemini p,
.lw-dn-cross-body p,
.lw-dn-cta-inner p,
.lw-dp-body p,
.lw-ev-card-body p,
.lw-ex-body p,
.lw-fc-card p,
.lw-foot-brand p,
.lw-home-ed-copy p,
.lw-home-nb-body p,
.lw-home-pk-cap p,
.lw-home-room-body p,
.lw-jr-body p,
.lw-loc-info p,
.lw-loc-way p,
.lw-mp-body p,
.lw-of-empty p,
.lw-offer-body p,
.lw-op-body p,
.lw-op-card p,
.lw-panel-desc,
.lw-pg-intro p,
.lw-props-intro p,
.lw-props-panel p,
.lw-ritual p,
.lw-rm-desc p,
.lw-rs-body p,
.lw-story-body p,
.lw-story-quote p,
.lw-voice p {
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}

/* --- the last H1/H2 holdouts -------------------------------------------
   .lw-props-top and .lw-dine-head carried !important from the fold-fitting
   work, and the About hero title had its own pair of rules. Matched here so
   every H1 and H2 on the site resolves to one scale value. */
.lw-props-top .lw-h2,
.lw-dine-head .lw-h2,
.lw-bl-featured-body h2 {
  font-size: var(--fs-h2) !important;
  line-height: var(--lh-head);
}
.lw-abt-hero-title,
.lw-pg-title,
.lw-hero-title {
  font-size: var(--fs-h1) !important;
  line-height: var(--lh-tight);
  font-family: var(--f-display);
}
/* the hero caption name is display type but sits over imagery, so it keeps
   its own optical size -- one value, not three */
.lw-cap-name { font-size: clamp(30px, 4.4vw, 56px); line-height: 1.1; }

/* --- bespoke title classes mapped onto the scale ------------------------
   These carry no h1/h2 in their selector, so the tag rules never reached
   them. Each is placed by the role it plays, not by the size it happened
   to have. */

/* page-level titles behave as H1 */
.lw-abt-hero-title,
.lw-au-title,
.lw-of-title,
.lw-rm-title { font-size: var(--fs-h1); line-height: var(--lh-tight); font-family: var(--f-display); }

/* section-level titles behave as H2 */
.lw-abt-collage-title,
.lw-au-cta-title,
.lw-au-mv-title,
.lw-room-name,
.lw-panel-name { font-size: var(--fs-h2); line-height: var(--lh-head); font-family: var(--f-display); }

/* standfirst / lede copy: one size, slightly larger than body */
.lw-abt-prologue-lede,
.lw-rm-desc .lw-rm-lede-inline { font-size: clamp(18px, 1.5vw, 21px); line-height: 1.55; color: var(--muted); }

/* supporting lede lines run at body size */
.lw-au-lede, .lw-of-lede, .lw-rm-lede, .lw-props-lede {
  font-size: var(--fs-body); line-height: var(--lh-body); color: var(--muted);
}

/* small UI labels share one size */
.lw-tab-name, .lw-drop-name, .lw-nav.is-open .lw-drop-name {
  font-size: var(--fs-sm); font-family: var(--f-body);
}
.lw-abt-sig-name { font-size: var(--fs-h3); font-family: var(--f-display); }

/* --- eyebrows: one size everywhere (was 12.5 / 13 / 15.3px) ------------- */
.lw-eyebrow, .lw-pg-eyebrow, .lw-sec-kicker,
.lw-eyebrow-brass, .lw-eyebrow.lw-eyebrow-brass {
  font-size: var(--fs-xs);
  letter-spacing: 0.16em;
}

/* --- body copy: one size (was 13.95 / 15.12px) -------------------------- */
.lw-body, .lw-panel-desc, .lw-dinefeat-desc, .lw-props-lede,
.lw-au-cta-text, .lw-story-body p {
  font-size: var(--fs-body);
  line-height: var(--lh-body);
}
/* card meta lines stay deliberately smaller than body copy */
.lw-panel-loc, .lw-dinefeat-sub { font-size: var(--fs-sm); }

/* --- the last type holdouts (these carry !important upstream) ----------- */
.lw-pg-intro .lw-eyebrow,
.lw-abt-hero-eyebrow,
.lw-pg-eyebrow { font-size: var(--fs-xs) !important; letter-spacing: 0.16em; }

.lw-dine-head .lw-body,
.lw-story-body p, .lw-of-lede, .lw-abt-lede {
  font-size: var(--fs-body) !important;
  line-height: var(--lh-body);
}

/* --- last two outliers -------------------------------------------------
   .lw-dinefeat-desc carries !important from the dining-height fitting, and
   the brass eyebrow picked up a size from its .lw-props-intro context. */
.lw-dinefeat-desc {
  font-size: var(--fs-body) !important;
  line-height: var(--lh-body) !important;
  color: var(--muted);
}
.lw-props-intro .lw-eyebrow,
.lw-eyebrow.lw-eyebrow-brass,
.lw-props-intro .lw-eyebrow-brass { font-size: var(--fs-xs) !important; }

/* the properties-panel CTA had bespoke vh-based padding from the fold work */
.lw-props-panel .lw-btn { padding: 14px 26px; min-height: 46px; }

/* ---------- TEXT ORGANISATION ------------------------------------------
   Long prose was centre-aligned across a ~760px measure. Left-align body
   copy and hold it to a comfortable measure; keep centring only for the
   short intro blocks that are composed as centred (eyebrow + heading + a
   single supporting line). */
.lw-story-body, .lw-story-body p,
.lw-au-body, .lw-au-body p,
.lw-tc-block, .lw-tc-block p, .lw-tc-block li,
.lw-faq-a, .lw-faq-a p,
.lw-rs-body, .lw-rs-body p {
  text-align: left;
  max-width: 68ch;
}
.lw-story-body, .lw-au-body { margin-left: auto; margin-right: auto; }

/* centred intro blocks keep their composition but gain a readable measure */
.lw-au-lede, .lw-pg-intro-inner p, .lw-sec-head p {
  max-width: 62ch;
  margin-left: auto;
  margin-right: auto;
}

/* headings and their supporting copy share one left edge in left-aligned
   sections, so the eyebrow, heading and paragraph line up */
.lw-sec-head:not(.is-centred) { text-align: left; }
.lw-sec-head:not(.is-centred) .lw-eyebrow { justify-content: flex-start; }

/* --- centred intro blocks: heading centred, prose left ------------------
   The centring lives on the wrapper, so the paragraph has to opt out. */
.lw-au-intro-inner .lw-au-lede,
.lw-pg-intro-inner p,
.lw-abt-prologue p {
  text-align: left;
  max-width: 62ch;
  margin-left: auto;
  margin-right: auto;
}

/* ---------- DARK BANDS: text must not inherit the light-ground colours ---
   The blanket p/li colour above is correct on white but fails on the dark
   footer and dark feature bands (measured 2.43:1). Restore light text there. */
.lw-footer, .lw-footer p, .lw-footer li, .lw-footer address,
.lw-foot-brand p, .lw-foot-col p, .lw-foot-col li,
.lw-props, .lw-props p, .lw-props li,
.lw-on-dark, .lw-on-dark p, .lw-on-dark li {
  color: rgba(255, 255, 255, 0.82);
}
.lw-footer h1, .lw-footer h2, .lw-footer h3, .lw-footer h4, .lw-footer h5, .lw-footer h6,
.lw-props h1, .lw-props h2, .lw-props h3, .lw-props h4,
.lw-on-dark h1, .lw-on-dark h2, .lw-on-dark h3, .lw-on-dark h4,
.lw-h2-light, .lw-foot-col h5 {
  color: #fff;
}
.lw-footer strong, .lw-props strong, .lw-on-dark strong { color: #fff; }
/* the italic display accent stays peach on dark, wine on light */
.lw-props h2 em, .lw-on-dark h2 em, .lw-h2-light em, .lw-footer h2 em { color: var(--peach); }

/* the properties panel is a LIGHT card inside the dark section, so it opts
   back out of the dark-band text colours (chips measured 1.09:1 white-on-cream) */
.lw-props-panel, .lw-props-panel p, .lw-props-panel li, .lw-props-panel span,
.lw-props-panel dt, .lw-props-panel dd, .lw-panel-meta, .lw-panel-meta li,
.lw-panel-meta span, .lw-panel-desc, .lw-panel-loc {
  color: var(--muted);
}
.lw-props-panel h1, .lw-props-panel h2, .lw-props-panel h3,
.lw-props-panel h4, .lw-panel-name, .lw-props-panel strong {
  color: var(--ink);
}
.lw-props-panel .lw-panel-tag { color: var(--wine); }
.lw-props-panel .lw-panel-meta i { color: var(--wine); }

/* ---------- SPACING RHYTHM, applied to the real section bands -----------
   14 different section paddings and 5 grid gaps were in use. These are the
   classes that actually declare their own vertical padding.
   EXCLUDED on purpose: .lw-hero / .lw-pg-hero-inner / .lw-abt-hero-inner
   (their padding is tied to the measured header clearance -- see LAY-10),
   overlays (.lw-bookpop, .lw-menu-*), and inner components (*-card, *-body,
   *-panel, *-tab) which need component padding, not a section rhythm. */
.lw-404,
.lw-abt-collage, .lw-abt-ethos, .lw-abt-invite, .lw-abt-prologue,
.lw-au-collage, .lw-au-cta, .lw-au-intro, .lw-au-mv,
.lw-bl-soon, .lw-dine, .lw-dinemini, .lw-dn-cross, .lw-dn-cta,
.lw-lb, .lw-loc-info, .lw-mp, .lw-of-cta, .lw-of-head,
.lw-op, .lw-props, .lw-ritual, .lw-rm-amen, .lw-rm-gallery,
.lw-rm-intro, .lw-rm-sim, .lw-story-quote, .lw-tc, .lw-voice,
.lw-ct-form, .lw-au-grid {
  padding-top: var(--section-y);
  padding-bottom: var(--section-y);
}

/* one gap for every card grid */
.lw-abt-collage-grid, .lw-au-collage-grid, .lw-au-grid-inner,
.lw-bl-grid, .lw-dine-grid, .lw-ex-grid, .lw-fc-grid, .lw-gl-grid,
.lw-gu-grid, .lw-home-nb-grid, .lw-home-pk-grid, .lw-home-rooms-grid,
.lw-journal-grid, .lw-mp-grid, .lw-op-grid, .lw-rituals-grid,
.lw-rm-amen-grid, .lw-rm-sim-grid, .lw-rs-grid {
  gap: var(--card-gap);
}

/* --- section bands that were missing or carry !important upstream ------- */
.lw-run, .lw-rs, .lw-faq, .lw-news, .lw-story, .lw-journal,
.lw-events, .lw-offers, .lw-fc, .lw-gu, .lw-ex, .lw-gl, .lw-nb, .lw-cc {
  padding-top: var(--section-y);
  padding-bottom: var(--section-y);
}
/* these two were compressed by the one-fold work and carry !important */
.lw-dine, .lw-props {
  padding-top: var(--section-y) !important;
  padding-bottom: var(--section-y) !important;
}
/* an intro band that sits directly under a banner needs no top gap doubled */
.lw-pg-intro { padding-top: var(--section-y-sm); padding-bottom: var(--section-y-sm); }

/* the properties band is pinned by an ID selector (#properties) from the
   one-fold work; match that specificity to bring it onto the rhythm, but
   keep it compressed on short viewports so the fold intent survives */
#properties, #properties.lw-props {
  padding-top: var(--section-y) !important;
  padding-bottom: var(--section-y) !important;
}
@media (max-height: 780px) {
  #properties, #properties.lw-props {
    padding-top: var(--section-y-sm) !important;
    padding-bottom: var(--section-y-sm) !important;
  }
}

/* ---------- FORM CONTROLS: one language --------------------------------- */
input[type="checkbox"], input[type="radio"] {
  accent-color: var(--wine);
  width: 20px; height: 20px;
  min-width: 20px; min-height: 20px;
  cursor: pointer;
}
@media (pointer: coarse) {
  input[type="checkbox"], input[type="radio"] { width: 24px; height: 24px; min-width: 24px; min-height: 24px; }
}
.lw-news-check { display: flex; align-items: center; gap: var(--sp-3); }
.lw-news-check label, .lw-news-check span { font-size: var(--fs-sm); color: var(--muted); }

input[type="text"], input[type="email"], input[type="tel"],
input[type="date"], select, textarea {
  font-family: var(--f-body);
  font-size: var(--fs-body);
  color: var(--ink);
  border-radius: var(--radius-md);
  transition: border-color .2s var(--ease), box-shadow .2s var(--ease);
}
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: 2px solid var(--wine);
  outline-offset: 1px;
}
label { font-family: var(--f-body); font-size: var(--fs-sm); color: var(--ink); font-weight: 600; }

/* ============================================================
   HEADINGS ON THE GEOMETRIC SANS
   Jost is lighter on the page than the serif it replaces, so display sizes
   take weight 400-500 and a little tracking to match the wordmark.
   ============================================================ */
h1, .lw-h1, .lw-pg-title, .lw-hero-title,
.lw-abt-hero-title, .lw-au-title, .lw-of-title, .lw-rm-title {
  font-weight: 400;
  letter-spacing: 0.005em;
}
h2, .lw-h2, .lw-abt-collage-title, .lw-au-cta-title, .lw-au-mv-title,
.lw-room-name, .lw-panel-name {
  font-weight: 400;
  letter-spacing: 0.005em;
}
h3, .lw-h3 { font-weight: 500; letter-spacing: 0.008em; }

/* the serif italic accent does not belong in a geometric sans -- emphasis
   inside a heading becomes gold and a shade heavier instead */
h1 em, h2 em, h3 em, .lw-h1 em, .lw-h2 em, .lw-h3 em {
  font-family: var(--f-display);
  font-style: normal;
  font-weight: 500;
  color: var(--gold-ink);
}
.lw-props h2 em, .lw-on-dark h2 em, .lw-h2-light em, .lw-footer h2 em {
  color: var(--gold-light);
}

/* ============================================================
   THE PEAK MOTIF
   The logo is a mountain peak in a circle. These carry that language
   through the interface at small scale.
   ============================================================ */

/* the eyebrow rule becomes a chevron */
.lw-eyebrow-dash {
  width: 14px; height: 9px;
  background: none !important;
  border: 0;
  position: relative;
  flex: 0 0 auto;
}
.lw-eyebrow-dash::before {
  content: "";
  position: absolute; inset: 0;
  border-left: 1.5px solid currentColor;
  border-top: 1.5px solid currentColor;
  transform: rotate(45deg) scale(0.72);
  transform-origin: center;
}

/* list markers become small peaks */
.lw-panel-meta li, .lw-rm-amen li, .lw-fac-list li, .lw-list-peak li {
  list-style: none;
  position: relative;
}
.lw-list-peak li { padding-left: 22px; }
.lw-list-peak li::before {
  content: "";
  position: absolute; left: 2px; top: 0.62em;
  width: 9px; height: 6px;
  border-left: 1.5px solid var(--gold);
  border-top: 1.5px solid var(--gold);
  transform: rotate(45deg) scale(0.8);
}

/* the active nav item carries a small peak instead of a flat underline */
/* Active nav item: a 2px underline in the gold accent. The peak motif read
   as a stray diamond at this size; an underline is the conventional and
   unambiguous active signal, and it survives any font size. */
.lw-nav a.is-active::after, .lw-prop-bar-nav a.is-active::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: -3px;
  height: 2px;
  width: auto;
  margin-left: 0;
  border: 0;
  background: currentColor;
  transform: none;
  border-radius: 1px;
}
.lw-nav a, .lw-prop-bar-nav a { position: relative; }

/* a faint peak divider between sections */
.lw-peak-rule {
  border: 0;
  height: 14px;
  margin: var(--sp-7) auto;
  width: 100%;
  max-width: var(--max-content);
  position: relative;
}
.lw-peak-rule::before {
  content: "";
  position: absolute; left: 0; right: 0; top: 50%;
  border-top: 1px solid var(--hair);
}
.lw-peak-rule::after {
  content: "";
  position: absolute; left: 50%; top: 2px;
  width: 12px; height: 8px;
  margin-left: -6px;
  background: var(--paper);
  border-left: 1.5px solid var(--gold);
  border-top: 1.5px solid var(--gold);
  transform: rotate(45deg) scale(0.85);
}

/* cards lift a gold peak edge on hover */
.lw-card, .lw-offer-card, .lw-rm-card, .lw-ev-card, .lw-fac-card, .lw-jr-card {
  position: relative;
  transition: border-color .25s var(--ease), box-shadow .25s var(--ease),
              transform .25s var(--ease);
}
.lw-card:hover, .lw-offer-card:hover, .lw-rm-card:hover,
.lw-ev-card:hover, .lw-fac-card:hover, .lw-jr-card:hover {
  border-color: rgba(194, 157, 72, 0.55);
  box-shadow: 0 10px 30px rgba(62, 46, 18, 0.08);
  transform: translateY(-2px);
}

/* full-bleed feature bands sit on the dark ground, not on the gold accent --
   light gold on mid gold measured 3.48:1 */
.lw-concierge, .lw-dn-cta, .lw-of-cta, .lw-abt-invite, .lw-au-cta {
  background: var(--brown-deep);
  color: #fff;
}
.lw-concierge .lw-eyebrow, .lw-dn-cta .lw-eyebrow,
.lw-of-cta .lw-eyebrow, .lw-abt-invite .lw-eyebrow, .lw-au-cta .lw-eyebrow {
  color: var(--gold-light);
}
.lw-concierge h2, .lw-concierge h3, .lw-concierge p,
.lw-dn-cta h2, .lw-dn-cta p, .lw-of-cta h2, .lw-of-cta p,
.lw-abt-invite h2, .lw-abt-invite p, .lw-au-cta h2, .lw-au-cta p {
  color: #fff;
}
.lw-concierge p, .lw-dn-cta p, .lw-of-cta p,
.lw-abt-invite p, .lw-au-cta p { color: rgba(255,255,255,0.84); }

/* ============================================================
   CHILD SINGLE PAGE
   Each transplanted block brought the .lw-pg-intro band that used to
   introduce it as a standalone page. On one page those become section
   headers: same content, section rhythm instead of page-band padding.
   ============================================================ */
body.lw-single .lw-pg-intro {
  padding-top: var(--section-y);
  padding-bottom: var(--sp-5);
  background: transparent;
}
body.lw-single .lw-pg-intro + .lw-rs,
body.lw-single .lw-pg-intro + .lw-fc,
body.lw-single .lw-pg-intro + .lw-dp,
body.lw-single .lw-pg-intro + .lw-ex,
body.lw-single .lw-pg-intro + .lw-loc,
body.lw-single .lw-pg-intro + .lw-gu { padding-top: 0; }

/* the scroll anchor sits above each block, offset for the fixed chrome */
.lw-anchor { display: block; height: 0; scroll-margin-top: 150px; }
body.lw-single section[id] { scroll-margin-top: 150px; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* alternate the section grounds so eleven stacked blocks stay legible */
body.lw-single .lw-pg-intro:nth-of-type(even) { background: var(--surface-2); }

/* anchor offset: the real chrome measures 119px, not the 150px assumed --
   the extra 31px plus the band's own 96px padding read as a dead gap */
.lw-anchor { scroll-margin-top: 124px; }
body.lw-single section[id] { scroll-margin-top: 124px; }
body.lw-single .lw-pg-intro { padding-top: var(--section-y-sm); }

/* ============================================================
   CHILD PROPERTY: warmer and more vibrant than the parent
   The parent stays minimal white. The child carries the logo gold with
   more confidence -- a gold property bar, gold section grounds and
   warmer card treatments -- while using the same type, spacing and
   components, so it still reads as one brand.
   ============================================================ */
body.lw-single .lw-prop-bar,
body.lw-single .lw-prop-bar.is-compact {
  /* translucent so the hero reads through the bar; the blur keeps the nav
     legible without making the bar a solid block */
  background: linear-gradient(100deg,
      rgba(74, 56, 20, 0.72) 0%,
      rgba(104, 80, 34, 0.66) 46%,
      rgba(133, 103, 44, 0.62) 100%) !important;
  backdrop-filter: blur(10px) saturate(1.15);
  -webkit-backdrop-filter: blur(10px) saturate(1.15);
  border-bottom: 1px solid rgba(255, 255, 255, 0.18);
}
/* once it leaves the hero the content behind is arbitrary, so it firms up */
body.lw-single .lw-prop-bar.is-stuck {
  background: linear-gradient(100deg,
      rgba(74, 56, 20, 0.90) 0%,
      rgba(104, 80, 34, 0.88) 46%,
      rgba(133, 103, 44, 0.86) 100%) !important;
  backdrop-filter: blur(14px) saturate(1.15);
  -webkit-backdrop-filter: blur(14px) saturate(1.15);
}
/* a soft shadow under the text keeps it readable on a light photo */
body.lw-single .lw-prop-bar:not(.is-stuck) .lw-prop-bar-label,
body.lw-single .lw-prop-bar:not(.is-stuck) .lw-prop-bar-nav a {
  text-shadow: 0 1px 3px rgba(30, 24, 12, 0.55);
}
body.lw-single .lw-prop-bar-label { color: #FFF3D6 !important; }
body.lw-single .lw-prop-bar-nav a { color: rgba(255,255,255,0.94) !important; }
body.lw-single .lw-prop-bar-nav a:hover,
body.lw-single .lw-prop-bar-nav a.is-active { color: #fff !important; }

/* alternating warm grounds so eleven stacked sections stay readable */
body.lw-single .lw-pg-intro:nth-of-type(odd) { background: transparent; }
body.lw-single .lw-pg-intro:nth-of-type(even) { background: #FDFAF3; }

/* the child picks up a touch more gold on its section headings */
body.lw-single .lw-pg-intro .lw-eyebrow { color: var(--gold-ink); }

/* ============================================================
   PARENT: minimal, elegant, ample white space
   The brand site stays white and quiet -- more air between sections,
   gold used sparingly as punctuation rather than as surface.
   ============================================================ */
body:not(.lw-single) {
  --section-y: clamp(72px, 9vw, 128px);
  --head-mb:   clamp(28px, 3.4vw, 48px);
}
body:not(.lw-single) .lw-sec-head, 
body:not(.lw-single) .lw-dine-head { margin-bottom: var(--head-mb); }

/* fewer, quieter rules on the parent */
body:not(.lw-single) .lw-card,
body:not(.lw-single) .lw-offer-card,
body:not(.lw-single) .lw-ev-card,
body:not(.lw-single) .lw-jr-card {
  border-color: rgba(62, 46, 18, 0.10);
  box-shadow: none;
}

/* the peak divider is the parent's main flourish */
body:not(.lw-single) .lw-peak-rule { margin: clamp(48px, 6vw, 88px) auto; }

/* ============================================================
   SECTION ILLUSTRATION (line art)
   Drawn inline so it costs no request, scales cleanly and takes
   currentColor. The roofline is the Crestline peak, so the drawing
   carries the same motif as the eyebrow chevron and list markers.
   ============================================================ */
.lw-pg-intro--illus {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: start;
  gap: clamp(20px, 3vw, 40px);
  text-align: left;
}
.lw-sec-illus {
  width: clamp(84px, 9vw, 116px);
  flex: 0 0 auto;
  color: var(--gold-ink);
  line-height: 0;
}
.lw-sec-illus svg {
  width: 100%;
  height: auto;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.4;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}
/* the shield sits in front of the boxes, so it gets an opaque ground */
.lw-sec-illus .lw-illus-fill { fill: var(--paper); }

.lw-sec-illus-copy { min-width: 0; }
.lw-pg-intro--illus .lw-eyebrow { justify-content: flex-start; }
.lw-pg-intro--illus .lw-sec-illus-copy > p:last-child {
  max-width: 62ch;
  margin-left: 0;
  margin-right: 0;
  text-align: left;
}

/* on narrow screens the drawing sits above the copy, centred */
@media (max-width: 720px) {
  .lw-pg-intro--illus {
    grid-template-columns: 1fr;
    justify-items: center;
    text-align: center;
    gap: var(--sp-4);
  }
  .lw-pg-intro--illus .lw-eyebrow { justify-content: center; }
  .lw-pg-intro--illus .lw-sec-illus-copy > p:last-child {
    margin-left: auto; margin-right: auto; text-align: center;
  }
}

/* facility card icons: line art in the same language as the section drawing */
.lw-fc-icon svg {
  width: 26px; height: 26px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.lw-fc-icon { color: var(--gold-ink); }
.lw-fc-card:hover .lw-fc-icon { background: var(--gold-ink); color: #fff; }

/* the welcome section lost its pull-quote, so the copy column is shorter than
   the imagery -- centre it rather than leaving dead space under the CTA */
body.lw-single .lw-story-copy { align-self: center; }
body.lw-single .lw-story-copy .lw-link { margin-top: var(--sp-5); }

/* ============================================================
   FACILITY CARDS -- icon centred, name centred beneath it
   Matches the supplied reference: no chip behind the icon, the
   drawing carries itself, and the label sits directly under it.
   ============================================================ */
.lw-fc-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  padding: var(--sp-6) var(--sp-5);
}
.lw-fc-icon {
  width: 56px !important;
  height: 56px !important;
  background: none !important;
  border-radius: 0 !important;
  margin: 0 0 var(--sp-4) !important;
  color: var(--gold-ink);
  display: flex;
  align-items: center;
  justify-content: center;
}
.lw-fc-icon svg {
  width: 100%;
  height: 100%;
  stroke-width: 1.5;
}
.lw-fc-card:hover .lw-fc-icon {
  background: none !important;
  color: var(--gold);
}
.lw-fc-card h3 {
  text-align: center;
  margin: 0 0 var(--sp-2);
}
.lw-fc-card p { text-align: center; margin: 0; }

/* ============================================================
   FOOTER ARTWORK -- Jaipur motif behind the footer
   Dark ground with gold ornament at the edges. A dark overlay sits
   over it so the footer copy keeps its measured contrast.
   ============================================================ */
.lw-footer {
  position: relative;
  background-color: var(--brown-deep);
  background-image:
    linear-gradient(rgba(18, 13, 5, 0.82), rgba(18, 13, 5, 0.82)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image.jpg_(2)_61b75b7d.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  /* never background-attachment: fixed -- it janks on scroll and iOS ignores it */
}

/* phones: a narrower file, and a heavier veil because the artwork crops to
   its busiest region at small widths */
@media (max-width: 720px) {
  .lw-footer {
    background-image:
      linear-gradient(rgba(18, 13, 5, 0.88), rgba(18, 13, 5, 0.88)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image.jpg_(2)_61b75b7d.png");
  }
}

/* touch: a 36px row plus the row gap clears the 44px target without
   stretching an 11-item list to ~484px, which a 44px min-height did */
@media (pointer: coarse) {
  .lw-footer a, .lw-foot-col a, .lw-foot-links a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
  }
  .lw-foot-col li { margin-bottom: 6px; }
  .lw-footer .lw-social a, .lw-footer [class*="social"] a {
    width: 44px; height: 44px; justify-content: center;
  }
}

/* reduce the work on devices that ask for it */
@media (prefers-reduced-data: reduce) {
  .lw-footer { background-image: none; background-color: var(--brown-deep); }
}

/* ============================================================
   FACILITIES SECTION -- Jaipur cityscape behind the whole band
   The artwork is a dark night scene, so the band runs light-on-dark:
   a veil holds the copy legible and the icons sit in a soft
   translucent circle so they read against any part of the image.
   ============================================================ */
.lw-fc {
  position: relative;
  background-color: var(--brown-deep);
  background-image:
    linear-gradient(rgba(16, 11, 4, 0.80), rgba(16, 11, 4, 0.80)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image_jpg_321db966.png");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 720px) {
  .lw-fc {
    background-image:
      linear-gradient(rgba(16, 11, 4, 0.86), rgba(16, 11, 4, 0.86)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_800/crestline-hotels-and-resorts/image_jpg_321db966.png");
  }
}
@media (prefers-reduced-data: reduce) {
  .lw-fc { background-image: none; }
}

/* the cards become glass on the artwork rather than white boxes */
.lw-fc .lw-fc-card {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(247, 217, 152, 0.20);
  border-radius: var(--radius-lg);
}
.lw-fc .lw-fc-card:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(247, 217, 152, 0.42);
  box-shadow: none;
  transform: translateY(-2px);
}
.lw-fc .lw-fc-card h3 { color: #FFF3D8; }
.lw-fc .lw-fc-card p  { color: rgba(255, 255, 255, 0.80); }

/* icons: a soft tile so the stroke reads over any part of the artwork */
.lw-fc .lw-fc-icon {
  width: 72px !important;
  height: 72px !important;
  border-radius: 50% !important;
  margin: 0 0 var(--sp-4) !important;
  background: rgba(247, 217, 152, 0.10) !important;
  border: 1px solid rgba(247, 217, 152, 0.26);
  color: #F7D998;
  display: flex;
  align-items: center;
  justify-content: center;
}
.lw-fc .lw-fc-icon svg { width: 38px; height: 38px; stroke-width: 1.6; }
.lw-fc .lw-fc-card:hover .lw-fc-icon {
  background: rgba(247, 217, 152, 0.18) !important;
  color: #FFF0CC;
}

/* the section intro that sits directly above the band inherits the dark
   treatment so the heading does not float on white above a dark band */
.lw-fc-intro, .lw-pg-intro:has(+ .lw-fc) {
  background: var(--brown-deep);
}
.lw-pg-intro:has(+ .lw-fc) h2,
.lw-pg-intro:has(+ .lw-fc) .lw-h2 { color: #FFF3D8; }
.lw-pg-intro:has(+ .lw-fc) h2 em,
.lw-pg-intro:has(+ .lw-fc) .lw-h2 em { color: var(--gold-light); }
.lw-pg-intro:has(+ .lw-fc) p { color: rgba(255, 255, 255, 0.82); }
.lw-pg-intro:has(+ .lw-fc) .lw-eyebrow { color: var(--gold-light); }

/* the intro band above the facilities section carries the same artwork, so the
   heading sits on the dark ground its light text was written for. This has to
   beat body.lw-single .lw-pg-intro:nth-of-type(even), hence the compound. */
body.lw-single .lw-pg-intro:has(+ .lw-fc),
body.lw-single .lw-pg-intro:nth-of-type(even):has(+ .lw-fc),
body.lw-single .lw-pg-intro:nth-of-type(odd):has(+ .lw-fc) {
  background-color: var(--brown-deep) !important;
  background-image:
    linear-gradient(rgba(16, 11, 4, 0.86), rgba(16, 11, 4, 0.80)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image_jpg_321db966.png") !important;
  background-size: cover;
  background-position: center bottom;
  background-repeat: no-repeat;
  padding-bottom: var(--sp-6);
}
/* and the band below continues the same image without a seam */
.lw-fc { background-position: center top; }

/* ============================================================
   FOOTER -- restrained, and a third shorter
   ============================================================ */
.lw-footer {
  padding: clamp(40px, 4.4vw, 60px) var(--pad-x) 0 !important;
  font-size: var(--fs-sm);
}
.lw-footer .lw-foot-inner, .lw-footer > .lw-foot-grid {
  padding-bottom: clamp(24px, 2.6vw, 36px);
}

/* the 126px wordmark was decoration only -- reduce it to a quiet mark */
.lw-foot-wordmark {
  font-size: clamp(28px, 4vw, 46px) !important;
  line-height: 1 !important;
  opacity: 0.10;
  margin: 0 !important;
  padding: 0 !important;
  letter-spacing: 0.18em;
  pointer-events: none;
}

/* column headings: small caps, gold, generous tracking */
.lw-foot-col h5 {
  font-size: var(--fs-xs) !important;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-light) !important;
  margin: 0 0 var(--sp-3) !important;
  font-weight: 600;
}
.lw-foot-col ul { margin: 0; padding: 0; list-style: none; }
.lw-foot-col li { margin-bottom: 4px; }
.lw-foot-col a, .lw-footer address, .lw-foot-brand p {
  font-size: var(--fs-sm);
  line-height: 1.55;
}

/* the long Property list flows into two columns instead of one tall stack */
.lw-foot-col:has(li:nth-child(7)) ul {
  column-count: 2;
  column-gap: var(--sp-5);
}
.lw-foot-col:has(li:nth-child(7)) li { break-inside: avoid; }

/* the bottom bar: one hairline, quiet type */
.lw-footer-bar {
  border-top: 1px solid rgba(247, 217, 152, 0.16);
  padding: var(--sp-4) 0 !important;
  font-size: var(--fs-xs);
  color: rgba(255, 255, 255, 0.62);
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-3) var(--sp-5);
  align-items: center;
  justify-content: space-between;
}
.lw-foot-links { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-4); }

@media (max-width: 720px) {
  .lw-footer { padding-top: clamp(32px, 8vw, 44px) !important; }
  .lw-foot-col:has(li:nth-child(7)) ul { column-count: 2; column-gap: var(--sp-4); }
  .lw-footer-bar { justify-content: center; text-align: center; }
}

/* ============================================================
   FOOTER v2 -- scoped to .lw-footer (a bare `footer` selector also
   matches the <footer> inside every testimonial blockquote)
   ============================================================ */
.lw-footer .lw-footer-top {
  display: grid;
  grid-template-columns: 1.5fr 1.6fr 1fr 1.2fr;
  gap: clamp(20px, 3vw, 48px);
  align-items: start;
  padding-bottom: clamp(22px, 2.4vw, 34px);
}
.lw-footer .lw-foot-brand img { max-width: 150px; height: auto; margin-bottom: var(--sp-3); }
.lw-footer .lw-foot-brand p {
  font-size: var(--fs-sm);
  line-height: 1.6;
  max-width: 34ch;
  margin-bottom: var(--sp-4);
}

/* the 11-item Property list flows into two sub-columns */
.lw-footer .lw-foot-col:first-of-type ul {
  column-count: 2;
  column-gap: clamp(16px, 2vw, 32px);
}
.lw-footer .lw-foot-col:first-of-type li { break-inside: avoid; }

/* links: 24px+ of target from padding, without a tall min-height */
.lw-footer .lw-foot-col a {
  display: inline-block;
  padding: 4px 0;
  line-height: 1.45;
}
.lw-footer .lw-foot-col li { margin: 0; }

/* social: proper touch targets, quiet styling */
.lw-footer .lw-foot-social { display: flex; gap: var(--sp-2); }
.lw-footer .lw-foot-social a {
  width: 40px; height: 40px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(247, 217, 152, 0.28);
  border-radius: 50%;
  color: var(--gold-light);
  transition: background .2s var(--ease), border-color .2s var(--ease);
}
.lw-footer .lw-foot-social a:hover {
  background: rgba(247, 217, 152, 0.14);
  border-color: rgba(247, 217, 152, 0.5);
}
@media (pointer: coarse) {
  .lw-footer .lw-foot-social a { width: 44px; height: 44px; }
  .lw-footer .lw-foot-col a { padding: 7px 0; }
}

.lw-footer address { font-style: normal; line-height: 1.6; }

@media (max-width: 900px) {
  .lw-footer .lw-footer-top { grid-template-columns: 1fr 1fr; gap: var(--sp-5); }
}
@media (max-width: 560px) {
  .lw-footer .lw-footer-top { grid-template-columns: 1fr; gap: var(--sp-5); }
  .lw-footer .lw-foot-col:first-of-type ul { column-count: 2; }
}

/* the Property list: a real 2-track grid (column-count could not split it --
   each <li> filled the full column width, so there was nothing to balance) */
.lw-footer .lw-foot-col:has(li:nth-child(7)) ul {
  column-count: initial !important;
  display: grid !important;
  grid-template-columns: 1fr 1fr;
  gap: 0 clamp(14px, 1.6vw, 26px);
  align-content: start;
}
.lw-footer .lw-foot-col:has(li:nth-child(7)) li { width: auto; }

/* the brand block was the second tallest child at 222px */
.lw-footer .lw-foot-brand img { max-width: 132px; margin-bottom: var(--sp-2); }
.lw-footer .lw-foot-brand p { max-width: 30ch; margin-bottom: var(--sp-3); font-size: var(--fs-xs); line-height: 1.6; }

/* the decorative wordmark adds height for no information */
.lw-foot-wordmark { display: none !important; }

/* the legal bar links sat at 23px, a pixel under the target floor */
.lw-footer .lw-foot-links a,
.lw-footer .lw-foot-credit a {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 3px 0;
}
@media (pointer: coarse) {
  .lw-footer .lw-foot-links a,
  .lw-footer .lw-foot-credit a { min-height: 44px; padding: 10px 0; }
}

/* the floating call + back-to-top buttons overlapped the legal links */
.lw-footer .lw-footer-bar { padding-right: 130px !important; }
@media (max-width: 720px) {
  .lw-footer .lw-footer-bar {
    padding-right: 0 !important;
    padding-bottom: 84px !important;   /* clear the floating buttons */
  }
}

/* ============================================================
   ARTWORK UPDATE + FACILITY CARDS WITHOUT BOXES
   The new skyline is lighter than the previous artwork, so the veil is
   deepened to keep the light copy at contrast. Cards lose their box:
   icon, name, then the supporting line, directly on the artwork.
   ============================================================ */
.lw-fc,
body.lw-single .lw-pg-intro:has(+ .lw-fc),
body.lw-single .lw-pg-intro:nth-of-type(even):has(+ .lw-fc),
body.lw-single .lw-pg-intro:nth-of-type(odd):has(+ .lw-fc) {
  background-color: #171009 !important;
  background-image:
    linear-gradient(rgba(14, 10, 4, 0.86), rgba(14, 10, 4, 0.86)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
  background-size: cover;
  background-repeat: no-repeat;
}
body.lw-single .lw-pg-intro:has(+ .lw-fc) { background-position: center top; }
.lw-fc { background-position: center bottom; }

@media (max-width: 1024px) {
  .lw-fc,
  body.lw-single .lw-pg-intro:has(+ .lw-fc) {
    background-image:
      linear-gradient(rgba(14, 10, 4, 0.88), rgba(14, 10, 4, 0.88)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
  }
}
@media (max-width: 720px) {
  .lw-fc,
  body.lw-single .lw-pg-intro:has(+ .lw-fc) {
    background-image:
      linear-gradient(rgba(14, 10, 4, 0.90), rgba(14, 10, 4, 0.90)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
  }
}

/* ---- cards: no box, just icon + name + line ---- */
.lw-fc .lw-fc-card,
.lw-fc .lw-fc-card:hover {
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  transform: none !important;
  padding: var(--sp-4) var(--sp-3) !important;
}
.lw-fc .lw-fc-icon,
.lw-fc .lw-fc-card:hover .lw-fc-icon {
  background: none !important;
  border: 0 !important;
  width: 52px !important;
  height: 52px !important;
  margin: 0 auto var(--sp-3) !important;
}
.lw-fc .lw-fc-icon svg { width: 46px; height: 46px; stroke-width: 1.5; }
.lw-fc .lw-fc-card:hover .lw-fc-icon { color: #FFF0CC; }
.lw-fc .lw-fc-card h3 { font-size: var(--fs-h4); margin-bottom: var(--sp-1); }
.lw-fc .lw-fc-card p  { font-size: var(--fs-sm); }

/* a little more air between the rows now the boxes are gone */
.lw-fc .lw-fc-grid { gap: clamp(28px, 3.4vw, 52px) var(--card-gap); }

/* ---- footer artwork ---- */
.lw-footer {
  background-color: #241C12 !important;
  background-image:
    linear-gradient(rgba(20, 15, 8, 0.78), rgba(20, 15, 8, 0.78)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image2.jpg_f35904fe.png") !important;
  background-size: cover !important;
  background-position: center !important;
}
@media (max-width: 1024px) {
  .lw-footer {
    background-image:
      linear-gradient(rgba(20, 15, 8, 0.82), rgba(20, 15, 8, 0.82)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image2.jpg_f35904fe.png") !important;
  }
}
@media (max-width: 720px) {
  .lw-footer {
    background-image:
      linear-gradient(rgba(20, 15, 8, 0.86), rgba(20, 15, 8, 0.86)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image2.jpg_f35904fe.png") !important;
  }
}

/* inline links inside prose need a tappable height too (an FAQ email link
   measured 17px) -- pad without breaking the paragraph's line rhythm */
.lw-faq-a a, .lw-tc-block a, .lw-story-body a, .lw-body a:not(.lw-btn) {
  display: inline-block;
  padding: 4px 0;
}
@media (pointer: coarse) {
  .lw-faq-a a, .lw-tc-block a, .lw-story-body a, .lw-body a:not(.lw-btn) {
    padding: 6px 0;
  }
}

/* the hero booking panel is a dark surface -- my global input colour made the
   date fields dark-on-dark (measured 1.45:1 computed, 1.2:1 by pixels) */
.lw-hero-book input,
.lw-hero-book select,
.lw-hero-book input[type="date"] {
  color: #FFF3DC !important;
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(247, 217, 152, 0.34);
}
.lw-hero-book label,
.lw-hero-book .lw-hero-book-lbl { color: rgba(255, 243, 220, 0.80) !important; }
/* the native date picker indicator is dark by default on a dark field */
.lw-hero-book input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(1) brightness(1.6);
  opacity: 0.85;
  cursor: pointer;
}

/* ============================================================
   FACILITIES AS ONE FOLD
   The heading band and the icon grid become a single screen: the
   intro loses its own section padding and the grid runs 6 across so
   11 items need two rows, not three.
   ============================================================ */
body.lw-single .lw-pg-intro:has(+ .lw-fc) {
  padding-top: clamp(28px, 4vh, 52px) !important;
  padding-bottom: 0 !important;
}
body.lw-single .lw-pg-intro:has(+ .lw-fc) .lw-pg-intro-inner { margin-bottom: 0; }
body.lw-single .lw-pg-intro:has(+ .lw-fc) h2,
body.lw-single .lw-pg-intro:has(+ .lw-fc) .lw-h2 {
  margin-bottom: 0 !important;
  font-size: clamp(26px, 3.2vw, 40px) !important;
}

.lw-fc {
  padding-top: clamp(20px, 3vh, 36px) !important;
  padding-bottom: clamp(28px, 4vh, 52px) !important;
}

/* 6 across on a wide screen: 11 cards land in two rows */
@media (min-width: 1200px) {
  .lw-fc .lw-fc-grid {
    grid-template-columns: repeat(6, 1fr) !important;
    gap: clamp(18px, 2.4vh, 34px) var(--sp-4) !important;
  }
}
@media (min-width: 900px) and (max-width: 1199px) {
  .lw-fc .lw-fc-grid { grid-template-columns: repeat(4, 1fr) !important; }
}

/* the card itself only needs the icon, a name and one short line */
.lw-fc .lw-fc-card { padding: var(--sp-2) var(--sp-2) !important; }
.lw-fc .lw-fc-icon { width: 44px !important; height: 44px !important; margin-bottom: var(--sp-2) !important; }
.lw-fc .lw-fc-icon svg { width: 40px; height: 40px; }
.lw-fc .lw-fc-card h3 { font-size: var(--fs-sm) !important; line-height: 1.3; margin-bottom: 2px !important; }
.lw-fc .lw-fc-card p  { font-size: var(--fs-xs) !important; line-height: 1.45; }

/* short viewports: let it scroll rather than crush the type */
@media (max-height: 700px) {
  body.lw-single .lw-pg-intro:has(+ .lw-fc) { padding-top: var(--sp-5) !important; }
  .lw-fc { padding-bottom: var(--sp-5) !important; }
}

/* ============================================================
   FACILITIES: 4/4/4, one continuous background, +20% height
   The heading band and the grid each painted the artwork, so the
   image restarted at the join and looked like two pictures. Now a
   single fixed-size layer spans both, positioned so the halves line
   up into one continuous scene.
   ============================================================ */

/* one image across both bands: same size and origin on each, so the
   second continues the first instead of restarting */
body.lw-single .lw-pg-intro:has(+ .lw-fc),
.lw-fc {
  background-attachment: scroll;
  background-repeat: no-repeat;
  background-color: #171009 !important;
}
body.lw-single .lw-pg-intro:has(+ .lw-fc) {
  background-image:
    linear-gradient(rgba(14,10,4,0.86), rgba(14,10,4,0.86)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
  background-size: 100% 760px, 100% 760px !important;
  background-position: top left !important;
}
.lw-fc {
  background-image:
    linear-gradient(rgba(14,10,4,0.86), rgba(14,10,4,0.86)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
  background-size: 100% 760px, 100% 760px !important;
  background-position: bottom left !important;
}

/* 4 across at every desktop width -> 12 cards read as 4/4/4 */
@media (min-width: 1100px) {
  .lw-fc .lw-fc-grid {
    grid-template-columns: repeat(4, 1fr) !important;
    gap: clamp(22px, 3vh, 40px) var(--sp-5) !important;
  }
}
@media (min-width: 700px) and (max-width: 1099px) {
  .lw-fc .lw-fc-grid { grid-template-columns: repeat(3, 1fr) !important; }
}

/* +20% height on the band */
body.lw-single .lw-pg-intro:has(+ .lw-fc) {
  padding-top: clamp(34px, 4.8vh, 62px) !important;
}
.lw-fc {
  padding-top: clamp(24px, 3.6vh, 44px) !important;
  padding-bottom: clamp(34px, 4.8vh, 62px) !important;
}
.lw-fc .lw-fc-card { padding: var(--sp-3) var(--sp-2) !important; }
.lw-fc .lw-fc-icon { width: 50px !important; height: 50px !important; }
.lw-fc .lw-fc-icon svg { width: 46px; height: 46px; }

/* the flat 0.86 wash hid the artwork -- grade it instead, so it is deep only
   where the copy sits and light through the middle where the skyline shows */
body.lw-single .lw-pg-intro:has(+ .lw-fc) {
  background-image:
    linear-gradient(180deg,
      rgba(14,10,4,0.86) 0%,
      rgba(14,10,4,0.72) 42%,
      rgba(14,10,4,0.60) 100%),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
}
.lw-fc {
  background-image:
    linear-gradient(180deg,
      rgba(14,10,4,0.60) 0%,
      rgba(14,10,4,0.68) 34%,
      rgba(14,10,4,0.80) 100%),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg") !important;
}
/* a soft shadow under the card text keeps it readable over the lighter areas */
.lw-fc .lw-fc-card h3,
.lw-fc .lw-fc-card p { text-shadow: 0 1px 6px rgba(10, 7, 2, 0.75); }
.lw-fc .lw-fc-icon { filter: drop-shadow(0 1px 4px rgba(10, 7, 2, 0.6)); }

/* ============================================================
   ONE SECTION, ONE BACKGROUND
   The wrapper paints the artwork a single time across the whole
   block; the heading band and grid inside are transparent, so the
   picture is continuous with no seam.
   ============================================================ */
.lw-fc-block {
  position: relative;
  background-color: #171009;
  background-image:
    linear-gradient(180deg,
      rgba(14,10,4,0.88) 0%,
      rgba(14,10,4,0.70) 22%,
      rgba(14,10,4,0.58) 52%,
      rgba(14,10,4,0.72) 82%,
      rgba(14,10,4,0.86) 100%),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg");
  background-size: cover, cover;
  background-position: center, center;
  background-repeat: no-repeat;
}
/* the children must not paint the image again -- that was the seam */
.lw-fc-block > .lw-pg-intro,
.lw-fc-block > .lw-fc,
body.lw-single .lw-fc-block > .lw-pg-intro:has(+ .lw-fc),
body.lw-single .lw-fc-block > .lw-pg-intro:nth-of-type(even),
body.lw-single .lw-fc-block > .lw-pg-intro:nth-of-type(odd) {
  background-image: none !important;
  background-color: transparent !important;
}
@media (max-width: 1024px) {
  .lw-fc-block { background-image:
    linear-gradient(180deg, rgba(14,10,4,0.90) 0%, rgba(14,10,4,0.74) 24%, rgba(14,10,4,0.64) 52%, rgba(14,10,4,0.78) 82%, rgba(14,10,4,0.88) 100%),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image3_a8285a44.jpg"); }
}
@media (max-width: 720px) {
  .lw-fc-block { background-image:
    linear-gradient(180deg, rgba(14,10,4,0.92) 0%, rgba(14,10,4,0.80) 24%, rgba(14,10,4,0.72) 52%, rgba(14,10,4,0.82) 82%, rgba(14,10,4,0.90) 100%),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image3_a8285a44.jpg"); }
}

/* ============================================================
   FOOTER -- classic 4/5-star hotel
   Property crest centred at the top, address and telephone beneath,
   a hairline rule, then one centred row of small-caps links.
   ============================================================ */
.lw-footer {
  padding: clamp(48px, 5.5vw, 76px) var(--pad-x) 0 !important;
  text-align: center;
}
.lw-footer .lw-ft-crest { max-width: 720px; margin: 0 auto; }
.lw-footer .lw-ft-mark {
  width: clamp(112px, 11vw, 150px);
  height: auto;
  margin: 0 auto var(--sp-4);
  display: block;
}
.lw-footer .lw-ft-tag {
  font-family: var(--f-display);
  font-size: var(--fs-xs);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin: 0 0 var(--sp-4);
}
.lw-footer .lw-ft-addr {
  font-style: normal;
  font-size: var(--fs-sm);
  line-height: 1.85;
  color: rgba(255, 255, 255, 0.80);
  margin: 0 0 var(--sp-3);
}
.lw-footer .lw-ft-contact {
  font-size: var(--fs-sm);
  color: rgba(255, 255, 255, 0.80);
  margin: 0 0 var(--sp-5);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: var(--sp-2) var(--sp-3);
}
.lw-footer .lw-ft-contact a {
  color: rgba(255, 255, 255, 0.86);
  text-decoration: none;
  padding: 4px 0;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}
.lw-footer .lw-ft-contact a:hover { color: var(--gold-light); }
.lw-footer .lw-ft-sep { color: rgba(247, 217, 152, 0.45); }

.lw-footer .lw-ft-social {
  display: flex;
  justify-content: center;
  gap: var(--sp-3);
  margin-bottom: clamp(28px, 3.4vw, 44px);
}
.lw-footer .lw-ft-social a {
  width: 42px; height: 42px;
  display: inline-flex; align-items: center; justify-content: center;
  border: 1px solid rgba(247, 217, 152, 0.30);
  border-radius: 50%;
  color: var(--gold-light);
  transition: background .2s var(--ease), border-color .2s var(--ease);
}
.lw-footer .lw-ft-social a:hover {
  background: rgba(247, 217, 152, 0.14);
  border-color: rgba(247, 217, 152, 0.55);
}

/* one centred row of small-caps links, between hairlines */
.lw-footer .lw-ft-nav {
  border-top: 1px solid rgba(247, 217, 152, 0.16);
  border-bottom: 1px solid rgba(247, 217, 152, 0.16);
  padding: var(--sp-4) 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--sp-2) clamp(18px, 2.4vw, 34px);
}
.lw-footer .lw-ft-nav a {
  font-size: var(--fs-xs);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.82);
  text-decoration: none;
  min-height: 28px;
  display: inline-flex;
  align-items: center;
  transition: color .2s var(--ease);
}
.lw-footer .lw-ft-nav a:hover { color: var(--gold-light); }

/* the legal line, quiet and evenly spread */
.lw-footer .lw-footer-bar {
  border-top: 0 !important;
  padding: var(--sp-5) 0 var(--sp-5) !important;
  font-size: var(--fs-xs);
  color: rgba(255, 255, 255, 0.56);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--sp-2) var(--sp-5);
  padding-right: 130px !important;
}
.lw-footer .lw-foot-links { display: flex; flex-wrap: wrap; gap: var(--sp-2) var(--sp-4); }

@media (pointer: coarse) {
  .lw-footer .lw-ft-nav a,
  .lw-footer .lw-ft-contact a,
  .lw-footer .lw-foot-links a { min-height: 44px; }
  .lw-footer .lw-ft-social a { width: 44px; height: 44px; }
}
@media (max-width: 720px) {
  .lw-footer { padding-top: clamp(36px, 9vw, 52px) !important; }
  .lw-footer .lw-ft-nav { gap: var(--sp-1) var(--sp-4); }
  .lw-footer .lw-footer-bar {
    justify-content: center;
    text-align: center;
    padding-right: 0 !important;
    padding-bottom: 84px !important;
  }
}

/* footer contact icons: same line-art language as the facility icons */
.lw-footer .lw-ft-ico {
  width: 15px;
  height: 15px;
  flex: 0 0 auto;
  fill: none;
  stroke: var(--gold-light);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
  margin-right: 7px;
}
.lw-footer .lw-ft-contact a {
  display: inline-flex;
  align-items: center;
  gap: 0;
}
.lw-footer .lw-ft-contact a:hover .lw-ft-ico { stroke: #fff; }

/* ============================================================
   FAQ -- open rows with hairlines, as per the reference
   No cards, no borders, no fills: question left, thin + right,
   a hairline under each row. Our own type is kept.
   ============================================================ */
.lw-faq .lw-faq-item {
  background: none !important;
  border: 0 !important;
  border-bottom: 1px solid var(--hair) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  margin: 0 !important;
  transform: none !important;
}
.lw-faq .lw-faq-item:first-of-type { border-top: 1px solid var(--hair) !important; }

.lw-faq .lw-faq-q {
  font-family: var(--f-display);
  font-size: clamp(15px, 1.2vw, 17px);
  font-weight: 400;
  line-height: 1.45;
  color: var(--ink);
  background: none !important;
  border: 0 !important;
  width: 100%;
  text-align: left;
  padding: clamp(16px, 1.8vw, 22px) 0 !important;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-4);
  cursor: pointer;
}
.lw-faq .lw-faq-q:hover { color: var(--gold-ink); }

/* the + becomes a thin mark, and turns to a - when open */
.lw-faq .lw-faq-q-icon {
  flex: 0 0 auto;
  width: 18px; height: 18px;
  position: relative;
  color: var(--ink);
  background: none !important;
  border: 0 !important;
}
.lw-faq .lw-faq-q-icon i { display: none !important; }
.lw-faq .lw-faq-q-icon::before,
.lw-faq .lw-faq-q-icon::after {
  content: "";
  position: absolute;
  left: 50%; top: 50%;
  background: currentColor;
  transition: transform .28s var(--ease), opacity .28s var(--ease);
}
.lw-faq .lw-faq-q-icon::before { width: 15px; height: 1.4px; transform: translate(-50%, -50%); }
.lw-faq .lw-faq-q-icon::after  { width: 1.4px; height: 15px; transform: translate(-50%, -50%); }
.lw-faq .lw-faq-item.is-open .lw-faq-q-icon::after { transform: translate(-50%, -50%) rotate(90deg); opacity: 0; }
.lw-faq .lw-faq-item.is-open .lw-faq-q { color: var(--gold-ink); }

.lw-faq .lw-faq-a-inner {
  padding: 0 0 clamp(16px, 1.8vw, 22px) !important;
  max-width: 76ch;
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--muted);
}

/* the category chips stay, but quieter */
.lw-faq .lw-faq-cats { margin-bottom: clamp(18px, 2.2vw, 30px); }
.lw-faq .lw-faq-cat {
  background: none;
  border: 1px solid var(--hair);
  border-radius: 999px;
  padding: 8px 18px;
  min-height: 36px;
  font-size: var(--fs-xs);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted);
}
.lw-faq .lw-faq-cat.is-active {
  background: var(--gold-ink);
  border-color: var(--gold-ink);
  color: #fff;
}
@media (pointer: coarse) { .lw-faq .lw-faq-cat { min-height: 44px; } }

/* ============================================================
   NEWSLETTER -- shorter, with the consent line beside the field
   ============================================================ */
.lw-news {
  padding-top: clamp(34px, 4vw, 54px) !important;
  padding-bottom: clamp(34px, 4vw, 54px) !important;
  background: var(--surface-2);
}
.lw-news .lw-news-inner {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: clamp(24px, 4vw, 64px);
  align-items: center;
}
.lw-news .lw-news-copy h3 {
  font-size: clamp(21px, 2.2vw, 28px) !important;
  line-height: 1.25;
  margin-bottom: var(--sp-2) !important;
}
.lw-news .lw-news-copy .lw-body {
  font-size: var(--fs-sm);
  line-height: 1.65;
  margin: 0;
  max-width: 46ch;
}
.lw-news .lw-news-form { display: grid; gap: var(--sp-3); }
.lw-news .lw-news-check {
  font-size: var(--fs-xs);
  color: var(--muted);
  align-items: center;
}
@media (max-width: 860px) {
  .lw-news .lw-news-inner { grid-template-columns: 1fr; gap: var(--sp-5); }
}

/* ============================================================
   WELCOME SECTION -- pale Rajasthani texture below the hero
   The artwork is light, so no dark veil is needed: a soft white
   wash keeps the busiest corners from competing with the copy.
   ============================================================ */
body.lw-single .lw-story {
  background-color: #FDFBF6;
  background-image:
    linear-gradient(rgba(253, 251, 246, 0.62), rgba(253, 251, 246, 0.62)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image4_5ee7d895.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 1024px) {
  body.lw-single .lw-story {
    background-image:
      linear-gradient(rgba(253, 251, 246, 0.68), rgba(253, 251, 246, 0.68)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image4_5ee7d895.jpg");
  }
}
@media (max-width: 720px) {
  body.lw-single .lw-story {
    background-image:
      linear-gradient(rgba(253, 251, 246, 0.74), rgba(253, 251, 246, 0.74)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image4_5ee7d895.jpg");
  }
}
@media (prefers-reduced-data: reduce) {
  body.lw-single .lw-story { background-image: none; }
}

/* the section intro paragraphs gain 10% either side (62ch -> 75ch) */
.lw-pg-intro-inner p,
.lw-au-intro-inner .lw-au-lede,
.lw-abt-prologue p {
  max-width: 75ch;
}

/* ============================================================
   CONSISTENT PAGE EDGES
   The gutter is already a uniform 72px (and symmetrical left/right).
   The three inner caps -- 1360 / 900 / 720 -- were producing three
   different apparent edges, so the two reading widths become one.
   ============================================================ */
.lw-footer .lw-ft-crest,
.lw-ct .lw-ct-inner,
.lw-au-intro-inner,
.lw-abt-prologue > div {
  max-width: 900px;
}

/* ============================================================
   NEWSLETTER -- one horizontal line, per the reference
   Envelope, heading, underlined field, outlined button.
   ============================================================ */
.lw-news { background: var(--surface-2); padding: clamp(26px, 3vw, 40px) var(--pad-x) !important; }
.lw-nl {
  max-width: var(--max-content);
  margin: 0 auto;
  display: grid;
  grid-template-columns: auto auto minmax(0, 1fr);
  align-items: center;
  gap: clamp(14px, 2vw, 28px);
}
.lw-nl-ico {
  width: 42px; height: 34px;
  fill: none; stroke: var(--ink);
  stroke-width: 1.5; stroke-linecap: round; stroke-linejoin: round;
}
.lw-nl-title {
  font-family: var(--f-display);
  font-size: clamp(20px, 2.1vw, 30px) !important;
  font-weight: 400;
  color: var(--ink);
  margin: 0 !important;
  white-space: nowrap;
}
.lw-nl-form {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: clamp(14px, 2vw, 30px);
}
.lw-nl-field { display: block; }
.lw-nl-field input {
  width: 100%;
  background: none;
  border: 0;
  border-bottom: 1px solid var(--hair-strong);
  border-radius: 0;
  padding: 10px 2px;
  font-size: var(--fs-body);
  color: var(--ink);
  min-height: 44px;
}
.lw-nl-field input::placeholder { color: var(--muted); }
.lw-nl-field input:focus-visible {
  outline: none;
  border-bottom-color: var(--gold-ink);
  box-shadow: 0 1px 0 0 var(--gold-ink);
}
.lw-nl-btn {
  background: none;
  border: 1px solid var(--ink);
  border-radius: 0;
  color: var(--ink);
  font-family: var(--f-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  padding: 14px 30px;
  min-height: 48px;
  cursor: pointer;
  white-space: nowrap;
  transition: background .22s var(--ease), color .22s var(--ease), border-color .22s var(--ease);
}
.lw-nl-btn:hover { background: var(--ink); color: #fff; border-color: var(--ink); }

.lw-nl-consent {
  grid-column: 1 / -1;
  display: flex;
  align-items: center;
  gap: var(--sp-2);
  font-size: var(--fs-xs);
  color: var(--muted);
}
.lw-sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip-path: inset(50%); white-space: nowrap; border: 0;
}

@media (max-width: 900px) {
  .lw-nl { grid-template-columns: auto minmax(0, 1fr); }
  .lw-nl-form { grid-column: 1 / -1; }
}
@media (max-width: 560px) {
  .lw-nl { grid-template-columns: 1fr; justify-items: start; }
  .lw-nl-form { grid-template-columns: 1fr; gap: var(--sp-3); }
  .lw-nl-btn { width: 100%; }
  .lw-nl-title { white-space: normal; }
}

/* the newsletter consent checkbox measured 20px -- under the 24px floor */
.lw-nl-consent input[type="checkbox"] {
  width: 24px !important; height: 24px !important;
  min-width: 24px !important; min-height: 24px !important;
}
@media (pointer: coarse) {
  .lw-nl-consent input[type="checkbox"] {
    width: 28px !important; height: 28px !important;
    min-width: 28px !important; min-height: 28px !important;
  }
}

/* ============================================================
   WHITE SECTIONS -- the near-white Rajasthani motif
   Applied where the ground was plain white, so the page carries the
   same texture family throughout. The artwork is very light, so the
   existing dark type sits on it unchanged.
   ============================================================ */
body.lw-single .lw-rs,
body.lw-single .lw-dp,
body.lw-single .lw-ex,
body.lw-single .lw-gu,
body.lw-single .lw-loc,
body.lw-single .lw-faq,
body.lw-single .lw-voices,
body.lw-single .lw-ct,
body.lw-single .lw-pg-intro:not(:has(+ .lw-fc)) {
  background-color: #FFFFFF;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.70), rgba(255, 255, 255, 0.70)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 1024px) {
  body.lw-single .lw-rs, body.lw-single .lw-dp, body.lw-single .lw-ex,
  body.lw-single .lw-gu, body.lw-single .lw-loc, body.lw-single .lw-faq,
  body.lw-single .lw-voices, body.lw-single .lw-ct,
  body.lw-single .lw-pg-intro:not(:has(+ .lw-fc)) {
    background-image:
      linear-gradient(rgba(255,255,255,0.74), rgba(255,255,255,0.74)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}
@media (max-width: 720px) {
  body.lw-single .lw-rs, body.lw-single .lw-dp, body.lw-single .lw-ex,
  body.lw-single .lw-gu, body.lw-single .lw-loc, body.lw-single .lw-faq,
  body.lw-single .lw-voices, body.lw-single .lw-ct,
  body.lw-single .lw-pg-intro:not(:has(+ .lw-fc)) {
    background-image:
      linear-gradient(rgba(255,255,255,0.78), rgba(255,255,255,0.78)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}
@media (prefers-reduced-data: reduce) {
  body.lw-single .lw-rs, body.lw-single .lw-dp, body.lw-single .lw-ex,
  body.lw-single .lw-gu, body.lw-single .lw-loc, body.lw-single .lw-faq,
  body.lw-single .lw-voices, body.lw-single .lw-ct { background-image: none; }
}

/* ============================================================
   TESTIMONIALS -- avatar, quoted title, text, name (per reference)
   ============================================================ */
.lw-voices .lw-voice {
  background: none !important;
  border: 0 !important;
  box-shadow: none !important;
  text-align: center;
  padding: var(--sp-4) var(--sp-5) !important;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.lw-voices .lw-voice-av {
  width: 76px; height: 76px;
  border-radius: 50%;
  object-fit: cover;
  margin: 0 auto var(--sp-4);
  border: 1px solid var(--hair);
  background: var(--surface-2);
}
.lw-voices .lw-voice-title {
  font-family: var(--f-display);
  font-size: clamp(19px, 1.8vw, 24px) !important;
  font-weight: 400;
  color: var(--ink);
  margin: 0 0 var(--sp-3) !important;
}
.lw-voices .lw-voice p {
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--muted);
  margin: 0 0 var(--sp-3);
  max-width: 38ch;
}
.lw-voices .lw-voice-name {
  font-style: normal;
  font-size: var(--fs-xs);
  letter-spacing: 0.08em;
  color: var(--gold-ink);
}

/* testimonials: three per view, as in the reference */
.lw-voices .lw-voices-track > .lw-voice { flex: 0 0 33.3333% !important; min-width: 33.3333% !important; }
@media (max-width: 1024px) {
  .lw-voices .lw-voices-track > .lw-voice { flex: 0 0 50% !important; min-width: 50% !important; }
}
@media (max-width: 640px) {
  .lw-voices .lw-voices-track > .lw-voice { flex: 0 0 100% !important; min-width: 100% !important; }
}

/* the card width must match perView() exactly or the track pages wrongly
   (the gap is 26px, set by .lw-voices-track column-gap) */
.lw-voices .lw-voices-track > .lw-voice {
  flex: 0 0 calc((100% - 52px) / 3) !important;
  min-width: calc((100% - 52px) / 3) !important;
}
@media (max-width: 1023px) {
  .lw-voices .lw-voices-track > .lw-voice {
    flex: 0 0 calc((100% - 26px) / 2) !important;
    min-width: calc((100% - 26px) / 2) !important;
  }
}
@media (max-width: 639px) {
  .lw-voices .lw-voices-track > .lw-voice { flex: 0 0 100% !important; min-width: 100% !important; }
}

/* the hero booking fields dropped to 21px -- restore a tappable height */
.lw-hero-book input,
.lw-hero-book select,
.lw-hero-book input[type="date"] {
  min-height: 30px;
  padding-top: 4px;
  padding-bottom: 4px;
}
@media (pointer: coarse) {
  .lw-hero-book input, .lw-hero-book select, .lw-hero-book input[type="date"] {
    min-height: 44px;
  }
}

/* telephone and email links are tapped -- give them a real target everywhere */
a[href^="tel:"], a[href^="mailto:"],
a[href*="wa.me"], a[href*="whatsapp"], a[href*="maps.google"], a[href*="goo.gl/maps"] {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 4px 0;
}
@media (pointer: coarse) {
  a[href^="tel:"], a[href^="mailto:"],
  a[href*="wa.me"], a[href*="whatsapp"], a[href*="maps.google"], a[href*="goo.gl/maps"] {
    min-height: 44px; padding: 10px 0;
  }
}

/* ============================================================
   BRAND-VALUES MARQUEE -- was 96px type in a 354px band, larger
   than the page H1. Scaled back to a quiet interstitial strip.
   ============================================================ */
.lw-run {
  padding: clamp(28px, 4vw, 52px) 0 !important;
}
.lw-run .lw-run-track span {
  font-size: clamp(22px, 3.2vw, 42px) !important;
  letter-spacing: 0.01em;
}
.lw-run .lw-run-track em {
  font-size: 0.5em;
  vertical-align: middle;
}
@media (max-width: 720px) {
  .lw-run { padding: clamp(22px, 6vw, 34px) 0 !important; }
  .lw-run .lw-run-track span { font-size: clamp(19px, 5.4vw, 26px) !important; }
}

/* ============================================================
   ROOM CARDS -- image-fill with copy over the photograph
   ============================================================ */
.lw-rs .lw-rs-rail {
  display: grid;
  grid-template-columns: 0.85fr 1fr 1fr;
  gap: var(--sp-4);
  max-width: var(--max-content);
  margin: 0 auto;
  align-items: stretch;
}

/* the dark introduction panel */
.lw-rc-intro {
  background: var(--brown-deep);
  color: #fff;
  border-radius: var(--radius-lg);
  padding: clamp(26px, 3vw, 44px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  text-align: center;
  gap: var(--sp-3);
}
.lw-rc-kicker {
  font-family: var(--f-display);
  font-style: italic;
  font-size: var(--fs-sm);
  color: var(--gold-light);
  margin: 0;
}
.lw-rc-title {
  font-family: var(--f-display);
  font-size: clamp(22px, 2.4vw, 32px) !important;
  font-weight: 400;
  line-height: 1.2;
  color: #fff !important;
  margin: 0 !important;
}
.lw-rc-rule { width: 54px; height: 1px; background: rgba(247,217,152,0.5); display: block; }
.lw-rc-intro-cta { display: grid; gap: var(--sp-2); width: 100%; max-width: 220px; margin-top: var(--sp-2); }
.lw-rc-intro .lw-btn-outline { color: #fff; border-color: rgba(255,255,255,0.55); }
.lw-rc-intro .lw-btn-outline:hover { background: #fff; color: var(--brown-deep); border-color: #fff; }

/* the image-fill card */
.lw-rc {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius-lg);
  min-height: clamp(420px, 46vw, 530px);
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  isolation: isolate;
}
.lw-rc-img {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  z-index: -2;
  transition: transform .6s var(--ease);
}
.lw-rc::after {
  content: "";
  position: absolute; inset: 0;
  z-index: -1;
  background: linear-gradient(180deg,
    rgba(16,11,4,0.10) 0%,
    rgba(16,11,4,0.44) 42%,
    rgba(16,11,4,0.86) 100%);
}
.lw-rc:hover .lw-rc-img { transform: scale(1.04); }

.lw-rc-body { padding: var(--sp-5) var(--sp-5) var(--sp-3); }
.lw-rc-name {
  font-family: var(--f-display);
  font-size: clamp(21px, 2.1vw, 28px) !important;
  font-weight: 400;
  color: #fff !important;
  margin: 0 0 var(--sp-2) !important;
}
.lw-rc-desc {
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: rgba(255,255,255,0.88);
  margin: 0 0 var(--sp-4);
  max-width: 42ch;
}

/* the spec row */
.lw-rc-specs {
  display: flex;
  flex-wrap: wrap;
  gap: var(--sp-2) var(--sp-4);
  padding-top: var(--sp-3);
  border-top: 1px solid rgba(255,255,255,0.24);
}
.lw-rc-spec {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-xs);
  color: rgba(255,255,255,0.92);
}
.lw-rc-spec svg {
  width: 15px; height: 15px;
  fill: none; stroke: var(--gold-light);
  stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round;
}
.lw-rc-spec em { font-style: normal; }

/* price + view details */
.lw-rc-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-5) var(--sp-5);
  flex-wrap: wrap;
}
.lw-rc-price {
  font-family: var(--f-display);
  font-size: clamp(19px, 1.8vw, 24px);
  color: var(--gold-light);
}
.lw-rc-price em { font-style: normal; font-size: 0.6em; color: rgba(255,255,255,0.78); }
.lw-rc-cta {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  min-height: 44px;
  padding: 11px 20px;
  border: 1px solid rgba(255,255,255,0.6);
  border-radius: var(--radius-md);
  font-family: var(--f-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
  text-decoration: none;
  transition: background .22s var(--ease), color .22s var(--ease), border-color .22s var(--ease);
}
.lw-rc-cta:hover { background: #fff; color: var(--brown-deep); border-color: #fff; }

@media (max-width: 1100px) {
  .lw-rs .lw-rs-rail { grid-template-columns: 1fr 1fr; }
  .lw-rc-intro { grid-column: 1 / -1; }
}
@media (max-width: 700px) {
  .lw-rs .lw-rs-rail { grid-template-columns: 1fr; }
  .lw-rc { min-height: 400px; }
}

/* the rail is intro + 3 rooms -- four tracks, not three, or the last card
   wraps onto an empty row */
@media (min-width: 1200px) {
  .lw-rs .lw-rs-rail { grid-template-columns: 0.8fr 1fr 1fr 1fr !important; }
  .lw-rc { min-height: clamp(400px, 34vw, 480px); }
  .lw-rc-desc { font-size: var(--fs-xs); max-width: 34ch; }
  .lw-rc-foot { padding-inline: var(--sp-4); }
  .lw-rc-body { padding-inline: var(--sp-4); }
  .lw-rc-specs { gap: var(--sp-1) var(--sp-3); }
}
@media (min-width: 1200px) and (max-width: 1500px) {
  .lw-rc-name { font-size: clamp(19px, 1.6vw, 23px) !important; }
  .lw-rc-price { font-size: 19px; }
  .lw-rc-cta { padding: 10px 14px; letter-spacing: 0.08em; }
}

/* room detail pages: the intro band kept 128px padding from the old scale */
.lw-rm-intro {
  padding-top: clamp(48px, 5vw, 78px) !important;
  padding-bottom: clamp(28px, 3vw, 44px) !important;
}
.lw-rm-intro + .lw-rm-gallery { padding-top: 0; }

/* the intro panel is gone -- three equal columns across the full width */
.lw-rs .lw-rs-rail { grid-template-columns: repeat(3, 1fr) !important; }
@media (min-width: 1200px) {
  .lw-rs .lw-rs-rail { grid-template-columns: repeat(3, 1fr) !important; }
  .lw-rc { min-height: clamp(440px, 36vw, 520px); }
  .lw-rc-desc { font-size: var(--fs-sm); max-width: 40ch; }
  .lw-rc-body, .lw-rc-foot { padding-inline: var(--sp-5); }
  .lw-rc-name { font-size: clamp(21px, 2vw, 28px) !important; }
  .lw-rc-price { font-size: clamp(19px, 1.8vw, 24px); }
  .lw-rc-cta { padding: 11px 20px; letter-spacing: 0.12em; }
}
@media (max-width: 900px) {
  .lw-rs .lw-rs-rail { grid-template-columns: 1fr 1fr !important; }
}
@media (max-width: 640px) {
  .lw-rs .lw-rs-rail { grid-template-columns: 1fr !important; }
}

/* room cards: no description, four larger spec icons */
.lw-rc-desc { display: none !important; }
.lw-rc-specs {
  gap: var(--sp-3) var(--sp-4) !important;
  padding-top: var(--sp-4) !important;
}
.lw-rc-spec { gap: 9px; font-size: var(--fs-sm); }
.lw-rc-spec svg { width: 20px !important; height: 20px !important; stroke-width: 1.5; }
@media (min-width: 1200px) {
  .lw-rc-spec svg { width: 22px !important; height: 22px !important; }
  .lw-rc-specs { gap: var(--sp-3) var(--sp-5) !important; }
}
/* with the paragraph gone the card can sit a little shorter */
.lw-rc { min-height: clamp(400px, 32vw, 470px) !important; }

/* ============================================================
   ROOM CARDS -- name at rest, details on hover
   ============================================================ */
.lw-rc-desc { display: block !important; }

/* the revealing group: description + specs + footer */
.lw-rc .lw-rc-desc,
.lw-rc .lw-rc-specs,
.lw-rc .lw-rc-foot {
  max-height: 0;
  opacity: 0;
  overflow: hidden;
  transform: translateY(10px);
  transition:
    max-height .45s var(--ease),
    opacity .32s var(--ease),
    transform .45s var(--ease),
    padding .45s var(--ease),
    margin .45s var(--ease);
}
.lw-rc .lw-rc-desc   { margin-bottom: 0; }
.lw-rc .lw-rc-specs  { padding-top: 0 !important; border-top-color: transparent; }
.lw-rc .lw-rc-foot   { padding-top: 0; padding-bottom: 0; }

/* the name lifts slightly as the rest appears */
.lw-rc .lw-rc-name { transition: transform .45s var(--ease); }

.lw-rc:hover .lw-rc-desc,
.lw-rc:focus-within .lw-rc-desc,
.lw-rc:hover .lw-rc-specs,
.lw-rc:focus-within .lw-rc-specs,
.lw-rc:hover .lw-rc-foot,
.lw-rc:focus-within .lw-rc-foot {
  max-height: 260px;
  opacity: 1;
  transform: none;
}
.lw-rc:hover .lw-rc-desc,
.lw-rc:focus-within .lw-rc-desc { margin-bottom: var(--sp-4); }
.lw-rc:hover .lw-rc-specs,
.lw-rc:focus-within .lw-rc-specs {
  padding-top: var(--sp-4) !important;
  border-top-color: rgba(255,255,255,0.24);
}
.lw-rc:hover .lw-rc-foot,
.lw-rc:focus-within .lw-rc-foot {
  padding-top: var(--sp-3);
  padding-bottom: var(--sp-5);
}

/* deepen the scrim on hover so the revealed copy stays legible */
.lw-rc::after { transition: background .45s var(--ease); }
.lw-rc:hover::after, .lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0.16) 0%,
    rgba(16,11,4,0.58) 38%,
    rgba(16,11,4,0.92) 100%);
}

/* TOUCH: no hover exists, so the details stay open -- otherwise the price
   and View details button would be unreachable on a phone or tablet */
@media (hover: none) {
  .lw-rc .lw-rc-desc, .lw-rc .lw-rc-specs, .lw-rc .lw-rc-foot {
    max-height: none;
    opacity: 1;
    transform: none;
    overflow: visible;
  }
  .lw-rc .lw-rc-desc  { margin-bottom: var(--sp-4); }
  .lw-rc .lw-rc-specs { padding-top: var(--sp-4) !important; border-top-color: rgba(255,255,255,0.24); }
  .lw-rc .lw-rc-foot  { padding-top: var(--sp-3); padding-bottom: var(--sp-5); }
}

@media (prefers-reduced-motion: reduce) {
  .lw-rc .lw-rc-desc, .lw-rc .lw-rc-specs, .lw-rc .lw-rc-foot,
  .lw-rc .lw-rc-name, .lw-rc::after { transition: none; }
}

/* no rule above the spec row */
.lw-rc .lw-rc-specs,
.lw-rc:hover .lw-rc-specs,
.lw-rc:focus-within .lw-rc-specs {
  border-top: 0 !important;
}
@media (hover: none) {
  .lw-rc .lw-rc-specs { border-top: 0 !important; }
}

/* room card footer: price + Book now on the left, View details on the right */
.lw-rc-left {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--sp-2);
}
.lw-rc-book {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 11px 22px;
  background: var(--gold-ink);
  border: 1px solid var(--gold-ink);
  border-radius: var(--radius-md);
  font-family: var(--f-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: #fff;
  text-decoration: none;
  white-space: nowrap;
  transition: background .22s var(--ease), border-color .22s var(--ease);
}
.lw-rc-book:hover { background: var(--gold); border-color: var(--gold); color: #1F1409; }

/* the footer holds two groups now */
.lw-rc-foot { align-items: flex-end; }

@media (max-width: 1280px) {
  .lw-rc-cta { padding: 10px 15px; letter-spacing: 0.08em; }
  .lw-rc-book { padding: 10px 16px; letter-spacing: 0.08em; }
}

/* ============================================================
   ROOM CARDS -- scrim removed, photo reads clean
   The copy is white on a photograph, so legibility now comes from a
   text shadow plus a short bottom-only gradient, not a full wash.
   ============================================================ */
.lw-rc::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 52%,
    rgba(16,11,4,0.30) 76%,
    rgba(16,11,4,0.62) 100%) !important;
}
.lw-rc:hover::after, .lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0.14) 34%,
    rgba(16,11,4,0.52) 68%,
    rgba(16,11,4,0.80) 100%) !important;
}
.lw-rc-name,
.lw-rc-desc,
.lw-rc-price,
.lw-rc-spec { text-shadow: 0 1px 10px rgba(10,7,2,0.85), 0 1px 3px rgba(10,7,2,0.7); }
.lw-rc-spec svg { filter: drop-shadow(0 1px 3px rgba(10,7,2,0.8)); }

/* the name sits mid-card at rest, so the gradient has to reach it: the top
   half stays clear (the photo reads clean) and it deepens from there */
.lw-rc::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0.06) 34%,
    rgba(16,11,4,0.44) 62%,
    rgba(16,11,4,0.78) 82%,
    rgba(16,11,4,0.90) 100%) !important;
}
.lw-rc:hover::after, .lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0.20) 28%,
    rgba(16,11,4,0.58) 56%,
    rgba(16,11,4,0.86) 80%,
    rgba(16,11,4,0.94) 100%) !important;
}

/* ============================================================
   ROOM CARDS -- name + 4 icons, no description, no animation
   Everything is visible at rest: the hover reveal is removed so the
   card does not move or fade on pointer-over.
   ============================================================ */
.lw-rc-desc { display: none !important; }

.lw-rc .lw-rc-specs,
.lw-rc .lw-rc-foot,
.lw-rc:hover .lw-rc-specs,
.lw-rc:focus-within .lw-rc-specs,
.lw-rc:hover .lw-rc-foot,
.lw-rc:focus-within .lw-rc-foot {
  max-height: none !important;
  opacity: 1 !important;
  overflow: visible !important;
  transform: none !important;
  transition: none !important;
}
.lw-rc .lw-rc-specs,
.lw-rc:hover .lw-rc-specs { padding-top: var(--sp-4) !important; }
.lw-rc .lw-rc-foot,
.lw-rc:hover .lw-rc-foot {
  padding-top: var(--sp-3) !important;
  padding-bottom: var(--sp-5) !important;
}

/* no motion on the card at all */
.lw-rc-img, .lw-rc:hover .lw-rc-img { transform: none !important; transition: none !important; }
.lw-rc-name { transition: none !important; }
.lw-rc::after, .lw-rc:hover::after, .lw-rc:focus-within::after { transition: none !important; }
.lw-rc:hover::after, .lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0.06) 34%,
    rgba(16,11,4,0.44) 62%,
    rgba(16,11,4,0.78) 82%,
    rgba(16,11,4,0.90) 100%) !important;
}

/* the spec row measured 1.06:1 on bright bedding once the scrim went.
   Give the copy its own ground instead of washing the whole photograph:
   the top two-thirds of the image stays clear. */
.lw-rc::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 40%,
    rgba(16,11,4,0.72) 58%,
    rgba(16,11,4,0.93) 74%,
    rgba(16,11,4,0.96) 100%) !important;
}
.lw-rc:hover::after, .lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 40%,
    rgba(16,11,4,0.72) 58%,
    rgba(16,11,4,0.93) 74%,
    rgba(16,11,4,0.96) 100%) !important;
}

/* spec text goes near-white for legibility; the icons stay gold */
.lw-rc-spec { color: rgba(255,255,255,0.95) !important; }
.lw-rc-spec em { color: rgba(255,255,255,0.95); }
.lw-rc-spec svg { stroke: var(--gold-light) !important; }

/* start the content ground higher so it sits fully under the spec row */
.lw-rc::after,
.lw-rc:hover::after,
.lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 30%,
    rgba(16,11,4,0.62) 46%,
    rgba(16,11,4,0.90) 60%,
    rgba(16,11,4,0.96) 100%) !important;
}

/* lighter gradient: more photograph, still a ground under the copy */
.lw-rc::after,
.lw-rc:hover::after,
.lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 34%,
    rgba(16,11,4,0.34) 48%,
    rgba(16,11,4,0.66) 62%,
    rgba(16,11,4,0.82) 100%) !important;
}

.lw-rc::after,
.lw-rc:hover::after,
.lw-rc:focus-within::after {
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 0%,
    rgba(16,11,4,0) 32%,
    rgba(16,11,4,0.52) 45%,
    rgba(16,11,4,0.76) 58%,
    rgba(16,11,4,0.88) 100%) !important;
}

/* ============================================================
   DINING -- alternating image / copy panels
   ============================================================ */
.lw-dn {
  max-width: var(--max-content);
  margin: 0 auto;
  padding-inline: 0;
}
.lw-dn-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  min-height: clamp(300px, 32vw, 400px);
}
.lw-dn-media { margin: 0; overflow: hidden; }
.lw-dn-media img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
}
.lw-dn-copy {
  background: var(--surface-2);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(28px, 4vw, 60px);
}
/* every second row puts the copy on the left */
.lw-dn-flip .lw-dn-media { order: 2; }
.lw-dn-flip .lw-dn-copy  { order: 1; }

.lw-dn-kicker {
  font-family: var(--f-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold-ink);
  margin: 0 0 var(--sp-3);
}
.lw-dn-name {
  font-family: var(--f-display);
  font-size: clamp(23px, 2.4vw, 34px) !important;
  font-weight: 400;
  color: var(--ink) !important;
  margin: 0 0 var(--sp-3) !important;
}
.lw-dn-text {
  font-size: var(--fs-sm);
  line-height: 1.75;
  color: var(--muted);
  margin: 0 0 var(--sp-4);
  max-width: 52ch;
}
.lw-dn-link {
  align-self: flex-start;
  font-family: var(--f-body);
  font-size: var(--fs-sm);
  color: var(--gold-ink);
  text-decoration: underline;
  text-underline-offset: 4px;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 4px 0;
}
.lw-dn-link:hover { color: var(--wine-deep); }
@media (pointer: coarse) { .lw-dn-link { min-height: 44px; } }

@media (max-width: 800px) {
  .lw-dn-row { grid-template-columns: 1fr; }
  .lw-dn-media { min-height: 240px; }
  .lw-dn-flip .lw-dn-media { order: 0; }
  .lw-dn-flip .lw-dn-copy  { order: 0; }
}

/* ============================================================
   ROOM CARDS -- zero gradient over the photograph
   The image carries no overlay at all; the copy sits on its own
   solid panel at the foot of the card instead.
   ============================================================ */
.lw-rc::after,
.lw-rc:hover::after,
.lw-rc:focus-within::after {
  content: none !important;
  background: none !important;
}
.lw-rc {
  background: var(--brown-deep);
  justify-content: flex-end;
}
/* the photograph occupies the upper part of the card, unwashed */
.lw-rc-img {
  position: absolute;
  inset: 0 0 auto 0;
  height: 58% !important;
  object-fit: cover;
  z-index: 0;
}
/* the copy block is a solid panel below it */
.lw-rc-body,
.lw-rc-foot {
  position: relative;
  z-index: 1;
  background: var(--brown-deep);
}
.lw-rc-body { padding-top: var(--sp-5) !important; }
.lw-rc-name,
.lw-rc-desc,
.lw-rc-price,
.lw-rc-spec { text-shadow: none !important; }
.lw-rc-spec svg { filter: none !important; }

/* dining: same page gutter as every other section, and shorter rows */
.lw-dn {
  padding-left: var(--pad-x);
  padding-right: var(--pad-x);
}
.lw-dn-row {
  min-height: 0 !important;
  height: clamp(240px, 26vw, 330px);
}
.lw-dn-copy { padding: clamp(22px, 2.6vw, 40px) clamp(24px, 3vw, 46px); }
.lw-dn-name { font-size: clamp(21px, 2vw, 29px) !important; margin-bottom: var(--sp-2) !important; }
.lw-dn-text {
  font-size: var(--fs-sm);
  line-height: 1.65;
  margin-bottom: var(--sp-3);
  max-width: 48ch;
}
.lw-dn-kicker { margin-bottom: var(--sp-2); }

@media (max-width: 800px) {
  .lw-dn-row { height: auto; }
  .lw-dn-media { min-height: 210px; max-height: 240px; }
  .lw-dn-copy { padding: var(--sp-5); }
}

/* the section forms the gutter; the max-width caps the content INSIDE it
   (previously both were on the same element and fought each other) */
.lw-dn {
  max-width: none !important;
  margin: 0 !important;
  padding-left: var(--pad-x) !important;
  padding-right: var(--pad-x) !important;
}
.lw-dn-row {
  max-width: var(--max-content);
  margin-left: auto;
  margin-right: auto;
  width: 100%;
}

/* ============================================================
   ROOM CARDS -- light copy panel, larger photograph
   The dark panel was 61% of the card. On the light surface the copy
   measures 15.85:1, so the image can take the greater share.
   ============================================================ */
.lw-rc {
  background: var(--surface) !important;
  border: 1px solid var(--hair);
}
.lw-rc-img { height: 62% !important; }
.lw-rc-body,
.lw-rc-foot { background: var(--surface) !important; }

.lw-rc-name  { color: var(--ink) !important; }
.lw-rc-desc  { color: var(--muted) !important; }
.lw-rc-spec,
.lw-rc-spec em { color: var(--muted) !important; }
.lw-rc-spec svg { stroke: var(--gold-ink) !important; }
.lw-rc-price { color: var(--gold-ink) !important; }
.lw-rc-price em { color: var(--muted) !important; }

/* View details inverts for the light ground */
.lw-rc-cta {
  color: var(--ink) !important;
  border-color: var(--hair-strong) !important;
}
.lw-rc-cta:hover {
  background: var(--ink) !important;
  color: #fff !important;
  border-color: var(--ink) !important;
}
/* Book now stays the solid gold primary */
.lw-rc-book { color: #fff !important; }

.lw-rc-body { padding-top: var(--sp-4) !important; }

/* spec labels take the ink colour -- --muted measured 3.31:1 at this size */
.lw-rc-spec,
.lw-rc-spec em { color: var(--ink) !important; }

/* three specs now fit one line, so the image can take more of the card */
.lw-rc-img { height: 72% !important; }
.lw-rc { min-height: clamp(420px, 34vw, 500px) !important; }
.lw-rc-specs { gap: var(--sp-2) var(--sp-4) !important; padding-top: var(--sp-3) !important; }
.lw-rc-body { padding-top: var(--sp-4) !important; padding-bottom: var(--sp-2) !important; }
.lw-rc-foot { padding-top: var(--sp-2) !important; }

/* ============================================================
   MEETINGS -- alternating venue rows with a capacity grid
   ============================================================ */
.lw-mt {
  padding-left: var(--pad-x);
  padding-right: var(--pad-x);
}
.lw-mt-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  max-width: var(--max-content);
  margin: 0 auto;
  width: 100%;
}
.lw-mt-media { margin: 0; overflow: hidden; min-height: 100%; }
.lw-mt-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lw-mt-copy {
  background: var(--surface-2);
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(24px, 3vw, 44px);
}
.lw-mt-flip .lw-mt-media { order: 2; }
.lw-mt-flip .lw-mt-copy  { order: 1; }

.lw-mt-kicker {
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--gold-ink);
  margin: 0 0 var(--sp-2);
}
.lw-mt-name {
  font-family: var(--f-display);
  font-size: clamp(21px, 2vw, 29px) !important;
  font-weight: 400;
  color: var(--ink) !important;
  margin: 0 0 var(--sp-2) !important;
}
.lw-mt-text {
  font-size: var(--fs-sm);
  line-height: 1.65;
  color: var(--muted);
  margin: 0 0 var(--sp-4);
  max-width: 50ch;
}

/* the capacity grid: the numbers a planner is actually looking for */
.lw-mt-caps {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 1px;
  background: var(--hair);
  border: 1px solid var(--hair);
  margin: 0 0 var(--sp-4);
}
.lw-mt-cell {
  background: var(--surface);
  padding: var(--sp-2) var(--sp-3);
  text-align: center;
}
.lw-mt-cell dt {
  font-size: 10.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  margin-bottom: 2px;
}
.lw-mt-cell dd {
  font-family: var(--f-display);
  font-size: var(--fs-h4);
  color: var(--ink);
  margin: 0;
}
.lw-mt-link {
  align-self: flex-start;
  font-size: var(--fs-sm);
  color: var(--gold-ink);
  text-decoration: underline;
  text-underline-offset: 4px;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  padding: 4px 0;
}
.lw-mt-link:hover { color: var(--wine-deep); }
@media (pointer: coarse) { .lw-mt-link { min-height: 44px; } }

@media (max-width: 900px) {
  .lw-mt-row { grid-template-columns: 1fr; }
  .lw-mt-media { min-height: 220px; max-height: 260px; }
  .lw-mt-flip .lw-mt-media { order: 0; }
  .lw-mt-flip .lw-mt-copy  { order: 0; }
}
@media (max-width: 520px) {
  .lw-mt-caps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ============================================================
   EXPERIENCES -- image card with a corner tag
   ============================================================ */
.lw-xp-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--card-gap);
  max-width: var(--max-content);
  margin: 0 auto;
}
.lw-xp {
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border: 1px solid var(--hair);
  overflow: hidden;
  transition: border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.lw-xp:hover {
  border-color: rgba(194,157,72,0.5);
  box-shadow: 0 10px 30px rgba(62,46,18,0.08);
}
.lw-xp-media {
  position: relative;
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}
.lw-xp-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lw-xp-tag {
  position: absolute;
  top: 14px; left: 14px;
  background: #fff;
  color: var(--ink);
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 7px 11px;
  white-space: nowrap;
}
.lw-xp-body {
  padding: var(--sp-5);
  display: flex;
  flex-direction: column;
  flex: 1;
}
.lw-xp-kicker {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 var(--sp-2);
}
.lw-xp-title {
  font-family: var(--f-display);
  font-size: clamp(19px, 1.7vw, 24px) !important;
  font-weight: 400;
  color: var(--ink) !important;
  margin: 0 0 var(--sp-3) !important;
}
.lw-xp-text {
  font-size: var(--fs-sm);
  line-height: 1.65;
  color: var(--muted);
  margin: 0 0 var(--sp-4);
  flex: 1;
}
.lw-xp-link {
  align-self: flex-start;
  font-family: var(--f-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--gold);
  padding: 4px 0;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  transition: color .2s var(--ease), border-color .2s var(--ease);
}
.lw-xp-link:hover { color: var(--gold-ink); border-bottom-color: var(--gold-ink); }
@media (pointer: coarse) { .lw-xp-link { min-height: 44px; } }

@media (max-width: 1100px) { .lw-xp-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px)  { .lw-xp-grid { grid-template-columns: 1fr; } }

/* ============================================================
   FOOTER on touch + small screens
   pointer:coarse does not fire on every tablet, so size by width too.
   ============================================================ */
@media (max-width: 1024px) {
  .lw-footer .lw-ft-nav a,
  .lw-footer .lw-ft-contact a,
  .lw-footer .lw-foot-links a,
  .lw-footer .lw-foot-credit a { min-height: 44px; }
  .lw-footer .lw-ft-social a { width: 44px; height: 44px; }
}

/* phones: the footer was 900-998px, taller than the viewport */
@media (max-width: 640px) {
  .lw-footer { padding-top: clamp(28px, 7vw, 40px) !important; }
  .lw-footer .lw-ft-mark { width: 96px; margin-bottom: var(--sp-3); }
  .lw-footer .lw-ft-tag { margin-bottom: var(--sp-3); }
  .lw-footer .lw-ft-addr { line-height: 1.6; margin-bottom: var(--sp-2); }
  .lw-footer .lw-ft-contact { gap: var(--sp-1) var(--sp-3); margin-bottom: var(--sp-3); }
  .lw-footer .lw-ft-contact a { min-height: 40px; padding: 6px 0; }
  .lw-footer .lw-ft-social { margin-bottom: var(--sp-4); }

  /* the nav ran one item per line at 4 rows -- two-up halves that */
  .lw-footer .lw-ft-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 var(--sp-3);
    padding: var(--sp-3) 0;
  }
  .lw-footer .lw-ft-nav a {
    min-height: 40px;
    justify-content: center;
    font-size: 11px;
    letter-spacing: 0.1em;
  }
  .lw-footer .lw-footer-bar {
    padding-top: var(--sp-3) !important;
    padding-bottom: var(--sp-6) !important;
    gap: var(--sp-2);
  }
  .lw-footer .lw-foot-links { justify-content: center; gap: var(--sp-1) var(--sp-3); }
  .lw-footer .lw-foot-links a { min-height: 38px; }
}

/* touch targets stay at 44px on phones -- the earlier 40/38px values traded
   accessibility for height, which is not a trade worth making */
@media (max-width: 640px) {
  .lw-footer .lw-ft-contact a,
  .lw-footer .lw-ft-nav a,
  .lw-footer .lw-foot-links a,
  .lw-footer .lw-foot-credit a { min-height: 44px !important; }

  /* the height comes back out of the gaps, not the targets */
  .lw-footer .lw-ft-nav { padding: var(--sp-2) 0; gap: 0 var(--sp-2); }
  .lw-footer .lw-ft-contact { margin-bottom: var(--sp-2); }
  .lw-footer .lw-ft-social { margin-bottom: var(--sp-3); }
  .lw-footer .lw-ft-social a { width: 44px; height: 44px; }
  .lw-footer .lw-footer-bar { padding-bottom: var(--sp-5) !important; }
}

/* ============================================================
   SECONDARY CTAs -- text links, matching the dining pattern
   ============================================================ */
.lw-txtlink {
  display: inline-flex;
  align-items: center;
  align-self: flex-start;
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 4px 0 !important;
  min-height: 24px;
  font-family: var(--f-body);
  font-size: var(--fs-sm);
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--gold-ink) !important;
  text-decoration: underline;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
  transition: color .2s var(--ease);
}
.lw-txtlink:hover {
  background: none !important;
  color: var(--wine-deep) !important;
}
@media (pointer: coarse) { .lw-txtlink { min-height: 44px; } }

/* on dark grounds the link inverts */
.lw-footer .lw-txtlink,
.lw-props .lw-txtlink,
.lw-on-dark .lw-txtlink,
.lw-concierge .lw-txtlink { color: var(--gold-light) !important; }
.lw-footer .lw-txtlink:hover,
.lw-props .lw-txtlink:hover,
.lw-on-dark .lw-txtlink:hover,
.lw-concierge .lw-txtlink:hover { color: #fff !important; }

/* the properties PANEL is a white card inside the dark section, so its link
   takes the dark-on-light gold, not the light-on-dark one (1.43:1 -> pass) */
.lw-props-panel .lw-txtlink,
.lw-props-panels .lw-txtlink,
.lw-dinefeat-card .lw-txtlink {
  color: var(--gold-ink) !important;
}
.lw-props-panel .lw-txtlink:hover,
.lw-props-panels .lw-txtlink:hover,
.lw-dinefeat-card .lw-txtlink:hover { color: var(--wine-deep) !important; }

/* .lw-bl-soon-cta is styled as a solid gold button; when it wraps a text link
   the button ground must go, or the link is gold-on-gold (measured 1:1) */
.lw-bl-soon-cta:has(.lw-txtlink),
.lw-bl-soon-cta.lw-txtlink {
  background: none !important;
  border: 0 !important;
  padding: 0 !important;
  min-height: 0 !important;
  color: var(--gold-ink) !important;
}

/* the remaining dark bands need the light-on-dark link colour */
.lw-au-cta .lw-txtlink,
.lw-abt-invite .lw-txtlink,
.lw-of-cta .lw-txtlink,
.lw-dn-cta .lw-txtlink,
.lw-rc-intro .lw-txtlink { color: var(--gold-light) !important; }
.lw-au-cta .lw-txtlink:hover,
.lw-abt-invite .lw-txtlink:hover,
.lw-of-cta .lw-txtlink:hover,
.lw-dn-cta .lw-txtlink:hover,
.lw-rc-intro .lw-txtlink:hover { color: #fff !important; }

/* View details is a text link, not a button -- Book now is the only button
   on the room cards */
.lw-rc-cta {
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  padding: 4px 0 !important;
  min-height: 24px !important;
  font-family: var(--f-body) !important;
  font-size: var(--fs-sm) !important;
  font-weight: 500 !important;
  letter-spacing: 0 !important;
  text-transform: none !important;
  color: var(--gold-ink) !important;
  text-decoration: underline !important;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}
.lw-rc-cta:hover {
  background: none !important;
  color: var(--wine-deep) !important;
  border-color: transparent !important;
}
@media (pointer: coarse) { .lw-rc-cta { min-height: 44px !important; } }

/* ============================================================
   SCROLLED HEADER -- light translucent dark
   A soft wash rather than a solid block: the page shows through,
   and the gold mark still has a dark enough ground.
   ============================================================ */
.lw-header.is-scrolled,
body:has(.lw-prop-bar) .lw-header.lw-header--solid.is-scrolled,
.lw-header.lw-header--solid.is-scrolled {
  background: rgba(30, 24, 12, 0.82) !important;
  backdrop-filter: blur(14px) saturate(1.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
  border-bottom-color: rgba(247, 217, 152, 0.16) !important;
  box-shadow: 0 8px 26px rgba(16, 11, 4, 0.18) !important;
}
.lw-header.is-scrolled .lw-nav a,
.lw-header.is-scrolled .lw-head-rates,
.lw-header.is-scrolled .lw-drop-name { color: rgba(255,255,255,0.94) !important; }
.lw-header.is-scrolled .lw-nav a:hover,
.lw-header.is-scrolled .lw-head-rates:hover { color: var(--gold-light) !important; }
.lw-header.is-scrolled .lw-toggle span { background: #fff !important; }
.lw-header.is-scrolled .lw-btn-outline {
  color: var(--gold-light) !important;
  border-color: rgba(247, 217, 152, 0.6) !important;
}
.lw-header.is-scrolled .lw-btn-outline:hover {
  background: var(--gold-light) !important;
  color: var(--brown-deep) !important;
  border-color: var(--gold-light) !important;
}
.lw-header.is-scrolled .lw-contact-btn {
  color: var(--gold-light) !important;
  border-color: rgba(247, 217, 152, 0.45) !important;
}
.lw-header.is-scrolled .lw-drop a,
.lw-header.is-scrolled .lw-drop .lw-drop-name { color: var(--ink) !important; }

/* ============================================================
   CONTACT -- details left, map right, one fold
   ============================================================ */
.lw-ct { padding-top: clamp(34px,4vw,58px) !important; padding-bottom: clamp(34px,4vw,58px) !important; }
.lw-ct2 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(24px, 3vw, 52px);
  align-items: stretch;
  max-width: var(--max-content);
  margin: 0 auto;
}
.lw-ct2-left { display: flex; flex-direction: column; justify-content: center; }
.lw-ct2-left .lw-h2 {
  font-size: clamp(22px, 2.3vw, 32px) !important;
  margin-bottom: var(--sp-3) !important;
}
.lw-ct2-lede {
  font-size: var(--fs-sm);
  line-height: 1.65;
  color: var(--muted);
  margin: 0 0 var(--sp-4);
  max-width: 46ch;
}
.lw-ct2-addr {
  font-style: normal;
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--muted);
  margin: 0 0 var(--sp-4);
  padding-bottom: var(--sp-4);
  border-bottom: 1px solid var(--hair);
}
.lw-ct2-addr strong {
  display: block;
  font-family: var(--f-display);
  font-weight: 400;
  font-size: var(--fs-h4);
  color: var(--ink);
  margin-bottom: var(--sp-1);
}
.lw-ct2-rows { list-style: none; margin: 0 0 var(--sp-5); padding: 0; }
.lw-ct2-rows li {
  display: flex;
  align-items: baseline;
  gap: var(--sp-3);
  padding: 7px 0;
  border-bottom: 1px solid var(--hair);
  font-size: var(--fs-sm);
}
.lw-ct2-rows li:last-child { border-bottom: 0; }
.lw-ct2-rows span {
  flex: 0 0 104px;
  font-size: var(--fs-xs);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.lw-ct2-rows a {
  color: var(--ink);
  text-decoration: none;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}
.lw-ct2-rows a:hover { color: var(--gold-ink); }
@media (pointer: coarse) { .lw-ct2-rows a { min-height: 44px; } }

.lw-ct2-cta { display: flex; flex-wrap: wrap; align-items: center; gap: var(--sp-4); }

.lw-ct2-map {
  min-height: clamp(300px, 40vh, 440px);
  border: 1px solid var(--hair);
  overflow: hidden;
}
.lw-ct2-map iframe { width: 100%; height: 100%; min-height: inherit; border: 0; display: block; }

@media (max-width: 900px) {
  .lw-ct2 { grid-template-columns: 1fr; }
  .lw-ct2-map { min-height: 280px; }
}

/* ============================================================
   HOW TO REACH US / NEARBY ATTRACTIONS
   ============================================================ */
.lw-nb {
  padding: clamp(34px, 4vw, 58px) var(--pad-x);
  background: var(--surface-2);
}
.lw-nb-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(28px, 4vw, 64px);
  max-width: var(--max-content);
  margin: 0 auto;
}
.lw-nb-h {
  font-family: var(--f-display);
  font-size: clamp(19px, 1.8vw, 25px) !important;
  font-weight: 400;
  color: var(--ink) !important;
  margin: 0 0 var(--sp-4) !important;
}
.lw-nb-list { list-style: none; margin: 0 0 var(--sp-3); padding: 0; }
.lw-nb-list li {
  padding: var(--sp-3) 0;
  border-bottom: 1px solid var(--hair);
}
.lw-nb-list li:first-child { border-top: 1px solid var(--hair); }
.lw-nb-main {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-3);
}
.lw-nb-name {
  font-family: var(--f-display);
  font-size: var(--fs-h4);
  color: var(--ink);
}
.lw-nb-dist {
  font-family: var(--f-body);
  font-size: var(--fs-sm);
  font-weight: 600;
  color: var(--gold-ink);
  white-space: nowrap;
}
.lw-nb-note {
  font-size: var(--fs-sm);
  line-height: 1.5;
  color: var(--muted);
  margin: 4px 0 6px;
}
.lw-nb-foot {
  font-size: var(--fs-xs);
  color: var(--muted);
  margin: 0;
}
@media (max-width: 820px) { .lw-nb-inner { grid-template-columns: 1fr; } }

/* ============================================================
   EXPERIENCES SLIDER -- three across, middle card featured
   ============================================================ */
.lw-xs {
  position: relative;
  max-width: var(--max-content);
  margin: 0 auto;
  padding: 0 clamp(34px, 4vw, 56px);
}
.lw-xs-viewport { overflow: hidden; }
.lw-xs-track {
  display: flex;
  transition: transform .55s var(--ease);
  align-items: flex-start;
}
.lw-xs-card {
  flex: 0 0 33.3333%;
  min-width: 33.3333%;
  padding: 0 var(--sp-2);
  transition: transform .45s var(--ease);
}
.lw-xs-media { position: relative; margin: 0; aspect-ratio: 4/3; overflow: hidden; }
.lw-xs-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lw-xs-tag {
  position: absolute; top: 12px; left: 12px;
  background: #fff; color: var(--ink);
  font-size: 10.5px; font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase;
  padding: 6px 10px; white-space: nowrap;
}
.lw-xs-body { background: var(--surface); border: 1px solid var(--hair); border-top: 0; padding: var(--sp-4); }
.lw-xs-kicker {
  font-size: 10.5px; font-weight: 600; letter-spacing: 0.16em;
  text-transform: uppercase; color: var(--muted); margin: 0 0 6px;
}
.lw-xs-title {
  font-family: var(--f-display);
  font-size: clamp(18px, 1.6vw, 23px) !important;
  font-weight: 400; color: var(--ink) !important;
  margin: 0 0 var(--sp-2) !important;
}
.lw-xs-text { font-size: var(--fs-sm); line-height: 1.6; color: var(--muted); margin: 0 0 var(--sp-3); }
.lw-xs-link {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: var(--fs-xs); font-weight: 600; letter-spacing: 0.12em;
  text-transform: uppercase; color: var(--ink); text-decoration: none;
  border-bottom: 1px solid var(--gold); padding: 4px 0; min-height: 24px;
}
.lw-xs-link:hover { color: var(--gold-ink); border-bottom-color: var(--gold-ink); }
@media (pointer: coarse) { .lw-xs-link { min-height: 44px; } }

/* the featured centre card: taller, with the copy over the photograph */
.lw-xs-card.is-featured { transform: scale(1.06); z-index: 2; position: relative; }
.lw-xs-card.is-featured .lw-xs-media { aspect-ratio: 3/4.1; }
.lw-xs-card.is-featured .lw-xs-body {
  position: absolute; left: var(--sp-2); right: var(--sp-2); bottom: 0;
  background: none; border: 0;
  padding: var(--sp-4);
}
.lw-xs-card.is-featured .lw-xs-media::after {
  content: ""; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(16,11,4,0) 38%, rgba(16,11,4,0.72) 68%, rgba(16,11,4,0.92) 100%);
}
.lw-xs-card.is-featured .lw-xs-kicker { color: rgba(255,255,255,0.85); }
.lw-xs-card.is-featured .lw-xs-title  { color: #fff !important; }
.lw-xs-card.is-featured .lw-xs-text   { color: rgba(255,255,255,0.9); }
.lw-xs-card.is-featured .lw-xs-link   { color: #fff; border-bottom-color: rgba(255,255,255,0.7); }

.lw-xs-arrow {
  position: absolute; top: 42%; transform: translateY(-50%);
  width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--hair-strong); background: var(--surface);
  color: var(--ink); font-size: 20px; line-height: 1; cursor: pointer;
  display: flex; align-items: center; justify-content: center; z-index: 3;
  transition: background .2s var(--ease), color .2s var(--ease);
}
.lw-xs-arrow.prev { left: 0; }
.lw-xs-arrow.next { right: 0; }
.lw-xs-arrow:hover:not(:disabled) { background: var(--gold-ink); color: #fff; border-color: var(--gold-ink); }
.lw-xs-arrow:disabled { opacity: 0.3; cursor: default; }

.lw-xs-dots { display: flex; justify-content: center; gap: var(--sp-2); margin-top: var(--sp-4); }
.lw-xs-dot {
  width: 44px; height: 44px; border: 0; background: none; padding: 0;
  cursor: pointer; position: relative;
}
.lw-xs-dot::before {
  content: ""; position: absolute; left: 50%; top: 50%;
  width: 8px; height: 8px; margin: -4px 0 0 -4px;
  border-radius: 50%; background: var(--hair-strong);
  transition: background .2s var(--ease);
}
.lw-xs-dot.is-active::before { background: var(--gold-ink); }

@media (max-width: 1099px) { .lw-xs-card { flex: 0 0 50%; min-width: 50%; } }
@media (max-width: 699px)  { .lw-xs-card { flex: 0 0 100%; min-width: 100%; } }

/* ---- shorter contact + nearby ---- */
.lw-ct { padding-top: clamp(26px,3vw,42px) !important; padding-bottom: clamp(26px,3vw,42px) !important; }
.lw-ct2-map { min-height: clamp(250px, 32vh, 340px); }
.lw-ct2-lede { margin-bottom: var(--sp-3); }
.lw-ct2-addr { margin-bottom: var(--sp-3); padding-bottom: var(--sp-3); }
.lw-ct2-rows { margin-bottom: var(--sp-4); }
.lw-ct2-rows li { padding: 5px 0; }

.lw-nb { padding: clamp(26px,3vw,42px) var(--pad-x); }
.lw-nb-h { margin-bottom: var(--sp-3) !important; }
.lw-nb-list li { padding: var(--sp-2) 0; }
.lw-nb-note { margin: 2px 0 4px; }

/* FAQ heading + the 5-item cap */
.lw-faq-head { max-width: var(--max-content); margin: 0 auto var(--head-mb); }
.lw-faq-head .lw-h2 { margin-bottom: 0 !important; }
.lw-faq .lw-faq-item.is-capped { display: none !important; }
.lw-faq .lw-faq-item[data-hidden="cat"] { display: none !important; }
.lw-faq-more { max-width: var(--max-content); margin: var(--sp-4) auto 0; }
.lw-faq-more-btn { background: none; border: 0; cursor: pointer; font: inherit; }

/* travel hubs + attractions: compact, less vertical space */
.lw-nb { padding: clamp(20px,2.4vw,34px) var(--pad-x) !important; }
.lw-nb-inner { gap: clamp(20px, 3vw, 48px); }
.lw-nb .lw-eyebrow { margin-bottom: var(--sp-1); }
.lw-nb-h { font-size: clamp(17px,1.5vw,21px) !important; margin-bottom: var(--sp-2) !important; }
.lw-nb-list { margin-bottom: var(--sp-2); }
.lw-nb-list li { padding: 8px 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px var(--sp-3); }
.lw-nb-main { flex: 1 1 100%; }
.lw-nb-name { font-size: var(--fs-sm); }
.lw-nb-dist { font-size: var(--fs-xs); }
.lw-nb-note { flex: 1 1 auto; margin: 0; font-size: var(--fs-xs); line-height: 1.4; }
.lw-nb-list .lw-txtlink { flex: 0 0 auto; font-size: var(--fs-xs); padding: 2px 0 !important; min-height: 20px; }
@media (pointer: coarse) { .lw-nb-list .lw-txtlink { min-height: 44px; } }
.lw-nb-foot { font-size: 11.5px; }

/* touch targets that were still under 44px on tablet and phone */
@media (max-width: 1024px) {
  .lw-toggle {
    min-width: 44px !important;
    min-height: 44px !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
  }
  .lw-prop-bar-more-btn { min-width: 44px !important; min-height: 44px !important; }
  .lw-prop-bar-label { min-height: 44px; display: inline-flex; align-items: center; }
  .lw-gu-tab { min-height: 44px !important; }
  .lw-more-link, .lw-link {
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
}

/* the final two sub-44px touch targets */
@media (max-width: 1024px) {
  .lw-loc-lines a { min-height: 44px !important; display: flex; align-items: center; }
  .lw-nl-consent input[type="checkbox"] {
    width: 44px !important; height: 44px !important;
    min-width: 44px !important; min-height: 44px !important;
  }
}

/* ============================================================
   FAQ -- accordion opens, centred, shorter
   ============================================================ */
.lw-faq .lw-faq-a {
  max-height: 0;
  overflow: hidden;
  transition: max-height .38s var(--ease);
}
.lw-faq .lw-faq-item.is-open .lw-faq-a { max-height: 520px; }

/* the tabs are centred, so the heading and View more should be too */
.lw-faq-head { text-align: center; }
.lw-faq-head .lw-eyebrow { justify-content: center; }
.lw-faq-more { text-align: center; }
.lw-faq-more-btn { display: inline-flex; }

/* shorter rows */
.lw-faq { padding-top: clamp(28px,3.2vw,46px) !important; padding-bottom: clamp(28px,3.2vw,46px) !important; }
.lw-faq-head { margin-bottom: clamp(16px,2vw,26px); }
.lw-faq .lw-faq-q { padding: clamp(13px,1.4vw,17px) 0 !important; }
.lw-faq .lw-faq-a-inner { padding-bottom: clamp(13px,1.4vw,17px) !important; }
.lw-faq .lw-faq-cats { margin-bottom: clamp(14px,1.8vw,22px); }

/* ============================================================
   FLOATING BUTTONS -- aligned on the right edge
   ============================================================ */
.lw-top,
.lw-contact-float,
.lw-contact-wrap {
  right: 20px !important;
  left: auto !important;
}
.lw-top { bottom: 20px !important; }
.lw-contact-float, .lw-contact-wrap { bottom: 84px !important; }
@media (max-width: 720px) {
  .lw-top { right: 14px !important; bottom: 90px !important; }
  .lw-contact-float, .lw-contact-wrap { right: 14px !important; bottom: 150px !important; }
}

/* room card footer: price on its own line, then Book now and View details
   side by side so they share a baseline (View details previously aligned to
   the price, 54px above the button) */
.lw-rc-foot {
  display: block !important;
  padding-top: var(--sp-2) !important;
}
.lw-rc-left {
  display: block !important;
  margin-bottom: var(--sp-3);
}
.lw-rc-price { display: block; margin-bottom: var(--sp-2); }
.lw-rc-actions,
.lw-rc-foot > .lw-rc-book { vertical-align: middle; }
.lw-rc-left .lw-rc-book,
.lw-rc-foot .lw-rc-cta {
  display: inline-flex !important;
  vertical-align: middle;
}
.lw-rc-left .lw-rc-book { margin-right: var(--sp-4); }

/* image +10% */
.lw-rc-img { height: 79% !important; }

/* price on its own line, then Book now and View details on one row */
.lw-rc-actions {
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  flex-wrap: wrap;
}
.lw-rc-actions .lw-rc-cta { margin: 0 !important; }
.lw-rc-left { display: contents !important; }

/* ============================================================
   ROOM CARDS -- name over the image, image covers that space
   ============================================================ */
.lw-rc-img { height: 100% !important; inset: 0 !important; }

/* the copy block sits below, so the image runs behind it and the plate
   holds the name at the foot of the visible photograph */
.lw-rc { position: relative; }
.lw-rc-plate {
  position: absolute;
  left: 0; right: 0;
  top: 0;
  height: 68%;
  display: flex;
  align-items: flex-end;
  padding: var(--sp-4) var(--sp-5);
  pointer-events: none;
  z-index: 1;
  /* a gradient only where the name sits, so the photo stays clean above */
  background: linear-gradient(180deg,
    rgba(16,11,4,0) 46%,
    rgba(16,11,4,0.42) 72%,
    rgba(16,11,4,0.80) 100%);
}
.lw-rc-plate .lw-rc-name {
  color: #fff !important;
  margin: 0 !important;
  text-shadow: 0 1px 12px rgba(10,7,2,0.7);
}
/* the body starts below the image area */
.lw-rc-body {
  position: relative;
  z-index: 2;
  margin-top: 68%;
  background: var(--surface) !important;
  padding-top: var(--sp-4) !important;
}
.lw-rc-foot { position: relative; z-index: 2; background: var(--surface) !important; }

/* the name was clipped by the body block: end the plate above the seam and
   give the text room to sit fully inside the photograph */
.lw-rc-plate {
  height: 66% !important;
  align-items: flex-end;
  padding-bottom: var(--sp-3) !important;
}
.lw-rc-body { margin-top: 66% !important; }
.lw-rc-plate .lw-rc-name { line-height: 1.15; }

/* pin the name inside the photograph rather than relying on flex overshoot */
.lw-rc-plate {
  height: 62% !important;
  align-items: flex-end !important;
  padding-bottom: var(--sp-4) !important;
}
.lw-rc-body { margin-top: 62% !important; }
.lw-rc-plate .lw-rc-name {
  font-size: clamp(19px, 1.8vw, 25px) !important;
  line-height: 1.2;
}

/* View details sits at the right edge, opposite Book now */
.lw-rc-actions { justify-content: space-between; width: 100%; }
.lw-rc-actions .lw-rc-cta { margin-left: auto !important; }
.lw-rc-left .lw-rc-book { margin-right: 0 !important; }

/* ============================================================
   ROOM CARDS -- image in its own 4:3 box, name pinned to it
   The photo is 1.78 landscape; forcing it into a 0.80 portrait slot
   cropped the room away. Percentage-based plate/body offsets also
   drifted at narrow widths and clipped the name.
   ============================================================ */
.lw-rc {
  display: flex !important;
  flex-direction: column;
  min-height: 0 !important;
}
.lw-rc-img {
  position: relative !important;
  inset: auto !important;
  width: 100%;
  height: auto !important;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  display: block;
  flex: 0 0 auto;
}
/* the plate overlays exactly the image box */
.lw-rc-plate {
  position: absolute !important;
  left: 0; right: 0; top: 0;
  height: auto !important;
  aspect-ratio: 4 / 3;
  display: flex;
  align-items: flex-end;
  padding: var(--sp-4) var(--sp-5) !important;
}
/* the body simply follows in flow -- no percentage offset to drift */
.lw-rc-body {
  margin-top: 0 !important;
  flex: 1 1 auto;
}

/* the source photos are 1.78 landscape; 4:3 was still cropping them */
.lw-rc-img, .lw-rc-plate { aspect-ratio: 16 / 10 !important; }

/* ============================================================
   GALLERY -- two staggered rows sliding sideways
   ============================================================ */
.lw-gu { padding: clamp(30px,3.4vw,50px) var(--pad-x) !important; }
.lw-gz-head { max-width: var(--max-content); margin: 0 auto clamp(16px,2vw,26px); text-align: center; }
.lw-gz-head .lw-eyebrow { justify-content: center; }
.lw-gz-head .lw-h2 { margin-bottom: 0 !important; }

.lw-gz { position: relative; max-width: var(--max-content); margin: 0 auto; }
.lw-gz-viewport {
  overflow-x: auto;
  overflow-y: hidden;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  -ms-overflow-style: none;
}
.lw-gz-viewport::-webkit-scrollbar { display: none; }
.lw-gz-track { display: flex; flex-direction: column; gap: var(--sp-3); width: max-content; }
.lw-gz-row { display: flex; gap: var(--sp-3); }
/* the second row is offset so the two rows stagger rather than line up */
.lw-gz-row2 { margin-left: clamp(40px, 7vw, 120px); }

.lw-gz-cell {
  margin: 0;
  flex: 0 0 auto;
  overflow: hidden;
  border-radius: var(--radius-md);
  scroll-snap-align: start;
  background: var(--surface-2);
}
.lw-gz-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* alternating cell sizes give the zig-zag */
.lw-gz-tall  { width: clamp(200px, 20vw, 290px); height: clamp(200px, 20vw, 280px); }
.lw-gz-short { width: clamp(150px, 15vw, 215px); height: clamp(200px, 20vw, 280px); }

.lw-gz-arrow {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 44px; height: 44px; border-radius: 50%;
  border: 1px solid var(--hair-strong); background: var(--surface);
  color: var(--ink); font-size: 20px; cursor: pointer; z-index: 3;
  display: flex; align-items: center; justify-content: center;
  transition: background .2s var(--ease), color .2s var(--ease);
}
.lw-gz-arrow.prev { left: -8px; }
.lw-gz-arrow.next { right: -8px; }
.lw-gz-arrow:hover:not(:disabled) { background: var(--gold-ink); color: #fff; border-color: var(--gold-ink); }
.lw-gz-arrow:disabled { opacity: 0.28; cursor: default; }

@media (max-width: 720px) {
  .lw-gz-tall  { width: 170px; height: 180px; }
  .lw-gz-short { width: 130px; height: 180px; }
  .lw-gz-row2 { margin-left: 34px; }
  .lw-gz-arrow.prev { left: -4px; }
  .lw-gz-arrow.next { right: -4px; }
}

/* gallery rows: 3 large above, 4 smaller below, sliding together */
.lw-gz-row2 { margin-left: 0 !important; }
.lw-gz-top .lw-gz-cell {
  width: clamp(230px, 24vw, 340px) !important;
  height: clamp(180px, 18vw, 250px) !important;
}
.lw-gz-bottom .lw-gz-cell {
  width: clamp(168px, 17.4vw, 250px) !important;
  height: clamp(140px, 14vw, 195px) !important;
}
.lw-gz-viewport:focus-visible { outline: 2px solid var(--gold-ink); outline-offset: 3px; }
@media (max-width: 720px) {
  .lw-gz-top .lw-gz-cell { width: 200px !important; height: 155px !important; }
  .lw-gz-bottom .lw-gz-cell { width: 145px !important; height: 120px !important; }
}

/* size the cells so exactly 3 fit on the top row and 4 on the bottom */
.lw-gz-top .lw-gz-cell {
  width: calc((100vw - 2 * var(--pad-x) - 2 * var(--sp-3)) / 3) !important;
  max-width: 430px !important;
  height: clamp(190px, 19vw, 265px) !important;
}
.lw-gz-bottom .lw-gz-cell {
  width: calc((100vw - 2 * var(--pad-x) - 3 * var(--sp-3)) / 4) !important;
  max-width: 320px !important;
  height: clamp(150px, 15vw, 205px) !important;
}
@media (max-width: 720px) {
  .lw-gz-top .lw-gz-cell { width: calc((100vw - 2 * var(--pad-x) - var(--sp-3)) / 2) !important; height: 165px !important; }
  .lw-gz-bottom .lw-gz-cell { width: calc((100vw - 2 * var(--pad-x) - 2 * var(--sp-3)) / 3) !important; height: 125px !important; }
}

/* both rows end on the same edge: the track is as wide as the longer row and
   each row stretches to fill it, so no ragged tail */
.lw-gz-row { width: 100%; }
.lw-gz-track { display: flex; flex-direction: column; }
.lw-gz-row .lw-gz-cell:last-child { flex: 1 1 auto; min-width: 0; }

/* repeated fill images are decorative duplicates */
.lw-gz-fill { pointer-events: none; }

/* the track was width:max-content, so rows sized independently and the
   stretch never applied -- make the track as wide as its widest row */
.lw-gz-track { width: max-content !important; }
.lw-gz-row { width: max-content; min-width: 100%; }
.lw-gz-row .lw-gz-cell:last-child { flex: 0 0 auto !important; }
/* the bottom row carries one extra narrow cell, which closes the tail */
.lw-gz-bottom { padding-right: 0; }

/* ============================================================
   CHILD PROPERTY BAR -- centred
   It was packed to the left with ~450px empty on the right.
   ============================================================ */
.lw-prop-bar-inner {
  grid-template-columns: max-content auto max-content !important;
  justify-content: center !important;
  gap: clamp(18px, 2.4vw, 42px);
}
.lw-prop-bar-nav {
  justify-self: center !important;
  justify-content: center;
}
@media (max-width: 1024px) {
  .lw-prop-bar-inner { justify-content: space-between !important; }
}

/* parent dining section reduced 10% (1011px -> ~910px), taken from the
   128px padding and the heading block rather than the content */
body:not(.lw-single) .lw-dine {
  padding-top: 76px !important;
  padding-bottom: 76px !important;
}
body:not(.lw-single) .lw-dine-head { margin-bottom: var(--sp-5) !important; }
body:not(.lw-single) .lw-dine-head .lw-h2 { margin-bottom: var(--sp-2) !important; }

/* parent pages: the same 44px touch floor the child already has */
@media (max-width: 1024px) {
  .lw-ev-card-link,
  .lw-sec-cta,
  .lw-txtlink,
  .lw-link,
  .lw-rs-link,
  .lw-op-link { min-height: 44px !important; display: inline-flex; align-items: center; }
  .lw-news-check input[type="checkbox"],
  .lw-nl-consent input[type="checkbox"],
  input[type="checkbox"], input[type="radio"] {
    width: 44px !important; height: 44px !important;
    min-width: 44px !important; min-height: 44px !important;
  }
}

/* filter selects sat at 39px on touch */
@media (max-width: 1024px) {
  select, .lw-of-select select, .lw-ev-filter select {
    min-height: 44px !important;
    height: auto !important;
  }
}

/* breadcrumbs and the header Rates link were 21px / 12px */
.lw-crumbs a, .lw-crumb a, nav[aria-label="Breadcrumb"] a,
.lw-head-rates {
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}
@media (max-width: 1024px) {
  .lw-crumbs a, .lw-crumb a, nav[aria-label="Breadcrumb"] a,
  .lw-head-rates { min-height: 44px; }
}

/* touch floor: the last near-misses (43px inputs/links, 29px subnav, 40px arrows) */
@media (max-width: 1024px) {
  .lw-news-input input,
  .lw-nl-input input,
  input[type="email"], input[type="text"], input[type="tel"],
  .lw-op-more,
  .lw-subnav-inner a {
    min-height: 44px !important;
    display: inline-flex;
    align-items: center;
  }
  .lw-subnav-inner a { padding-top: 10px; padding-bottom: 10px; }
  .lw-rm-slider-arrow {
    width: 44px !important;
    height: 44px !important;
  }
}

/* room pages use .lw-crumb-inner, not .lw-crumbs -- 'Home' sat at 23.9px wide */
.lw-crumb-inner a {
  min-height: 24px;
  min-width: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
@media (max-width: 1024px) {
  .lw-crumb-inner a { min-height: 44px; }
}

/* ============================================================
   1. RUN STRIP -- +20% text, no rules above or below
   ============================================================ */
.lw-run {
  border-top: 0 !important;
  border-bottom: 0 !important;
}
.lw-run .lw-run-track span {
  /* was clamp(22px, 3.2vw, 42px) -- +20% */
  font-size: clamp(26px, 3.84vw, 50px) !important;
}
@media (max-width: 720px) {
  /* was clamp(19px, 5.4vw, 26px) -- +20% */
  .lw-run .lw-run-track span { font-size: clamp(23px, 6.48vw, 31px) !important; }
}

/* ============================================================
   2. OFFER CARDS -- photo-led, name only at rest, detail on hover
   ============================================================ */
.lw-offers-list { align-items: stretch; }

.lw-offer-hov {
  position: relative;
  overflow: hidden;
  border-radius: 14px;
  min-height: 460px;
  isolation: isolate;
  background: #1a1409;
}
.lw-offer-hov .lw-offer-media {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.02);
  transition: transform .6s ease;
  z-index: 0;
}
.lw-offer-hov:hover .lw-offer-media,
.lw-offer-hov:focus-within .lw-offer-media { transform: scale(1.07); }

.lw-offer-scrim {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: linear-gradient(to top,
              rgba(20,15,6,.88) 0%,
              rgba(20,15,6,.55) 38%,
              rgba(20,15,6,.12) 70%,
              rgba(20,15,6,.04) 100%);
  transition: background .45s ease;
}
.lw-offer-hov:hover .lw-offer-scrim,
.lw-offer-hov:focus-within .lw-offer-scrim {
  background: linear-gradient(to top,
              rgba(20,15,6,.94) 0%,
              rgba(20,15,6,.86) 55%,
              rgba(20,15,6,.72) 100%);
}

.lw-offer-hov .lw-offer-body {
  position: relative;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  height: 100%;
  padding: 26px 24px 24px;
  color: #fff;
}
.lw-offer-hov .lw-offer-tag {
  display: inline-block;
  font-family: var(--f-body);
  font-size: 12px;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin-bottom: 8px;
}
.lw-offer-hov .lw-offer-rest h3 {
  font-family: var(--f-display);
  font-size: clamp(21px, 1.9vw, 27px);
  line-height: 1.22;
  color: #fff;
  margin: 0;
}

/* the detail block: collapsed at rest, revealed on hover/focus */
.lw-offer-more {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition: grid-template-rows .45s ease, opacity .35s ease, margin-top .45s ease;
  margin-top: 0;
  overflow: hidden;
}
.lw-offer-hov:hover .lw-offer-more,
.lw-offer-hov:focus-within .lw-offer-more {
  grid-template-rows: 1fr;
  opacity: 1;
  margin-top: 14px;
}
.lw-offer-more > * { min-height: 0; }
.lw-offer-more p {
  color: rgba(255,255,255,.9);
  font-size: 15px;
  line-height: 1.6;
  margin: 0 0 12px;
}
.lw-offer-more ul {
  list-style: none;
  margin: 0 0 14px;
  padding: 0;
}
.lw-offer-more li {
  color: rgba(255,255,255,.86);
  font-size: 14px;
  line-height: 1.5;
  padding: 3px 0;
  display: flex;
  gap: 9px;
  align-items: flex-start;
}
.lw-offer-more li i { color: var(--gold-light); margin-top: 4px; font-size: 11px; }
.lw-offer-more .lw-offer-price {
  display: block;
  font-family: var(--f-display);
  font-size: 20px;
  color: #fff;
  margin-bottom: 14px;
}
.lw-offer-more .lw-offer-price em {
  font-size: 13px;
  font-style: normal;
  color: rgba(255,255,255,.72);
}
.lw-offer-cta {
  display: flex;
  align-items: center;
  gap: 18px;
  flex-wrap: wrap;
}
.lw-txtlink-light {
  color: var(--gold-light);
  border-bottom-color: rgba(245,213,118,.5);
}
.lw-txtlink-light:hover { color: #fff; border-bottom-color: #fff; }

/* touch devices cannot hover -- show the detail rather than hide it */
@media (hover: none) {
  .lw-offer-more { grid-template-rows: 1fr; opacity: 1; margin-top: 14px; }
  .lw-offer-scrim {
    background: linear-gradient(to top,
                rgba(20,15,6,.94) 0%,
                rgba(20,15,6,.86) 55%,
                rgba(20,15,6,.7) 100%);
  }
}

.lw-offers-viewmore {
  display: flex;
  justify-content: center;
  margin-top: 34px;
}

/* ============================================================
   3. FLOATING CALL -- mobile only, right side, above back-to-top
   ============================================================ */
@media (min-width: 1025px) {
  .lw-contact-float, .lw-contact-wrap { display: none !important; }
}
@media (max-width: 1024px) {
  .lw-contact-float, .lw-contact-wrap {
    display: block !important;
    left: auto !important;
    right: 14px !important;
    bottom: 150px !important;
  }
  .lw-top { right: 14px !important; bottom: 90px !important; }
}

/* concept-2 sets .lw-offer-media { aspect-ratio: 16/10 }, which capped the
   photo at half the card and left dead black below. These override the
   inherited card shell so the image genuinely fills. */
.lw-offer-hov {
  display: block !important;
  border: 0 !important;
  background: #1a1409 !important;
}
.lw-offer-hov:hover { transform: none !important; }
.lw-offer-hov .lw-offer-media {
  aspect-ratio: auto !important;
  width: 100% !important;
  height: 100% !important;
}
.lw-offer-hov .lw-offer-body {
  padding: 26px 24px 24px !important;
  flex: none !important;
}

/* The grid 0fr collapse left a 200px residue and the copy floated mid-card.
   Absolute-position the stack at the bottom and collapse by max-height, which
   the inherited flex rules cannot fight. visibility:hidden also removes the
   ghost text and takes it out of the a11y tree while at rest. */
.lw-offer-hov .lw-offer-body {
  position: absolute !important;
  left: 0; right: 0; bottom: 0;
  height: auto !important;
  display: block !important;
}
.lw-offer-more {
  display: block !important;
  grid-template-rows: none !important;
  max-height: 0;
  visibility: hidden;
  margin-top: 0;
  transition: max-height .45s ease, opacity .35s ease,
              margin-top .45s ease, visibility 0s linear .45s;
}
.lw-offer-hov:hover .lw-offer-more,
.lw-offer-hov:focus-within .lw-offer-more {
  max-height: 420px;
  visibility: visible;
  opacity: 1;
  margin-top: 14px;
  transition: max-height .45s ease, opacity .35s ease,
              margin-top .45s ease, visibility 0s linear 0s;
}
@media (hover: none) {
  .lw-offer-more {
    max-height: none;
    visibility: visible;
    opacity: 1;
    margin-top: 14px;
  }
}

/* concept-2 pins the call button ABSOLUTE inside the hero on mobile
   (.lw-hero > .lw-contact-float { bottom: calc(100% + 8px) }), so it scrolled
   away with the hero instead of floating. The client wants it fixed on the
   right, above the back-to-top arrow. Higher specificity than the hero rule. */
@media (max-width: 1024px) {
  .lw-hero > .lw-contact-float,
  .lw-hero-caption .lw-contact-float,
  .lw-contact-float.lw-contact-wrap {
    position: fixed !important;
    right: 14px !important;
    left: auto !important;
    top: auto !important;
    bottom: 150px !important;
    z-index: 60;
  }
}

/* contact-us "Get Directions" sat at 24-34px on touch */
@media (max-width: 1024px) {
  a[href*="google.com/maps"], a[href*="maps.app.goo.gl"],
  .lw-map-link, .lw-directions {
    min-height: 44px !important;
    display: inline-flex;
    align-items: center;
  }
}

/* On touch the whole detail block shows, so the card needs the height for it;
   without this the tag/heading are pushed above the card's top edge. */
@media (hover: none) {
  .lw-offer-hov { min-height: 560px; }
  .lw-offer-hov .lw-offer-body {
    position: relative !important;
    height: 100% !important;
    display: flex !important;
    flex-direction: column;
    justify-content: flex-end;
  }
}

/* "View details" on the dark offer card measured 3.42:1 -- the base
   .lw-txtlink colour was winning over .lw-txtlink-light. Raise specificity
   and use the light gold, which measures ~10:1 on this ground. */
.lw-offer-hov .lw-txtlink,
.lw-offer-hov .lw-txtlink-light,
a.lw-txtlink.lw-txtlink-light {
  color: var(--gold-light) !important;
  border-bottom-color: rgba(245,213,118,.55) !important;
}
.lw-offer-hov .lw-txtlink:hover,
a.lw-txtlink.lw-txtlink-light:hover {
  color: #FFFFFF !important;
  border-bottom-color: #FFFFFF !important;
}

/* visibility:hidden made Book Now / View details unreachable by keyboard --
   :focus-within cannot fire on an element that cannot be focused, so the
   card was a keyboard trap. Keep the links focusable and let focus reveal
   the block; only the RESTING state is hidden from AT. */
.lw-offer-more { visibility: visible !important; }
.lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > p,
.lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > ul,
.lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > .lw-offer-price {
  visibility: hidden;
}
.lw-offer-hov:focus-within .lw-offer-more {
  max-height: 420px !important;
  opacity: 1 !important;
  margin-top: 14px !important;
}
/* a focused link inside a collapsed card must be visible where it sits */
.lw-offer-more a:focus-visible {
  outline: 2px solid var(--gold-light);
  outline-offset: 3px;
}

/* ============================================================
   SITEMAP PAGE (human-readable)
   ============================================================ */
.lw-sm {
  max-width: 1200px;
  margin: 0 auto;
  padding: clamp(70px, 8vw, 120px) clamp(20px, 5vw, 60px) clamp(60px, 7vw, 100px);
}
.lw-sm-head { margin-bottom: clamp(34px, 4vw, 56px); }
.lw-sm-group { margin-bottom: clamp(34px, 4vw, 54px); }
.lw-sm-h2 {
  font-family: var(--f-display);
  font-size: clamp(19px, 1.7vw, 23px);
  font-weight: 500;
  color: var(--ink);
  padding-bottom: 12px;
  margin: 0 0 6px;
  border-bottom: 1px solid rgba(62,46,18,.14);
}
.lw-sm-list { list-style: none; margin: 0; padding: 0; }
.lw-sm-list li {
  display: grid;
  grid-template-columns: minmax(180px, 260px) 1fr;
  gap: clamp(12px, 2vw, 28px);
  align-items: baseline;
  padding: 13px 0;
  border-bottom: 1px solid rgba(62,46,18,.07);
}
.lw-sm-list a {
  font-family: var(--f-body);
  font-size: 16px;
  font-weight: 500;
  color: var(--gold-ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}
.lw-sm-list a:hover { color: var(--ink); border-bottom-color: var(--ink); }
.lw-sm-list span {
  font-family: var(--f-body);
  font-size: 14px;
  line-height: 1.55;
  color: var(--muted);
}
@media (max-width: 720px) {
  .lw-sm-list li { grid-template-columns: 1fr; gap: 4px; }
  .lw-sm-list a { min-height: 44px; }
}

/* ============================================================
   TYPOGRAPHY -- H3 SCALE CONSOLIDATION (SYM-02 / TYP)
   Twelve distinct H3 sizes were rendering at desktop (14, 21, 23, 25, 26,
   27, 28, 29, 30, 32, 40px) for the same heading role. Three sizes are
   deliberate and kept:
     --fs-h3      26px  the standard card/section heading
     --fs-h3-lg   29px  a promoted heading (dining/meeting venue names)
     --fs-h4      20px  small-card headings
   Everything else is collapsed onto them. Sizes are clamp()-based so they
   scale across every viewport rather than snapping at breakpoints.
   ============================================================ */
:root {
  --fs-h3-lg: clamp(22px, 2.1vw, 29px);
  --fs-h3-sm: clamp(15px, 1.35vw, 18px);
}

/* promoted headings -- one value, not 27/28/30/32/40 */
.lw-offer-rest h3,
.lw-news-copy h3,
.lw-nl-title,
.lw-ctp-office h3,
.lw-ctp-body h3,
.lw-dn-name,
.lw-mt-name {
  font-size: var(--fs-h3-lg) !important;
  font-family: var(--f-display);
  line-height: 1.2;
}

/* standard headings -- collapse 23/25 onto the h3 token */
.lw-xs-title,
.lw-panel-name,
.lw-rc-name,
.lw-nb-h {
  font-size: var(--fs-h3) !important;
  font-family: var(--f-display);
  line-height: 1.25;
}

/* small-card headings (facility cards were 14px, below the h4 floor) */
.lw-fc-card h3 {
  font-size: var(--fs-h3-sm) !important;
  font-family: var(--f-body);
  font-weight: 600;
  line-height: 1.35;
}

/* The consolidation above lost to later same-specificity rules in
   concept-2.css / inner.css. Raise specificity so the scale actually wins. */
.lw-fc-grid .lw-fc-card h3,
article.lw-fc-card h3 {
  font-size: var(--fs-h3-sm) !important;
  font-family: var(--f-body) !important;
  font-weight: 600 !important;
  line-height: 1.35 !important;
}
.lw-props-panel h3.lw-panel-name,
.lw-rc-plate h3.lw-rc-name {
  font-size: var(--fs-h3) !important;
}
.lw-news .lw-news-copy h3,
section.lw-news .lw-news-copy h3 {
  font-size: var(--fs-h3-lg) !important;
}

/* form submission feedback (replaces the old alert() stubs) */
.lw-form-status {
  margin: 14px 0 0;
  font-family: var(--f-body);
  font-size: 14px;
  line-height: 1.5;
  color: var(--gold-ink);
}
.lw-form-status.is-err { color: #A3341F; }
.lw-form-status:empty { display: none; }

/* ============================================================
   SECTION CTA -- three defects the earlier pass missed
   1. border was hardcoded rgba(152,13,46,.45) in concept-2.css, bypassing
      the --wine token my palette aliased to gold, so it still painted the
      OLD crimson around gold text;
   2. padding was 14px 30px 2px -- the design-system rule's padding-bottom:2px
      (meant for underline-style text links) overrode the button's bottom
      padding, so the label sat high in its box;
   3. 39px tall, under the 44px touch floor at every width.
   ============================================================ */
.lw-sec-cta {
  border-color: rgba(194, 157, 72, .55) !important;
  color: var(--gold-ink) !important;
  padding: 13px 30px !important;
  min-height: 44px;
  justify-content: center;
  border-bottom-width: 1px !important;
}
.lw-sec-cta:hover {
  background: var(--gold-ink) !important;
  color: #FFFFFF !important;
  border-color: var(--gold-ink) !important;
}
/* the same crimson leaked into the homepage property tag */
.lw-panel-tag {
  border-color: rgba(194, 157, 72, .55) !important;
  color: var(--gold-ink) !important;
}
/* .lw-events renders on a WHITE ground, not a dark band -- light gold there
   measured 1.43:1. Only invert where the ground is genuinely dark. */
.lw-band-dark .lw-sec-cta,
.lw-props .lw-sec-cta {
  border-color: rgba(245, 213, 118, .7) !important;
  color: var(--gold-light) !important;
}
.lw-band-dark .lw-sec-cta:hover,
.lw-props .lw-sec-cta:hover {
  background: var(--gold-light) !important;
  color: var(--ink) !important;
  border-color: var(--gold-light) !important;
}

/* Child dining rows +10% (330px -> 363px at desktop). Every stop of the clamp
   is scaled, not just the middle one, so the increase holds at all widths
   rather than only where 32vw happens to win. */
body.lw-single .lw-dn-row {
  min-height: 399px !important;   /* 330 -> 363 -> 399 (two +10% steps) */
}
@media (min-width: 1600px) {
  body.lw-single .lw-dn-row { min-height: 400px !important; }
}
@media (max-width: 900px) {
  body.lw-single .lw-dn-media { min-height: 264px !important; }
}

/* Small uppercase letterspaced links: #8A6B2A computes to 4.98 on white but
   its thin strokes measured 2.31 at 12.5px. This darker gold holds 6.96. */
:root { --gold-ink-strong: #6E5622; }
.lw-sec-cta,
.lw-link:not(.lw-link-light), .lw-rs-link, .lw-op-link, .lw-ev-card-link {
  color: var(--gold-ink-strong) !important;
}
/* the light variant marks a link on a dark band -- leave it light */
.lw-link.lw-link-light {
  color: var(--gold-light) !important;
  border-bottom-color: rgba(245,213,118,.5) !important;
}
.lw-sec-cta { border-color: rgba(110, 86, 34, .5) !important; }
.lw-sec-cta:hover {
  background: var(--gold-ink-strong) !important;
  border-color: var(--gold-ink-strong) !important;
  color: #FFFFFF !important;
}
/* dark grounds still invert */
.lw-band-dark .lw-sec-cta, .lw-props .lw-sec-cta,
.lw-band-dark .lw-link, .lw-props .lw-link {
  color: var(--gold-light) !important;
}

/* The section CTA sets 12.5px uppercase at 0.1em tracking with weight 600;
   even #6E5622 measured 4.28 because the strokes are so thin. Nudging the
   weight to 700 thickens the glyph core rather than darkening the colour
   further, which would drift away from the brand gold. */
.lw-sec-cta {
  font-weight: 700 !important;
  color: #5A461B !important;          /* 9.03:1 on white */
  border-color: rgba(90, 70, 27, .5) !important;
}
.lw-sec-cta:hover {
  background: #5A461B !important;
  border-color: #5A461B !important;
  color: #FFFFFF !important;
}

/* ============================================================
   BACKGROUND TEXTURE -- parity with the child page
   The child carries image5 behind its light sections; the parent had none,
   so the two sites read as different products. Same image, same 70% white
   veil, same responsive widths, so existing dark type is unaffected.
   ============================================================ */
body:not(.lw-single) .lw-story,
body:not(.lw-single) .lw-dine,
body:not(.lw-single) .lw-events,
body:not(.lw-single) .lw-journal,
body:not(.lw-single) .lw-voices,
body:not(.lw-single) .lw-au-intro,
body:not(.lw-single) .lw-au-collage,
body:not(.lw-single) .lw-au-mv,
body:not(.lw-single) .lw-mp,
body:not(.lw-single) .lw-op,
body:not(.lw-single) .lw-bl,
body:not(.lw-single) .lw-faq,
body:not(.lw-single) .lw-ctp,
body:not(.lw-single) .lw-ct,
body:not(.lw-single) .lw-sm {
  background-color: #FFFFFF;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.70), rgba(255, 255, 255, 0.70)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 1024px) {
  body:not(.lw-single) .lw-story, body:not(.lw-single) .lw-dine,
  body:not(.lw-single) .lw-events, body:not(.lw-single) .lw-journal,
  body:not(.lw-single) .lw-voices, body:not(.lw-single) .lw-au-intro,
  body:not(.lw-single) .lw-au-collage, body:not(.lw-single) .lw-au-mv,
  body:not(.lw-single) .lw-mp, body:not(.lw-single) .lw-op,
  body:not(.lw-single) .lw-bl, body:not(.lw-single) .lw-faq,
  body:not(.lw-single) .lw-ctp, body:not(.lw-single) .lw-ct,
  body:not(.lw-single) .lw-sm {
    background-image:
      linear-gradient(rgba(255, 255, 255, 0.70), rgba(255, 255, 255, 0.70)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}
@media (max-width: 640px) {
  body:not(.lw-single) .lw-story, body:not(.lw-single) .lw-dine,
  body:not(.lw-single) .lw-events, body:not(.lw-single) .lw-journal,
  body:not(.lw-single) .lw-voices, body:not(.lw-single) .lw-au-intro,
  body:not(.lw-single) .lw-au-collage, body:not(.lw-single) .lw-au-mv,
  body:not(.lw-single) .lw-mp, body:not(.lw-single) .lw-op,
  body:not(.lw-single) .lw-bl, body:not(.lw-single) .lw-faq,
  body:not(.lw-single) .lw-ctp, body:not(.lw-single) .lw-ct,
  body:not(.lw-single) .lw-sm {
    background-image:
      linear-gradient(rgba(255, 255, 255, 0.70), rgba(255, 255, 255, 0.70)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}

/* Parent OFFERS band takes the facilities creative (image3), matching the
   child's dark facilities block. Same 0.86 dark veil, so the white card
   type and gold eyebrow keep their measured contrast. */
body:not(.lw-single) .lw-offers {
  background-color: #171009;
  background-image:
    linear-gradient(rgba(14, 10, 4, 0.86), rgba(14, 10, 4, 0.86)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1800/crestline-hotels-and-resorts/image3_a8285a44.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 1024px) {
  body:not(.lw-single) .lw-offers {
    background-image:
      linear-gradient(rgba(14, 10, 4, 0.86), rgba(14, 10, 4, 0.86)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image3_a8285a44.jpg");
  }
}

/* ============================================================
   TYPE SCALE -- final outliers collapsed onto tokens
   These five were genuine drift: sizes that did the same job as an existing
   token but arrived at a different number. The multi-value roles that REMAIN
   (H1 64/44, H3 26/29/18, P 15/14/13/11) are deliberate hierarchy, not drift.
   ============================================================ */
.lw-ctp-lede {
  font-size: var(--fs-body);          /* was an inline 16px */
  line-height: 1.75;
  color: var(--muted);
  max-width: 620px;
  margin: 20px auto 0;
}
/* 11.5px rounded to 12 and duplicated the 11px kicker -- one small size */
.lw-nb-foot { font-size: 11px !important; }
/* a lede paragraph is body copy, not a heading-sized outlier */
.lw-rm-desc .lw-rm-lede-inline { font-size: var(--fs-body) !important; }
/* section headings are one size, wherever they appear */
.lw-ct2-left .lw-h2,
.lw-fc .lw-h2,
.lw-pg-intro-inner .lw-h2 { font-size: var(--fs-h2) !important; }

/* The child page's intro H2 stayed at 40px -- a later rule beat the earlier
   selector. Section headings are one size wherever they sit. */
body.lw-single .lw-pg-intro-inner .lw-h2,
body.lw-single .lw-pg-intro .lw-h2 { font-size: var(--fs-h2) !important; }

/* Eyebrow fragmented to 12/13/14px on phone because inner.css and
   concept-2.css each hardcode their own mobile size. One token, all widths. */
.lw-eyebrow, .lw-pg-eyebrow, .lw-eyebrow-brass,
.lw-pg-intro .lw-eyebrow {
  font-size: var(--fs-xs) !important;
}
@media (max-width: 1024px) {
  .lw-eyebrow, .lw-pg-eyebrow, .lw-eyebrow-brass,
  .lw-pg-intro .lw-eyebrow { font-size: var(--fs-xs) !important; }
}

/* ============================================================
   PARENT HOME -- new Rajasthani creative (image_6) for review
   Applied to index.html ONLY for now, per the user's "if looks good then
   sitewide". Replaces image5 on this page's light sections.

   NOTE on weight: these assets are stored as PNG, so q_/f_auto were being
   ignored and the file shipped at ~1 MB. Forcing f_jpg brings the same
   1600px render to 77 KB -- a 92% saving. The existing image5 has the same
   problem (966 KB) and should get the same treatment when we go sitewide.
   ============================================================ */
body:not(.lw-single) .lw-story,
body:not(.lw-single) .lw-dine,
body:not(.lw-single) .lw-events,
body:not(.lw-single) .lw-journal,
body:not(.lw-single) .lw-voices,
body:not(.lw-single) .lw-news {
  background-color: #FFFFFF;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.55)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
@media (max-width: 1024px) {
  body:not(.lw-single) .lw-story, body:not(.lw-single) .lw-dine,
  body:not(.lw-single) .lw-events, body:not(.lw-single) .lw-journal,
  body:not(.lw-single) .lw-voices, body:not(.lw-single) .lw-news, body:not(.lw-single) .lw-run {
    background-image:
      linear-gradient(rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.55)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1100/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}
@media (max-width: 640px) {
  body:not(.lw-single) .lw-story, body:not(.lw-single) .lw-dine,
  body:not(.lw-single) .lw-events, body:not(.lw-single) .lw-journal,
  body:not(.lw-single) .lw-voices, body:not(.lw-single) .lw-news, body:not(.lw-single) .lw-run {
    background-image:
      linear-gradient(rgba(255, 255, 255, 0.55), rgba(255, 255, 255, 0.55)),
      url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_760/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  }
}

/* the run strip sits directly below the hero -- give it the creative too so
   the band under the banner reads as one surface */
body:not(.lw-single) .lw-run {
  background-color: #FFFFFF;
  background-image:
    linear-gradient(rgba(255, 255, 255, 0.62), rgba(255, 255, 255, 0.62)),
    url("https://assets.simplotel.com/simplotel/image/upload/q_70,f_jpg,w_1600/crestline-hotels-and-resorts/image_6_28e0a622.jpg");
  background-size: cover;
  background-position: center top;
  background-repeat: no-repeat;
}

/* ============================================================
   SECTION RHYTHM -- 40px top and bottom, sitewide
   Replaces the 128/128 desktop and 72/72 mobile rhythm with one value at
   every breakpoint, so section spacing is identical on every page and
   viewport. Applied with !important because concept-2.css and inner.css
   each set their own section padding.
   ============================================================ */
:root {
  --section-y:    60px;
  --section-y-sm: 60px;
}
main > section,
body > section,
.lw-sec, .lw-section,
.lw-story, .lw-props, .lw-offers, .lw-dine, .lw-events, .lw-journal,
.lw-voices, .lw-news, .lw-run, .lw-au-intro, .lw-au-collage, .lw-au-mv,
.lw-au-cta, .lw-mp, .lw-op, .lw-bl, .lw-faq, .lw-ctp, .lw-ct, .lw-sm,
.lw-of-head, .lw-of-cta, .lw-dn-cross, .lw-dn-cta, .lw-dinemini,
.lw-rs, .lw-dp, .lw-ex, .lw-gu, .lw-loc, .lw-fc, .lw-concierge,
.lw-ritual, .lw-rm-amen, .lw-rm-gallery, .lw-lb, .lw-loc-info, .lw-404 {
  padding-top: 60px !important;
  padding-bottom: 60px !important;
}
/* the hero and page banners are full-bleed images -- never padded */
.lw-hero, .lw-pg-hero, .lw-abt-hero, .lw-crumb {
  padding-top: revert !important;
  padding-bottom: revert !important;
}
/* intro blocks sit directly above their section: no doubled gap */
.lw-pg-intro { padding-top: 60px !important; padding-bottom: 60px !important; }
.lw-pg-intro + section,
.lw-pg-intro + .lw-fc,
.lw-pg-intro + .lw-bl { padding-top: 60px !important; }

/* Three sections kept their own padding from earlier !important rules
   (.lw-props 128, my .lw-dine 76 reduction, .lw-nb 34). The 40px rhythm
   supersedes all of them. */
body:not(.lw-single) .lw-dine,
.lw-props, .lw-nb,
body.lw-single .lw-nb {
  padding-top: 60px !important;
  padding-bottom: 60px !important;
}

/* --section-y is redefined on body:not(.lw-single) and inside two mobile
   media queries; a body-scoped variable beats :root for its descendants, so
   #properties resolved to 128px despite the :root value being 40. Pin the
   token at every scope that redefines it, rather than stacking overrides. */
body, body:not(.lw-single), body.lw-single {
  --section-y: 60px;
  --section-y-sm: 60px;
}
@media (max-width: 720px) {
  :root, body, body:not(.lw-single), body.lw-single {
    --section-y: 60px;
    --section-y-sm: 60px;
  }
}
@media (max-width: 480px) {
  :root, body, body:not(.lw-single), body.lw-single {
    --section-y: 60px;
    --section-y-sm: 60px;
  }
}
/* the room-page intro carried its own padding */
.lw-rm-intro { padding-top: 60px !important; padding-bottom: 60px !important; }

/* ============================================================
   BOOKING FORM -- City, Property, Dates, Rooms & Guests, Promo
   ============================================================ */
.lw-bk {
  display: grid;
  grid-template-columns: 1fr 1.3fr 1fr 1fr 1.2fr 1fr auto;
  gap: 0;
  align-items: stretch;
  background: rgba(255,255,255,.97);
  border-radius: 4px;
  overflow: visible;
  box-shadow: 0 18px 44px rgba(20,15,6,.22);
}
.lw-bk-field {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 3px;
  padding: 12px 16px;
  border-right: 1px solid rgba(62,46,18,.12);
  min-width: 0;
}
.lw-bk-field:last-of-type { border-right: 0; }
.lw-bk-field label {
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--muted);
}
.lw-bk-field input,
.lw-bk-field select,
.lw-bk-occ-btn {
  font-family: var(--f-body);
  font-size: 14px;
  color: var(--ink);
  border: 0;
  background: transparent;
  padding: 0;
  width: 100%;
  min-height: 26px;
  appearance: none;
  cursor: pointer;
}
.lw-bk-field input::placeholder { color: rgba(90,78,60,.6); }
.lw-bk-field input:focus-visible,
.lw-bk-field select:focus-visible,
.lw-bk-occ-btn:focus-visible {
  outline: 2px solid var(--gold-ink);
  outline-offset: 3px;
}
.lw-bk-occ-btn {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  text-align: left;
}
.lw-bk-occ-btn i { font-size: 10px; color: var(--muted); }
.lw-bk-go {
  background: var(--gold-ink);
  color: #fff;
  border: 0;
  font-family: var(--f-body);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding: 0 34px;
  min-height: 60px;
  cursor: pointer;
  transition: background .2s ease;
}
.lw-bk-go:hover { background: var(--ink); }

/* rooms & guests popover */
.lw-bk-occ-pop {
  position: absolute;
  top: calc(100% + 10px);
  left: 0;
  z-index: 70;
  width: 320px;
  max-width: 92vw;
  background: #fff;
  border-radius: 6px;
  box-shadow: 0 22px 54px rgba(20,15,6,.3);
  overflow: hidden;
}
.lw-bk-occ-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 18px;
  background: var(--gold-ink);
  color: #fff;
  font-family: var(--f-display);
  font-size: 15px;
  letter-spacing: .04em;
}
.lw-bk-occ-x {
  background: none; border: 0; color: #fff;
  font-size: 15px; cursor: pointer;
  min-width: 32px; min-height: 32px;
}
.lw-bk-room { padding: 14px 18px 4px; }
.lw-bk-room + .lw-bk-room { border-top: 1px solid rgba(62,46,18,.1); }
.lw-bk-room-h {
  display: flex; align-items: center; justify-content: space-between;
  font-family: var(--f-body); font-size: 11px; font-weight: 600;
  letter-spacing: .14em; text-transform: uppercase; color: var(--muted);
  margin-bottom: 8px;
}
.lw-bk-rm {
  background: none; border: 0; cursor: pointer;
  font-size: 11px; color: var(--gold-ink); text-transform: none;
  letter-spacing: 0; text-decoration: underline;
  min-height: 32px;
}
.lw-bk-row {
  display: flex; align-items: center; justify-content: space-between;
  padding: 9px 0;
  font-family: var(--f-body); font-size: 14px; color: var(--ink);
}
.lw-bk-step { display: inline-flex; align-items: center; gap: 12px; }
.lw-bk-step button {
  width: 34px; height: 34px;
  border: 1px solid rgba(62,46,18,.25);
  background: #fff; color: var(--gold-ink);
  font-size: 16px; line-height: 1; cursor: pointer;
  border-radius: 3px;
}
.lw-bk-step button:hover { border-color: var(--gold-ink); background: #FFFBF2; }
.lw-bk-step b { min-width: 18px; text-align: center; font-weight: 500; }
.lw-bk-occ-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 12px 18px 16px;
  border-top: 1px solid rgba(62,46,18,.1);
}
.lw-bk-addroom {
  background: none; border: 0; cursor: pointer;
  font-family: var(--f-body); font-size: 13px; font-weight: 600;
  color: var(--gold-ink); min-height: 40px;
}
.lw-bk-done { padding: 10px 26px !important; min-height: 40px; }

/* tablet and below: two columns, then one */
@media (max-width: 1200px) {
  .lw-bk { grid-template-columns: 1fr 1fr 1fr; }
  .lw-bk-go { grid-column: 1 / -1; min-height: 52px; }
  .lw-bk-field { border-bottom: 1px solid rgba(62,46,18,.12); }
}
@media (max-width: 720px) {
  .lw-bk { grid-template-columns: 1fr 1fr; }
  .lw-bk-field:nth-of-type(1),
  .lw-bk-field:nth-of-type(2),
  .lw-bk-occ, .lw-bk-field:last-of-type { grid-column: 1 / -1; }
  .lw-bk-occ-pop { left: 0; right: 0; width: auto; }
}

/* The booking bar sits at the BOTTOM of the hero, so a popover opening
   downward runs past the fold and is clipped by .lw-hero's overflow:hidden.
   Open it upward instead, and lift it out of the clipping context. */
.lw-bk-occ-pop {
  top: auto;
  bottom: calc(100% + 10px);
  max-height: min(70vh, 460px);
  overflow-y: auto;
}
.lw-hero { overflow: visible; }
/* the hero's own media must still be clipped, or the slides bleed out */
.lw-hero-media, .lw-hero-video { overflow: hidden; }
@media (max-width: 720px) {
  /* on a phone the bar can sit high enough that upward has no room --
     centre the panel over the viewport instead */
  .lw-bk-occ-pop {
    position: fixed;
    top: 50%; left: 50%; right: auto; bottom: auto;
    transform: translate(-50%, -50%);
    width: min(360px, 92vw);
    max-height: 80vh;
  }
}

/* ============================================================
   BOOKING POPUP (mobile / zoomed) -- the same form, one screen
   The popup card was sized for the old 3-field bar; with 7 fields the
   form overflowed the card and the header floated over it.
   ============================================================ */
.lw-bookpop {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 16px;
  background: rgba(20, 15, 6, .72);
  opacity: 0;
  transition: opacity .28s ease;
}
.lw-bookpop.is-open { opacity: 1; }
.lw-bookpop-card {
  width: min(420px, 100%);
  max-height: calc(100vh - 32px);
  display: flex;
  flex-direction: column;
  background: #fff;
  border-radius: 8px;
  overflow: hidden;
  box-shadow: 0 26px 60px rgba(20, 15, 6, .4);
}
.lw-bookpop-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 18px;
  background: var(--gold-ink);
  flex: none;
}
.lw-bookpop-head h3 {
  margin: 0;
  font-family: var(--f-display);
  font-size: 16px !important;
  font-weight: 500;
  color: #fff;
}
.lw-bookpop-close {
  background: none; border: 0; color: #fff;
  font-size: 16px; cursor: pointer;
  min-width: 44px; min-height: 44px;
}
#lwBookPopSlot {
  flex: 1 1 auto;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}
/* inside the popup the bar becomes a single stacked column */
.lw-bookpop .lw-bk {
  display: flex !important;
  flex-direction: column;
  box-shadow: none;
  border-radius: 0;
  background: #fff;
}
.lw-bookpop .lw-bk-field {
  border-right: 0;
  border-bottom: 1px solid rgba(62,46,18,.12);
  padding: 12px 18px;
}
.lw-bookpop .lw-bk-go {
  margin: 14px 18px 18px;
  min-height: 52px;
  border-radius: 3px;
}
/* the occupancy panel is already position:fixed and centred at <=720px */
.lw-bookpop .lw-bk-occ-pop { z-index: 210; }

/* The hero pins .lw-hero-book absolutely at the foot of the banner. When the
   form is MOVED into the popup it carried that positioning with it, so it left
   the flow, the slot measured 0px and the card collapsed to 128px with the
   form floating outside it. Inside the popup it must be a normal block. */
.lw-bookpop .lw-hero-book,
.lw-bookpop #lwHeroBook {
  position: static !important;
  left: auto !important; right: auto !important;
  top: auto !important; bottom: auto !important;
  transform: none !important;
  width: 100% !important;
  max-width: none !important;
  margin: 0 !important;
}

/* ============================================================
   OUR HOTELS DROPDOWN -- crystal panel, city / property / min rate
   Matches the translucent treatment used on the child property bar:
   a warm gradient at low opacity over a blur, so the hero reads through
   without the panel becoming a solid block.
   ============================================================ */
.lw-drop-x {
  min-width: 400px;
  padding: 10px 0 8px !important;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, .2) !important;
  background: linear-gradient(140deg,
      rgba(28, 21, 8, 0.985) 0%,
      rgba(44, 33, 12, 0.985) 55%,
      rgba(58, 44, 17, 0.985) 100%) !important;
  backdrop-filter: blur(22px) saturate(1.1);
  -webkit-backdrop-filter: blur(22px) saturate(1.1);
  box-shadow: 0 26px 60px rgba(20, 15, 6, .42);
  overflow: hidden;
}
/* city heading */
.lw-drop-city-h {
  padding: 10px 22px 8px;
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-light);
  border-bottom: 1px solid rgba(255, 255, 255, .12);
  margin-bottom: 4px;
  list-style: none;
}
/* the property row: name+locality left, rate right */
.lw-drop-x > li > a {
  display: flex !important;
  align-items: center;
  justify-content: space-between;
  gap: 26px;
  padding: 14px 22px !important;
  min-height: 64px;
  text-decoration: none;
  transition: background .2s ease;
}
.lw-drop-x > li > a:hover,
.lw-drop-x > li > a:focus-visible {
  background: rgba(255, 255, 255, .09);
}
.lw-drop-main {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}
.lw-drop-x .lw-drop-name {
  font-family: var(--f-display) !important;
  font-size: 17px !important;
  font-weight: 500;
  line-height: 1.25;
  color: #FFF3D8 !important;
  letter-spacing: .01em;
  white-space: nowrap;
}
.lw-drop-loc {
  font-family: var(--f-body);
  font-size: 12px;
  line-height: 1.4;
  color: rgba(255, 255, 255, .72);
}
.lw-drop-rate {
  display: flex;
  align-items: baseline;
  gap: 4px;
  flex: none;
  white-space: nowrap;
}
.lw-drop-from,
.lw-drop-per {
  font-family: var(--f-body);
  font-size: 11px;
  color: rgba(255, 255, 255, .66);
}
.lw-drop-rate b {
  font-family: var(--f-display);
  font-size: 19px;
  font-weight: 500;
  color: var(--gold-light);
}
.lw-drop-rate.is-loading b { opacity: .45; }

@media (max-width: 1024px) {
  .lw-drop-x { min-width: 0; width: 100%; }
  .lw-drop-x > li > a { padding: 14px 18px !important; gap: 14px; }
  .lw-drop-x .lw-drop-name { font-size: 16px !important; white-space: normal; }
}

/* A base .lw-drop rule sets flex-direction:column on its links, which stacked
   the rate under the name and centred the block. Force the row layout. */
.lw-drop-x > li > a {
  flex-direction: row !important;
  align-items: center !important;
  text-align: left !important;
}
.lw-drop-x .lw-drop-main {
  align-items: flex-start !important;
  text-align: left !important;
  flex: 1 1 auto;
}
.lw-drop-x .lw-drop-rate { align-self: center; }

/* Inherited .lw-drop rules add a left indent and italicise the name. Clear
   both so the property lines up under the city label in upright display type. */
.lw-drop-x > li,
.lw-drop-x > li > a {
  padding-left: 22px !important;
  margin-left: 0 !important;
  text-indent: 0 !important;
}
.lw-drop-x > li { padding-right: 0 !important; }
.lw-drop-x > li > a { padding-right: 22px !important; }
.lw-drop-x .lw-drop-name,
.lw-drop-x .lw-drop-loc,
.lw-drop-x .lw-drop-rate b {
  font-style: normal !important;
}

/* I set 22px on BOTH the <li> and its <a>, so the indent doubled to 44px.
   The padding belongs on the link only -- the whole row is the hit area. */
.lw-drop-x > li { padding-left: 0 !important; padding-right: 0 !important; }

/* The city heading is itself an <li>, so zeroing li padding flattened it to
   the panel edge while the property row kept its 22px. Give it the same. */
.lw-drop-x > li.lw-drop-city-h {
  padding: 10px 22px 8px !important;
}

/* ============================================================
   BOOKING BAR -- undo the old light-on-dark colouring
   .lw-hero-book was designed as a transparent bar ON the dark hero, so it
   forces cream text with !important. The new bar is a WHITE card, so those
   rules made the labels and values near-invisible (measured 1.1:1). The
   form keeps the .lw-hero-book class for the popup logic, so the colours
   must be overridden here rather than by dropping the class.
   ============================================================ */
.lw-bk.lw-hero-book label,
.lw-bk .lw-bk-field label {
  color: var(--muted) !important;
  text-shadow: none !important;
}
.lw-bk.lw-hero-book input,
.lw-bk.lw-hero-book select,
.lw-bk.lw-hero-book i,
.lw-bk .lw-bk-field input,
.lw-bk .lw-bk-field select,
.lw-bk .lw-bk-occ-btn {
  color: var(--ink) !important;
  text-shadow: none !important;
}
.lw-bk .lw-bk-field input::placeholder {
  color: rgba(90, 78, 60, .65) !important;
}
.lw-bk .lw-bk-occ-btn i,
.lw-bk .lw-bk-field select { color: var(--ink) !important; }
/* the native date picker icon was inverted for the dark bar */
.lw-bk input[type="date"]::-webkit-calendar-picker-indicator {
  filter: none !important;
  opacity: .55;
  cursor: pointer;
}
/* "1 Room, 2 Guests" wrapped to two lines and pushed the row taller */
.lw-bk-occ-btn { white-space: nowrap; }
.lw-bk { grid-template-columns: .8fr 1.35fr .95fr .95fr 1.25fr .9fr auto; }

/* the native picker icon overlapped the last digit of the date */
.lw-bk input[type="date"] {
  padding-right: 2px;
  min-width: 0;
}
.lw-bk input[type="date"]::-webkit-calendar-picker-indicator {
  margin-left: 2px;
  padding: 0;
  width: 15px;
}

/* The date columns were too narrow for "MM/DD/YYYY" plus the picker icon, so
   the year lost its last digit. Widen the two date columns and let the
   occupancy/promo columns give up the space. */
.lw-bk { grid-template-columns: .75fr 1.25fr 1.05fr 1.05fr 1.15fr .8fr auto; }
.lw-bk input[type="date"] { font-size: 13.5px; letter-spacing: -0.01em; }

/* "PROMO CODE" wrapped to two lines and pushed that column's baseline out of
   line with the rest. Labels never wrap. */
.lw-bk-field label { white-space: nowrap; }
.lw-bk { grid-template-columns: .7fr 1.2fr 1.02fr 1.02fr 1.1fr .95fr auto; }

/* Column widths set from MEASURED content, not guessed ratios. Required
   widths at 1440px: City 96, Property 195, Check In 130, Check Out 131,
   Rooms & Guests 169, Promo 127 -- total 848 plus the 152px button. */
.lw-bk {
  grid-template-columns:
    minmax(96px, .62fr)
    minmax(196px, 1.26fr)
    minmax(132px, .85fr)
    minmax(132px, .85fr)
    minmax(170px, 1.1fr)
    minmax(128px, .82fr)
    auto;
}
.lw-bk-occ-btn { gap: 14px; }

/* the occupancy trigger measured 26px on touch -- below the 44px floor */
@media (max-width: 1024px) {
  .lw-bk-occ-btn { min-height: 44px !important; }
}

/* ============================================================
   CONTACT -- classic two-column, form fits one screen
   The old form measured 932px in a 900px viewport. Two columns and a
   tighter field rhythm bring the whole block inside the fold.
   ============================================================ */
.lw-ctx { background: var(--surface-2, #FAF8F4); }
.lw-ctx-inner {
  max-width: 1240px;
  margin: 0 auto;
  padding: 0 clamp(20px, 5vw, 60px);
  display: grid;
  grid-template-columns: 1.25fr .85fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}
.lw-ctx-form .lw-h2 { margin: 6px 0 20px; }

.lw-ctx-f { display: flex; flex-direction: column; gap: 14px; }
.lw-ctx-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 14px;
}
.lw-ctx-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.lw-ctx-field label {
  font-family: var(--f-body);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--muted);
}
.lw-ctx-field input,
.lw-ctx-field select,
.lw-ctx-field textarea {
  font-family: var(--f-body);
  font-size: 14px;
  color: var(--ink);
  background: #fff;
  border: 1px solid rgba(62,46,18,.2);
  border-radius: 3px;
  padding: 10px 12px;
  min-height: 44px;
  width: 100%;
}
.lw-ctx-field textarea { min-height: 76px; resize: vertical; }
.lw-ctx-field input:focus-visible,
.lw-ctx-field select:focus-visible,
.lw-ctx-field textarea:focus-visible {
  outline: 2px solid var(--gold-ink);
  outline-offset: 2px;
  border-color: var(--gold-ink);
}
.lw-ctx-send { align-self: flex-start; min-height: 48px; padding: 12px 34px !important; }

/* right column */
.lw-ctx-side { display: flex; flex-direction: column; gap: 16px; }
.lw-ctx-card {
  background: #fff;
  border: 1px solid rgba(62,46,18,.14);
  border-radius: 4px;
  padding: 20px 22px;
}
.lw-ctx-tag {
  display: block;
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-ink);
  margin-bottom: 8px;
}
.lw-ctx-card h3 {
  font-family: var(--f-display);
  font-size: var(--fs-h3) !important;
  margin: 0 0 8px;
  color: var(--ink);
}
.lw-ctx-card address {
  font-family: var(--f-body);
  font-style: normal;
  font-size: 13.5px;
  line-height: 1.6;
  color: var(--muted);
  margin-bottom: 12px;
}
.lw-ctx-lines { display: flex; flex-direction: column; gap: 2px; }
.lw-ctx-lines a {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  min-height: 34px;
  font-family: var(--f-body);
  font-size: 13.5px;
  color: var(--gold-ink);
  text-decoration: none;
  word-break: break-word;
}
.lw-ctx-lines a:hover { color: var(--ink); text-decoration: underline; }
.lw-ctx-lines i { width: 15px; text-align: center; font-size: 12px; flex: none; }
.lw-ctx-note {
  font-family: var(--f-body);
  font-size: 13px;
  color: var(--muted);
  margin: 0;
}
@media (max-width: 1024px) {
  .lw-ctx-inner { grid-template-columns: 1fr; }
  .lw-ctx-lines a { min-height: 44px; }
}
@media (max-width: 560px) {
  .lw-ctx-row { grid-template-columns: 1fr; }
}

/* the menu's Our Hotels drop ran "Jaipur" into the property name with no
   separator -- city sits above the name, as in the header dropdown */
.lw-menu-drop a {
  display: flex !important;
  flex-direction: column;
  gap: 2px;
  align-items: flex-start;
}
.lw-mdrop-city {
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-light);
}
.lw-mdrop-name {
  font-family: var(--f-display);
  font-size: 16px;
  line-height: 1.25;
}
/* the hover image fades while the next one loads */
.lw-menu-media img { transition: opacity .28s ease; }
.lw-menu-media img.is-swapping { opacity: .35; }

/* ============================================================
   INNER PAGE HERO -- show the title on the banner
   inner.css clipped .lw-pg-hero-inner to 1px so the banner rendered as a
   bare photograph. The eyebrow, H1 and sub-line were all present but
   invisible, which is why these pages read as unfinished next to the
   homepage. Restore them as a proper overlay with a scrim for legibility.
   ============================================================ */
.lw-pg-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  overflow: hidden;
}
.lw-pg-hero-media {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
/* a bottom-weighted scrim: the photograph stays visible, the type stays legible */
.lw-pg-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top,
      rgba(20, 15, 6, .92) 0%,
      rgba(20, 15, 6, .78) 26%,
      rgba(20, 15, 6, .42) 54%,
      rgba(20, 15, 6, .10) 100%);
  pointer-events: none;
}
.lw-pg-hero-inner {
  position: relative !important;
  z-index: 2;
  width: auto !important;
  height: auto !important;
  margin: 0 !important;
  padding: 0 clamp(20px, 5vw, 60px) clamp(30px, 4.5vw, 56px) !important;
  max-width: 1240px;
  overflow: visible !important;
  clip: auto !important;
  clip-path: none !important;
  white-space: normal !important;
  pointer-events: auto;
}
.lw-pg-hero-inner .lw-pg-eyebrow,
.lw-pg-hero-inner .lw-pg-sub { display: block !important; }
.lw-pg-hero-inner .lw-pg-eyebrow {
  font-family: var(--f-body);
  font-size: var(--fs-xs) !important;
  font-weight: 600;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-light) !important;
  margin: 0 0 10px;
}
.lw-pg-hero-inner .lw-pg-title {
  font-family: var(--f-display);
  font-size: var(--fs-h1) !important;
  font-weight: 400;
  line-height: 1.08;
  color: #FFFFFF !important;
  margin: 0;
  max-width: 15ch;
}
.lw-pg-hero-inner .lw-pg-title em {
  font-style: normal;
  color: var(--gold-light) !important;
}
.lw-pg-hero-inner .lw-pg-sub {
  font-family: var(--f-body);
  font-size: var(--fs-body) !important;
  line-height: 1.6;
  color: #FFFFFF !important;
  margin: 12px 0 0;
  max-width: 52ch;
}

/* Banner photos vary a lot in brightness, so a single page-wide scrim can
   never serve them all -- gold-on-bright measured 1.81:1 on faqs. Put a
   dedicated, contained wash directly behind the text block instead: it
   guarantees the same ground on every page regardless of the photograph. */
.lw-pg-hero-inner { position: relative !important; }
.lw-pg-hero-inner::before {
  content: "";
  position: absolute;
  /* bleed past the inner box so there is no vertical seam mid-photo */
  left: -50vw; right: -50vw; top: -26px; bottom: -20px;
  background:
    linear-gradient(to right,
      rgba(16, 12, 5, .92) 0%,
      rgba(16, 12, 5, .88) 46%,
      rgba(16, 12, 5, .55) 74%,
      rgba(16, 12, 5, .18) 100%),
    linear-gradient(to top,
      rgba(16, 12, 5, .55) 0%,
      rgba(16, 12, 5, .30) 70%,
      rgba(16, 12, 5, 0) 100%);
  z-index: -1;
  pointer-events: none;
}
/* a light lift on the gold keeps it clearly gold without going pale */
.lw-pg-hero-inner .lw-pg-eyebrow { color: #F7DE96 !important; }

/* ============================================================
   INTRO + CONTENT ARE ONE UNIT
   A section heading and its intro line live in .lw-pg-intro, and the cards
   they introduce live in the NEXT section. Both carry the 60px rhythm, so
   120px of padding stacked between a heading and its own cards -- measured
   219px on dining and 245px on meetings. A heading belongs to the content
   below it, so the seam between the two collapses to a single gap.
   ============================================================ */
.lw-pg-intro { padding-bottom: 0 !important; }
.lw-pg-intro + section,
.lw-pg-intro + .lw-dn,
.lw-pg-intro + .lw-mt,
.lw-pg-intro + .lw-rs,
.lw-pg-intro + .lw-ex,
.lw-pg-intro + .lw-gu,
.lw-pg-intro + .lw-fc,
.lw-pg-intro + .lw-bl,
.lw-pg-intro + .lw-faq,
.lw-pg-intro + .lw-op,
.lw-pg-intro + .lw-mp,
.lw-pg-intro + .lw-journal { padding-top: 34px !important; }

/* ============================================================
   BOOKING BAR -- crystal, matching the Our Hotels dropdown
   Same warm gradient over a blur. Unlike the dropdown (a menu panel that
   must be read at a glance), the bar sits over the hero as a deliberate
   overlay, so it keeps more translucency -- but the veil is deep enough
   that no hero detail cuts through the field text.
   ============================================================ */
.lw-bk {
  background: linear-gradient(140deg,
      rgba(30, 22, 9, 0.86) 0%,
      rgba(46, 35, 13, 0.84) 55%,
      rgba(62, 47, 18, 0.82) 100%) !important;
  backdrop-filter: blur(20px) saturate(1.15);
  -webkit-backdrop-filter: blur(20px) saturate(1.15);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 8px;
  box-shadow: 0 26px 60px rgba(20, 15, 6, .42);
  overflow: visible;
}
.lw-bk .lw-bk-field { border-right: 1px solid rgba(255, 255, 255, .14); }
.lw-bk .lw-bk-field:last-of-type { border-right: 0; }

/* light-on-dark type, since the card is now dark */
.lw-bk.lw-hero-book label,
.lw-bk .lw-bk-field label {
  color: rgba(255, 243, 220, .78) !important;
}
.lw-bk.lw-hero-book input,
.lw-bk.lw-hero-book select,
.lw-bk .lw-bk-field input,
.lw-bk .lw-bk-field select,
.lw-bk .lw-bk-occ-btn,
.lw-bk .lw-bk-occ-btn i {
  color: #FFF3DC !important;
}
.lw-bk .lw-bk-field input::placeholder {
  color: rgba(255, 243, 220, .55) !important;
}
/* the native option list is drawn by the OS on a light ground */
.lw-bk .lw-bk-field select option { color: #1E180C; background: #FFFFFF; }
/* the picker icon has to invert on a dark bar */
.lw-bk input[type="date"]::-webkit-calendar-picker-indicator {
  filter: invert(1) brightness(1.6) !important;
  opacity: .65;
}
/* the CTA stays solid gold so it reads as the action */
.lw-bk .lw-bk-go {
  background: var(--gold-ink) !important;
  color: #FFFFFF !important;
  border-radius: 0 7px 7px 0;
}
.lw-bk .lw-bk-go:hover { background: var(--gold-light) !important; color: var(--ink) !important; }

/* The scrolled header forced the dropdown text to var(--ink) -- written when
   that panel was LIGHT. The crystal panel is dark in both states, so dark ink
   made the property name unreadable the moment the page was scrolled. The
   panel's own colours apply regardless of header state. */
.lw-header.is-scrolled .lw-drop-x a,
.lw-header.is-scrolled .lw-drop-x .lw-drop-name,
.lw-header.is-scrolled .lw-drop-x .lw-drop-main .lw-drop-name {
  color: #FFF3D8 !important;
}
.lw-header.is-scrolled .lw-drop-x .lw-drop-loc { color: rgba(255,255,255,.75) !important; }
.lw-header.is-scrolled .lw-drop-x .lw-drop-city-h { color: var(--gold-light) !important; }
.lw-header.is-scrolled .lw-drop-x .lw-drop-rate b { color: var(--gold-light) !important; }
.lw-header.is-scrolled .lw-drop-x .lw-drop-from,
.lw-header.is-scrolled .lw-drop-x .lw-drop-per { color: rgba(255,255,255,.68) !important; }

/* The bar is crystal now, so the mobile popup card must be too -- a white
   card behind cream text is the same clash in reverse. */
.lw-bookpop-card {
  background: linear-gradient(160deg,
      rgba(26, 19, 7, 0.985) 0%,
      rgba(42, 32, 12, 0.985) 60%,
      rgba(56, 42, 16, 0.985) 100%) !important;
  border: 1px solid rgba(255, 255, 255, .14);
}
.lw-bookpop .lw-bk { background: transparent !important; box-shadow: none; border: 0; }
.lw-bookpop .lw-bk-field { border-bottom: 1px solid rgba(255,255,255,.13) !important; }
.lw-bookpop-head { background: rgba(255,255,255,.06) !important; }
/* the occupancy panel is its own surface and stays light for legibility */
.lw-bk-occ-pop { background: #FFFFFF; }
.lw-bk-occ-pop .lw-bk-row,
.lw-bk-occ-pop .lw-bk-room-h { color: var(--ink); }

/* ============================================================
   BOOKING BAR -- lighter crystal, and real breathing room in the selects
   The selects had padding:0, so the native option list opened flush against
   the text with no inset. They also had no hit affordance -- the whole field
   should be clickable, not just the 26px text line.
   ============================================================ */
.lw-bk {
  background: linear-gradient(140deg,
      rgba(30, 22, 9, 0.68) 0%,
      rgba(46, 35, 13, 0.66) 55%,
      rgba(62, 47, 18, 0.64) 100%) !important;
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
}

/* the whole field is the target, not just the text */
.lw-bk-field { position: relative; cursor: pointer; }
.lw-bk-field select,
.lw-bk-field input[type="date"] {
  padding: 8px 10px !important;
  margin: -8px -10px;
  width: calc(100% + 20px) !important;
  min-height: 40px;
  border-radius: 4px;
  cursor: pointer;
  transition: background .18s ease;
}
.lw-bk-field select:hover,
.lw-bk-field input[type="date"]:hover,
.lw-bk-occ-btn:hover {
  background: rgba(255, 255, 255, .10) !important;
}
.lw-bk-occ-btn {
  padding: 8px 10px !important;
  margin: -8px -10px;
  width: calc(100% + 20px) !important;
  border-radius: 4px;
}
.lw-bk-field input[type="text"] {
  padding: 8px 10px !important;
  margin: -8px -10px;
  width: calc(100% + 20px) !important;
  min-height: 40px;
  border-radius: 4px;
}
.lw-bk-field input[type="text"]:hover,
.lw-bk-field input[type="text"]:focus {
  background: rgba(255, 255, 255, .10) !important;
}
/* the OS draws the option list itself -- give it room and brand colours */
.lw-bk-field select option {
  padding: 10px 14px;
  background: #FFFFFF;
  color: #1E180C;
}

/* my 40px min-height on the bar controls is under the 44px touch floor */
@media (max-width: 1024px) {
  .lw-bk-field select,
  .lw-bk-field input[type="date"],
  .lw-bk-field input[type="text"],
  .lw-bk-occ-btn { min-height: 44px !important; }
}

/* ============================================================
   MOBILE / TABLET MENU -- stack properly
   concept-2 collapses .lw-menu-body to one column below 1024px, but the
   `grid-column: 1 / 2 / 3` assignments further down still pin children to
   columns 2 and 3 that no longer exist -- the computed track list read
   "0px 0px 311px", so the nav column had ZERO width and its links spilled
   over the contact block.
   ============================================================ */
@media (max-width: 1024px) {
  .lw-menu-body {
    display: flex !important;
    flex-direction: column;
    gap: 28px !important;
    padding: 22px var(--pad-x, 20px) 96px !important;
  }
  .lw-menu-body > nav,
  .lw-menu-body > .lw-menu-media,
  .lw-menu-body > .lw-menu-info {
    grid-column: auto !important;
    width: 100% !important;
    min-width: 0;
  }
  /* the hover-image panel is a pointer affordance -- no place on touch */
  .lw-menu-body > .lw-menu-media { display: none !important; }

  .lw-menu-list a,
  .lw-menu-drop-btn {
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 12px 0 !important;
    min-height: 48px;
    font-size: clamp(20px, 5.4vw, 26px);
    border-bottom: 1px solid rgba(255, 255, 255, .09);
  }
  .lw-menu-info {
    padding-top: 22px;
    border-top: 1px solid rgba(255, 255, 255, .14);
  }
  .lw-menu-info h3 { font-size: var(--fs-h3) !important; margin: 0 0 12px; }
  .lw-menu-sub { margin-top: 6px; }
  .lw-menu-sub a { min-height: 44px; display: inline-flex; align-items: center; }
}

/* ============================================================
   OUR HOTELS DROPDOWN on touch -- part of the list, not a floating box
   At 1024px the crystal panel was rendering as a detached card in white
   space. Inside the mobile menu it should read as a nested block.
   ============================================================ */
@media (max-width: 1024px) {
  .lw-menu-drop {
    position: static !important;
    width: 100% !important;
    min-width: 0 !important;
    margin: 4px 0 8px !important;
    padding: 4px 0 !important;
    background: rgba(255, 255, 255, .05) !important;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border: 0 !important;
    border-left: 2px solid var(--gold-light) !important;
    border-radius: 0 !important;
    box-shadow: none !important;
  }
  .lw-menu-drop a {
    padding: 10px 16px !important;
    min-height: 52px;
    border-bottom: 0 !important;
    font-size: 16px !important;
  }
  .lw-drop-x {
    position: static !important;
    width: 100% !important;
    min-width: 0 !important;
    box-shadow: none !important;
    border-radius: 4px !important;
  }
}

/* City and Property are fixed on a single-property site -- shown as text,
   not a one-option select (a control that cannot be used is not a control). */
.lw-bk-static { justify-content: center; }
.lw-bk-lbl {
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255, 243, 220, .78);
}
.lw-bk-val {
  font-family: var(--f-body);
  font-size: 14px;
  color: #FFF3DC;
  min-height: 26px;
  display: flex;
  align-items: center;
}
.lw-bk-static { cursor: default; }

/* The open <select> showed a bright blue OS highlight against the crystal
   bar. The option list is drawn by the browser, so only colour and padding
   can be influenced -- set both so the open state matches the brand. */
.lw-bk-field select {
  color-scheme: dark;
  accent-color: var(--gold-ink);
}
.lw-bk-field select option {
  background-color: #1E180C;
  color: #FFF3DC;
  padding: 12px 14px;
}
.lw-bk-field select option:checked,
.lw-bk-field select option:hover {
  background: var(--gold-ink) linear-gradient(0deg, var(--gold-ink), var(--gold-ink));
  color: #FFFFFF;
}
/* the focus ring was a hard gold box tight to the text */
.lw-bk-field select:focus-visible,
.lw-bk-field input:focus-visible,
.lw-bk-occ-btn:focus-visible {
  outline: 2px solid var(--gold-light) !important;
  outline-offset: 2px !important;
  background: rgba(255, 255, 255, .12) !important;
}

/* ============================================================
   BOOKING BAR -- one treatment for all six controls
   A legacy .lw-hero-book rule gave inputs a translucent background and a
   gold border. It landed visibly on the DATE fields only, so Check In and
   Check Out (and Property, via its own box) read as inset boxes while City
   and Promo read as plain text -- six controls, three different looks.
   Rooms & Guests also sat at 33px against everyone else's 40px.
   ============================================================ */
#lwHeroBook .lw-bk-field select,
#lwHeroBook .lw-bk-field input,
#lwHeroBook .lw-bk-field input[type="date"],
#lwHeroBook .lw-bk-occ-btn,
#f1-lwHeroBook .lw-bk-field select,
#f1-lwHeroBook .lw-bk-field input,
#f1-lwHeroBook .lw-bk-field input[type="date"],
#f1-lwHeroBook .lw-bk-occ-btn {
  background: transparent !important;
  border: 0 !important;
  min-height: 40px !important;
  height: 40px !important;
  padding: 8px 10px !important;
  box-sizing: border-box;
  line-height: 1.4;
}
/* one shared hover/focus wash, so every field responds identically */
#lwHeroBook .lw-bk-field select:hover,
#lwHeroBook .lw-bk-field input:hover,
#lwHeroBook .lw-bk-occ-btn:hover,
#f1-lwHeroBook .lw-bk-field select:hover,
#f1-lwHeroBook .lw-bk-field input:hover,
#f1-lwHeroBook .lw-bk-occ-btn:hover {
  background: rgba(255, 255, 255, .10) !important;
}
/* the static City/Property text on the child matches that height too */
#f1-lwHeroBook .lw-bk-val { min-height: 34px; padding: 5px 10px; }
#f1-lwHeroBook .lw-bk-static .lw-bk-lbl { padding-left: 10px; }
@media (max-width: 1024px) {
  #lwHeroBook .lw-bk-field select,
  #lwHeroBook .lw-bk-field input,
  #lwHeroBook .lw-bk-occ-btn,
  #f1-lwHeroBook .lw-bk-field select,
  #f1-lwHeroBook .lw-bk-field input,
  #f1-lwHeroBook .lw-bk-occ-btn {
    min-height: 44px !important;
    height: auto !important;
  }
}

/* ============================================================
   BOOKING BAR -- focus ring inside the field, and the touch floor restored
   1. outline-offset:2px on a 40px control inside a 68px field pushed the
      ring 9px ABOVE the label, so focusing Check In drew a gold box over
      "CHECK IN". An inset ring stays within the control's own bounds.
   2. my height:40px !important beat the 44px touch rule -- the date inputs
      dropped back under the floor at 1024px.
   ============================================================ */
#lwHeroBook .lw-bk-field select:focus-visible,
#lwHeroBook .lw-bk-field input:focus-visible,
#lwHeroBook .lw-bk-occ-btn:focus-visible,
#f1-lwHeroBook .lw-bk-field select:focus-visible,
#f1-lwHeroBook .lw-bk-field input:focus-visible,
#f1-lwHeroBook .lw-bk-occ-btn:focus-visible {
  outline: 2px solid var(--gold-light) !important;
  outline-offset: -2px !important;   /* inside the control, never over the label */
  border-radius: 4px;
  background: rgba(255, 255, 255, .13) !important;
}
@media (max-width: 1024px) {
  #lwHeroBook .lw-bk-field select,
  #lwHeroBook .lw-bk-field input,
  #lwHeroBook .lw-bk-field input[type="date"],
  #lwHeroBook .lw-bk-occ-btn,
  #f1-lwHeroBook .lw-bk-field select,
  #f1-lwHeroBook .lw-bk-field input,
  #f1-lwHeroBook .lw-bk-field input[type="date"],
  #f1-lwHeroBook .lw-bk-occ-btn {
    min-height: 44px !important;
    height: 44px !important;
  }
}

/* The negative top margin (-8px) I used to widen the hit area pulled every
   control UP by 8px, overlapping its own label by 5px -- which is why the
   focus ring drew across "CHECK IN". Keep the horizontal bleed for the hit
   area, drop the vertical, and let the field pad instead. */
#lwHeroBook .lw-bk-field select,
#lwHeroBook .lw-bk-field input,
#lwHeroBook .lw-bk-field input[type="date"],
#lwHeroBook .lw-bk-occ-btn,
#f1-lwHeroBook .lw-bk-field select,
#f1-lwHeroBook .lw-bk-field input,
#f1-lwHeroBook .lw-bk-field input[type="date"],
#f1-lwHeroBook .lw-bk-occ-btn {
  margin: 0 -10px !important;
  height: auto !important;
  min-height: 34px !important;
  padding: 5px 10px !important;
}
#lwHeroBook .lw-bk-field,
#f1-lwHeroBook .lw-bk-field { padding: 10px 16px !important; gap: 2px; }
@media (max-width: 1024px) {
  #lwHeroBook .lw-bk-field select,
  #lwHeroBook .lw-bk-field input,
  #lwHeroBook .lw-bk-field input[type="date"],
  #lwHeroBook .lw-bk-occ-btn,
  #f1-lwHeroBook .lw-bk-field select,
  #f1-lwHeroBook .lw-bk-field input,
  #f1-lwHeroBook .lw-bk-field input[type="date"],
  #f1-lwHeroBook .lw-bk-occ-btn { min-height: 44px !important; }
}

/* the whole date field is the target, so it must look clickable */
#lwHeroBook .lw-bk-field:has(input[type="date"]),
#f1-lwHeroBook .lw-bk-field:has(input[type="date"]) { cursor: pointer; }
#lwHeroBook .lw-bk-field:has(input[type="date"]):hover input,
#f1-lwHeroBook .lw-bk-field:has(input[type="date"]):hover input {
  background: rgba(255, 255, 255, .10) !important;
}

/* ============================================================
   CHILD PROPERTY NAV inside the overlay menu
   inner.css hides .lw-prop-bar below 720px and nothing replaced it, so
   Facilities and Experiences were unreachable on a phone. These are the
   property's OWN sections, so they sit above the brand links, visually
   grouped and clearly labelled.
   ============================================================ */
.lw-menu-prop {
  margin-bottom: 26px;
  padding-bottom: 20px;
  border-bottom: 1px solid rgba(255, 255, 255, .14);
}
.lw-menu-prop-h {
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-light);
  margin: 0 0 8px;
}
.lw-menu-prop-list { list-style: none; margin: 0; padding: 0; }
.lw-menu-prop-list a {
  display: flex;
  align-items: center;
  min-height: 48px;
  padding: 10px 0;
  font-family: var(--f-display);
  font-size: clamp(18px, 4.8vw, 22px);
  color: #FFF3D8;
  text-decoration: none;
  border-bottom: 1px solid rgba(255, 255, 255, .07);
}
.lw-menu-prop-list li:last-child a { border-bottom: 0; }
.lw-menu-prop-list a:hover,
.lw-menu-prop-list a:focus-visible { color: var(--gold-light); }
/* the property bar still serves desktop, so the menu copy is mobile-only */
/* The property bar sits BEHIND the open overlay, so hiding this group on
   desktop made six child sections unreachable from the hamburger.
   It is shown at every width. */

/* ============================================================
   MOBILE HEADER + HERO
   1. The floating call bubble duplicated the CALL tab already in the bottom
      bar -- two ways to do the same thing, one covering the page.
   2. "Rates" was starving the logo: the brand image computed to 12px wide
      (natural 420x244) because the flex row gave the space to Rates and
      Book Now. Dropping Rates on mobile lets the logo size properly.
   3. The hero heading was capped at 244px inside a 350px caption, so it
      broke mid-phrase.
   ============================================================ */
@media (max-width: 1024px) {
  /* 1. the bottom bar already carries CALL */
  .lw-contact-float,
  .lw-contact-wrap { display: none !important; }
  .lw-top { right: 14px !important; bottom: 80px !important; }

  /* 2. Rates goes; the logo gets the room */
  .lw-head-rates { display: none !important; }
  .lw-header .lw-brand {
    flex: 1 1 auto !important;
    display: flex;
    justify-content: center;
    min-width: 0;
  }
  .lw-header .lw-brand img {
    width: auto !important;
    max-width: 100% !important;
    height: clamp(46px, 12vw, 58px) !important;
    min-width: 132px !important;
    object-fit: contain;
  }
  .lw-header .lw-head-cta { flex: 0 0 auto; }

  /* 3. the hero heading uses the caption's full width */
  .lw-hero-caption { padding-left: 4px; padding-right: 4px; }
  .lw-hero-caption .lw-cap-name {
    display: block;
    width: 100% !important;
    max-width: 100% !important;
    font-size: clamp(26px, 7.4vw, 34px) !important;
    line-height: 1.16;
    text-wrap: balance;
  }
  .lw-hero-caption .lw-cap-tag,
  .lw-hero-caption .lw-cap-loc { letter-spacing: .16em; }
}

/* Book Now is wider than the hamburger, so a flex-centred logo lands off
   centre. Absolute-centre it against the header instead. */
@media (max-width: 1024px) {
  .lw-header .lw-head-inner,
  .lw-header > .lw-container,
  .lw-header .lw-head-row { position: relative; }
  .lw-header .lw-brand {
    position: static !important;
    transform: none !important;
    flex: 0 1 auto !important;
    margin-right: auto;
    padding-left: 10px;
  }
}

/* the absolutely-centred logo overlapped the Book Now button at 390px --
   cap its width so the three header items never collide */
@media (max-width: 1024px) {
  .lw-header .lw-brand {
    flex: 0 0 auto !important;
    max-width: none;
    overflow: visible;
  }
  .lw-header .lw-brand img {
    width: auto !important;
    height: clamp(38px, 10vw, 50px) !important;
    max-width: none !important;
    min-width: 0 !important;
    object-fit: contain;
  }
}
@media (max-width: 380px) {
  /* at 360px the three header items need every pixel: shrink the logo and
     tighten the CTA rather than let them overlap */
  .lw-header .lw-brand img { height: 30px !important; }
  .lw-header .lw-brand { padding-left: 4px; }
  .lw-header .lw-head-cta .lw-btn {
    padding: 8px 12px !important;
    font-size: 11px !important;
  }
  .lw-header .lw-toggle { margin-right: 2px; }
}

/* ============================================================
   MOBILE HEADER -- the logo must not change size on scroll
   concept-2 carries six competing .is-scrolled .lw-brand img rules; the last
   (52px !important, min-width 108px) fired on scroll and GREW the logo my
   mobile rule had sized to 39px. Measured: 67px at rest, 136px scrolled --
   backwards, and the jump is what reads as a broken animation.
   One size, both states.
   ============================================================ */
@media (max-width: 1024px) {
  .lw-header .lw-brand img,
  .lw-header.is-scrolled .lw-brand img,
  .lw-header--solid .lw-brand img {
    height: clamp(38px, 10vw, 50px) !important;
    width: auto !important;
    min-width: 0 !important;
    max-width: none !important;
  }
  .lw-header .lw-brand,
  .lw-header.is-scrolled .lw-brand { height: auto !important; }
}
@media (max-width: 380px) {
  .lw-header .lw-brand img,
  .lw-header.is-scrolled .lw-brand img { height: 30px !important; }
}

/* ============================================================
   HERO SLIDE OVERFLOW
   .lw-hero-slide carries transform: scale(1.08) for the Ken Burns effect,
   so at 390px it renders 421px wide and pushed the document to 392px. Every
   section then computed its right gutter against a 392px width while the
   left used 390 -- which is the 20/22 asymmetry, not a padding error.
   I set .lw-hero { overflow: visible } earlier so the booking popover could
   escape; the MEDIA layer must still clip.
   ============================================================ */
.lw-hero-media,
.lw-pg-hero-media,
.lw-hero > .lw-hero-media {
  overflow: hidden !important;
}
.lw-hero-slide { will-change: transform, opacity; }
/* nothing on the page may exceed the viewport */
html, body { max-width: 100%; }

/* The facilities carousel legitimately extends to ~3266px inside a scroller.
   Its ancestor clips it, but body still reported scrollWidth 392 against a
   390 client width -- a 2px rounding artifact that made every section on the
   child compute a 22px right gutter against a 20px left one. Clamping body
   to the viewport removes the artifact without touching the carousel. */
body { overflow-x: clip; }
@supports not (overflow: clip) {
  body { overflow-x: hidden; }
}

/* the brand is a real link (it goes home), so it must meet the touch floor
   even though the logo artwork itself is shorter */
@media (max-width: 1024px) {
  .lw-header .lw-brand {
    min-height: 44px;
    display: inline-flex !important;
    align-items: center;
  }
}

/* The popup's Book Now had margin on a full-width box, pushing 18px past the
   card and creating a horizontal scrollbar inside the popup. */
.lw-bookpop .lw-bk-go {
  margin: 14px 0 0 !important;
  width: 100% !important;
  box-sizing: border-box;
}
.lw-bookpop .lw-bk { padding: 0 18px 18px !important; box-sizing: border-box; }
#lwBookPopSlot { overflow-x: hidden; }
.lw-bookpop .lw-bk-field { padding-left: 0 !important; padding-right: 0 !important; }

/* the logo read as too small on a phone; raise it while keeping the header
   items clear of each other (verified at 320-430px) */
@media (max-width: 1024px) {
  .lw-header .lw-brand img,
  .lw-header.is-scrolled .lw-brand img {
    height: clamp(46px, 13vw, 58px) !important;
  }
}
@media (max-width: 380px) {
  .lw-header .lw-brand img,
  .lw-header.is-scrolled .lw-brand img { height: 38px !important; }
}

/* the larger logo needs the CTA to give ground so the three header items
   never collide at phone widths */
@media (max-width: 480px) {
  .lw-header .lw-head-cta .lw-btn {
    padding: 9px 13px !important;
    font-size: 11.5px !important;
    letter-spacing: .08em;
  }
  .lw-header .lw-toggle { margin-right: 0; }
  .lw-header .lw-brand { padding-left: 6px; }
}

/* ============================================================
   MOBILE: DINING + OFFERS
   Dining kept its desktop two-column split at 390px, so the copy became a
   ~160px ribbon and the "80 COVERS" badge sat on top of the name. Offers
   ran as a 287px horizontal scroller whose cards were cut mid-card with no
   affordance that they could be swiped.
   ============================================================ */
@media (max-width: 720px) {
  /* --- dining: stack image over copy, full width --- */
  .lw-dinefeat,
  .lw-dine-grid,
  .lw-dinefeat-inner {
    display: flex !important;
    flex-direction: column !important;
    grid-template-columns: 1fr !important;
    gap: 0 !important;
  }
  .lw-dinefeat-media,
  .lw-dinefeat-card {
    width: 100% !important;
    max-width: 100% !important;
    min-width: 0 !important;
  }
  .lw-dinefeat-media { aspect-ratio: 16 / 10; }
  .lw-dinefeat-media img { width: 100%; height: 100%; object-fit: cover; }
  .lw-dinefeat-card { padding: 20px !important; }
  /* the covers badge sat over the heading -- put it in the flow */
  .lw-dinefeat-seats {
    position: static !important;
    transform: none !important;
    display: inline-flex !important;
    align-items: baseline;
    gap: 7px;
    width: auto !important;
    margin: 4px 0 12px;
    padding: 5px 12px;
    background: rgba(62, 46, 18, .07);
    border-radius: 3px;
  }
  .lw-dinefeat-seats strong,
  .lw-dinefeat-seats span {
    display: inline !important;
    width: auto !important;
    margin: 0;
  }
  .lw-dinefeat-top { display: block !important; }
  .lw-dinefeat-card h3 { margin-top: 0; }

  /* --- offers: one card per screen, and make the swipe obvious --- */
  .lw-offers-list {
    display: flex !important;
    gap: 14px !important;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch;
    padding: 0 20px 6px !important;
    scrollbar-width: none;
  }
  .lw-offers-list::-webkit-scrollbar { display: none; }
  .lw-offers-list > .lw-offer {
    flex: 0 0 calc(100% - 40px) !important;
    max-width: calc(100% - 40px) !important;
    scroll-snap-align: center;
    min-height: 440px;
  }
}

/* ============================================================
   INNER PAGE HERO -- 60% of the viewport, sitewide
   Inner banners were a fixed 420px (47% of a 900px window) while the two
   full-height heroes sat at 100%. 60vh gives the banner presence without
   pushing the page content below the fold.
   ============================================================ */
.lw-pg-hero {
  height: 69vh !important;          /* +15% on 60vh */
  min-height: 437px !important;     /* +15% on 380 */
  max-height: 713px !important;     /* +15% on 620 -- the cap has to rise too */
}
@media (max-width: 720px) {
  .lw-pg-hero { height: 53vh !important; min-height: 345px !important; }
}

/* ============================================================
   HEADINGS -- two lines maximum at desktop
   Four headings ran to three lines, all because their column was narrower
   than the text needed. Widening the measure keeps the type size intact --
   shrinking the heading instead would break the scale we just unified.
   ============================================================ */
@media (min-width: 1025px) {
  .lw-story-copy .lw-h2,
  .lw-of-head-copy .lw-of-title,
  .lw-ctp-head .lw-h2,
  .lw-pg-hero-inner .lw-pg-title {
    max-width: 22ch;
    text-wrap: balance;
  }
  .lw-story-copy { max-width: 640px; }
  .lw-ctp-head .lw-h2 { max-width: 26ch; }
}

/* The three remaining 3-line headings sit in 521px grid tracks inside a
   1296px row, so a max-width on the heading alone can never help -- the
   TRACK is the limit. Give the copy column more of the row at desktop. */
@media (min-width: 1025px) {
  .lw-story-inner { grid-template-columns: 1fr 1.22fr !important; }
  .lw-story-copy { max-width: 700px; }
  .lw-story-copy .lw-h2 { max-width: none; }
  .lw-of-head-inner { grid-template-columns: 1.3fr 1fr !important; }
  .lw-of-head-copy .lw-of-title { max-width: none; }
}

/* Last two 3-line headings:
   - offers.html carries an explicit <br> that adds a line on top of its own
     wrap; suppress the break at desktop where the measure is wide enough.
   - index.html's is 68 characters at 44px; a slightly wider column lets it
     settle on two lines without touching the type scale. */
@media (min-width: 1025px) {
  .lw-of-title br { display: none; }
  .lw-of-head-copy .lw-of-title { max-width: 20ch; }
  .lw-story-inner { grid-template-columns: .82fr 1.35fr !important; }
  .lw-story-copy { max-width: 760px; }
}

/* index.html's lede heading is 68 characters at 44px -- the longest on the
   site. A small step down at desktop settles it on two lines without
   disturbing the shared --fs-h2 token everything else uses. */
@media (min-width: 1025px) {
  .lw-story-copy .lw-h2 { font-size: clamp(30px, 2.7vw, 39px) !important; }
}
/* between 1025 and 1200 the columns are tight; hold headings to 3 lines */
@media (min-width: 1025px) and (max-width: 1200px) {
  .lw-story-copy .lw-h2,
  .lw-of-head-copy .lw-of-title { font-size: clamp(26px, 3vw, 34px) !important; }
  .lw-of-title br { display: none; }
}

/* my tightening range started at 1025px, so 1024 itself fell through the gap
   and kept the full-size heading in a narrow column */
@media (min-width: 900px) and (max-width: 1200px) {
  .lw-story-copy .lw-h2,
  .lw-of-head-copy .lw-of-title { font-size: clamp(24px, 2.9vw, 32px) !important; }
  .lw-of-title br { display: none; }
  .lw-story-inner { grid-template-columns: .85fr 1.3fr !important; }
}

/* 1200px sat on the boundary between my two ranges and got the larger size
   in the narrower column. One continuous scale removes the seam. */
@media (min-width: 900px) and (max-width: 1320px) {
  .lw-story-copy .lw-h2,
  .lw-of-head-copy .lw-of-title { font-size: clamp(24px, 2.7vw, 34px) !important; }
  .lw-of-title br { display: none; }
}

/* The column widening stopped at 1200px while the font rule ran to 1320,
   so at exactly 1200 a 32px heading sat in a 522px track. One range for
   both, so the two can never disagree again. */
@media (min-width: 900px) and (max-width: 1320px) {
  .lw-story-inner { grid-template-columns: .8fr 1.4fr !important; }
  .lw-story-copy { max-width: 760px; }
  .lw-of-head-inner { grid-template-columns: 1.35fr 1fr !important; }
}

/* ============================================================
   OFFER CARDS -- lighter scrim, photograph readable through it
   The touch scrim ran 0.94 -> 0.86 -> 0.70, which is nearly opaque: the
   room photograph was almost invisible behind the copy. A lighter gradient
   that stays dark only where the text actually sits keeps the type legible
   and lets the picture show.
   ============================================================ */
.lw-offer-scrim {
  background: linear-gradient(to top,
      rgba(20, 15, 6, .82) 0%,
      rgba(20, 15, 6, .62) 42%,
      rgba(20, 15, 6, .30) 72%,
      rgba(20, 15, 6, .10) 100%) !important;
}
.lw-offer-hov:hover .lw-offer-scrim,
.lw-offer-hov:focus-within .lw-offer-scrim {
  background: linear-gradient(to top,
      rgba(20, 15, 6, .88) 0%,
      rgba(20, 15, 6, .74) 50%,
      rgba(20, 15, 6, .52) 100%) !important;
}
@media (hover: none) {
  /* on touch the whole card shows its copy, so the wash is even but light */
  .lw-offer-scrim {
    background: linear-gradient(to top,
        rgba(20, 15, 6, .86) 0%,
        rgba(20, 15, 6, .70) 45%,
        rgba(20, 15, 6, .46) 100%) !important;
  }
}

/* ============================================================
   TWO FIXES
   1. Offer cards on touch: the resting rule hides the paragraph, list and
      price with visibility:hidden, and my (hover:none) block set only
      max-height/opacity -- so on a phone the card showed a heading and a
      button with a blank gap between them.
   2. The Rooms & Guests panel is position:fixed with a white ground. Opened
      from inside the mobile booking popup it reads as a second white sheet
      with its own X, which is the "two crosses" the client saw. Contain it
      inside the popup card instead of centring it in the viewport.
   ============================================================ */
@media (hover: none) {
  .lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > p,
  .lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > ul,
  .lw-offer-hov:not(:hover):not(:focus-within) .lw-offer-more > .lw-offer-price,
  .lw-offer-more > p,
  .lw-offer-more > ul,
  .lw-offer-more > .lw-offer-price {
    visibility: visible !important;
  }
}
@media (max-width: 720px) {
  /* inside the booking popup the panel is part of that sheet, not a new one */
  .lw-bookpop .lw-bk-occ-pop {
    position: absolute !important;
    top: auto !important;
    bottom: 100% !important;
    left: 0 !important;
    right: 0 !important;
    transform: none !important;
    width: auto !important;
    margin-bottom: 8px;
    max-height: 60vh;
  }
  /* the panel's own close button duplicates the popup's -- Done is enough */
  .lw-bookpop .lw-bk-occ-x { display: none !important; }
}

/* ============================================================
   ROOMS & GUESTS PANEL -- crystal, matching the sheet it opens on
   The panel was white on a dark booking sheet, so it read as a second,
   foreign surface dropped on top rather than part of the same control.
   ============================================================ */
.lw-bk-occ-pop {
  background: linear-gradient(160deg,
      rgba(34, 25, 9, 0.99) 0%,
      rgba(50, 38, 14, 0.99) 60%,
      rgba(64, 49, 19, 0.99) 100%) !important;
  border: 1px solid rgba(255, 255, 255, .16);
  box-shadow: 0 22px 54px rgba(20, 15, 6, .5);
}
.lw-bk-occ-head {
  background: rgba(255, 255, 255, .07) !important;
  color: #FFF3D8;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}
.lw-bk-occ-pop .lw-bk-row,
.lw-bk-occ-pop .lw-bk-row span { color: #FFF3DC !important; }
.lw-bk-occ-pop .lw-bk-room-h { color: rgba(255, 243, 220, .72) !important; }
.lw-bk-occ-pop .lw-bk-room + .lw-bk-room { border-top-color: rgba(255,255,255,.12); }
.lw-bk-occ-pop .lw-bk-step button {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .26);
  color: var(--gold-light);
}
.lw-bk-occ-pop .lw-bk-step button:hover {
  background: rgba(255, 255, 255, .16);
  border-color: var(--gold-light);
}
.lw-bk-occ-pop .lw-bk-step b { color: #FFF3DC; }
.lw-bk-occ-foot { border-top-color: rgba(255, 255, 255, .12) !important; }
.lw-bk-addroom { color: var(--gold-light) !important; }
.lw-bk-rm { color: var(--gold-light) !important; }

/* ============================================================
   MOBILE MENU CLOSE -- text must not outlive its background
   .lw-menu fades the WHOLE panel on one opacity, so its #0B0705 ground and
   its cream links fade at the same rate. Mid-close the ground is already
   near-transparent while the text is still fully opaque, so "Rooms, Offers,
   Facilities..." hang over the hero photograph as a ghost. Seen in the
   client's screen recording; measured at menuOpacity 0.003 with
   linkOpacity 1.
   Fix: give the panel an opaque backdrop of its own that fades LAST, and
   let the content fade first.
   ============================================================ */
.lw-menu { background: transparent !important; }
.lw-menu::before {
  content: "";
  position: fixed;
  inset: 0;
  background: #0B0705;
  z-index: -1;
  opacity: 0;
  transition: opacity .3s ease .06s;   /* leaves AFTER the content */
  pointer-events: none;
}
.lw-menu.is-open::before { opacity: 1; transition-delay: 0s; }

/* the content itself leaves first and faster */
.lw-menu > * {
  opacity: 0;
  transition: opacity .16s ease;
}
.lw-menu.is-open > * {
  opacity: 1;
  transition: opacity .3s ease .08s;
}

/* Safety net: even if something re-adds .is-open to the legacy .lw-nav, it
   must never paint over the page on a phone. The overlay menu is the mobile
   navigation. */
@media (max-width: 1024px) {
  .lw-nav.is-open {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
  }
}

/* ============================================================
   TERMS & CONDITIONS -- one page, nine policies
   Privacy and Refund & Cancellation used to have their own footer links.
   Now that all three collapse to one destination, the page needs a contents
   list so those two policies stay one click away.
   ============================================================ */
.lw-tc-toc {
  background: rgba(62, 46, 18, .04);
  border: 1px solid rgba(62, 46, 18, .12);
  border-radius: 4px;
  padding: 20px 24px;
  margin: 0 0 34px;
}
.lw-tc-toc-h {
  font-family: var(--f-body);
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--gold-ink);
  margin: 0 0 12px;
}
.lw-tc-toc ol {
  margin: 0;
  padding: 0 0 0 20px;
  columns: 2;
  column-gap: 34px;
}
.lw-tc-toc li {
  font-family: var(--f-body);
  font-size: 14px;
  line-height: 1.5;
  padding: 5px 0;
  break-inside: avoid;
}
.lw-tc-toc a {
  color: var(--gold-ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  min-height: 24px;
  display: inline-flex;
  align-items: center;
}
.lw-tc-toc a:hover { color: var(--ink); border-bottom-color: var(--ink); }
/* an anchored section must not land under the fixed header */
.lw-tc [id] { scroll-margin-top: 110px; }
@media (max-width: 720px) {
  .lw-tc-toc ol { columns: 1; }
  .lw-tc-toc a { min-height: 44px; }
}


/* ======================================================================
   SHELL GUTTER  --  +5vw per side, sitewide
   ----------------------------------------------------------------------
   Every section that respects the shell reads --pad-x. The full-bleed
   sections (.lw-hero, .lw-pg-hero, .lw-run marquee, .lw-fc carousel) never
   reference it, so they stay edge-to-edge without needing an exception
   list -- verified: none of those four selectors mentions --pad-x.

   concept-2.css re-declares --pad-x inside its own 1024px and 720px
   breakpoints, so the new value has to be pinned at the SAME breakpoints
   or tablet and phone silently revert to the old gutter.
   ====================================================================== */
@media (max-width: 1024px) {
  :root { --pad-x: clamp(40px, 9.6vw, 144px); }
}
@media (max-width: 720px) {
  :root { --pad-x: 40px; }
}
@media (max-width: 380px) {
  /* below this the content column would get too narrow to set type in */
  :root { --pad-x: 28px; }
}

/* ======================================================================
   HEADER OVER HERO  --  parity with the parent homepage
   ----------------------------------------------------------------------
   The inner pages carry .lw-header--solid in their markup, dating from when
   those pages had no hero and the header sat on white. Every inner page now
   opens with a full-bleed photo hero pulled up underneath the header
   (margin-top: -131px), so a solid white bar is both inconsistent with the
   homepage and clipping the hero eyebrow.

   Neutralised AT REST only, and only on a page that actually HAS a hero, so
   a hero-less page (404) keeps its solid bar. Every .is-scrolled rule is
   left untouched -- the header still goes solid on scroll.
   ====================================================================== */
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) {
  background: transparent !important;
  border-bottom-color: transparent !important;
  box-shadow: none !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled)::before {
  opacity: 1 !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-nav a,
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-head-rates,
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-drop-t {
  color: #FFF3D8 !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-toggle span {
  background: #FFF3D8 !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-btn-outline,
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-contact-btn {
  color: #FFF3D8 !important;
  border-color: rgba(255, 243, 216, .55) !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-btn-outline:hover,
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-contact-btn:hover {
  background: rgba(255, 243, 216, .14) !important;
  border-color: #FFF3D8 !important;
}
body:has(.lw-pg-hero):not(:has(.lw-404-hero)) .lw-header.lw-header--solid:not(.is-scrolled) .lw-nav a.is-active {
  color: #E8C87A !important;
}

/* The eyebrow was sliding under the solid bar. Clear the header height. */
/* header clearance removed with the hero text block */

/* ======================================================================
   HERO SCRIM  --  lightened so the photograph reads
   ----------------------------------------------------------------------
   Two scrims were stacked: a full-plate ::after over the whole banner and a
   heavy panel ::before behind the text. Together they buried the image. The
   panel is what actually carries the text contrast, so the full-plate one
   is cut hardest and the panel only eased -- contrast re-measured after.
   ====================================================================== */
/* Hero banners carry no text now, so the full-plate scrim is gone. What
   remains is a short gradient at the TOP EDGE only: the header sits over the
   image, and without it the cream nav can fall onto a light photograph. */
/* The scrim must live on .lw-pg-hero-media, NOT on .lw-pg-hero. The media
   div is a real child and paints above the section's own ::after, so a scrim
   there went underneath the photograph on every page -- verified with
   elementsFromPoint. Confined to the header band: the banner carries no text
   now, so the rest of the image stays completely clean. */
.lw-pg-hero::after { content: none !important; }

/* .lw-pg-hero-media is already position:absolute -- do NOT set it to
   relative, that collapses it to 0x0 and blanks the photograph. */
.lw-pg-hero-media::after {
  content: "";
  position: absolute;
  inset: 0 0 auto 0;
  height: calc(var(--header-h, 90px) + 78px);
  background: linear-gradient(to bottom,
      rgba(20, 15, 6, .82) 0%,
      rgba(20, 15, 6, .78) 46%,
      rgba(20, 15, 6, .56) 64%,
      rgba(20, 15, 6, .22) 82%,
      rgba(20, 15, 6, 0) 100%);
  pointer-events: none;
  z-index: 2;
}
/* .lw-pg-hero-inner is gone from every page, so its text panel
   scrim is removed with it. */


/* ======================================================================
   ONE GUTTER, NOT TWO
   ----------------------------------------------------------------------
   concept-2 zeroes `section` padding and moves the gutter onto the wrapper
   through a blanket [class*="-inner"], [class*="-wrap"] rule. But several
   sections pad themselves as well, so those wrappers paid --pad-x twice:
   .lw-story and .lw-props ended up inset 288px against .lw-offers' 144px.

   The section owns the gutter. A wrapper that sits directly inside a
   padded section must not add it again.
   ====================================================================== */
main > section > [class*="-inner"],
main > section > [class*="-wrap"],
body > section > [class*="-inner"],
body > section > [class*="-wrap"],
/* ...and one level deeper: .lw-of-head > .lw-of-head-inner was still paying
   the gutter twice, which squeezed the offers/dining heading column to
   1152 - 288 - 48 = 816px. */
main > section > * > [class*="-inner"],
body > section > * > [class*="-inner"] {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

/* The two deliberate reading measures keep their cap -- these constrain the
   line length of running type, they are not shell gutters. */
.lw-dine-head { max-width: 736px !important; margin-left: auto !important; margin-right: auto !important; }
.lw-pg-intro-inner { max-width: 900px !important; margin-left: auto !important; margin-right: auto !important; }

/* The hero media bleeds slightly wider than the hero for a soft edge; at
   narrow widths that bleed leaked 2-3px of horizontal scroll. The hero
   already has overflow:hidden -- make sure nothing escapes the viewport. */
.lw-pg-hero, .lw-hero { overflow: hidden !important; max-width: 100vw !important; }
.lw-pg-hero-media { max-width: none; }

/* Ken Burns scale(1.02) on the hero media paints ~3.6px past each edge and
   that transformed box still counts toward document scroll width, so narrow
   viewports gained 2-3px of sideways scroll. Clip X at the root.
   overflow-y MUST stay visible or the sticky header stops sticking. */
html { overflow-x: hidden; max-width: 100%; }
body { overflow-x: clip; }

/* ======================================================================
   WHY BOOK DIRECT  --  edge-attached toaster
   ----------------------------------------------------------------------
   A narrow tab flush against the left edge of the viewport, vertically
   centred on the hero. Collapsed it shows only the rotated label; on hover,
   focus or click it slides out to reveal the benefits and the two CTAs.

   Copy is verbatim from the site's own FAQ answer -- no claim here that the
   source does not already make.

   It sits ABOVE the booking bar's vertical band, so the two never meet no
   matter how the bar wraps.
   ====================================================================== */
.lw-bd {
  position: absolute;
  left: 0;
  bottom: var(--lw-bd-bottom, 220px);   /* measured: clears the bar's top */
  z-index: 7;
  display: flex;
  align-items: stretch;
  max-width: calc(100% - 24px);
  border-radius: 0 4px 4px 0;
  overflow: hidden;
  background: linear-gradient(140deg, rgba(30,22,9,.82) 0%, rgba(46,35,13,.80) 55%, rgba(62,47,18,.78) 100%);
  backdrop-filter: blur(24px) saturate(1.2);
  -webkit-backdrop-filter: blur(24px) saturate(1.2);
  border: 1px solid rgba(255,243,216,.16);
  border-left: 0;
  color: #FFF3D8;
  transition: box-shadow .3s ease;
}
.lw-bd.is-open { box-shadow: 0 10px 40px rgba(0,0,0,.34); }

/* the always-visible tab */
.lw-bd-tab {
  flex: none;
  width: 46px;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 18px 0;
  background: transparent;
  border: 0;
  border-right: 1px solid rgba(255,243,216,.16);
  color: var(--gold-light, #E8C87A);
  cursor: pointer;
  font: inherit;
}
.lw-bd-tab i { font-size: 14px; }
.lw-bd-tab-t {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-size: 11px;
  letter-spacing: 2px;
  text-transform: uppercase;
  font-weight: 600;
  white-space: nowrap;
}
.lw-bd-tab:hover { background: rgba(255,243,216,.08); }
.lw-bd-tab:focus-visible {
  outline: 2px solid var(--gold-light, #E8C87A);
  outline-offset: -3px;
}

/* the body slides open */
.lw-bd-body {
  width: 0;
  opacity: 0;
  overflow: hidden;
  transition: width .34s cubic-bezier(.4,.02,.2,1), opacity .22s ease;
  pointer-events: none;
}
.lw-bd.is-open .lw-bd-body { width: 320px; opacity: 1; pointer-events: auto; }

/* fixed inner width so the text does not reflow while the panel slides */
.lw-bd-h,
.lw-bd-list,
.lw-bd-cta { width: 320px; box-sizing: border-box; }

.lw-bd-h {
  margin: 0;
  padding: 8px 18px 1px;
  font-size: 15px;
  font-weight: 600;
  color: #FFF3D8;
  letter-spacing: .2px;
}
.lw-bd-list { list-style: none; margin: 0; padding: 2px 18px 0; }
.lw-bd-list li {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 2px 0;
}
.lw-bd-list li i {
  color: var(--gold-light, #E8C87A);
  font-size: 14px;
  margin-top: 3px;
  flex: none;
  width: 16px;
  text-align: center;
}
.lw-bd-list li span { display: block; }
.lw-bd-list li b {
  display: block;
  font-size: 13.5px;
  font-weight: 600;
  color: #FFF3D8;
  line-height: 1.25;
}
.lw-bd-list li em {
  display: block;
  font-style: normal;
  font-size: 12.5px;
  line-height: 1.35;
  color: rgba(255,243,216,.72);
  margin-top: 1px;
}
.lw-bd-list a { color: #FFF3D8; text-decoration: underline; text-underline-offset: 2px; }

.lw-bd-cta {
  display: flex;
  gap: 8px;
  padding: 6px 18px 10px;
}
.lw-bd-cta .lw-bd-book {
  flex: 1 1 0;
  min-height: 40px;
  padding: 10px 12px;
  font-size: 12.5px;
  letter-spacing: 1px;
  text-transform: uppercase;
  font-weight: 600;
  border: 1px solid transparent;
  border-radius: 3px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}
.lw-bd-cta .lw-bd-offers {
  flex: 1 1 0;
  min-height: 40px;
  padding: 10px 12px;
  font-size: 12px;
  letter-spacing: .8px;
  text-transform: uppercase;
  font-weight: 600;
  border-radius: 3px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  border: 1px solid rgba(255,243,216,.5);
  color: #FFF3D8;
  text-decoration: none;
}
.lw-bd-cta .lw-bd-offers:hover { color: var(--gold-light, #E8C87A); }

/* the booking bar stays centred -- the toaster no longer displaces it */
.lw-hero .lw-hero-book,
.lw-hero-book { transform: translateX(-50%) !important; left: 50% !important; }

@media (max-width: 1024px) {
  .lw-bd { bottom: var(--lw-bd-bottom, 230px); }
  .lw-bd.is-open .lw-bd-body, .lw-bd-h, .lw-bd-list, .lw-bd-cta { width: 286px; }
}
@media (max-width: 720px) {
  .lw-bd { display: none; }   /* the mobile Book Now popup carries the form */
}
@media (prefers-reduced-motion: reduce) {
  .lw-bd-body { transition: none; }
}


/* ======================================================================
   FIRST SECTION IMAGE  --  +10% width, +5% height (parent and child)
   ----------------------------------------------------------------------
   Measured 394x394 in a 393.75px grid column. The COLUMN sets the width, so
   widening the element alone would overflow it -- the ratio moves instead.
   The copy column absorbs the difference, so .lw-story keeps its 1152px
   span and stays aligned with every other section.
   ====================================================================== */
@media (min-width: 901px) {
  .lw-story-inner { grid-template-columns: 433px minmax(0, 1fr) !important; }
  .lw-story-media { height: 414px !important; }
  .lw-story-media img { width: 100%; height: 100%; object-fit: cover; }
}

/* child-age selectors inside the Rooms & Guests popup */
.lw-bk-ages {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 10px;
  padding: 8px 0 2px;
  border-top: 1px solid rgba(255,243,216,.12);
  margin-top: 8px;
}
.lw-bk-age { display: flex; flex-direction: column; gap: 4px; flex: 1 1 96px; min-width: 96px; }
.lw-bk-age > span { font-size: 11px; letter-spacing: .4px; opacity: .8; }
.lw-bk-age select {
  min-height: 34px;
  padding: 5px 8px;
  border-radius: 3px;
  border: 1px solid rgba(255,243,216,.28);
  background: rgba(255,255,255,.06);
  color: inherit;
  font: inherit;
}
.lw-bk-age select option { color: #1E180C; background: #FFF; }

/* ======================================================================
   FILTER DROPDOWNS  --  offers / dining / events
   ----------------------------------------------------------------------
   Measured: the select carried `padding-left: 0`, so the chosen value sat
   flush against the field edge; the column gap was 80px against the 24px
   used everywhere else; and events.html opened on 34px of top padding where
   the other two use 60px, so the three pages did not line up.

   BTN-09: a control is judged OPEN as well as at rest, and the OS draws the
   option list, so `option` needs its own padding -- it inherits nothing.
   ====================================================================== */
.lw-of-filter {
  padding-top: 34px !important;
  padding-bottom: 34px !important;
}
.lw-of-filter-inner {
  display: flex;
  flex-wrap: wrap;
  gap: 18px 28px;
  align-items: flex-end;
}
.lw-of-select {
  display: flex;
  flex-direction: column;
  gap: 7px;
  flex: 0 1 auto;
  min-width: 0;
}
.lw-of-select-lbl {
  font-size: 11px;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--brown-deep, #3E2E12);
  opacity: .74;
}
.lw-of-select-wrap {
  position: relative;
  display: block;
  min-width: 232px;
}
.lw-of-select-wrap select {
  width: 100%;
  min-height: 44px;
  padding: 10px 40px 10px 14px !important;   /* room for the value AND the chevron */
  font-size: 14.5px;
  line-height: 1.3;
  color: var(--ink, #1E180C);
  background: #FFFFFF;
  border: 1px solid rgba(62, 46, 18, .26);
  border-radius: 3px;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.lw-of-select-wrap select:hover { border-color: rgba(62, 46, 18, .46); }
.lw-of-select-wrap select:focus-visible {
  outline: 2px solid var(--gold, #B8912F);
  outline-offset: 1px;
  border-color: var(--gold, #B8912F);
}
/* the OS draws this list and inherits nothing from the field */
.lw-of-select-wrap select option {
  padding: 8px 12px;
  color: #1E180C;
  background: #FFFFFF;
}
.lw-of-select-wrap i {
  position: absolute;
  right: 14px;
  top: 50%;
  transform: translateY(-50%);
  font-size: 12px;
  color: var(--brown-deep, #3E2E12);
  opacity: .6;
  pointer-events: none;   /* the chevron must never swallow the click */
}
@media (max-width: 720px) {
  .lw-of-filter-inner { gap: 14px 18px; }
  .lw-of-select { flex: 1 1 100%; }
  .lw-of-select-wrap { min-width: 0; }
}

/* ---- 34-rooms badge: smaller ---- */
.lw-story-badge { padding: 13px 18px !important; gap: 12px !important; }
.lw-story-badge-num { font-size: 36px !important; }
.lw-story-badge-txt { font-size: 10px !important; letter-spacing: 1.4px !important; }

/* ---- dining.html H1 was wrapping to three lines ----
   A `max-width: 20ch` written for a different heading squeezed it into a
   449px column at 64px type. The offers/dining titles get their own measure. */
@media (min-width: 1025px) {
  .lw-of-head-copy .lw-of-title { max-width: 26ch; }
  body:has(.lw-dn-grid) .lw-of-head-copy .lw-of-title,
  .lw-dine-page .lw-of-head-copy .lw-of-title { max-width: none; }
}

/* The dining head was capped at 736px, which wrapped both the heading and
   its lede. Widen it at desktop so each sets on one line; the cap stays at
   narrow widths where a long measure would be unreadable. */
@media (min-width: 1025px) {
  .lw-dine-head { max-width: 1100px !important; }
  .lw-dine-head .lw-h2 { max-width: none !important; }
  .lw-dine-head .lw-body { max-width: none !important; }
}

/* The dining/offers page heading wrapped to three lines because its GRID
   COLUMN was 449px (.lw-of-head-inner is 1.3fr/1fr), not because of any
   max-width. Widen the copy column at desktop. */
@media (min-width: 1025px) {
  .lw-of-head-inner {
    grid-template-columns: minmax(0, 62%) minmax(0, 38%) !important;
    column-gap: 48px !important;
    align-items: start !important;
  }
  .lw-of-head-copy .lw-of-title { max-width: none !important; }
}

/* child newsletter supporting line */
.lw-nl-sub {
  margin: 6px 0 0;
  font-size: 14px;
  line-height: 1.55;
  color: rgba(62, 46, 18, .82);   /* this block sits on #F7F5F2, not a dark ground */
  max-width: 46ch;
}

/* .lw-nl is a grid with fixed columns; the sub-line must sit UNDER the
   title rather than claim the form's cell (which displaced the whole row). */
.lw-nl-sub {
  grid-column: 2 / 3;
  grid-row: 2;
  margin: 2px 0 0;
}
@media (max-width: 900px) {
  .lw-nl-sub { grid-column: 1 / -1; grid-row: auto; }
}

/* The offers/dining lede was capped at 480px, so the second grid track could
   not fill and the heading column was squeezed to 488px. At desktop the lede
   takes its track; the cap returns at narrow widths. */
@media (min-width: 1025px) {
  .lw-of-lede { max-width: none !important; }
}

/* .lw-of-head is a <header>, not a <section>, so the single-gutter rules
   (scoped to section children) never reached its inner and it paid the
   gutter twice: 1152 - 288 - 48 left only 816px for the two columns. */
.lw-of-head > .lw-of-head-inner {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
}

/* The wrap stretched to its flex share (548px) while the <select> sized to
   content (~260px), so the chevron -- pinned to the WRAP's right edge -- sat
   far from the field and the underline overran it. Bound the wrap and let
   the control fill it exactly. */
.lw-of-filter-inner .lw-of-select { flex: 0 0 auto !important; }
.lw-of-filter-inner .lw-of-select-wrap {
  width: 280px !important;
  min-width: 0 !important;
  max-width: 100% !important;
}
.lw-of-filter-inner .lw-of-select-wrap select { width: 100% !important; }
@media (max-width: 720px) {
  .lw-of-filter-inner .lw-of-select { flex: 1 1 100% !important; }
  .lw-of-filter-inner .lw-of-select-wrap { width: 100% !important; }
}

/* The control was computing to 56px: inline-block plus the global
   `* { min-width: 0 }` made `width: 100%` resolve in a shrink-wrap context.
   Block-level inside a bounded wrap removes the ambiguity. */
.lw-of-filter .lw-of-select-wrap {
  display: block !important;
  width: 280px !important;
  max-width: 100% !important;
}
.lw-of-filter .lw-of-select-wrap select {
  display: block !important;
  box-sizing: border-box !important;
  width: 100% !important;
  min-width: 100% !important;
}
@media (max-width: 720px) {
  .lw-of-filter .lw-of-select-wrap { width: 100% !important; }
}

/* concept-2 gives every element whose CLASS CONTAINS "-wrap" the page
   gutter. .lw-of-select-wrap matched by name alone, so a 288px filter field
   carried 144px of padding per side -- zero content width, which is why the
   <select> collapsed to its 56px intrinsic minimum and the chevron floated
   away from it. This control is not a layout wrapper. */
.lw-of-select-wrap,
.lw-bk-occ-pop,
.lw-of-filter .lw-of-select-wrap {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: 100% !important;
}

/* ======================================================================
   CONTACT PAGE ALIGNMENT
   ----------------------------------------------------------------------
   Measured four different left edges on one page: the shell gutter at 144,
   the intro at 270, the office card at 360 and the form section at 100 --
   the last one OUTSIDE the gutter, because .lw-ctx had no padding and its
   inner used its own 1240px cap.

   Everything now hangs off the same shell gutter.
   ====================================================================== */
.lw-ctx {
  padding-left: var(--pad-x) !important;
  padding-right: var(--pad-x) !important;
}
.lw-ctx-inner {
  max-width: none !important;
  width: 100% !important;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) !important;
  column-gap: 48px !important;
  align-items: start !important;
}

/* the office card and the intro share the section's left edge instead of
   floating in their own centred measures */
.lw-ctp-head {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
  text-align: center !important;
}
.lw-ctp-office {
  max-width: none !important;
  margin-left: 0 !important;
  margin-right: 0 !important;
}
@media (max-width: 900px) {
  .lw-ctx-inner { grid-template-columns: 1fr !important; row-gap: 28px; }
}

/* The side column is gone, so the form section is a single column. Cap it at
   a readable form measure instead of stretching it across the full gutter. */
.lw-ctx-inner {
  grid-template-columns: minmax(0, 1fr) !important;
}
.lw-ctx-form {
  max-width: 760px !important;
  margin-left: auto !important;
  margin-right: auto !important;
}
/* the form's own eyebrow and heading centre with it; the FIELDS stay
   left-aligned inside the card, which is how a form is read */
.lw-ctx-form > .lw-eyebrow,
.lw-ctx-form > .lw-h2 { text-align: center; }
.lw-ctx-form > .lw-eyebrow { justify-content: center; }

/* submit centred with the rest of the block (fields stay left-aligned) */
.lw-ctx-form .lw-ctx-send {
  display: block;
  margin-left: auto;
  margin-right: auto;
  min-width: 210px;
}

/* ======================================================================
   BREADCRUMB
   ----------------------------------------------------------------------
   .lw-crumb-inner matched the blanket [class*="-inner"] gutter rule, so the
   breadcrumb paid the gutter twice and its first link sat at 288 instead of
   the 144 every other section starts on. And the hairline beneath it is
   removed.
   ====================================================================== */
.lw-crumb > .lw-crumb-inner,
.lw-crumb-inner {
  padding-left: 0 !important;
  padding-right: 0 !important;
  max-width: none !important;
}
.lw-crumb {
  border-bottom: 0 !important;
  box-shadow: none !important;
  padding-top: 22px !important;
  padding-bottom: 16px !important;
}
@media (max-width: 720px) {
  .lw-crumb { padding-top: 16px !important; padding-bottom: 12px !important; }
}
