/* Standard Rose design: self-hosted OFL variable fonts (see font-licenses.txt); no third-party requests. */
@font-face{ font-family: 'Fraunces'; font-style: normal; font-weight: 100 900; font-display: swap; src: url(/assets/fonts/fraunces-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Fraunces'; font-style: italic; font-weight: 100 900; font-display: swap; src: url(/assets/fonts/fraunces-italic-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Outfit'; font-style: normal; font-weight: 100 900; font-display: swap; src: url(/assets/fonts/outfit-latin.woff2) format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }




:root{
  --ink: #1e2120;
  --muted: #55594e;
  --paper: #f4f1ec;
  --panel: #fffdf9;
  --line: #d4ccbc;
  --accent: #3d5c3a;
  --accent-ink: #ffffff;
  --warn-bg: #fff4d6;
  --warn-ink: #5c4300;
  --focus: #c2410c;
  --radius: 4px;
  font-size: 100%;
}
*{ box-sizing: border-box; }
html{ -webkit-text-size-adjust: 100%; }
body{
  margin: 0; color: var(--ink); background: var(--paper);
  font: 1rem/1.55 "Outfit", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  overflow-wrap: break-word;
}
:where(img:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ max-width: 100%; height: auto; display: block; }
:where(a:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ color: var(--accent); text-underline-offset: 2px; }
:where(a:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)):hover{ text-decoration-thickness: 2px; }
:focus-visible{ outline: 3px solid var(--focus); outline-offset: 2px; }
main:focus{ outline: none; }
.wrap{ max-width: 72rem; margin: 0 auto; padding: 0 1rem; }
.narrow{ max-width: 46rem; }

.skip-link{ position: absolute; left: -999px; top: 0; background: var(--panel); padding: .6rem 1rem; z-index: 10; }
.skip-link:focus{ left: 1rem; top: .5rem; }
.synthetic-banner{ margin: 0; padding: .5rem 1rem; background: #2b2f6b; color: #fff; text-align: center; font-size: .9rem; }

.site-header{ border-bottom: 1px solid var(--line); background: var(--panel); }
.header-row{ display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1.5rem; padding-top: .75rem; padding-bottom: .75rem; }
.brand{ font-weight: 700; font-size: 1.15rem; color: var(--ink); text-decoration: none; }
.nav-list{ list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem 1rem; }
.nav-list a{ display: inline-block; padding: .35rem 0; }
.nav-list a[aria-current="page"]{ font-weight: 700; }

.page-head{ padding: 1.5rem 0 .5rem; }
:where(h1:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ font-size: clamp(1.7rem, 4vw, 2.4rem); line-height: 1.15; margin: 0 0 .4rem; }
:where(h2:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ font-size: 1.35rem; margin: 2rem 0 .6rem; }
:where(h3:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ font-size: 1.05rem; margin: 1.3rem 0 .4rem; }
.identity{ color: var(--muted); margin: 0 0 .6rem; font-weight: 600; }
.summary{ font-size: 1.08rem; }
.operator-line, .note, .review-line{ color: var(--muted); font-size: .95rem; }

.property-layout{ display: grid; grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
.property-aside{ order: -1; }
@media (min-width: 60rem) {
  .property-layout{ grid-template-columns: minmax(0, 1fr) 22rem; gap: 2.5rem; }
  .property-aside{ order: 0; padding-top: 1.5rem; }
  .property-aside .booking{ position: sticky; top: 1rem; }
}
/* On small screens the booking panel follows the page heading, not the whole page. */
@media (max-width: 59.99rem){
  .property-layout { display: flex; flex-direction: column; }
  .property-main { display: contents; }
  .property-main > .page-head { order: -2; }
  .property-aside { order: -1; }
}

.booking, .search-form, .card, .suit-card{
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: 1rem 1.1rem;
}
.booking h2, .search-form h2{ margin-top: 0; }
.field-grid{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
.field label{ display: block; font-weight: 600; margin-bottom: .25rem; }
.field input{ width: 100%; min-width: 0; min-height: 2.75rem; padding: .5rem .6rem; font: inherit; border: 1px solid #8a8577; border-radius: 6px; background: #fff; color: var(--ink); }
.hint{ display: block; color: var(--muted); font-size: .85rem; margin-top: .2rem; }
:where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)), .button{
  display: inline-block; margin-top: .9rem; min-height: 2.75rem; padding: .6rem 1.1rem; border: 0; border-radius: 6px;
  background: var(--accent); color: var(--accent-ink); font: inherit; font-weight: 700; cursor: pointer; text-decoration: none; width: 100%; text-align: center;
}
:where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)):hover, .button:hover{ filter: brightness(1.1); }
.form-error{ background: var(--warn-bg); color: var(--warn-ink); padding: .5rem .7rem; border-radius: 6px; margin: .75rem 0 0; }
.next-step{ padding-left: 1.1rem; color: var(--muted); font-size: .92rem; margin: .9rem 0 0; }
.contact-list{ padding-left: 1.1rem; }

.unconfirmed{ background: var(--warn-bg); color: var(--warn-ink); padding: 0 .3rem; border-radius: 4px; }
.suit-grid{ display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr)); }
.suit-card h3{ margin-top: 0; }
.suit-check{ border-left: 4px solid #b7791f; }
.rooms{ list-style: none; padding: 0; display: grid; gap: .6rem; grid-template-columns: repeat(auto-fit, minmax(min(15rem, 100%), 1fr)); }
.rooms li{ background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius); padding: .7rem .9rem; }
.fact-list{ display: grid; grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr)); gap: .5rem 1rem; margin: 0; }
.fact-list div{ border-top: 1px solid var(--line); padding-top: .4rem; }
.fact-list dt{ color: var(--muted); font-size: .9rem; }
.fact-list dd{ margin: 0; font-weight: 600; }
.fees{ list-style: none; padding: 0; margin: 0; }
.fees li{ display: flex; justify-content: space-between; gap: 1rem; border-bottom: 1px solid var(--line); padding: .4rem 0; }
.total-status{ border-left: 4px solid var(--accent); padding: .5rem .8rem; background: var(--panel); }
[data-total-status="incomplete"], [data-total-status="fees_not_declared"]{ border-left-color: #b7791f; background: var(--warn-bg); color: var(--warn-ink); }

.cards{ list-style: none; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(17rem, 100%), 1fr)); }
.card h3{ margin-top: 0; }
.card-facts{ padding-left: 1.1rem; margin: .4rem 0; }
.card[hidden]{ display: none; }
.guide-list{ padding-left: 1.1rem; }
.guide-list li{ margin-bottom: .6rem; }
.photo-grid{ display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(min(14rem, 100%), 1fr)); }
:where(figure:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ margin: 0; }
:where(figcaption:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ font-size: .9rem; color: var(--muted); padding-top: .3rem; }
.kind{ font-size: .8rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: var(--muted); }
.cite{ color: var(--muted); font-size: .9rem; }
.sources{ font-size: .92rem; }

.site-footer{ margin-top: 3rem; border-top: 1px solid var(--line); background: var(--panel); padding: 1rem 0 1.5rem; font-size: .95rem; }

@media (max-width: 20rem) {
  .field-grid{ grid-template-columns: minmax(0, 1fr); }
}
@media (prefers-reduced-motion: reduce) { *{ scroll-behavior: auto !important; } }

/* ---- interaction components (menu, consent, sticky bar, calendar, quote) ---- */
.secondary{ background: var(--panel); color: var(--accent); border: 2px solid var(--accent); width: auto; margin-top: .5rem; }
.menu-button{ display: none; width: auto; margin: 0; }
.calendar-open{ display: none; }
.js .calendar-open{ display: inline-block; }
@media (max-width: 47.99rem) {
  .js .menu-button{ display: inline-block; }
  .js .site-nav{ width: 100%; }
  .js .site-nav:not(.open) .nav-list{ display: none; }
  .js .site-nav.open .nav-list{ flex-direction: column; padding: .5rem 0; }
}
.consent{
  box-sizing: border-box; position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
  background: #1f2a2c; color: #fff; padding: .4rem .75rem .5rem; box-shadow: 0 -2px 8px rgba(0,0,0,.2);
  max-height: 60vh; overflow-y: auto; font-size: .95rem; line-height: 1.35;
}
.consent-text{ margin: 0 0 .35rem; }
.consent-details{ display: inline; }
.consent-details summary{ display: inline; cursor: pointer; text-decoration: underline; text-underline-offset: 2px; }
.consent-details ul{ margin: .3rem 0 0; padding-left: 1.1rem; }
.consent-actions{ display: flex; gap: .5rem; max-width: 28rem; }
.consent-actions button{ flex: 1 1 0; min-width: 0; width: auto; margin: 0; min-height: 2.75rem; padding: .4rem .5rem; }
.consent :focus-visible{ outline-color: #ffb37a; }
.sticky-book{ position: fixed; left: 0; right: 0; bottom: 0; z-index: 20; padding: .5rem 1rem; background: var(--panel); border-top: 1px solid var(--line); }
.sticky-book button{ margin: 0; }
.sticky-book[hidden]{ display: none; }
.calendar-slot{ margin: .5rem 0 0; }
.calendar-dialog{ position: fixed; inset: 0; z-index: 40; background: rgba(31,42,44,.55); display: flex; align-items: flex-start; justify-content: center; overflow-y: auto; padding: 1rem; }
.calendar-panel{ background: var(--panel); border-radius: var(--radius); padding: 1rem; width: 100%; max-width: 26rem; }
.calendar-panel h2{ margin-top: 0; }
.calendar-head{ display: flex; align-items: center; justify-content: space-between; gap: .5rem; flex-wrap: wrap; }
.calendar-head p{ font-weight: 700; margin: .5rem 0 0; }
.calendar-panel table{ width: 100%; border-collapse: collapse; table-layout: fixed; }
.calendar-panel th{ font-size: .8rem; color: var(--muted); padding: .2rem 0; }
.calendar-panel td{ padding: 1px; }
.calendar-panel td button{ margin: 0; padding: .4rem 0; min-height: 2.5rem; min-width: 0; background: var(--paper); color: var(--ink); border: 1px solid var(--line); font-weight: 600; white-space: nowrap; font-size: clamp(.7rem, 3.4vw, 1rem); letter-spacing: -.02em; }
.calendar-panel{ padding: clamp(.5rem, 3vw, 1rem); }
.calendar-dialog{ padding: clamp(.25rem, 2vw, 1rem); }
.calendar-panel td button[aria-pressed="true"]{ background: var(--accent); color: var(--accent-ink); }
.calendar-panel td button.in-range{ background: #d3e6e4; }
.calendar-panel td :where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)):disabled{ color: #9a958b; background: transparent; text-decoration: line-through; cursor: not-allowed; }
body.dialog-open{ overflow: hidden; }
.quote{ margin-top: 1rem; border-top: 1px solid var(--line); padding-top: .6rem; }
.quote-title{ margin: 0 0 .3rem; font-size: 1rem; }
.quote-indicative{ color: var(--muted); font-size: .92rem; margin: 0; }
.quote:not([data-quote-state="indicative"]) .quote-indicative{ display: none; }
.quote-lines{ width: 100%; border-collapse: collapse; margin: .4rem 0; font-size: .95rem; }
.quote-lines caption{ text-align: left; font-size: .9rem; color: var(--muted); padding-bottom: .3rem; }
.quote-lines th{ text-align: left; font-weight: 400; padding: .25rem 0; border-bottom: 1px solid var(--line); }
.quote-lines td{ text-align: right; padding: .25rem 0; border-bottom: 1px solid var(--line); }
.quote-lines .total th, .quote-lines .total td{ font-weight: 700; }
[data-quote-state="sold_out"] .quote-body, [data-quote-state="min_stay"] .quote-body, [data-quote-state="timeout"] .quote-body, [data-quote-state="error"] .quote-body, [data-quote-state="incomplete"] .quote-body, [data-quote-state="expired"] .quote-body{ background: var(--warn-bg); color: var(--warn-ink); padding: .4rem .6rem; border-radius: 6px; }
:where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)):disabled{ background: #8a8577; cursor: not-allowed; }
.provenance{ color: var(--muted); font-size: .88rem; font-weight: 400; }
.room-kind{ font-size: .88rem; color: var(--muted); }
.review-list{ list-style: none; padding: 0; }
.review-list blockquote{ margin: 0; font-style: italic; }
.part-of, .includes{ font-size: .95rem; }
:where(h4:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ margin: 1rem 0 .3rem; font-size: 1rem; }
[hidden]{ display: none !important; }

/* Rose theme — the shared default look, modelled on the live Rose Cottage
   design (marketing/index.template.html). Theme only: no property content. */
:root{
  --forest: #3d5c3a; --brass: #b8965a; --brass-light: #d9bc85; --linen: #eae4d8; --charcoal: #35393d;
  --stone: #6f6253; --terracotta: #a85d3e; --mist: #d4ccbc; --night: #1e2120;
  --heading-font: 'Fraunces', Georgia, 'Times New Roman', serif;
  --accent: var(--forest); --paper: #f4f1ec; --line: var(--mist);
}
body{ font-weight: 300; font-size: 1rem; line-height: 1.7; }
:where(strong:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), :where(b:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), .fact-list dd, .field label, :where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)), .button{ font-weight: 500; }
:where(h1:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), :where(h2:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), :where(h3:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), :where(h4:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)), .brand, .display{ font-family: var(--heading-font); font-weight: 300; letter-spacing: -.01em; }
:where(h2:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ color: var(--forest); font-size: clamp(1.6rem, 3vw, 2.2rem); line-height: 1.15; }
:where(h3:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ color: var(--forest); font-weight: 400; font-size: 1.15rem; }
:where(h4:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ color: var(--forest); font-weight: 400; }
:where(em:not(:is(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) *)){ font-style: italic; }
.display{ font-size: clamp(2rem, 4.2vw, 3.2rem); line-height: 1.05; margin: 0 0 1.2rem; }
.display em{ color: var(--terracotta); }
.eyebrow{ font-size: .7rem; letter-spacing: .3em; text-transform: uppercase; color: #8a6d38; margin: 0 0 .9rem; font-weight: 400; }
.center{ text-align: center; }
.wrap{ max-width: 75rem; padding: 0 clamp(1rem, 4vw, 3rem); }
.section-head{ margin-bottom: 2.2rem; }

/* header */
.site-header{ background: var(--charcoal); border: 0; position: relative; z-index: 10; }
.header-row{ padding-block: 1.1rem; flex-wrap: nowrap; }
.brand{ color: #fff; font-size: 1.45rem; text-decoration: none; display: flex; flex-direction: column; line-height: 1.1; font-weight: 300; }
.brand-sub{ font-family: 'Outfit', system-ui, sans-serif; font-size: .58rem; letter-spacing: .32em; text-transform: uppercase; color: rgba(255,255,255,.75); margin-top: .3rem; }
.site-nav{ margin-left: auto; }
.nav-list{ gap: .25rem 2rem; }
.nav-list a{ color: #fff; text-decoration: none; font-size: .74rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 400; }
.nav-list a:hover, .nav-list a[aria-current="page"]{ color: var(--brass-light); font-weight: 400; }
.header-cta{ background: var(--brass); color: #fff; text-decoration: none; font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; padding: .75rem 1.3rem; white-space: nowrap; font-weight: 500; }
.header-cta:hover{ background: #fff; color: var(--night); }
.site-header :focus-visible{ outline-color: #ffcf8a; }
.site-header .menu-button{ background: transparent; color: #fff; border: 1px solid rgba(255,255,255,.5); font-size: .72rem; letter-spacing: .16em; text-transform: uppercase; padding: .5rem .9rem; min-height: 2.75rem; }
.has-hero .site-header{ background: linear-gradient(to bottom, rgba(20,22,21,.7), rgba(20,22,21,0)); margin-bottom: -6.5rem; }
.has-hero .site-header a, .has-hero .site-header .brand-sub{ text-shadow: 0 1px 12px rgba(0,0,0,.55); }
@media (max-width: 47.99rem) {
  .header-row{ flex-wrap: wrap; gap: .6rem; }
  .brand{ margin-right: auto; font-size: 1.25rem; }
  .brand-sub{ font-size: .5rem; letter-spacing: .26em; }
  .js .site-nav{ order: 2; margin-left: 0; width: auto; }
  .header-cta{ order: 3; padding: .7rem .8rem; font-size: .64rem; letter-spacing: .14em; }
  .js .site-nav .menu-button{ padding: .55rem .7rem; font-size: .64rem; }
  .js .site-nav.open .nav-list{ position: absolute; left: 0; right: 0; top: 100%; z-index: 12; background: rgba(30,33,32,.98); padding: .75rem clamp(1rem, 4vw, 3rem) 1rem; gap: .2rem; }
  .js .site-nav.open .nav-list a{ display: block; padding: .6rem 0; }
  .has-hero .site-header{ margin-bottom: -5.2rem; }
  .brand-sub{ display: none; }
  .stat-strip li{ flex: 1 1 25%; padding: 1.1rem .4rem; }
  .stat-value{ font-size: 1.5rem; }
  .stat-label{ font-size: .55rem; letter-spacing: .14em; }
}

/* hero */
.property-hero{ position: relative; isolation: isolate; display: flex; align-items: flex-end; min-height: max(40rem, 100vh); margin: 0; padding: 0; color: #fff; background: var(--charcoal); overflow: hidden; }
.hero-media, .hero-media picture{ position: absolute; inset: 0; z-index: -2; }
.property-hero .hero-image{ width: 100%; height: 100%; object-fit: cover; max-width: none; }
.property-hero::before{ content: ''; position: absolute; inset: 0; z-index: -1; background: linear-gradient(to top, rgba(20,22,21,.86) 0%, rgba(20,22,21,.42) 52%, rgba(20,22,21,.5) 100%); }
.hero-copy{ width: 100%; max-width: 62rem; padding: 8rem clamp(1.25rem, 5vw, 4rem) clamp(3rem, 7vh, 4.5rem); }
.hero-copy .eyebrow{ color: var(--brass-light); display: flex; align-items: center; gap: .7rem; letter-spacing: .24em; }
.hero-copy .eyebrow::before{ content: ''; width: 2rem; height: 1px; background: var(--brass-light); flex: none; }
.hero-copy h1{ font-size: clamp(3.4rem, 8.5vw, 7.5rem); line-height: .95; letter-spacing: -.02em; color: #fff; margin: 0 0 1.1rem; font-weight: 300; }
.hero-copy h1 em{ display: block; color: rgba(255,255,255,.78); }
.hero-sub{ font-family: var(--heading-font); font-style: italic; font-size: clamp(1rem, 1.8vw, 1.22rem); line-height: 1.55; color: rgba(255,255,255,.88); max-width: 36rem; margin: 0 0 1.4rem; }
.hero-copy .identity{ color: #fff; font-weight: 400; font-size: .82rem; letter-spacing: .08em; text-transform: uppercase; border-top: 1px solid rgba(217,188,133,.6); padding-top: .9rem; max-width: 36rem; }
.hero-copy .summary, .hero-copy .operator-line, .hero-copy a{ color: rgba(255,255,255,.9); }
.hero-copy .operator-line{ font-size: .88rem; }
.hero-copy .eyebrow, .hero-copy h1, .hero-sub, .hero-copy .identity, .hero-copy .operator-line{ text-shadow: 0 1px 24px rgba(0,0,0,.55), 0 1px 4px rgba(0,0,0,.4); }
.hero-acts{ display: flex; flex-wrap: wrap; gap: .8rem; margin: 1.8rem 0 0; }
.btn{ display: inline-block; text-decoration: none; font-size: .72rem; letter-spacing: .18em; text-transform: uppercase; padding: 1rem 2.2rem; font-weight: 500; }
.btn-brass{ background: var(--brass); color: #fff !important; }
.btn-brass:hover{ background: #fff; color: var(--night) !important; }
.btn-ghost{ border: 1px solid rgba(255,255,255,.6); color: #fff !important; }
.btn-ghost:hover{ background: rgba(255,255,255,.1); border-color: #fff; }
.heading-copy{ padding: 2.5rem 0 1rem; }

/* stat strip */
.stat-strip{ list-style: none; margin: 0; padding: 0; background: var(--charcoal); display: flex; justify-content: center; flex-wrap: wrap; }
.stat-strip li{ flex: 1 1 8rem; max-width: 13rem; padding: 1.5rem 1rem; text-align: center; border-right: 1px solid rgba(255,255,255,.08); }
.stat-strip li:last-child{ border-right: 0; }
.stat-value{ display: block; font-family: var(--heading-font); font-weight: 300; font-size: 1.9rem; line-height: 1; color: var(--brass-light); }
.stat-label{ display: block; margin-top: .45rem; font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; color: #d0d3d4; }

/* sections */
.story, .plan, .location, .related, .gallery{ padding-block: clamp(3.5rem, 8vw, 6rem); }
.gallery{ background: var(--linen); padding-bottom: 0; }
.split{ display: grid; grid-template-columns: minmax(0, 1fr); gap: 2.5rem; align-items: center; }
@media (min-width: 60rem) { .split{ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 5rem; } .split.single{ grid-template-columns: minmax(0, 1fr); } }
.collage{ display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 18rem 12rem; gap: .5rem; }
.collage figure{ overflow: hidden; }
.collage figure.tall{ grid-row: span 2; }
.collage img{ width: 100%; height: 100%; object-fit: cover; }
.pull{ font-family: var(--heading-font); font-style: italic; font-size: 1.15rem; line-height: 1.65; color: var(--forest); border-left: 2px solid var(--brass); padding-left: 1.25rem; margin: 1.5rem 0; }
.story-text p{ color: #45453e; }
.points{ list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(13rem, 100%), 1fr)); gap: .6rem 1.2rem; margin: 1.6rem 0 0; }
.points li{ display: flex; gap: .7rem; align-items: baseline; font-size: .9rem; color: var(--stone); }
.points li::before{ content: '✦'; color: var(--brass); font-size: .55rem; flex: none; }
.highlights{ list-style: none; padding: 0; margin: 4rem 0 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr)); gap: 2px; background: var(--mist); }
.highlights li{ background: var(--paper); padding: 2rem 1.75rem; border-top: 2px solid transparent; }
.highlights li:hover{ background: var(--linen); border-top-color: var(--brass); }
.highlights h3{ margin: .6rem 0 .5rem; }
.highlights p{ margin: 0; font-size: .9rem; color: var(--stone); }
.hl-icon{ font-size: 1.8rem; line-height: 1; display: block; }

/* gallery mosaic */
.mosaic{ list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px; }
.mosaic .gp{ position: relative; overflow: hidden; aspect-ratio: 4 / 3; }
.mosaic .gp:first-child{ grid-column: span 2; aspect-ratio: 16 / 10; }
.mosaic a{ display: block; height: 100%; }
.mosaic img{ width: 100%; height: 100%; object-fit: cover; transition: transform .7s ease; }
.mosaic a:hover img, .mosaic a:focus-visible img{ transform: scale(1.05); }
.gp-over{ position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(61,92,58,0); color: #fff; font-family: var(--heading-font); font-style: italic; font-size: 1.1rem; opacity: 0; transition: all .35s; }
.mosaic a:hover .gp-over, .mosaic a:focus-visible .gp-over{ background: rgba(61,92,58,.45); opacity: 1; }
.mosaic a:focus-visible{ outline-offset: -4px; }
.gp-cap{ position: absolute; left: 0; bottom: 0; margin: 0; padding: .4rem .7rem; background: rgba(30,33,32,.7); color: #fff; font-size: .8rem; }
@media (min-width: 60rem) {
  .mosaic{ grid-template-columns: repeat(12, minmax(0, 1fr)); grid-auto-rows: 15.5rem; }
  .mosaic .gp, .mosaic .gp:first-child{ aspect-ratio: auto; grid-column: span 3; }
  .mosaic .gp:nth-child(1){ grid-column: span 5; grid-row: span 1; }
  .mosaic .gp:nth-child(2){ grid-column: span 4; }
  .mosaic .gp:nth-child(-n+3){ height: 22.5rem; }
  .mosaic .gp:nth-child(3){ grid-column: span 3; }
  .mosaic{ grid-template-rows: 22.5rem; }
}

/* lightbox */
.lightbox{ position: fixed; inset: 0; z-index: 50; background: #1b1e1d; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1rem; padding: 3.5rem 1rem 1.5rem; }
.lightbox img{ max-width: min(90vw, 90rem); max-height: 78vh; width: auto; height: auto; object-fit: contain; }
.lightbox p{ font-family: var(--heading-font); font-style: italic; color: rgba(255,255,255,.75); margin: 0; text-align: center; }
.lightbox button{ position: absolute; width: auto; margin: 0; background: rgba(255,255,255,.08); color: #fff; border: 1px solid rgba(255,255,255,.35); font-size: 1rem; min-width: 2.75rem; padding: .5rem .9rem; }
.lightbox .lb-close{ top: 1rem; right: 1rem; }
.lightbox .lb-prev{ left: 1rem; top: 50%; transform: translateY(-50%); }
.lightbox .lb-next{ right: 1rem; top: 50%; transform: translateY(-50%); }
.lightbox :focus-visible{ outline-color: #ffcf8a; }
@media (max-width: 47.99rem) { .lightbox .lb-prev, .lightbox .lb-next{ top: auto; bottom: 1.2rem; transform: none; } .lightbox{ padding-bottom: 5rem; } }

/* bands */
.band-forest{ background: var(--forest); color: rgba(255,255,255,.88); padding-block: clamp(3.5rem, 8vw, 5.5rem); }
.band-charcoal{ background: var(--charcoal); color: rgba(255,255,255,.85); padding-block: clamp(3.5rem, 8vw, 6rem); }
.band-forest h2, .band-charcoal h2, .band-forest h3, .band-charcoal h3{ color: #fff; }
.band-forest .display em, .band-charcoal .display em{ color: var(--brass-light); }
.band-forest .eyebrow, .band-charcoal .eyebrow{ color: var(--brass-light); }
.band-forest .points li, .band-charcoal li{ color: rgba(255,255,255,.85); }
.band-forest :focus-visible, .band-charcoal :focus-visible{ outline-color: #ffcf8a; }
.feature-img{ overflow: hidden; }
.feature-img img{ width: 100%; height: clamp(18rem, 36vw, 29rem); object-fit: cover; }
.amen-grid{ list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(18rem, 100%), 1fr)); gap: 2px; background: rgba(255,255,255,.06); }
.amen-grid > li{ background: rgba(255,255,255,.04); padding: 2rem 1.9rem; border-top: 2px solid transparent; }
.amen-grid > li:hover{ background: rgba(255,255,255,.08); border-top-color: var(--brass); }
.amen-grid h3{ margin: .7rem 0 .9rem; font-size: 1.08rem; }
.amen-grid ul{ list-style: none; padding: 0; margin: 0; display: grid; gap: .5rem; }
.amen-grid ul li{ display: flex; gap: .6rem; font-size: .86rem; color: #dcdfe0; }
.amen-grid ul li::before{ content: '—'; color: var(--brass-light); flex: none; }
.band-text{ max-width: 44rem; margin: 0 auto 2.2rem; }
.icon-row{ list-style: none; padding: 0; margin: 0 auto; max-width: 56rem; display: flex; flex-wrap: wrap; background: rgba(255,255,255,.07); }
.icon-row li{ flex: 1 1 9rem; padding: 1.6rem 1rem; display: flex; flex-direction: column; align-items: center; gap: .6rem; font-size: .66rem; letter-spacing: .15em; text-transform: uppercase; color: #eef2ed; border-right: 1px solid rgba(255,255,255,.08); }

/* plan your stay: research content in the same language */
.plan{ background: var(--paper); }
.property-layout{ display: grid; grid-template-columns: minmax(0, 1fr); gap: 2rem; }
@media (min-width: 60rem) {
  .property-layout{ grid-template-columns: minmax(0, 1fr) 23rem; gap: 3.5rem; }
  .property-aside .booking{ position: sticky; top: 1.5rem; }
}
@media (max-width: 59.99rem) { .property-aside{ order: -1; } .property-layout{ display: flex; flex-direction: column; } }
.property-main > section{ margin: 0 0 3rem; }
.property-main > section > h2{ font-size: clamp(1.4rem, 2.6vw, 1.8rem); margin-top: 0; }
.booking{ background: #fffdf9; border: 1px solid var(--mist); border-top: 3px solid var(--brass); border-radius: 0; padding: 1.6rem; box-shadow: 0 10px 30px rgba(53,57,61,.08); }
.booking h2{ font-size: 1.6rem; }
.suit-card, .rooms li, .card{ background: #fffdf9; border: 1px solid var(--mist); border-radius: 0; }
.suit-check{ border-left: 3px solid var(--brass); }
:where(button:not(.pys-app button, .pys-dialog button, .pys-bk-pointer button, .pys-launcher, .ra-panel button, #booking button)), .button{ border-radius: 0; letter-spacing: .12em; text-transform: uppercase; font-size: .78rem; padding: .85rem 1.2rem; }
.secondary{ text-transform: none; letter-spacing: 0; font-size: .95rem; }
.field input{ border-radius: 0; }
.unconfirmed{ font-weight: 400; background: #f3ead6; color: #6b4f16; padding: .05rem .45rem; border-left: 2px solid var(--brass); font-size: .92em; }

/* location */
.loc-img{ position: relative; overflow: hidden; }
.loc-img img{ width: 100%; height: clamp(18rem, 36vw, 29rem); object-fit: cover; }
.loc-badge{ position: absolute; left: 1.2rem; bottom: 1.2rem; background: var(--brass); color: #fff; font-size: .68rem; letter-spacing: .18em; text-transform: uppercase; padding: .5rem 1rem; }
.places-list{ list-style: none; padding: 0; margin: 1.5rem 0 0; display: grid; gap: 2px; background: var(--mist); }
.places-list li{ background: var(--linen); padding: 1.3rem 1.4rem; display: flex; gap: 1.1rem; align-items: flex-start; }
.places-list .hl-icon{ font-size: 1.4rem; }
.places-list h3{ margin: .1rem 0 .25rem; font-size: 1.02rem; }
.places-list p{ margin: 0; font-size: .86rem; color: var(--stone); }
.place-dist{ font-size: .62rem; letter-spacing: .2em; text-transform: uppercase; color: #8a6d38; }

/* guides */
.related{ background: var(--linen); }
.guide-cards{ list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(16rem, 100%), 1fr)); gap: 2px; background: var(--mist); }
.guide-card{ position: relative; background: var(--paper); padding: 1.7rem 1.6rem; margin: 0 !important; border-top: 2px solid transparent; cursor: pointer; }
.guide-card:hover{ border-top-color: var(--brass); }
.guide-card h3{ margin: 0 0 .5rem; }
.guide-card h3 a{ color: var(--forest); text-decoration: none; }
.guide-card h3 a:hover{ text-decoration: underline; }
/* The whole card opens its guide (the title link covers the card). */
.guide-card h3 a::after{ content: ""; position: absolute; inset: 0; }
.guide-card h3 a:focus-visible{ outline: none; }
.guide-card:focus-within{ outline: 2px solid var(--brass); outline-offset: -2px; }
.guide-more{ margin-top: .9rem !important; font-size: .78rem !important; letter-spacing: .14em; text-transform: uppercase; color: var(--brass) !important; }
.guide-card p{ margin: 0; font-size: .9rem; color: var(--stone); }

/* inner pages */
body:not(.has-hero) main > .wrap > .page-head, body:not(.has-hero) main article > .page-head{ padding-block: 3rem 1.5rem; }
body:not(.has-hero) .page-head h1{ color: var(--forest); font-size: clamp(2.2rem, 5vw, 3.4rem); line-height: 1.08; }
main > .wrap:not(.property-layout){ padding-bottom: 3rem; }

/* footer */
.site-footer{ background: var(--night); color: #c8ccca; margin: 0; border: 0; padding: 4rem 0 2rem; font-size: .88rem; }
.foot-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr)); gap: 2.5rem; }
.foot-brand{ font-family: var(--heading-font); font-size: 1.6rem; color: #fff; margin: 0 0 .8rem; font-weight: 300; }
.foot-loc{ font-size: .68rem; letter-spacing: .2em; text-transform: uppercase; color: var(--brass-light); }
.foot-title{ font-size: .62rem; letter-spacing: .28em; text-transform: uppercase; color: var(--brass-light); margin: .4rem 0 1rem; font-weight: 500; }
.foot-col ul{ list-style: none; padding: 0; margin: 0; display: grid; gap: .6rem; }
.site-footer a{ color: #c8ccca; text-decoration: none; }
.site-footer a:hover{ color: #fff; text-decoration: underline; }
.site-footer :focus-visible{ outline-color: #ffcf8a; }
.foot-bottom{ margin-top: 3rem; padding-top: 1.4rem; border-top: 1px solid rgba(255,255,255,.08); font-size: .76rem; color: #a9aeac; }

.pys-section{ background: var(--paper); }
html .pys-launcher{ bottom: calc(22px + var(--overlay-h, 0px)); }
@media (max-width: 520px) { html .pys-launcher{ bottom: calc(16px + var(--overlay-h, 0px)); } }
.preview-banner{ position: relative; z-index: 11; }
@media (prefers-reduced-motion: reduce) { .mosaic img, .gp-over{ transition: none; } }
.preview-banner{margin:0;padding:.6rem 1rem;background:#3D5C3A;color:white;text-align:center;font-size:.875rem;line-height:1.5}

/* good to know: reference facts kept in the page, compact */
.good-to-know{ padding-block: clamp(3.5rem, 8vw, 5.5rem); background: var(--paper); }
.gtk-lead{ max-width: 40rem; color: var(--stone); margin: 0; }
.gtk-identity{ max-width: 48rem; font-size: .9rem; color: var(--stone); border-left: 2px solid var(--brass); padding-left: 1rem; margin: 0 0 1.5rem; }
.gtk-list{ border-top: 1px solid var(--mist); }
.gtk-item{ border-bottom: 1px solid var(--mist); }
.gtk-item > summary{ cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.2rem 0; font-family: var(--heading-font); font-size: 1.25rem; color: var(--forest); }
.gtk-item > summary::-webkit-details-marker{ display: none; }
.gtk-item > summary::after{ content: '+'; font-family: 'Outfit', sans-serif; font-size: 1.4rem; color: #8a6d38; }
.gtk-item[open] > summary::after{ content: '\2212'; }
.gtk-item > section{ padding: 0 0 1.8rem; margin: 0; }
.gtk-item > section > h2:first-child{ position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* The live Rose booking engine was designed for a page with a global reset;
   give it the same context here so it renders exactly as it does live. */
:where(.pys-app, .pys-dialog, .pys-bk-pointer, .pys-launcher, .ra-panel, .ra-btn, #booking) :where(*, *::before, *::after) { margin: 0; padding: 0; box-sizing: border-box; }
.pys-section, .pys-dialog, .pys-bk-pointer, .ra-panel, #booking { line-height: normal; }

/* Optional wedding-guide components. All new rules are .wg-* scoped. */
.wg-hero{position:relative;min-height:min(78vh,40rem);display:flex;align-items:flex-end;color:#fff;overflow:hidden;background:var(--night)}
.wg-hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.78}
.wg-hero::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(30,33,32,.05) 30%,rgba(30,33,32,.82))}
.wg-hero .wrap{position:relative;z-index:1;padding-top:3rem;padding-bottom:2.6rem}
.wg-hero .eyebrow,.wg-hero h1,.wg-hero .summary{text-shadow:0 1px 24px rgba(0,0,0,.55),0 1px 4px rgba(0,0,0,.45)}
.wg-hero .eyebrow{color:var(--brass-light)}
.wg-hero h1{font-family:var(--heading-font);font-weight:300;font-size:clamp(2.1rem,5vw,3.6rem);line-height:1.04;margin:0 0 1rem;max-width:20ch;color:#fff}
.wg-hero h1 em{color:var(--brass-light)}
.wg-hero .summary{max-width:38rem;font-size:1.08rem;margin:0 0 1.6rem;color:#f1ede5}
.wg-actions{display:flex;flex-wrap:wrap;gap:.8rem}
.wg-btn{display:inline-block;background:var(--brass);color:#fff;text-decoration:none;font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;padding:.95rem 1.4rem;font-weight:500}
.wg-btn:hover{background:#fff;color:var(--night)}
.wg-btn.ghost{background:transparent;border:1px solid rgba(255,255,255,.6)}
.wg-btn.ghost:hover{background:rgba(255,255,255,.12);color:#fff}
.wg-venues{list-style:none;padding:0;margin:1.4rem 0 1.2rem;display:grid;grid-template-columns:repeat(auto-fit,minmax(9.5rem,1fr));gap:1rem}
.wg-venue{background:var(--panel);border:1px solid var(--line);border-top:3px solid var(--brass);padding:1.2rem 1.2rem 1.1rem}
.wg-venue.near{border-top-color:var(--forest)}
.wg-dist{font-family:var(--heading-font);font-weight:300;font-size:2.4rem;line-height:1;color:var(--forest);margin:0}
.wg-dist span{font-size:.95rem;color:var(--muted);margin-left:.25rem}
.wg-venue h3{margin:.7rem 0 .2rem;font-size:1.08rem}
.wg-venue p.where{margin:0;color:var(--muted);font-size:.9rem}
.wg-photos{display:grid;grid-template-columns:2fr 1fr;grid-template-rows:auto auto;gap:.6rem;margin:1.4rem 0}
.wg-photos figure{margin:0;position:relative;overflow:hidden;background:var(--linen)}
.wg-photos figure:first-child{grid-row:span 2}
.wg-photos img{width:100%;height:100%;object-fit:cover;display:block;aspect-ratio:4/3}
.wg-photos figcaption{position:absolute;left:0;bottom:0;padding:.35rem .65rem;background:rgba(30,33,32,.72);color:#fff;font-size:.78rem}
.wg-cta{background:var(--forest);color:#fff;padding:2.2rem 1.6rem;margin:2.4rem 0;text-align:center}
.wg-cta h2{font-family:var(--heading-font);font-weight:300;color:#fff;margin:0 0 .6rem;font-size:clamp(1.5rem,3vw,2rem)}
.wg-cta p{margin:0 auto 1.3rem;max-width:34rem;color:#e7ece4}
@media (max-width:40rem){.wg-photos{grid-template-columns:1fr 1fr}.wg-photos figure:first-child{grid-column:span 2;grid-row:auto}.wg-hero{min-height:34rem}.wg-stats li{flex:1 1 50%;max-width:none}.wg-dist{font-size:2rem}}
.wg-review{margin-top:2rem}
