:root {
  color-scheme: light;
  --section-space: clamp(48px, 6.7vw, 100px);
  --paper: #f4f0e7;
  --light: #fbf8f0;
  --ink: #25271e;
  --olive: #424735;
  --gold: #c5af82;
  --rule: #cec5b0;
  --serif: 'Baskerville', 'Palatino Linotype', 'Book Antiqua', Georgia, serif;
  --sans: 'Helvetica Neue', Arial, sans-serif;
}
* { box-sizing: border-box; }
body { margin: 0; background: var(--paper); color: var(--ink); font: 16px/1.65 var(--sans); }
a { color: inherit; text-decoration: none; }
img { display: block; max-width: 100%; }
h1, h2, p { margin: 0; }
h1, h2 { font-family: var(--serif); font-weight: 400; letter-spacing: -.047em; }
h2 { font-size: clamp(2.5rem, 4.9vw, 5rem); line-height: 1.03; }
:focus-visible { outline: 2px solid #94733e; outline-offset: 5px; }
.skip { position: absolute; z-index: 5; left: 1rem; top: 1rem; padding: .6rem 1rem; background: var(--light); transform: translateY(-180%); }
.skip:focus { transform: none; }
.eyebrow, .button, .header nav, .text-link, .hero-caption, .menu-toggle { font-size: .68rem; line-height: 1.35; font-weight: 600; letter-spacing: .19em; text-transform: uppercase; }
.header { min-height: 82px; padding: 13px clamp(24px, 4.5vw, 76px); background: var(--light); display: grid; grid-template-columns: 1fr auto 1fr; gap: 20px; align-items: center; position: relative; z-index: 2; }
.brand { justify-self: start; }
.brand img { width: 168px; height: auto; }
.header nav { display: flex; align-items: center; gap: clamp(20px, 3vw, 48px); }
.header nav a:hover { text-decoration: underline; text-underline-offset: 6px; }
.button { display: inline-flex; justify-content: center; align-items: center; min-height: 46px; padding: 12px 22px; border: 1px solid transparent; transition: background .2s, color .2s; }
.header-book { justify-self: end; color: var(--light); background: var(--olive); }
.header-book:hover { background: var(--ink); }
.menu-toggle { display: none; color: var(--ink); }
.hero { display: grid; place-items: center; position: relative; isolation: isolate; color: var(--light); min-height: min(730px, 81svh); background: #333827; padding: 90px 24px 104px; text-align: center; }
.hero-image, .weddings > img { position: absolute; z-index: -2; width: 100%; height: 100%; inset: 0; object-fit: cover; }
.hero-image { object-position: center 52%; }
.hero::before, .weddings::before { content: ''; position: absolute; z-index: -1; inset: 0; background: linear-gradient(180deg, #14180e30, #15180e67 52%, #171c12b3); }
.hero h1 { font-size: clamp(3.7rem, 8.3vw, 8rem); line-height: .93; margin: 23px 0; }
.hero .eyebrow, .weddings .eyebrow { color: #f1deb3; }
.hero-intro { font-size: clamp(.93rem, 1.6vw, 1.12rem); text-shadow: 0 1px 10px #15170e; }
.actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 28px; }
.hero .actions { justify-content: center; }
.button-ivory { color: var(--ink); background: var(--light); }
.button-ivory:hover { background: #e5d6b8; }
.button-outline { border-color: #f4e9d5b8; color: var(--light); background: #24261c58; }
.button-outline:hover { background: var(--light); color: var(--ink); }
.discover { position: absolute; bottom: 24px; left: 50%; transform: translateX(-50%); border: 1px solid #ead6ae91; border-radius: 50%; display: grid; place-items: center; width: 44px; height: 44px; color: #f1deb3; }
.discover::after { content: ""; width: 9px; height: 9px; border: solid currentColor; border-width: 0 1px 1px 0; transform: translateY(-2px) rotate(45deg); }
.discover:hover { border-color: currentColor; }
.hero-caption { position: absolute; bottom: 36px; right: 4.5vw; }
.intro { text-align: center; padding: clamp(52px, 7.4vw, 112px) 24px; }
.intro h2 { margin: 18px 0 20px; }
.ornament { display: block; width: 45px; height: 1px; background: #927d4e; margin: 25px auto; }
.body-copy { color: #505344; max-width: 530px; }
.intro .body-copy { margin: auto; }
.feature { display: grid; grid-template-columns: 1.12fr 1fr; max-width: 1500px; width: calc(100% - 9vw); margin: auto; background: #e9e4d7; }
.feature-content { padding: clamp(34px, 6vw, 100px); align-self: center; }
.feature h2 { margin: 16px 0 19px; }
.feature-image { min-height: 420px; position: relative; }
.feature-image img { height: 100%; width: 100%; position: absolute; inset: 0; object-fit: cover; }
.text-link { display: inline-block; margin-top: 25px; padding: 0 0 7px; border-bottom: 1px solid #927d4e; }
.text-link:hover { color: #785f2a; }
.collection {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 clamp(12px, 2vw, 27px);
  max-width: 1500px;
  margin: 16px auto var(--section-space);
}
.collection a {
  display: block;
  padding: 18px 0 14px;
  border-bottom: 1px solid var(--rule);
}
.collection a > span {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .5em;
  font: clamp(1.15rem, 1.7vw, 1.65rem)/1.2 var(--serif);
}
.collection a:hover { border-color: var(--ink); }
.collection a > span::after {
  content: "";
  flex: 0 0 .65rem;
  width: .65rem;
  height: .65rem;
  color: #785f2a;
  background:
    linear-gradient(currentColor, currentColor) right top / 60% 1px no-repeat,
    linear-gradient(currentColor, currentColor) right top / 1px 60% no-repeat,
    linear-gradient(135deg, transparent 45%, currentColor 46% 54%, transparent 55%);
}
.collection small { color: #505344; font-size: .78rem; }
.weddings { position: relative; isolation: isolate; min-height: 580px; display: flex; align-items: end; padding: clamp(30px, 7vw, 104px); color: var(--light); background: var(--olive); }
.weddings::before { background: linear-gradient(90deg, #161b10cc, #14190f45 75%), linear-gradient(0deg,#14190f91,transparent 65%); }
.wedding-content { max-width: 610px; }
.weddings h2 { font-size: clamp(3.2rem, 7vw, 7rem); margin: 16px 0 20px; }
.weddings p:not(.eyebrow) { max-width: 410px; }
.wine { margin: var(--section-space) auto; grid-template-columns: 1fr 1fr; }
footer { padding: 52px 4.5vw 20px; background: #282c20; color: var(--paper); }
.footer-grid { display: grid; grid-template-columns: 1.25fr 1fr 1fr; gap: 30px; max-width: 1500px; margin: 0 auto; }
footer .eyebrow { color: var(--gold); margin-bottom: 12px; }
footer p, footer a:not(.footer-brand) { font-size: .87rem; }
.footer-grid a:not(.footer-brand) { display: block; }
footer a:hover { text-decoration: underline; }
.footer-link { width: fit-content; text-decoration: underline; text-decoration-color: var(--gold); text-underline-offset: .27em; }
.footer-note { display: flex; justify-content: space-between; margin: 35px auto 0; max-width: 1500px; border-top: 1px solid #f5f0e33b; padding-top: 16px; font-size: .77rem; }
@media (max-width: 1200px) {
  .header { grid-template-columns: 1fr auto auto; gap: 14px; min-height: 68px; padding: 12px 20px; }
  .brand img { width: 132px; }
  .menu-toggle { display: flex; gap: 6px; align-items: center; border: 0; background: none; min-height: 44px; padding: 0 4px; cursor: pointer; }
  .header nav { display: none; position: absolute; top: 100%; inset-inline: 0; background: var(--paper); padding: 12px 24px 20px; border-top: 1px solid var(--rule); }
  .menu-toggle[aria-expanded="true"] + nav { display: grid; gap: 0; }
  .header nav a { padding: 13px 0; }
  .header-book { padding-inline: 12px; letter-spacing: .1em; min-height: 40px; }
}
@media (max-width: 820px) {
  .feature { grid-template-columns: 1fr; }
  .feature-image { min-height: 0; aspect-ratio: 16/10; }
  .wine .feature-image { grid-row: 1; }
  .collection { grid-template-columns: repeat(2, 1fr); }
  .weddings { min-height: 520px; }
}
@media (max-width: 480px) {
  .collection { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .collection a > span { overflow-wrap: anywhere; }
  .header { padding-inline: 14px; gap: 9px; }
  .brand img { width: 114px; }
  .hero { min-height: 660px; padding: 76px 18px 88px; }
  .hero h1 { font-size: clamp(3rem, 11.8vw, 3.9rem); }
  .hero-caption { display: none; }
  .actions { gap: 9px; }
  .button { padding-inline: 13px; letter-spacing: .13em; }
  .feature-content { padding: 32px 24px; }
  .collection a > span { font-size: 1.03rem; }
}
@media (max-width: 360px) {
  .header { gap: 8px; }
  .header-book { max-width: 100px; padding-inline: 8px; letter-spacing: .09em; text-align: center; }
}
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { transition: none !important; } }

/* Weddings */
.header nav [aria-current="page"] { text-decoration: underline; text-decoration-color: #927d4e; text-underline-offset: 6px; }
.wedding-hero .hero-image { object-position: center 55%; }
.wedding-hero::before { background: linear-gradient(180deg, #1718113b, #16190f8f 53%, #171c129e); }
.wedding-hero h1 { font-size: clamp(3rem, 6.05vw, 5.85rem); }
.wedding-itinerary { display: grid; grid-template-columns: repeat(3, 1fr); width: calc(100% - 9vw); max-width: 1320px; margin: 0 auto var(--section-space); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.wedding-itinerary article { padding: 32px clamp(20px, 3vw, 44px) 36px; }
.wedding-itinerary article + article { border-left: 1px solid var(--rule); }
.wedding-itinerary h3 { font: 400 clamp(1.65rem, 2.6vw, 2.45rem)/1.1 var(--serif); letter-spacing: -.035em; margin: 12px 0; }
.wedding-itinerary article p:last-child { color: #505344; }
.venue-gallery { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(12px, 2.5vw, 36px); width: calc(100% - 9vw); max-width: 1500px; margin: 30px auto var(--section-space); }
.venue-gallery figure { margin: 0; }
.venue-gallery img { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.venue-gallery figcaption { font: 1.2rem var(--serif); padding: 12px 0; border-bottom: 1px solid var(--rule); }
.wedding-club { grid-template-columns: 1.4fr 1fr; align-items: center; margin-bottom: var(--section-space); background: #24271e; color: var(--light); }
.wedding-club > img { width: 100%; height: auto; filter: saturate(.78) brightness(.92) sepia(.08); }
.wedding-club .eyebrow { color: var(--gold); }
.wedding-club .feature-content > p:last-child { color: #eee6d4; }
.wedding-stay { margin-bottom: var(--section-space); grid-template-columns: 1fr 1fr; }
.wedding-inquiry { background: var(--olive); color: var(--light); padding: clamp(62px, 8vw, 108px) 24px; text-align: center; }
.wedding-inquiry .eyebrow { color: #f1deb3; }
.wedding-inquiry h2 { margin: 16px auto; max-width: 820px; }
.wedding-inquiry .actions { justify-content: center; }
@media (max-width: 820px) {
  .wedding-itinerary { grid-template-columns: 1fr; }
  .wedding-itinerary article + article { border-left: 0; border-top: 1px solid var(--rule); }
  .wedding-club, .wedding-stay { grid-template-columns: 1fr; }
  .wedding-stay .feature-image { grid-row: 1; }
}
@media (max-width: 480px) {
  .wedding-hero h1 { font-size: clamp(2.6rem, 10.1vw, 3.25rem); }
  .venue-gallery { grid-template-columns: 1fr; gap: 22px; }
}

/* Estate, accommodation and wine */
.inner-hero { min-height: min(660px, 76svh); }
.inner-hero h1 { font-size: clamp(3.4rem, 7.1vw, 6.65rem); }
.inner-hero:not(.room-detail-hero) h1 { font-size: clamp(3rem, 6.05vw, 5.85rem); }
.estate-hero .hero-image { object-position: center 56%; }
.stay-hero {
  justify-items: start;
  align-items: end;
  text-align: left;
  padding-inline: max(6vw, calc((100vw - 1440px) / 2));
}
.stay-hero .hero-intro { margin-inline: 0; }
.stay-hero .actions { justify-content: flex-start; }
.stay-hero::before {
  background: linear-gradient(90deg, #1519109c, transparent 72%), linear-gradient(0deg, #151910be, transparent 78%);
}
.wine-hero::before { background: linear-gradient(180deg, #1818113b, #17181183 58%, #181911bc); }
.inner-cards { width: calc(100% - 9vw); max-width: 1320px; margin: 0 auto var(--section-space); display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(20px, 3vw, 48px); }
.inner-card { display: grid; grid-template-rows: auto 1fr; background: #e9e4d7; }
.inner-card img { width: 100%; aspect-ratio: 16/10; object-fit: cover; }
.inner-card-copy { padding: clamp(23px, 3.6vw, 56px); }
.inner-card h3 { font: 400 clamp(1.8rem, 3.25vw, 3.25rem)/1.05 var(--serif); letter-spacing: -.035em; margin: 12px 0 16px; }
.inner-card-copy p:not(.eyebrow) { color: #505344; }
.inner-index { width: calc(100% - 9vw); max-width: 1500px; display: grid; grid-template-columns: repeat(3, 1fr); margin: clamp(52px, 7vw, 105px) auto; border-block: 1px solid var(--rule); }
.inner-index a { display: block; padding: 24px clamp(15px, 3vw, 38px); }
.inner-index a + a { border-left: 1px solid var(--rule); }
.inner-index a:hover { background: #e9e4d7; }
.inner-index strong { display: block; font: 400 clamp(1.4rem, 2.4vw, 2.35rem)/1.15 var(--serif); letter-spacing: -.025em; margin-top: 10px; }
.wine-tasting-feature { margin-bottom: var(--section-space); }
@media (max-width: 600px) {
  .inner-hero { min-height: 580px; }
  .stay-hero .hero-image { object-position: 54% center; }
  .inner-hero h1 { font-size: clamp(2.8rem, 10vw, 3.7rem); }
  .inner-hero:not(.room-detail-hero) h1 { font-size: clamp(2.6rem, 9.15vw, 3.4rem); }
  .inner-cards, .inner-index { grid-template-columns: 1fr; }
  .inner-index a + a { border-left: 0; border-top: 1px solid var(--rule); }
}

/* Accommodation details */
.room-detail-hero .hero-intro { max-width: 510px; margin-inline: auto; }
.room-return { display: inline-block; border-bottom: 1px solid #927d4e; padding-bottom: 5px; }
.room-siblings { display: flex; flex-wrap: wrap; justify-content: center; gap: 15px 34px; padding: 28px 20px; }
.room-siblings a { text-decoration: underline; text-decoration-color: #927d4e; text-underline-offset: .25em; }

/* Room photography and details */
.full-room-cards { align-items: start; }
.room-profile { min-width: 0; }
.room-gallery { min-width: 0; background: #ded8c9; }
.room-gallery-track { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-inline: contain; scrollbar-width: thin; }
.room-gallery-track:focus-visible { outline-offset: -3px; }
.room-gallery-track > img { flex: 0 0 100%; width: 100%; height: auto; aspect-ratio: 16 / 10; object-fit: contain; scroll-snap-align: start; }
.room-gallery-controls { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 4px 10px; border-bottom: 1px solid var(--rule); background: var(--light); }
.room-gallery-controls[hidden] { display: none; }
.room-gallery-controls button { display: grid; place-items: center; min-width: 44px; min-height: 44px; padding: 0; border: 0; background: transparent; color: var(--olive); font: 1.5rem/1 var(--serif); cursor: pointer; }
.room-gallery-controls button:hover:not(:disabled) { background: #e9e4d7; }
.room-gallery-controls button:disabled { opacity: .4; cursor: default; }
.room-gallery-count { min-width: 42px; text-align: center; font-size: .76rem; font-variant-numeric: tabular-nums; }
.room-facts { display: grid; gap: .55rem; margin-top: 18px; padding-top: 15px; border-top: 1px solid var(--rule); font-size: .9rem; }

/* Opening films */
.short-film { overflow: hidden; position: relative; }
.short-film video { pointer-events: none; }
.film-play {
  position: absolute;
  z-index: 1;
  inset: 14px 14px auto auto;
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid #f1deb3a6;
  border-radius: 2px;
  background: #24261ce8;
  color: var(--light);
  font: inherit;
  font-size: .75rem;
  cursor: pointer;
}
.film-hero { min-height: max(620px, calc(100svh - 82px)); }
.film-hero::before {
  background: linear-gradient(180deg, #14180e26, #15180e70 52%, #171c12a6);
}
.wedding-hero.film-hero {
  background-color: #161616;
  align-items: end;
  justify-items: start;
  padding-inline: clamp(24px, 7vw, 110px);
  text-align: left;
}
.wedding-hero.film-hero .hero-image {
  filter: grayscale(1);
  object-position: center 38%;
}
@media (max-width: 600px) and (orientation: portrait) {
  .wedding-hero.film-hero .hero-image {
    object-fit: contain;
    object-position: center top;
  }
}
.wedding-hero.film-hero::before {
  background: linear-gradient(90deg, #121212bf, #12121224 75%), linear-gradient(0deg, #121212d9, transparent 70%);
}
.wedding-hero.film-hero .actions { justify-content: flex-start; }
.footer-motion {
  border: 0;
  padding: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: .27em;
  cursor: pointer;
}
@media (max-width: 820px) {
  .film-hero { min-height: max(550px, calc(100svh - 68px)); }
}
@media (max-width: 480px) {
  .wedding-hero.film-hero { padding-bottom: 95px; }
}

/* Estate editorial layout */
@font-face {
  font-family: "Cormorant Garamond";
  src: url('/assets/fonts/cormorant-garamond.woff2') format('woff2');
  font-style: normal;
  font-weight: 300 400;
  font-display: swap;
}
:root {
  --paper: #f4f1e9;
  --light: #fbf9f3;
  --ink: #24261e;
  --olive: #393e30;
  --serif: "Cormorant Garamond", Baskerville, Georgia, serif;
  --editorial-width: min(1440px, calc(100% - 12vw));
}
h1, h2 { letter-spacing: -.023em; }
.hero h1, .weddings h2 { font-weight: 350; }
.hero h1 { line-height: .98; }
.header nav, .header-book, .menu-toggle { font-weight: 400; }
.hero .eyebrow, .weddings .eyebrow, .hero .button { font-weight: 400; }
.header { border-bottom: 1px solid #24261e1a; }
.header nav { gap: clamp(14px, 2.2vw, 34px); }
.header nav a { white-space: nowrap; }
.hero-intro { max-width: 38ch; margin-inline: auto; text-wrap: pretty; }
.hero .hero-content { position: relative; }
.home-hero {
  justify-items: start;
  align-items: end;
  padding-inline: max(6vw, calc((100vw - 1440px) / 2));
  text-align: left;
}
.home-hero::before {
  background: linear-gradient(90deg, #151910a3, #15191038 70%), linear-gradient(0deg, #151910c7, transparent 80%);
}
.home-hero h1 { font-size: clamp(3rem, 6.15vw, 6.1rem); }
.home-hero .hero-intro, .wedding-hero .hero-intro { margin-inline: 0; }
.home-hero .actions { justify-content: flex-start; }
.estate-opening {
  width: var(--editorial-width);
  margin: clamp(54px, 7vw, 104px) auto;
}
.estate-opening-header {
  display: grid;
  grid-template-columns: minmax(0, 1.12fr) minmax(0, .88fr);
  gap: 20px clamp(32px, 7vw, 108px);
  align-items: end;
  padding-top: 25px;
  border-top: 1px solid var(--rule);
}
.estate-opening h2 { margin: 13px 0 0; max-width: 16ch; text-wrap: balance; }
.visit-panel h2 { margin: 17px 0 20px; max-width: 14ch; }
.estate-opening .body-copy { max-width: 52ch; }
.estate-opening .text-link { margin-top: 17px; }
.feature.stay, .feature.wine { width: var(--editorial-width); background: #ebe6da; }
.collection { width: var(--editorial-width); }
.visit-panel {
  width: var(--editorial-width);
  margin: 0 auto clamp(68px, 9vw, 130px);
  padding: clamp(28px, 5vw, 68px) 0;
  border-block: 1px solid var(--rule);
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, .82fr);
  align-items: center;
  gap: 14px clamp(28px, 7vw, 105px);
}
.visit-panel h2 { margin-bottom: 0; }
.visit-details p { max-width: 42ch; }
.visit-details .text-link { margin-inline-end: 20px; }
.footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px 32px; max-width: 960px; }
.footer-grid nav a, .footer-grid div a { line-height: 1.9; }
.footer-grid .footer-link { margin-top: 4px; }
.footer-note { gap: 10px 16px; flex-wrap: wrap; }
@media (max-width: 820px) {
  .header nav { gap: 0; }
  .estate-opening-header { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .home-hero { padding: 56px max(20px, 6vw) 76px; min-height: max(530px, 83svh); }
  .home-hero h1 { font-size: clamp(2.5rem, 10vw, 3.55rem); margin-block: 14px; }
  .home-hero .eyebrow { letter-spacing: .12em; }
  .home-hero .hero-intro { max-width: 36ch; line-height: 1.5; }
  .home-hero .actions { margin-top: 20px; }
  .home-hero .discover { bottom: 16px; }
  .feature.stay .feature-content { padding: 26px 20px; }
  .feature.stay .stay-links { display: grid; justify-items: start; gap: 12px; margin-top: 18px; }
  .feature.stay .stay-links .text-link { margin-top: 0; }
  .collection { grid-template-columns: 1fr; margin-top: 8px; }
  .collection a { padding-block: 13px; }
  .collection a > span { font-size: 1.23rem; }
  .visit-panel { grid-template-columns: 1fr; }
  .estate-opening h2 { max-width: 19ch; }
  .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 18px; }
  .footer-grid nav { grid-column: 1 / -1; }
  .footer-grid nav a { display: inline-block; margin-inline-end: 15px; }
}

.footer-platforms {
  display: grid;
  grid-template-columns: repeat(2, 44px) minmax(66px, max-content) repeat(2, 44px);
  align-items: center;
  justify-content: center;
  gap: clamp(3px, 1.25vw, 18px);
  max-width: 1500px;
  margin: clamp(28px, 4vw, 50px) auto 0;
}
.footer-platforms .footer-brand { display: block; }
.footer-platforms .heritage-mark {
  width: clamp(74px, 9vw, 124px);
  height: auto;
  margin-inline: auto;
}
.footer-platforms .footer-platform:nth-child(2) { margin-inline-end: 3px; }
.footer-platforms .footer-platform:nth-child(4) { margin-inline-start: 3px; }
.footer-platforms .footer-platform {
  display: inline-grid;
  place-items: center;
  width: 44px;
  height: 44px;
  color: var(--gold);
}
.footer-platform svg { width: 23px; height: 23px; }
.footer-platforms .footer-platform:hover,
.footer-platforms .footer-platform:focus-visible { color: var(--light); }


.estate-map {
  display: grid;
  grid-template-columns: minmax(0, .8fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(24px, 7vw, 94px);
  width: var(--editorial-width);
  max-width: 1100px;
  margin: 0 auto var(--section-space);
}
.estate-map h2 { margin: 12px 0 18px; }
.estate-map img {
  width: 100%;
  max-width: 540px;
  height: auto;
  mix-blend-mode: multiply;
  justify-self: end;
}
@media (max-width: 720px) {
  .estate-map { grid-template-columns: 1fr; }
  .estate-map img { justify-self: center; }
}

.stay-links {
  display: flex;
  flex-wrap: wrap;
  column-gap: 24px;
}
.spa-feature {
  width: min(1020px, var(--editorial-width));
  margin: 0 auto var(--section-space);
  padding-top: clamp(28px, 4vw, 55px);
  border-top: 1px solid var(--rule);
  display: grid;
  grid-template-columns: minmax(0, .85fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(28px, 7vw, 104px);
}
.spa-feature video { display: block; width: 100%; height: auto; aspect-ratio: 2 / 3; background: #28231e; }
.room-cards .stay-card-photo { filter: sepia(.09) saturate(.88) contrast(.98); }
.spa-feature h2 { margin: 14px 0 22px; text-wrap: balance; }
.spa-feature .body-copy + .body-copy { margin-top: 14px; }
@media (max-width: 700px) {
  .spa-feature { grid-template-columns: 1fr; }
  .spa-feature > div { grid-row: 1; }
  .spa-feature video { width: min(100%, 360px); }
}

.utility-intro {
  width: var(--editorial-width);
  margin: auto;
  padding: clamp(55px, 8vw, 112px) 0 clamp(38px, 6vw, 78px);
}
.utility-intro h1 {
  margin: 12px 0 22px;
  max-width: 19ch;
  font-size: clamp(3rem, 6.2vw, 6.1rem);
  font-weight: 350;
  line-height: .98;
  text-wrap: balance;
}
.utility-intro .actions { align-items: center; gap: 15px 24px; }
.utility-intro .actions .text-link { margin: 0; }
.button-olive { background: var(--olive); color: var(--light); }
.button-olive:hover { background: var(--ink); }
.utility-list, .menu-grid {
  width: var(--editorial-width);
  margin: 0 auto var(--section-space);
  padding-top: clamp(24px, 4vw, 52px);
  border-top: 1px solid var(--rule);
}
.utility-list > h2 { margin-bottom: clamp(25px, 4vw, 56px); }
.utility-grid, .menu-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(20px, 4vw, 50px);
}
.utility-grid article { padding: 20px 0; border-top: 1px solid var(--rule); }
.utility-grid h3, .menu-group h2 {
  margin: 0 0 15px;
  font: 400 clamp(1.7rem, 3vw, 2.7rem)/1.08 var(--serif);
}
.utility-grid .eyebrow { margin-bottom: 8px; }
.utility-grid a[href^="mailto:"], .utility-grid a[href^="tel:"] {
  display: block;
  width: fit-content;
  text-decoration: underline;
  text-decoration-color: #927d4e;
  text-underline-offset: .24em;
  overflow-wrap: anywhere;
}
.dining-cards {
  width: 100%;
  margin: 0;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(18px, 2.5vw, 36px);
}
.dining-cards .inner-card { background: transparent; border-bottom: 1px solid var(--rule); }
.dining-cards .inner-card img { height: auto; }
.manor-pool-crop { overflow: hidden; }
.manor-pool-crop img { transform: scale(1.28); transform-origin: 86% 100%; }
.dining-cards .inner-card-copy { padding: 22px 0 27px; }
.dining-cards .inner-card h3 { font-size: clamp(1.8rem, 2.85vw, 3rem); }
.dining-links { display: flex; flex-wrap: wrap; column-gap: 20px; }
.river-brolloks { margin-bottom: var(--section-space); }
.menu-grid { align-items: start; }
.menu-group ul { list-style: none; padding: 0; margin: 0; }
.menu-group li {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  padding: 11px 0;
  border-top: 1px solid var(--rule);
}
.menu-group li p { margin-top: 3px; color: #505344; font-size: .86rem; }
.menu-group [data-price] { font-variant-numeric: tabular-nums; white-space: nowrap; }
@media (max-width: 820px) {
  .dining-cards { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .utility-grid, .menu-grid { grid-template-columns: 1fr; }
}

.venue-layout { max-width: 1120px; }
.venue-layout-header {
  display: flex;
  flex-wrap: wrap;
  align-items: end;
  justify-content: space-between;
  gap: 12px 30px;
  margin-bottom: clamp(16px, 2.5vw, 30px);
}
.venue-layout-header h2 { margin: 10px 0 14px; }
.venue-layout-header .text-link { margin: 0; }
.venue-render { width: min(100%, 930px); margin: 0 auto; }
.venue-render-plan { display: grid; isolation: isolate; background: var(--paper); }
.venue-render-plan img { grid-area: 1 / 1; display: block; width: 100%; height: auto; }
.venue-measurements { mix-blend-mode: multiply; }
.venue-render figcaption { margin-top: 8px; color: #505344; font-size: .8rem; }

.sister-grid img {
  width: 100%;
  height: auto;
  margin-bottom: 22px;
}

.sister-grid .dodo-property-photo {
  aspect-ratio: 8 / 5;
  object-fit: cover;
  object-position: center 80%;
}

.destinations-hero .hero-image { object-position: 42% center; }
.destinations-hero + .utility-list { margin-top: var(--section-space); }

.footer-legal { display: flex; flex-wrap: wrap; gap: 6px 18px; }
.policy-copy {
  width: min(760px, var(--editorial-width));
  margin: 0 auto var(--section-space);
}
.policy-copy section { border-top: 1px solid var(--rule); padding: 22px 0 32px; }
.policy-copy h2 { font-size: clamp(1.85rem, 3vw, 2.7rem); margin-bottom: 14px; }
.policy-copy p + p { margin-top: 10px; }
.contact-hours { margin: -8px 0 25px; }
.footer-hours { margin-top: 7px; }

.booking-dialog { width: min(760px, calc(100% - 32px)); max-width: none; max-height: calc(100dvh - 32px); padding: 0; border: 1px solid var(--rule); background: var(--light); color: var(--ink); box-shadow: 0 20px 80px #1a1e1680; }
.booking-dialog::backdrop { background: #151710a6; }
.booking-panel { position: relative; display: grid; grid-template-columns: .88fr 1fr; }
.booking-panel > form { position: absolute; top: 8px; right: 8px; z-index: 1; margin: 0; }
.booking-photo { position: relative; min-height: 100%; aspect-ratio: 1; overflow: hidden; }
.booking-photo > img { position: absolute; inset: -8px 0 0; width: 100%; height: calc(100% + 8px); object-fit: cover; object-position: center top; }
.booking-copy { align-self: center; padding: 52px 38px 39px; }
.booking-copy h2 { font-size: clamp(2.1rem, 4.5vw, 3.9rem); margin: 12px 0 16px; }
.booking-copy > p:not(.eyebrow) { color: #505344; }
.booking-action { background: var(--olive); color: var(--light); margin-top: 24px; }
.booking-action:hover { background: var(--ink); }
.booking-close { display: grid; place-items: center; width: 44px; height: 44px; border: 0; border-radius: 50%; background: var(--light); color: var(--ink); font: 1.5rem/1 var(--sans); cursor: pointer; }
.booking-close:focus-visible { outline-offset: -4px; }
.booking-close:hover { background: #e9e4d7; }
@media (max-width: 600px) {
  .booking-dialog { width: min(350px, calc(100% - 40px)); }
  .booking-panel { grid-template-columns: 1fr; }
  .booking-photo { aspect-ratio: 1.36; }
  .booking-copy { padding: 20px; }
  .booking-copy h2 { font-size: clamp(1.75rem, 7vw, 2rem); margin: 6px 0 8px; }
  .booking-copy > p:not(.eyebrow) { font-size: .9375rem; line-height: 1.45; }
  .booking-action { width: 100%; margin-top: 16px; }
}
