:root {
  --paper: #f3f0e8;
  --paper-deep: #e8e3d7;
  --ink: #111713;
  --muted: #68706a;
  --pine: #21352d;
  --olive: #a5a36a;
  --line: rgba(17, 23, 19, .17);
  --max: 1440px;
  --pad: clamp(22px, 4.2vw, 72px);
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; color: var(--ink); background: var(--paper); font-family: Arial, Helvetica, sans-serif; font-size: 15px; line-height: 1.45; }
body.menu-open { overflow: hidden; }
body.menu-open::before { content: ''; position: fixed; z-index: 15; inset: 76px 0 0; background: var(--paper); }
img { display: block; max-width: 100%; height: auto; }
button, input, select { font: inherit; }
a { color: inherit; }
h1, h2, h3, p, figure, dl, dd { margin-top: 0; }
h1, h2, h3 { font-weight: 500; letter-spacing: -.055em; line-height: .95; }
h1 { margin-bottom: 34px; font-size: clamp(64px, 7.2vw, 112px); }
h2 { margin-bottom: 0; font-size: clamp(54px, 6vw, 92px); }
h3 { font-size: clamp(28px, 3vw, 48px); }

.skip-link { position: fixed; z-index: 100; top: 12px; left: 12px; padding: 10px 14px; color: #fff; background: var(--pine); transform: translateY(-150%); }
.skip-link:focus { transform: none; }
.section-pad { width: min(100%, var(--max)); margin-inline: auto; padding-inline: var(--pad); }
.eyebrow { margin-bottom: 18px; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.text-link { display: inline-flex; align-items: center; gap: 8px; padding-bottom: 5px; border-bottom: 1px solid currentColor; font-size: 13px; font-weight: 700; text-decoration: none; }
.text-link--muted { color: var(--muted); }
.solid-link { min-height: 52px; padding: 15px 22px; display: inline-flex; align-items: center; justify-content: center; color: #fff; background: var(--ink); border: 0; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-decoration: none; text-transform: uppercase; }
.solid-link:hover { background: var(--pine); }

.site-header { position: relative; z-index: 20; min-height: 76px; padding: 0 clamp(18px, 3vw, 48px); display: grid; grid-template-columns: 1fr 126px 1fr auto; align-items: center; gap: 22px; background: rgba(243,240,232,.97); border-bottom: 1px solid var(--line); }
.brand { width: 118px; height: 72px; display: grid; place-items: center; overflow: hidden; }
.brand img { width: 118px; mix-blend-mode: multiply; }
.primary-menu { display: flex; align-items: center; gap: clamp(12px, 1.45vw, 28px); }
.primary-menu--right { justify-content: flex-end; }
.primary-menu a { position: relative; font-size: 10px; font-weight: 700; letter-spacing: .045em; text-decoration: none; white-space: nowrap; }
.primary-menu a::after { content: ''; position: absolute; right: 0; bottom: -5px; left: 0; height: 1px; background: currentColor; transform: scaleX(0); transition: transform .2s ease; }
.primary-menu a:hover::after { transform: scaleX(1); }
.header-book { font-size: 10px; font-weight: 700; text-decoration: none; white-space: nowrap; }
.menu-toggle { display: none; padding: 0; color: inherit; background: transparent; border: 0; font-size: 11px; font-weight: 700; text-transform: uppercase; }
.menu-toggle i { width: 24px; height: 1px; display: block; background: currentColor; box-shadow: 0 6px currentColor; }

.hero { position: relative; min-height: calc(100vh - 76px); display: grid; grid-template-columns: 58% 42%; border-bottom: 1px solid var(--line); }
.hero-copy { min-height: 720px; padding: clamp(70px, 9vw, 145px) var(--pad) 48px; display: flex; flex-direction: column; align-items: flex-start; }
.hero-copy .eyebrow { margin-bottom: auto; }
.hero-lead { max-width: 560px; margin-bottom: 38px; color: #303833; font-size: clamp(17px, 1.35vw, 22px); line-height: 1.45; }
.hero-actions { display: flex; gap: 34px; align-items: center; }
.hero-facts { width: min(100%, 620px); margin: auto 0 0; padding-top: 36px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; border-top: 1px solid var(--line); }
.hero-facts div { display: grid; gap: 5px; }
.hero-facts dt { font-size: 15px; font-weight: 700; }
.hero-facts dd { color: var(--muted); font-size: 11px; line-height: 1.35; }
.hero-photo { position: relative; min-height: 720px; margin: 0; overflow: hidden; }
.hero-photo img { width: 100%; height: 100%; object-fit: cover; }
.hero-photo figcaption { position: absolute; right: 22px; bottom: 20px; padding: 8px 10px; color: #fff; background: rgba(17,23,19,.66); font-size: 9px; letter-spacing: .1em; text-transform: uppercase; }
.award { position: absolute; z-index: 2; right: calc(42% - 36px); bottom: 42px; width: 126px; min-height: 226px; padding: 12px 10px 10px; display: grid; place-items: center; color: var(--ink); background: var(--paper); border: 1px solid var(--line); }
.award img { width: 86px; height: 145px; object-fit: contain; }
.award p { margin: 8px 0 0; font-size: 8px; line-height: 1.35; text-align: center; text-transform: uppercase; }

.booking-panel { padding-block: 52px; display: grid; grid-template-columns: 230px 1fr auto; align-items: end; gap: 24px; border-bottom: 1px solid var(--line); }
.booking-title h2 { font-size: 36px; }
.booking-fields { display: grid; grid-template-columns: repeat(4, minmax(110px, 1fr)); border: 1px solid var(--line); }
.booking-fields label { padding: 12px 14px; color: var(--muted); border-right: 1px solid var(--line); font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.booking-fields label:last-child { border-right: 0; }
.booking-fields input, .booking-fields select { width: 100%; margin-top: 6px; padding: 0; color: var(--ink); background: transparent; border: 0; outline: 0; font-size: 13px; }
.booking-note { grid-column: 2 / 4; margin: 0; color: var(--muted); font-size: 9px; }

.details-story { position: relative; min-height: 1120px; padding-top: 130px; padding-bottom: 150px; }
.details-story h2 { position: relative; z-index: 1; }
.details-story h2 span { color: #9b9c94; }
.details-photo { position: absolute; margin: 0; }
.details-photo button, .stay button, .archive button, .map-section figure button { width: 100%; padding: 0; display: block; background: transparent; border: 0; cursor: zoom-in; }
.details-photo img { width: 100%; height: 100%; object-fit: cover; }
.details-photo--one { top: 390px; left: var(--pad); width: 34%; height: 470px; }
.details-photo--two { right: var(--pad); bottom: 80px; width: 31%; height: 430px; }
.details-copy { position: absolute; max-width: 340px; margin: 0; color: #363d38; font-size: 14px; }
.details-copy--one { top: 505px; left: 55%; }
.details-copy--two { bottom: 170px; left: 18%; }

.stays { padding-top: 130px; padding-bottom: 140px; background: #f8f6f0; }
.section-head { margin-bottom: 105px; display: grid; grid-template-columns: 1.4fr .6fr; gap: 60px; align-items: end; }
.section-head > p { max-width: 440px; margin: 0 0 8px; color: var(--muted); }
.stay-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 150px clamp(34px, 7vw, 105px); }
.stay { min-width: 0; }
.stay--offset { margin-top: 150px; }
.stay--offset-high { margin-top: 70px; }
.stay--wide { grid-column: 1 / -1; display: grid; grid-template-columns: 1.35fr .65fr; gap: 0 clamp(42px, 7vw, 110px); align-items: start; }
.stay--wide .stay-main { grid-row: 1 / span 2; }
.stay--wide .stay-thumbs { grid-column: 2; }
.stay--reverse { grid-template-columns: .65fr 1.35fr; }
.stay--reverse .stay-main { grid-column: 2; }
.stay--reverse .stay-info, .stay--reverse .stay-thumbs { grid-column: 1; }
.stay--reverse .stay-info { grid-row: 1; }
.stay-main { margin: 0 0 25px; overflow: hidden; }
.stay-main img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; transition: transform .45s ease; }
.stay-main--portrait img { aspect-ratio: 4 / 5; }
.stay-main button:hover img { transform: scale(1.012); }
.stay-info > p:first-child { margin-bottom: 13px; color: var(--muted); font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.stay-info h3 { margin-bottom: 18px; font-size: clamp(29px, 3vw, 46px); }
.stay-info > p:not(:first-child) { max-width: 560px; color: var(--muted); }
.stay-info details { margin-top: 22px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.stay-info summary { padding: 13px 0; cursor: pointer; font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.stay-info ul { margin: 0 0 16px; padding-left: 18px; color: var(--muted); font-size: 12px; }
.stay-thumbs { margin-top: 20px; display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; }
.stay-thumbs--two { grid-template-columns: repeat(2, 1fr); }
.stay-thumbs img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.stays-book { margin-top: 100px; }

.archive { padding-top: 135px; padding-bottom: 150px; display: grid; grid-template-columns: 230px 1fr; gap: 70px; }
.archive aside { position: sticky; top: 30px; align-self: start; }
.archive h2 { font-size: clamp(45px, 5vw, 75px); }
.archive ul { margin: 60px 0 0; padding: 0; list-style: none; }
.archive li { padding: 9px 0; color: var(--muted); border-bottom: 1px solid var(--line); font-size: 11px; }
.archive-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 80px 24px; align-items: start; }
.archive-grid button:nth-child(even) { margin-top: 130px; }
.archive-grid img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.archive-grid button:nth-child(3n) img { aspect-ratio: 4 / 3; }

.experiences { padding-top: 130px; padding-bottom: 150px; background: #e8e3d7; }
.story-row { margin-top: 140px; display: grid; grid-template-columns: .88fr 1.12fr; gap: clamp(46px, 10vw, 160px); align-items: center; }
.story-row--reverse { grid-template-columns: 1.12fr .88fr; }
.story-row--reverse figure { grid-column: 2; }
.story-row--reverse > div { grid-column: 1; grid-row: 1; }
.story-row figure { height: 620px; margin: 0; overflow: hidden; }
.story-row figure img { width: 100%; height: 100%; object-fit: cover; }
.story-row h3 { margin-bottom: 26px; font-size: clamp(44px, 5vw, 76px); }
.story-row > div > p:not(.eyebrow) { max-width: 520px; color: var(--muted); }
.story-row small { display: block; margin-top: 20px; color: var(--muted); font-size: 9px; }

.map-section { padding-top: 130px; padding-bottom: 140px; display: grid; grid-template-columns: .65fr 1.35fr; gap: 40px 90px; align-items: start; }
.map-copy { position: sticky; top: 40px; }
.map-copy h2 { font-size: clamp(48px, 5vw, 76px); }
.map-copy > p:last-child { max-width: 370px; margin-top: 30px; color: var(--muted); }
.map-section figure { margin: 0; background: #e4dcc9; }
.map-section figure img { width: 100%; max-height: 1050px; object-fit: contain; }
.map-list { grid-column: 2; display: grid; grid-template-columns: repeat(3, 1fr); gap: 0; border-top: 1px solid var(--line); }
.map-list article { padding: 24px 24px 0 0; }
.map-list span { color: var(--olive); font-size: 10px; }
.map-list h3 { margin: 35px 0 10px; font-size: 25px; }
.map-list p { color: var(--muted); font-size: 12px; }

.groups { padding-top: 135px; padding-bottom: 145px; color: #edf0ec; background: var(--pine); }
.groups > div:first-child { display: grid; grid-template-columns: .35fr .65fr; gap: 40px; }
.groups h2 { grid-column: 2; }
.groups-copy { width: 65%; margin: 60px 0 0 auto; display: grid; grid-template-columns: 1fr auto; gap: 60px; align-items: end; }
.groups-copy p { max-width: 540px; color: #b5c0ba; }
.groups-copy .solid-link { color: var(--ink); background: var(--paper); }
.groups-notes { margin-top: 100px; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid rgba(255,255,255,.23); }
.groups-notes article { padding: 34px 50px 10px 0; }
.groups-notes article + article { padding-left: 50px; border-left: 1px solid rgba(255,255,255,.23); }
.groups-notes h3 { margin-bottom: 16px; font-size: 34px; }
.groups-notes p { max-width: 560px; color: #b5c0ba; }
.groups-notes a { color: #fff; font-size: 11px; text-underline-offset: 5px; }

.faq { padding-top: 130px; padding-bottom: 150px; display: grid; grid-template-columns: .65fr 1.35fr; gap: 90px; }
.faq header { position: sticky; top: 40px; align-self: start; }
.faq h2 { font-size: clamp(48px, 5vw, 76px); }
.faq-list { border-top: 1px solid var(--ink); }
.faq details { border-bottom: 1px solid var(--line); }
.faq summary { position: relative; padding: 22px 50px 22px 0; cursor: pointer; list-style: none; font-size: 17px; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; position: absolute; right: 4px; font-size: 22px; }
.faq details[open] summary::after { content: '−'; }
.faq details p { max-width: 700px; margin: -4px 0 24px; color: var(--muted); }

.route { padding: 0; max-width: var(--max); display: grid; grid-template-columns: 1.15fr .85fr; background: #ddd8cd; }
.route figure { min-height: 760px; margin: 0; overflow: hidden; }
.route figure img { width: 100%; height: 100%; object-fit: cover; }
.route-copy { padding: clamp(60px, 8vw, 120px); }
.route-copy h2 { margin-bottom: 55px; font-size: clamp(50px, 5vw, 75px); }
.route-copy ol { margin: 0 0 40px; padding: 0; list-style: none; border-top: 1px solid var(--line); }
.route-copy li { padding: 16px 0; display: grid; grid-template-columns: 45px 1fr; border-bottom: 1px solid var(--line); }
.route-copy li span { color: var(--olive); font-size: 10px; }
.route-copy li p { margin: 0; color: var(--muted); }

.final-cta { padding-top: 150px; padding-bottom: 160px; text-align: center; }
.final-cta h2 { margin-bottom: 55px; font-size: clamp(68px, 9vw, 138px); }

.site-footer { padding-top: 70px; padding-bottom: 30px; background: #f8f6f0; border-top: 1px solid var(--line); }
.footer-logo { width: min(100%, 1180px); margin: 0 auto 65px; mix-blend-mode: multiply; }
.footer-grid { padding-top: 40px; display: grid; grid-template-columns: 1fr 1.2fr 1fr .8fr; gap: 50px; border-top: 1px solid var(--line); }
.footer-grid a { margin: 8px 0; display: block; color: var(--muted); font-size: 12px; text-decoration: none; }
.footer-grid > div > p:not(.eyebrow) { max-width: 360px; color: var(--muted); font-size: 12px; }
.payment-logos { width: 180px; margin-left: auto; mix-blend-mode: multiply; }
.footer-legal { margin-top: 55px; padding-top: 22px; display: flex; justify-content: space-between; gap: 30px; color: var(--muted); border-top: 1px solid var(--line); font-size: 9px; }

.lightbox { width: min(94vw, 1400px); height: min(94vh, 1000px); padding: 48px 16px 16px; background: #0b0f0c; border: 0; }
.lightbox::backdrop { background: rgba(0,0,0,.86); }
.lightbox img { width: 100%; height: 100%; object-fit: contain; }
.lightbox-close { position: absolute; top: 12px; right: 16px; padding: 7px 0; color: #fff; background: transparent; border: 0; cursor: pointer; font-size: 11px; text-transform: uppercase; }

:focus-visible { outline: 3px solid #6c7443; outline-offset: 3px; }

@media (max-width: 1180px) {
  .site-header { grid-template-columns: 1fr 118px 1fr; }
  .menu-toggle { display: flex; align-items: center; gap: 12px; justify-self: start; }
  .primary-menu { position: fixed; z-index: 30; right: 0; left: 0; padding-inline: 24px; display: none; flex-direction: column; align-items: stretch; gap: 0; background: var(--paper); }
  body.menu-open .primary-menu { display: flex; }
  .primary-menu--left { top: 76px; padding-top: 20px; }
  .primary-menu--right { top: 280px; padding-bottom: 28px; border-bottom: 1px solid var(--line); }
  .primary-menu a { padding: 15px 0; border-bottom: 1px solid var(--line); font-size: 12px; }
  .primary-menu a::after { display: none; }
  .header-book { justify-self: end; }
  .booking-panel { grid-template-columns: 190px 1fr; }
  .booking-panel .solid-link { grid-column: 2; justify-self: start; }
  .booking-note { grid-column: 2; }
  .award { right: calc(42% - 24px); }
}

@media (max-width: 820px) {
  :root { --pad: 20px; }
  h2 { font-size: clamp(45px, 14vw, 66px); }
  .site-header { min-height: 68px; grid-template-columns: 1fr 82px 1fr; }
  .brand { width: 80px; height: 64px; }
  .brand img { width: 80px; }
  .header-book { font-size: 9px; }
  .primary-menu--left { top: 68px; }
  .primary-menu--right { top: 272px; }
  body.menu-open::before { inset: 68px 0 0; }
  .hero { min-height: auto; grid-template-columns: 1fr; }
  .hero-copy { min-height: 610px; padding: 72px 20px 38px; }
  .hero-copy .eyebrow { margin-bottom: 90px; }
  .hero-lead { font-size: 17px; }
  .hero-facts { margin-top: 80px; gap: 12px; }
  .hero-photo { min-height: 520px; }
  .award { right: 18px; bottom: 30px; width: 112px; min-height: 205px; }
  .award img { width: 76px; height: 130px; }
  .booking-panel { padding-block: 44px; grid-template-columns: 1fr; }
  .booking-fields { grid-template-columns: 1fr 1fr; }
  .booking-fields label:nth-child(2) { border-right: 0; }
  .booking-fields label:nth-child(-n+2) { border-bottom: 1px solid var(--line); }
  .booking-panel .solid-link, .booking-note { grid-column: 1; }
  .booking-panel .solid-link { justify-self: stretch; }
  .details-story { min-height: auto; padding-top: 90px; padding-bottom: 100px; display: grid; grid-template-columns: 1fr 1fr; gap: 28px 16px; }
  .details-story h2 { grid-column: 1 / -1; margin-bottom: 40px; }
  .details-photo, .details-copy { position: static; width: auto; height: auto; }
  .details-photo img { aspect-ratio: 3 / 4; }
  .details-photo--two { margin-top: 80px; }
  .details-copy { align-self: end; font-size: 12px; }
  .details-copy--two { align-self: start; }
  .stays { padding-top: 90px; padding-bottom: 95px; }
  .section-head { margin-bottom: 65px; grid-template-columns: 1fr; gap: 28px; }
  .section-head > p { max-width: 620px; }
  .stay-grid { grid-template-columns: 1fr; gap: 90px; }
  .stay, .stay--offset, .stay--offset-high { margin-top: 0; }
  .stay--wide, .stay--reverse { grid-column: 1; display: block; }
  .stay--reverse .stay-main, .stay--reverse .stay-info, .stay--reverse .stay-thumbs { grid-column: auto; grid-row: auto; }
  .stay-main--portrait img { aspect-ratio: 4 / 3; }
  .stays-book { margin-top: 70px; }
  .archive { padding-top: 90px; padding-bottom: 100px; grid-template-columns: 1fr; gap: 50px; }
  .archive aside, .map-copy, .faq header { position: static; }
  .archive ul { margin-top: 30px; display: grid; grid-template-columns: repeat(5, auto); gap: 8px; overflow-x: auto; }
  .archive li { white-space: nowrap; }
  .archive-grid { gap: 35px 10px; }
  .archive-grid button:nth-child(even) { margin-top: 70px; }
  .experiences { padding-top: 90px; padding-bottom: 100px; }
  .story-row, .story-row--reverse { margin-top: 90px; grid-template-columns: 1fr; gap: 34px; }
  .story-row--reverse figure, .story-row--reverse > div { grid-column: 1; grid-row: auto; }
  .story-row figure { height: 520px; }
  .map-section { padding-top: 90px; padding-bottom: 100px; grid-template-columns: 1fr; gap: 45px; }
  .map-section figure, .map-list { grid-column: 1; }
  .map-list { grid-template-columns: 1fr; }
  .map-list article { border-bottom: 1px solid var(--line); }
  .groups { padding-top: 90px; padding-bottom: 95px; }
  .groups > div:first-child { grid-template-columns: 1fr; }
  .groups h2 { grid-column: 1; }
  .groups-copy { width: 100%; grid-template-columns: 1fr; gap: 28px; }
  .groups-copy .solid-link { justify-self: start; }
  .groups-notes { grid-template-columns: 1fr; }
  .groups-notes article, .groups-notes article + article { padding: 30px 0; border-left: 0; border-bottom: 1px solid rgba(255,255,255,.23); }
  .faq { padding-top: 90px; padding-bottom: 100px; grid-template-columns: 1fr; gap: 55px; }
  .route { grid-template-columns: 1fr; }
  .route figure { min-height: 480px; }
  .route-copy { padding: 70px 20px; }
  .final-cta { padding-top: 100px; padding-bottom: 110px; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .payment-logos { margin: 0; }
}

@media (max-width: 480px) {
  .header-book { display: none; }
  .site-header { grid-template-columns: 1fr 82px 1fr; }
  .hero-copy { min-height: 650px; }
  h1 { font-size: 68px; }
  .hero-actions { align-items: flex-start; flex-direction: column; gap: 20px; }
  .hero-facts { grid-template-columns: 1fr; }
  .hero-facts div { padding: 10px 0; grid-template-columns: 110px 1fr; border-bottom: 1px solid var(--line); }
  .hero-photo { min-height: 440px; }
  .booking-fields { grid-template-columns: 1fr; }
  .booking-fields label { border-right: 0; border-bottom: 1px solid var(--line); }
  .details-story { grid-template-columns: 1fr; }
  .details-story h2 { grid-column: 1; }
  .details-photo--two { margin-top: 20px; }
  .details-copy--one { grid-row: 3; }
  .stay-thumbs { gap: 5px; }
  .archive-grid { grid-template-columns: 1fr; }
  .archive-grid button:nth-child(even) { margin-top: 0; }
  .archive-grid img, .archive-grid button:nth-child(3n) img { aspect-ratio: 4 / 3; }
  .story-row figure { height: 440px; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-legal { flex-direction: column; }
}

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