:root {
  --ink: #373839;
  --paper: #f8f6f0;
  --white: #fffef9;
  --peach: #f1d7c8;
  --peach-deep: #e6bdac;
  --mint: #d8e5dc;
  --teal: #62aa99;
  --teal-dark: #357b6d;
  --gold: #c6a055;
  --line: rgba(55, 56, 57, 0.25);
  --header-height: 82px;
  --serif: "Bodoni 72", Didot, "Iowan Old Style", Georgia, serif;
  --body: "Avenir Next", "Gill Sans", "Trebuchet MS", sans-serif;
  --mono: "Courier New", Courier, monospace;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; overflow-x: hidden; background: var(--paper); color: var(--ink); font-family: var(--body); font-size: 16px; line-height: 1.65; }
body.menu-open { overflow: hidden; }
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input, select, textarea { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
button:focus-visible, a:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid var(--teal-dark); outline-offset: 3px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 50; transform: translateY(-140%); background: var(--ink); color: var(--white); padding: 8px 14px; font-family: var(--mono); font-size: 12px; text-transform: uppercase; }
.skip-link:focus { transform: translateY(0); }

.site-header { position: fixed; inset: 0 0 auto; z-index: 20; min-height: var(--header-height); background: rgba(255, 254, 249, 0.97); color: var(--ink); border-bottom: 1px solid rgba(55, 56, 57, 0.1); }
.header-inner { width: 100%; min-height: var(--header-height); display: grid; grid-template-columns: 225px minmax(560px, 1fr) auto; align-items: center; gap: 18px; padding: 0 22px 0 18px; }
.wordmark { display: inline-flex; align-items: baseline; width: max-content; color: var(--gold); line-height: 1; }
.wordmark-main { font-family: "Segoe Script", "Brush Script MT", cursive; font-size: 27px; transform: rotate(-3deg); }
.wordmark-house { margin-left: 8px; font-family: var(--mono); font-size: 8px; letter-spacing: 1.5px; }
.desktop-nav { display: flex; justify-content: center; align-items: center; gap: clamp(12px, 1.2vw, 21px); font-family: var(--mono); font-size: 15px; line-height: 16px; }
.desktop-nav > a, .nav-folder-button { padding: 5px 0; white-space: nowrap; }
.desktop-nav > a::after, .nav-folder-button::after { content: ""; display: block; width: 0; height: 1px; margin-top: 4px; background: var(--ink); transition: width 220ms ease; }
.desktop-nav > a:hover::after, .nav-folder-button:hover::after, .nav-folder:focus-within .nav-folder-button::after { width: 100%; }
.nav-folder { position: relative; }
.nav-folder-button { border: 0; background: none; color: inherit; cursor: pointer; font-family: inherit; font-size: inherit; }
.nav-folder-button span { font-size: 12px; }
.nav-dropdown { position: absolute; top: calc(100% - 2px); left: 50%; min-width: 205px; display: grid; visibility: hidden; opacity: 0; transform: translate(-50%, 8px); background: var(--white); border: 1px solid var(--line); padding: 12px 0; transition: opacity 180ms ease, transform 180ms ease, visibility 180ms; }
.nav-dropdown a { padding: 8px 18px; white-space: nowrap; }
.nav-dropdown a:hover { background: var(--mint); }
.nav-folder:hover .nav-dropdown, .nav-folder:focus-within .nav-dropdown, .nav-folder.is-open .nav-dropdown { visibility: visible; opacity: 1; transform: translate(-50%, 0); }
.header-actions { display: flex; gap: 8px; align-items: center; }
.header-action { min-width: 88px; padding: 8px 10px 7px; border: 1px solid var(--teal); color: var(--teal-dark); font-family: var(--mono); font-size: 10px; line-height: 1.2; text-align: center; text-transform: uppercase; }
.header-action.filled, .header-action:hover { background: var(--teal); color: var(--white); }
.menu-toggle, .mobile-menu { display: none; }

main { min-height: 50vh; }
.page-top-offset { padding-top: calc(var(--header-height) + 70px); }
.eyebrow { margin: 0 0 12px; font-family: var(--mono); font-size: 11px; line-height: 1.3; letter-spacing: 0; text-transform: uppercase; }
.text-button { display: inline-block; min-width: 138px; margin-top: 18px; padding: 11px 20px 9px; border: 1px solid currentColor; font-family: var(--mono); font-size: 10px; line-height: 1.2; text-align: center; text-transform: uppercase; transition: background 180ms ease, color 180ms ease, transform 180ms ease; }
.text-button:hover { background: var(--ink); color: var(--white); }
.text-button:active, button:active { transform: translateY(1px); }
.content-narrow { width: min(780px, calc(100% - 48px)); margin-inline: auto; text-align: center; }

.home-hero { position: relative; height: min(80dvh, 680px); min-height: 570px; margin-top: var(--header-height); overflow: hidden; background: var(--ink); }
.carousel-track, .carousel-slide { position: absolute; inset: 0; margin: 0; }
.carousel-slide { opacity: 0; pointer-events: none; transition: opacity 700ms ease; }
.carousel-slide.is-active { opacity: 1; pointer-events: auto; }
.carousel-slide img { width: 100%; height: 100%; object-fit: cover; }
.carousel-arrow { position: absolute; z-index: 2; top: 50%; width: 44px; height: 56px; border: 0; background: rgba(255, 254, 249, 0.16); color: var(--white); font-family: var(--serif); font-size: 36px; line-height: 1; cursor: pointer; transform: translateY(-50%); opacity: 0; transition: opacity 180ms ease, background 180ms ease; }
[data-carousel]:hover .carousel-arrow, .carousel-arrow:focus-visible { opacity: 1; }
.carousel-arrow:hover { background: rgba(55, 56, 57, 0.55); }
.carousel-arrow.previous { left: 16px; }
.carousel-arrow.next { right: 16px; }
.carousel-dots { position: absolute; z-index: 2; left: 50%; bottom: 15px; display: flex; gap: 5px; transform: translateX(-50%); }
.carousel-dots button { width: 5px; height: 5px; border: 1px solid var(--white); border-radius: 50%; padding: 0; background: transparent; cursor: pointer; }
.carousel-dots button.is-active { background: var(--white); }
.booking-strip { min-height: 88px; display: flex; align-items: center; justify-content: center; gap: 8px; background: var(--paper); }
.booking-strip a { min-width: 148px; padding: 10px 18px 8px; border: 1px solid var(--teal); color: var(--teal-dark); font-family: var(--mono); font-size: 9px; text-align: center; text-transform: uppercase; }
.booking-strip a:first-child, .booking-strip a:hover { background: var(--teal); color: var(--white); }
.home-intro { position: relative; min-height: 585px; display: grid; place-items: center; overflow: hidden; background-color: var(--peach); }
.home-intro::before { content: ""; position: absolute; inset: 0; background-image: var(--pattern); background-size: cover; background-position: center; opacity: 0.16; filter: brightness(3) grayscale(1); }
.home-intro-inner { position: relative; width: min(800px, calc(100% - 48px)); padding: 75px 0 60px; text-align: center; }
.home-intro h1 { margin: 0; font-family: var(--serif); font-size: clamp(46px, 4.5vw, 64px); font-weight: 500; line-height: 0.95; text-transform: uppercase; }
.home-intro h2 { margin: 12px 0 28px; font-family: var(--serif); font-size: 23px; font-style: italic; font-weight: 400; }
.home-intro p:not(.eyebrow):not(.founders) { max-width: 690px; margin: 0 auto 12px; font-size: 15px; line-height: 1.75; }
.founders-mark { margin-top: 22px; color: var(--gold); font-family: var(--serif); font-size: 22px; font-style: italic; }
.founders { margin: 4px 0 0; font-family: var(--mono); font-size: 9px; text-transform: uppercase; }
.home-feature { min-height: 805px; display: grid; grid-template-columns: minmax(0, 57%) minmax(0, 43%); align-items: center; overflow: hidden; }
.feature-stay { background: linear-gradient(to right, var(--mint) 0 56.5%, var(--paper) 56.5%); }
.feature-dine { grid-template-columns: minmax(0, 43%) minmax(0, 57%); background: linear-gradient(to right, var(--paper) 0 43%, var(--peach) 43%); }
.feature-dine .feature-image-wrap { order: 2; }
.feature-image-wrap { width: 72%; height: 66%; justify-self: center; }
.feature-image { width: 100%; height: 100%; object-fit: cover; }
.feature-copy { width: min(470px, 80%); justify-self: center; text-align: center; }
.feature-copy h2 { margin: 10px 0 24px; font-family: var(--serif); font-size: clamp(42px, 4vw, 61px); font-weight: 400; line-height: 1; }
.feature-copy p { margin: 0 0 15px; font-size: 14px; line-height: 1.75; }
.feature-ornament { width: 40px; height: 40px; margin: 0 auto 14px; object-fit: contain; mix-blend-mode: multiply; }
.feature-ornament.second { display: inline-block; margin-inline: 5px; }

.page-hero { position: relative; min-height: 505px; display: grid; place-items: center; margin-top: var(--header-height); background-image: var(--hero-image); background-position: center; background-size: cover; color: var(--white); text-align: center; }
.page-hero-overlay { position: absolute; inset: 0; background: rgba(55, 56, 57, 0.26); }
.page-hero-title { position: relative; width: min(1100px, calc(100% - 40px)); }
.page-hero h1 { margin: 0; font-family: var(--serif); font-size: clamp(52px, 6vw, 86px); font-weight: 400; line-height: 0.95; text-transform: uppercase; text-shadow: 0 1px 8px rgba(55, 56, 57, 0.24); }
.page-hero-title > p { margin: 10px 0 0; font-family: "Segoe Script", "Brush Script MT", cursive; font-size: 22px; font-style: normal; }
.page-hero--accommodations { min-height: 578px; }
.page-hero--dining, .page-hero--gatherings { min-height: 394px; }
.page-hero--about { min-height: 357px; }
.page-hero--accommodations h1, .page-hero--dining h1, .page-hero--gatherings h1, .page-hero--about h1 { font-family: var(--body); font-size: 64px; font-weight: 700; line-height: 0.88; }
.hero-cta { display: inline-block; min-width: 292px; margin-top: 30px; padding: 17px 28px 15px; background: var(--teal); color: var(--white); font-family: var(--mono); font-size: 13px; font-weight: 700; line-height: 1.2; text-transform: uppercase; }
.hero-cta:hover { background: var(--teal-dark); }
.rooms-intro, .dining-intro, .event-intro, .photography-copy, .about-lead, .press-intro, .history-copy { padding: 78px 0; }
.rooms-intro.content-narrow { width: 100%; min-height: 330px; max-width: none; display: grid; align-content: center; margin: 0; padding: 54px max(24px, calc((100% - 820px) / 2)); background: var(--teal); color: var(--white); }
.rooms-intro h2 { margin: 0 0 15px; font-family: var(--body); font-size: 29px; font-weight: 700; line-height: 1.2; text-transform: uppercase; }
.rooms-intro h3 { margin: 0 0 24px; font-family: var(--serif); font-size: 22px; font-style: italic; font-weight: 400; }
.rooms-intro p { max-width: 760px; margin-bottom: 10px; font-family: var(--mono); font-size: 13px; font-weight: 600; line-height: 1.65; }
.dining-intro h2, .event-intro h2, .photography-copy h2, .about-lead h2 { margin: 0 0 12px; font-family: var(--serif); font-size: 35px; font-weight: 400; line-height: 1.2; }
.content-narrow p { margin: 0 auto 16px; max-width: 690px; }
.buildings-intro { width: min(900px, calc(100% - 48px)); display: grid; grid-template-columns: repeat(4, auto); justify-content: space-between; align-items: baseline; margin: 0 auto 40px; font-family: var(--serif); font-size: 38px; font-style: italic; }
.buildings-intro span:nth-child(even) { font-family: var(--mono); font-size: 12px; font-style: normal; text-transform: uppercase; }
.building-grid { width: min(1200px, calc(100% - 64px)); display: grid; grid-template-columns: 1fr 1fr; gap: 64px; margin: 0 auto 90px; }
.building { text-align: center; }
.building-image { aspect-ratio: 4 / 3; overflow: hidden; }
.building-image img { width: 100%; height: 100%; object-fit: cover; }
.script-number { margin: 24px 0 -8px; color: var(--gold); font-family: var(--serif); font-size: 30px; font-style: italic; }
.building h2 { margin: 0 0 15px; font-family: var(--mono); font-size: 17px; font-weight: 400; }
.building > p:not(.script-number) { max-width: 490px; margin: 10px auto; }
.room-types { font-family: var(--serif); font-style: italic; }

.dining-entry-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; padding: 14px 14px 28px; background: var(--white); }
.dining-entry { display: grid; grid-template-rows: 1fr auto; gap: 12px; min-width: 0; }
.dining-entry img { width: 100%; aspect-ratio: 0.92 / 1; object-fit: cover; }
.dining-entry span { font-family: var(--mono); font-size: 11px; line-height: 1.3; }
.dining-entry:hover span { text-decoration: underline; text-underline-offset: 4px; }
.dining-intro { width: 100%; max-width: none; min-height: 300px; display: grid; align-content: center; padding: 62px max(24px, calc((100% - 780px) / 2)); background: var(--teal); color: var(--white); }
.dining-intro h2 { font-family: var(--body); font-size: 26px; font-weight: 600; line-height: 1.35; }
.dining-intro p { font-family: var(--mono); font-size: 12px; }
.dining-sections, .about-sections { display: grid; }
.dining-row, .about-row { min-height: 610px; display: grid; grid-template-columns: 1fr 1fr; }
.dining-row.reverse .dining-image { order: 2; }
.about-row.reverse > img { order: -1; }
.dining-image, .about-row > img { min-height: 610px; width: 100%; height: 100%; object-fit: cover; overflow: hidden; }
.dining-image img { width: 100%; height: 100%; object-fit: cover; }
.dining-copy, .about-row > div { display: grid; align-content: center; justify-items: center; padding: 70px clamp(45px, 7vw, 105px); background: var(--mint); text-align: center; }
.about-row > div { justify-items: start; background: var(--white); text-align: left; }
.about-row h2 { color: var(--gold); font-family: var(--body); font-size: 30px; font-weight: 700; line-height: 1.15; text-transform: uppercase; }
.about-row p { max-width: 45ch; font-family: var(--mono); font-size: 14px; line-height: 1.7; }
.dining-row:nth-child(even) .dining-copy { background: var(--peach); }
.dining-copy h2 { margin: 0 0 22px; font-family: var(--serif); font-size: 48px; font-weight: 400; line-height: 1; }
.dining-copy h3 { margin: 16px 0 0; font-family: var(--mono); font-size: 11px; text-transform: uppercase; }
.tiny-ornament { margin: 0 0 18px; color: var(--gold); }
.save-seat { padding: 70px 24px; background: var(--peach); text-align: center; }
.save-seat h2 { margin: 0; font-family: var(--serif); font-size: 42px; font-weight: 400; }

.event-intro { padding-block: 75px; }
.gatherings-intro { position: relative; overflow: hidden; padding: 86px 24px; background: #f2e1d7; text-align: center; }
.gatherings-intro::before { content: ""; position: absolute; inset: 0; background-image: var(--intro-pattern); background-position: center; background-size: cover; opacity: 0.25; }
.gatherings-intro-inner { position: relative; width: min(1000px, 100%); margin-inline: auto; }
.gatherings-intro h2 { margin: 0 0 24px; font-family: "Segoe Script", "Brush Script MT", cursive; font-size: 30px; font-style: normal; font-weight: 400; line-height: 1.25; white-space: nowrap; }
.gatherings-intro p { max-width: 820px; margin: 0 auto; font-family: var(--mono); font-size: 15px; font-weight: 600; line-height: 1.7; }
.gatherings-entry-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; padding: 48px 14px 110px; background: var(--paper); }
.gatherings-entry { min-width: 0; overflow: hidden; }
.gatherings-entry img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; transition: transform 300ms ease; }
.gatherings-entry:hover img { transform: scale(1.015); }
.happenings-list { width: min(1120px, calc(100% - 64px)); margin: 0 auto 100px; }
.happening { display: grid; grid-template-columns: minmax(280px, 0.8fr) 1.2fr; gap: 70px; align-items: center; padding: 55px 0; border-top: 1px solid var(--line); }
.happening:last-child { border-bottom: 1px solid var(--line); }
.happening img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.happening h2 { margin: 0 0 5px; font-family: var(--serif); font-size: 42px; font-weight: 400; }
.schedule { font-family: var(--mono); font-size: 11px; text-transform: uppercase; }
.photography-copy { padding-block: 105px; }
.photography-copy p { max-width: 720px; font-size: 17px; }

.gallery-grid { display: grid; grid-template-columns: repeat(4, 1fr); grid-auto-flow: dense; gap: 5px; padding: 5px; background: var(--paper); }
.gallery-item { min-width: 0; height: 280px; border: 0; padding: 0; overflow: hidden; background: var(--ink); cursor: zoom-in; }
.gallery-item.gallery-shape-1, .gallery-item.gallery-shape-4 { grid-row: span 2; height: 565px; }
.gallery-item.gallery-shape-3 { grid-column: span 2; }
.gallery-item img { width: 100%; height: 100%; object-fit: cover; transition: transform 450ms ease; }
.gallery-item:hover img { transform: scale(1.025); }
.gallery-dialog { width: 100vw; height: 100dvh; max-width: none; max-height: none; margin: 0; border: 0; padding: 40px 70px; background: rgba(31, 32, 32, 0.96); color: var(--white); }
.gallery-dialog[open] { display: grid; grid-template-columns: 50px 1fr 50px; place-items: center; }
.gallery-dialog::backdrop { background: rgba(31, 32, 32, 0.85); }
.gallery-dialog img { max-width: 100%; max-height: calc(100dvh - 80px); object-fit: contain; }
.gallery-dialog button { border: 0; background: transparent; color: var(--white); font-family: var(--serif); font-size: 44px; cursor: pointer; }
.dialog-close { position: absolute; top: 16px; right: 24px; }

.about-lead.content-narrow {
  width: 100%;
  max-width: none;
  min-height: 332px;
  display: grid;
  align-content: center;
  margin: 0;
  padding: 64px max(24px, calc((100% - 940px) / 2));
  background: var(--ink);
  color: var(--white);
}
.about-lead.content-narrow p { max-width: 900px; margin: 0 0 22px; font-family: var(--mono); font-size: 13px; font-weight: 600; line-height: 1.7; }
.about-lead.content-narrow h2 { max-width: 780px; margin: 0; color: var(--peach); font-family: "Segoe Script", "Brush Script MT", cursive; font-size: 31px; font-weight: 400; line-height: 1.3; white-space: nowrap; }
.about-row { min-height: 560px; }
.about-row > img { min-height: 560px; }
.about-row > div { background: var(--paper); }
.about-row:nth-child(odd) > div { background: var(--mint); }
.about-row:nth-child(even) > div { background: var(--peach); }

.contact-list { width: min(1120px, calc(100% - 64px)); display: grid; grid-template-columns: repeat(5, 1fr); margin: 0 auto; padding: 80px 0; }
.contact-list article { padding: 0 24px; border-left: 1px solid var(--line); text-align: center; }
.contact-list article:last-child { border-right: 1px solid var(--line); }
.contact-list h2 { margin: 0 0 10px; font-family: var(--serif); font-size: 28px; font-weight: 400; }
.contact-list p { margin: 4px 0; font-size: 13px; }
.contact-value { font-family: var(--mono); font-size: 10px !important; }
.contact-form-section { display: grid; grid-template-columns: 0.75fr 1.25fr; gap: 70px; padding: 80px max(7vw, 40px); background: var(--mint); }
.contact-form-section h2 { margin: 0; font-family: var(--serif); font-size: 45px; font-weight: 400; line-height: 1.1; }
.contact-form { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.field { display: grid; align-content: start; gap: 6px; }
.field-wide { grid-column: 1 / -1; }
.field label { font-family: var(--mono); font-size: 10px; text-transform: uppercase; }
.field input, .field select, .field textarea { width: 100%; border: 1px solid rgba(55, 56, 57, 0.35); border-radius: 0; background: var(--white); color: var(--ink); padding: 11px 12px; }
.field textarea { resize: vertical; }
.field-error { min-height: 17px; margin: 0; color: #8b3e36; font-size: 12px; }
.contact-form > button, .product-item button, .newsletter-form button { width: max-content; border: 1px solid var(--ink); border-radius: 0; padding: 11px 20px; background: var(--ink); color: var(--white); font-family: var(--mono); font-size: 10px; text-transform: uppercase; cursor: pointer; }
.form-message { margin: 7px 0 0; font-size: 12px; }

.guide-intro { padding: 70px 24px; text-align: center; }
.guide-intro p { max-width: 680px; margin: 0 auto; font-family: var(--serif); font-size: 28px; }
.map-panel { position: relative; width: min(1100px, calc(100% - 64px)); aspect-ratio: 16 / 8; margin: 0 auto 70px; overflow: hidden; border: 1px solid var(--line); background: var(--peach); }
.map-road { position: absolute; background: var(--paper); border: 1px solid rgba(55, 56, 57, 0.15); }
.road-one { width: 120%; height: 62px; top: 38%; left: -10%; transform: rotate(-7deg); }
.road-two { width: 62px; height: 130%; top: -15%; left: 37%; transform: rotate(9deg); }
.road-three { width: 50px; height: 120%; top: -10%; left: 75%; transform: rotate(-14deg); }
.map-house { position: absolute; z-index: 2; left: 47%; top: 42%; width: 84px; height: 84px; display: grid; place-items: center; border: 2px solid var(--ink); background: var(--teal); color: var(--white); transform: rotate(45deg); }
.map-house span, .map-house p { transform: rotate(-45deg); }
.map-house span { font-family: var(--serif); font-size: 32px; }
.map-house p { position: absolute; width: 120px; top: 66px; left: 48px; color: var(--ink); font-family: var(--mono); font-size: 9px; }
.map-dot { position: absolute; width: 15px; height: 15px; border: 3px solid var(--white); border-radius: 50%; background: var(--teal-dark); }
.dot-1 { left: 22%; top: 26%; }.dot-2 { left: 62%; top: 18%; }.dot-3 { left: 83%; top: 59%; }.dot-4 { left: 14%; top: 70%; }.dot-5 { left: 67%; top: 76%; }.dot-6 { left: 33%; top: 58%; }
.place-list { width: min(1100px, calc(100% - 64px)); display: grid; grid-template-columns: repeat(3, 1fr); margin: 0 auto 90px; }
.place-list article { padding: 35px; border-top: 1px solid var(--line); }
.place-list h2 { margin: 0; font-family: var(--serif); font-size: 29px; font-weight: 400; }

.history-copy { padding-block: 95px; text-align: left; }
.history-copy p { max-width: 740px; margin-bottom: 22px; font-family: var(--serif); font-size: 19px; line-height: 1.8; }
.dropcap::first-letter { float: left; margin: 8px 10px 0 0; color: var(--gold); font-size: 80px; line-height: 0.7; }
.press-intro { font-family: var(--serif); font-size: 25px; }
.press-grid { width: min(1260px, calc(100% - 60px)); display: grid; grid-template-columns: repeat(3, 1fr); gap: 60px 28px; margin: 0 auto 100px; }
.press-item img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; margin-bottom: 22px; }
.press-item h2 { margin: 0 0 12px; font-family: var(--serif); font-size: 28px; font-weight: 400; line-height: 1.2; }
.press-item span { font-family: var(--mono); font-size: 9px; text-transform: uppercase; }

.shop-heading { padding-bottom: 65px; text-align: center; }
.shop-heading h1 { margin: 0; font-family: var(--serif); font-size: 65px; font-weight: 400; }
.shop-heading > p:not(.eyebrow):not(.cart-status) { font-family: var(--serif); font-size: 21px; }
.cart-status { font-family: var(--mono); font-size: 10px; text-transform: uppercase; }
.product-grid { width: min(1300px, calc(100% - 56px)); display: grid; grid-template-columns: repeat(4, 1fr); gap: 52px 24px; margin: 0 auto 100px; }
.product-image { aspect-ratio: 1 / 1.2; overflow: hidden; background: #eee9df; }
.product-image img { width: 100%; height: 100%; object-fit: cover; transition: transform 350ms ease; }
.product-item:hover img { transform: scale(1.02); }
.product-item h2 { margin: 15px 0 3px; font-family: var(--serif); font-size: 21px; font-weight: 400; line-height: 1.2; }
.product-item p { margin: 0 0 12px; font-family: var(--mono); font-size: 10px; }
.product-item button { background: transparent; color: var(--ink); padding: 8px 12px; }
.product-item button:hover { background: var(--ink); color: var(--white); }

.legal-page { width: min(850px, calc(100% - 48px)); margin: 0 auto; padding-bottom: 100px; }
.legal-page > h1 { margin: 0 0 22px; font-family: var(--serif); font-size: 56px; font-weight: 400; line-height: 1.05; }
.legal-page > h2 { margin: 0 0 40px; font-family: var(--mono); font-size: 13px; font-weight: 400; text-transform: uppercase; }
.legal-page article { padding: 26px 0; border-top: 1px solid var(--line); }
.legal-page article h2 { margin: 0 0 8px; font-family: var(--serif); font-size: 29px; font-weight: 400; }
.not-found { min-height: 70vh; display: grid; place-content: center; justify-items: center; padding-inline: 24px; text-align: center; }
.not-found h1 { margin: 0; font-family: var(--serif); font-size: 50px; font-weight: 400; }

.house-quote { background: var(--white); text-align: center; }
.quote-illustration { position: relative; width: 130px; height: 110px; margin: 0 auto 5px; padding-top: 32px; color: var(--gold); }
.arch { display: block; width: 45px; height: 65px; margin: auto; border: 1px solid currentColor; border-bottom: 0; border-radius: 24px 24px 0 0; }
.leaf { position: absolute; width: 26px; height: 12px; border: 1px solid currentColor; border-radius: 100% 0; }
.leaf-one { left: 27px; top: 55px; transform: rotate(30deg); }.leaf-two { right: 26px; top: 40px; transform: rotate(-20deg); }
.house-quote blockquote { max-width: 800px; margin: 0 auto 8px; padding: 0 24px; font-family: var(--serif); font-size: 32px; font-style: italic; line-height: 1.25; }
.house-quote cite { font-family: var(--mono); font-size: 9px; font-style: normal; text-transform: uppercase; }
.newsletter-wrap { min-height: 210px; display: grid; grid-template-columns: 1fr 1.2fr; align-items: center; gap: 70px; margin-top: 48px; padding: 40px max(10vw, 40px); background: var(--peach); text-align: left; }
.newsletter-wrap h2 { margin: 0; font-family: var(--serif); font-size: 42px; font-weight: 400; }
.newsletter-wrap p { margin: 3px 0; }
.newsletter-form label { display: block; margin-bottom: 5px; font-family: var(--mono); font-size: 9px; text-transform: uppercase; }
.newsletter-controls { display: grid; grid-template-columns: 1fr auto; }
.newsletter-form input { min-width: 0; border: 1px solid var(--ink); border-radius: 0; background: var(--white); padding: 10px 12px; }
.newsletter-form button { min-width: 96px; }

.site-footer { min-height: 260px; display: grid; grid-template-columns: 100px 1.1fr 1fr 1.4fr 55px; align-items: center; gap: 34px; padding: 50px max(6vw, 40px); background: var(--teal); color: var(--white); }
.footer-mark { width: 72px; height: 72px; display: grid; place-items: center; border: 1px solid currentColor; border-radius: 50%; font-family: var(--serif); font-size: 35px; }
.footer-name { margin: 0; font-family: var(--serif); font-size: 24px; text-transform: uppercase; }
.concept-label { margin: 3px 0 0; font-family: var(--mono); font-size: 9px; text-transform: uppercase; }
.footer-contact p, .footer-address p { margin: 0 0 10px; font-size: 13px; line-height: 1.5; }
.footer-address a { font-family: var(--mono); font-size: 9px; text-transform: uppercase; text-decoration: underline; text-underline-offset: 3px; }
.social-link { width: 28px; height: 28px; }
.social-link svg { width: 100%; height: 100%; fill: none; stroke: currentColor; stroke-width: 1.5; }

@media (max-width: 1180px) {
  .header-inner { grid-template-columns: 150px 1fr auto; padding-inline: 15px; }
  .wordmark-main { font-size: 22px; }
  .desktop-nav { gap: 10px; font-size: 8px; }
  .header-actions .header-action:not(.filled) { display: none; }
  .contact-list { grid-template-columns: repeat(3, 1fr); row-gap: 35px; }
  .contact-list article:nth-child(4) { border-right: 0; }
}

@media (max-width: 860px) {
  :root { --header-height: clamp(102px, calc(102px + (100vw - 390px) * 0.125), 107px); }
  .header-inner { grid-template-columns: 1fr auto; padding: 0 24px; }
  .wordmark-main { font-size: 24px; }
  .wordmark-house { margin-left: 6px; font-size: 6px; }
  .desktop-nav, .header-actions { display: none; }
  .menu-toggle { position: relative; width: 42px; height: 42px; display: block; border: 0; padding: 9px; background: transparent; cursor: pointer; }
  .menu-toggle span:not(.sr-only) { width: 100%; height: 1px; background: var(--ink); transition: transform 200ms ease, opacity 200ms ease; }
  .menu-toggle span:nth-of-type(2), .menu-toggle span:nth-of-type(4) { position: absolute; left: 9px; width: 24px; }
  .menu-toggle span:nth-of-type(2) { top: 15px; }
  .menu-toggle span:nth-of-type(3) { display: none; }
  .menu-toggle span:nth-of-type(4) { top: 26px; }
  .menu-toggle[aria-expanded="true"] span:nth-of-type(2) { top: 21px; transform: rotate(45deg); }
  .menu-toggle[aria-expanded="true"] span:nth-of-type(4) { top: 21px; transform: rotate(-45deg); }
  .mobile-menu { position: fixed; inset: var(--header-height) 0 0; display: block; overflow-y: auto; background: var(--paper); }
  .mobile-menu[hidden] { display: none; }
  .mobile-menu-inner { min-height: calc(100dvh - var(--header-height)); display: flex; flex-direction: column; align-items: center; padding: 122px 24px 22px; }
  .mobile-menu-inner > a, .mobile-folder > button { width: auto; border: 0; padding: 13px 0; background: transparent; color: var(--ink); font-family: var(--mono); font-size: 20px; line-height: 1.2; text-align: center; }
  .mobile-folder { width: 100%; text-align: center; }
  .mobile-folder > button { display: inline-flex; align-items: center; justify-content: center; gap: 8px; cursor: pointer; }
  .mobile-folder > button span { font-family: var(--serif); font-size: 25px; line-height: 0.8; }
  .mobile-subnav { display: grid; justify-items: center; padding: 2px 0 12px; }
  .mobile-subnav[hidden] { display: none; }
  .mobile-subnav a { padding: 6px 0; font-family: var(--mono); font-size: 12px; text-transform: none; }
  .mobile-actions { width: 100%; display: flex; flex-direction: column; align-items: center; }
  .mobile-actions .mobile-text-action { padding: 13px 0; border: 0; color: var(--ink); font-family: var(--mono); font-size: 20px; line-height: 1.2; text-align: center; text-transform: none; }
  .mobile-actions .mobile-gift-action { width: 210px; margin-top: 108px; padding: 14px 20px 12px; border: 0; background: var(--teal); color: var(--white); font-family: var(--serif); font-size: 19px; font-weight: 700; line-height: 1.2; text-align: center; text-transform: uppercase; }

  .home-hero { height: calc(80dvh - var(--header-height)); min-height: 540px; }
  .carousel-arrow { opacity: 0.85; }
  .home-feature, .feature-dine { min-height: 0; grid-template-columns: 1fr; background: var(--paper); }
  .feature-dine .feature-image-wrap { order: 0; }
  .feature-image-wrap { width: 100%; height: auto; aspect-ratio: 4 / 5; }
  .feature-copy { width: 100%; padding: 70px 30px; background: var(--mint); }
  .feature-dine .feature-copy { background: var(--peach); }
  .page-hero--accommodations { min-height: clamp(456px, calc(456px + (100vw - 390px) * 1.3), 508px); }
  .page-hero--dining, .page-hero--gatherings { min-height: 270px; }
  .page-hero--about { min-height: 280px; }
  .page-hero--accommodations h1 { max-width: none; font-size: clamp(31px, 7.9vw, 34px); line-height: 1; white-space: nowrap; }
  .page-hero--dining h1 { font-size: clamp(35px, 8.8vw, 38px); line-height: 1; white-space: nowrap; }
  .page-hero--gatherings h1 { font-size: clamp(31px, 7.9vw, 34px); line-height: 1; white-space: nowrap; }
  .page-hero--about h1 { font-size: clamp(38px, 9.5vw, 41px); line-height: 1; white-space: nowrap; }
  .building-grid, .happenings-list, .press-grid, .product-grid, .place-list, .contact-list { width: min(100% - 36px, 620px); }
  .building-grid { grid-template-columns: 1fr; gap: 70px; }
  .buildings-intro { width: calc(100% - 40px); font-size: 28px; }
  .dining-row, .about-row { grid-template-columns: 1fr; min-height: 0; }
  .dining-row.reverse .dining-image, .about-row.reverse > img { order: 0; }
  .dining-image, .about-row > img { min-height: 0; height: auto; aspect-ratio: 4 / 3; }
  .dining-copy, .about-row > div { min-height: 0; padding: 58px 30px; }
  .about-row > img, .about-row.reverse > img { order: -1; }
  .dining-entry-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px 20px; padding: 26px 23px 48px; }
  .dining-entry img { aspect-ratio: 2 / 3; }
  .dining-entry span { font-size: 12px; }
  .gatherings-entry-grid { grid-template-columns: 1fr; gap: 18px; padding: 24px 18px 60px; }
  .happening { grid-template-columns: 1fr; gap: 28px; }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .gallery-item { height: 230px; }
  .gallery-item.gallery-shape-1, .gallery-item.gallery-shape-4 { height: 465px; }
  .gallery-dialog { padding: 45px 12px; grid-template-columns: 35px 1fr 35px !important; }
  .contact-list { grid-template-columns: 1fr 1fr; }
  .contact-list article, .contact-list article:last-child { padding: 20px; border-right: 0; }
  .contact-form-section { grid-template-columns: 1fr; gap: 40px; padding: 60px 25px; }
  .press-grid { grid-template-columns: 1fr 1fr; }
  .product-grid { grid-template-columns: 1fr 1fr; }
  .place-list { grid-template-columns: 1fr 1fr; }
  .map-panel { width: calc(100% - 36px); aspect-ratio: 4 / 3; }
  .newsletter-wrap { grid-template-columns: 1fr; gap: 25px; padding: 42px 30px; }
  .site-footer { grid-template-columns: 76px 1fr 1fr; gap: 25px; padding: 45px 28px; }
  .footer-address { grid-column: 2 / 4; }
}

@media (max-width: 520px) {
  body { font-size: 15px; }
  .home-hero { height: calc(82dvh - var(--header-height)); min-height: 500px; }
  .home-hero .carousel-arrow { width: 34px; height: 46px; font-size: 30px; }
  .booking-strip { min-height: 108px; flex-direction: column; gap: 6px; padding: 15px 16px; }
  .booking-strip a { min-width: 0; width: 98px; padding: 8px 6px 7px; }
  .home-intro { min-height: 640px; }
  .home-intro-inner { width: calc(100% - 34px); padding-block: 65px; }
  .home-intro h1 { font-size: clamp(39px, 12vw, 50px); }
  .home-intro h2 { font-size: 19px; }
  .feature-copy { padding-block: 64px; }
  .feature-copy h2 { font-size: 45px; }
  .page-hero { background-position: center; }
  .page-hero:not(.page-hero--accommodations):not(.page-hero--dining):not(.page-hero--gatherings):not(.page-hero--about) { min-height: 390px; }
  .page-hero h1 { overflow-wrap: normal; }
  .page-hero-title > p { font-size: 21px; }
  .rooms-intro, .dining-intro, .event-intro, .photography-copy, .about-lead, .press-intro, .history-copy { padding: 60px 0; }
  .rooms-intro h2, .dining-intro h2, .event-intro h2, .photography-copy h2, .about-lead h2 { font-size: 30px; }
  .buildings-intro { grid-template-columns: auto auto; row-gap: 3px; justify-content: center; column-gap: 12px; }
  .building-grid { width: calc(100% - 32px); }
  .dining-copy h2 { font-size: 39px; }
  .about-row h2 { font-size: 27px; }
  .gatherings-intro { padding: clamp(88px, calc(104px - (100vw - 390px) * 0.4), 104px) 28px; }
  .gatherings-intro h2 { margin-bottom: 28px; font-size: clamp(20px, calc(20px + (100vw - 390px) * 0.075), 23px); line-height: 1.38; white-space: normal; }
  .gatherings-intro p { font-size: 14px; line-height: 1.7; }
  .about-lead.content-narrow { min-height: 0; padding: clamp(72px, calc(72px + (100vw - 390px) * 0.4), 88px) clamp(10px, calc(28px - (100vw - 390px) * 0.45), 28px) clamp(70px, calc(70px + (100vw - 390px) * 0.4), 86px); }
  .about-lead.content-narrow p { margin-bottom: 30px; font-size: 13px; line-height: 1.85; text-align: center; }
  .about-lead.content-narrow h2 { font-size: 27px; line-height: 1.45; text-align: center; white-space: normal; }
  .about-row > div { padding: clamp(61px, calc(62px - (100vw - 390px) * 0.025), 62px) 30px; }
  .building-image { height: clamp(696px, calc(696px + (100vw - 390px) * 0.475), 715px); aspect-ratio: auto; }
  .gatherings-entry img { height: clamp(709px, calc(709px + (100vw - 390px) * 0.1), 713px); aspect-ratio: auto; }
  .about-row > img { height: clamp(480px, calc(480px + (100vw - 390px) * 0.5), 500px); aspect-ratio: auto; }
  .happening h2 { font-size: 36px; }
  .gallery-grid { grid-template-columns: 1fr 1fr; gap: 3px; padding: 3px; }
  .gallery-item, .gallery-item.gallery-shape-1, .gallery-item.gallery-shape-4 { height: 225px; grid-row: auto; }
  .gallery-item.gallery-shape-3 { grid-column: auto; }
  .contact-list { grid-template-columns: 1fr; }
  .contact-list article, .contact-list article:last-child { border-left: 0; border-top: 1px solid var(--line); }
  .contact-form { grid-template-columns: 1fr; }
  .field-wide { grid-column: auto; }
  .press-grid { grid-template-columns: 1fr; gap: 48px; }
  .product-grid { width: calc(100% - 28px); gap: 42px 12px; }
  .product-item h2 { font-size: 18px; }
  .shop-heading { padding-inline: 20px; }
  .shop-heading h1 { font-size: 51px; }
  .place-list { grid-template-columns: 1fr; }
  .map-panel { aspect-ratio: 3 / 4; }
  .map-house { left: 41%; top: 44%; }
  .legal-page { width: calc(100% - 38px); }
  .legal-page > h1 { font-size: 44px; overflow-wrap: anywhere; }
  .house-quote blockquote { font-size: 26px; }
  .newsletter-controls { grid-template-columns: 1fr; gap: 7px; }
  .newsletter-form button { width: 100%; }
  .site-footer { grid-template-columns: 70px 1fr; align-items: start; }
  .footer-contact, .footer-address { grid-column: 1 / -1; }
  .footer-address { margin-top: -8px; }
  .social-link { position: absolute; right: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { scroll-behavior: auto !important; transition-duration: 0.01ms !important; animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; }
}
