:root {
  --ink: #242724;
  --green: #53664d;
  --deep-green: #314333;
  --stone: #f1f0e9;
  --soft: #e5e5dc;
  --sun: #d5bd79;
  --line: rgba(36, 39, 36, .18);
  --radius: 14px;
  --shell: min(1160px, calc(100vw - 40px));
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
  --ease-move: cubic-bezier(0.77, 0, 0.175, 1);
  --z-header: 50;
  --z-overlay: 100;
  --z-panel: 101;
  --z-lightbox: 200;
}

* { box-sizing: border-box; }
*:focus-visible { outline: 3px solid var(--sun); outline-offset: 3px; }
html { scroll-behavior: smooth; }
body { min-width: 320px; margin: 0; overflow-x: clip; background: var(--stone); color: var(--ink); font-family: "Avenir Next", Avenir, "Helvetica Neue", Arial, sans-serif; font-size: 16px; line-height: 1.5; font-synthesis: none; }
body.no-scroll { overflow: hidden; }
img { max-width: 100%; height: auto; }
button, select { font: inherit; -webkit-tap-highlight-color: transparent; }
.shell { width: var(--shell); margin: 0 auto; }
.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: 1000; transform: translateY(-150%); background: var(--ink); color: #fff; padding: 10px 14px; text-decoration: none; border-radius: 8px; }
.skip-link:focus { transform: translateY(0); }

.site-header { position: fixed; z-index: var(--z-header); top: 0; right: 0; left: 0; height: 72px; display: flex; align-items: center; justify-content: space-between; padding: 0 20px; color: #fff; background: linear-gradient(180deg, rgba(12, 20, 15, .48), rgba(12, 20, 15, 0)); transition: background 220ms var(--ease-out), box-shadow 220ms var(--ease-out), backdrop-filter 220ms var(--ease-out); }
.site-header.is-solid { background: rgba(49, 67, 51, .92); box-shadow: 0 5px 20px rgba(19, 28, 20, .2); backdrop-filter: blur(12px); }
.brand { display: inline-flex; align-items: center; gap: 9px; color: inherit; text-decoration: none; letter-spacing: .07em; transition: transform 180ms var(--ease-out), opacity 180ms ease; }
.brand strong { display: block; font-size: 16px; line-height: 1.05; font-weight: 700; }
.brand small { display: block; font-size: 8px; line-height: 1.25; letter-spacing: .16em; text-transform: uppercase; }
.brand-mark { display: block; width: 40px; height: 40px; object-fit: contain; }
.site-header .brand-mark { width: 40px; height: 40px; }
.header-actions { display: flex; gap: 12px; align-items: center; }
.language-button { display: inline-flex; min-width: 44px; min-height: 44px; align-items: center; justify-content: center; gap: 5px; padding: 7px 5px; border: 0; background: transparent; color: inherit; cursor: pointer; font-size: 12px; font-weight: 700; letter-spacing: .1em; transition: transform 140ms var(--ease-out), opacity 180ms ease; }
.language-button::after { width: 6px; height: 6px; border-right: 1px solid currentColor; border-bottom: 1px solid currentColor; content: ""; transform: translateY(-2px) rotate(45deg); transition: transform 180ms var(--ease-out); }
.language-button[aria-expanded="true"]::after { transform: translateY(2px) rotate(225deg); }
.menu-button { display: flex; min-height: 44px; align-items: center; gap: 8px; border: 1px solid rgba(255, 255, 255, .7); border-radius: 999px; background: transparent; color: inherit; cursor: pointer; font-size: 12px; letter-spacing: .08em; padding: 8px 11px 8px 13px; transition: transform 140ms var(--ease-out), background 180ms ease, border-color 180ms ease; }
.menu-button i, .menu-button i::after { position: relative; display: block; width: 14px; height: 1px; background: currentColor; }
.menu-button i { transform: translateY(-2px); }
.menu-button i::after { content: ""; position: absolute; top: 4px; }

.hero { position: relative; display: flex; align-items: end; min-height: 100dvh; overflow: hidden; background: var(--deep-green); color: #fff; }
.hero > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center 50%; transform: scale(1.025); animation: hero-in 880ms var(--ease-out) both; will-change: transform, clip-path; }
.hero-scrim { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(12, 20, 15, .3), rgba(12, 20, 15, .15) 35%, rgba(12, 20, 15, .82) 100%); animation: scrim-in 540ms var(--ease-out) both; }
.hero-copy { position: relative; z-index: 1; width: var(--shell); margin: 0 auto; padding: 0 0 88px; }
html.motion-ready .hero-copy.reveal { opacity: 1; transform: none; transition: none; }
html.motion-ready .hero-copy.reveal > * { opacity: 0; transform: translateY(16px); animation: hero-copy-in 500ms var(--ease-out) forwards; }
html.motion-ready .hero-copy.reveal > :nth-child(1) { animation-delay: 180ms; }
html.motion-ready .hero-copy.reveal > :nth-child(2) { animation-delay: 240ms; }
html.motion-ready .hero-copy.reveal > :nth-child(3) { animation-delay: 300ms; }
html.motion-ready .hero-copy.reveal > :nth-child(4) { animation-delay: 360ms; }
.eyebrow { margin: 0 0 14px; font-size: 11px; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.tone { color: var(--green); }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { text-wrap: balance; }
p, blockquote, address { text-wrap: pretty; }
h1, h2, h3, p, blockquote, address { overflow-wrap: break-word; }
h1 { max-width: 760px; margin: 0 0 20px; font-size: clamp(44px, 8.5vw, 96px); font-weight: 600; line-height: .98; letter-spacing: -.04em; }
h2 { margin-bottom: 22px; font-size: clamp(36px, 5.2vw, 68px); font-weight: 600; line-height: 1; letter-spacing: -.035em; }
h3 { margin: 17px 0 8px; font-size: 25px; font-weight: 600; line-height: 1.05; letter-spacing: -.035em; }
.hero-copy > p:not(.eyebrow) { max-width: 470px; margin-bottom: 26px; font-size: 17px; line-height: 1.45; }
.hero-actions, .visit-actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.button { display: inline-flex; align-items: center; justify-content: center; min-height: 47px; padding: 11px 19px; border-radius: 999px; font-size: 13px; font-weight: 700; letter-spacing: .03em; text-decoration: none; white-space: nowrap; transition: transform 140ms var(--ease-out), background 180ms ease, color 180ms ease, border-color 180ms ease; }
.button:active { transform: scale(.97); transition-duration: 110ms; }
.button-light { background: #fff; color: var(--ink); }
.button-ghost { border: 1px solid rgba(255, 255, 255, .72); color: #fff; }
.button-dark { background: var(--deep-green); color: #fff; }
.hero-note { position: absolute; z-index: 1; right: 20px; bottom: 21px; display: flex; gap: 10px; align-items: center; color: #fff; font-size: 11px; letter-spacing: .06em; text-decoration: none; transition: opacity 180ms ease; }
.hero-note b { font-size: 18px; font-weight: 400; }

.story { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, .92fr); gap: clamp(40px, 9vw, 130px); align-items: center; padding: 116px 0; }
.image-frame { height: min(640px, 58vw); overflow: hidden; border-radius: var(--radius); }
.image-frame img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 50% 46%; transition: transform 500ms var(--ease-move), filter 300ms ease; }
.story-copy { max-width: 500px; }
.story-copy h2 { font-size: clamp(48px, 5.8vw, 80px); }
.story-copy > p:not(.eyebrow) { max-width: 500px; color: rgba(36, 39, 36, .74); font-size: 19px; line-height: 1.5; }
.section-heading p, .events-intro p, .gallery-heading p { max-width: 475px; color: rgba(36, 39, 36, .74); font-size: 17px; }
.text-link { position: relative; display: inline-flex; gap: 8px; padding-bottom: 4px; color: var(--deep-green); font-size: 14px; font-weight: 700; text-decoration: none; }
.text-link::after { position: absolute; right: 0; bottom: 0; left: 0; height: 1px; background: currentColor; content: ""; transform: scaleX(.55); transform-origin: left; transition: transform 190ms var(--ease-out); }
.text-link b { transition: transform 160ms var(--ease-out); }

.offerings { padding: 110px 0; background: #e8e8df; }
.section-heading { margin-bottom: 45px; }
.section-heading h2 { max-width: 690px; margin-bottom: 14px; }
.offering-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.offering { padding-top: 14px; border-top: 1px solid var(--line); }
.offering-image { overflow: hidden; border-radius: var(--radius); aspect-ratio: 4 / 5; }
.offering-image img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 500ms var(--ease-move), filter 260ms ease; }
.offering p { max-width: 27ch; margin: 0; color: rgba(36, 39, 36, .72); }

.reviews { padding: 116px 0; }
.reviews-intro { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(280px, .9fr); column-gap: clamp(38px, 9vw, 140px); align-items: end; margin-bottom: 52px; }
.reviews-intro .eyebrow { grid-column: 1; }
.reviews-intro h2 { grid-column: 1; max-width: 630px; margin-bottom: 0; font-size: clamp(48px, 5vw, 68px); line-height: .98; }
.reviews-intro > p:not(.eyebrow) { grid-column: 2; max-width: 360px; margin: 0 0 4px; color: rgba(36, 39, 36, .74); font-size: 17px; line-height: 1.55; }
.review-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.review { display: flex; min-height: 245px; flex-direction: column; padding: 25px 0 0; border-top: 1px solid var(--line); }
.review-stars { margin-bottom: 22px; color: var(--sun); font-size: 15px; letter-spacing: .12em; }
.review blockquote { max-width: 24ch; margin: 0; color: var(--ink); font-size: clamp(20px, 1.85vw, 25px); line-height: 1.28; letter-spacing: -.035em; }
.review footer { display: flex; align-items: end; margin-top: auto; padding-top: 30px; color: var(--ink); font-size: 14px; }
.review footer strong { font-weight: 700; }

.gallery-section { padding: 0 0 112px; }
.gallery-heading { padding-bottom: 35px; }
.gallery-heading h2 { margin-bottom: 13px; }
.gallery { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-template-rows: repeat(2, 470px); gap: 20px; }
.gallery-item { padding: 0; overflow: hidden; border: 0; border-radius: var(--radius); background: transparent; cursor: zoom-in; }
.gallery-item img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 450ms var(--ease-move), filter 220ms ease; }
.gallery-item:nth-child(1) img { object-position: 50% 48%; }
.gallery-item:nth-child(2) img { object-position: 50% 50%; }
.gallery-item:nth-child(3) img { object-position: 50% 50%; }
.gallery-item:nth-child(4) img { object-position: 54% 50%; }
.gallery-item:nth-child(5) img { object-position: 50% 48%; }
.gallery-item:nth-child(6) img { object-position: 50% 62%; }

.visit { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, .9fr); min-height: 690px; background: var(--soft); }
.visit-map { min-width: 0; min-height: 100%; }
.visit-map iframe { display: block; width: 100%; height: 100%; min-height: 690px; border: 0; filter: grayscale(.35) saturate(.72) contrast(.93); }
.visit-content { display: flex; align-items: center; min-width: 0; padding: clamp(56px, 7vw, 108px); }
.visit-card { width: min(100%, 425px); }
.visit-card address { margin: 0 0 28px; font-size: 20px; font-style: normal; line-height: 1.45; }

.site-footer { padding: 54px 0 20px; background: var(--deep-green); color: #fff; }
.footer-grid { display: grid; grid-template-columns: minmax(220px, 1.35fr) minmax(160px, .8fr) minmax(210px, .9fr); gap: clamp(28px, 5vw, 76px); align-items: center; }
.footer-brand-block { display: flex; align-items: center; min-height: 54px; }
.footer-address { margin: 0; color: rgba(255, 255, 255, .84); font-size: 14px; font-style: normal; line-height: 1.65; }
.footer-utility { display: grid; justify-items: start; gap: 17px; }
.footer-event { display: inline-flex; align-items: center; gap: 8px; min-height: 32px; color: #fff; font-size: 13px; font-weight: 700; letter-spacing: .04em; text-decoration: none; transition: color 180ms ease, transform 140ms var(--ease-out); }
.footer-event b { font-size: 15px; transition: transform 160ms var(--ease-out); }
.footer-social { display: flex; gap: 8px; }
.footer-social a { display: inline-flex; align-items: center; gap: 8px; min-width: 40px; min-height: 40px; padding: 0 10px; border: 1px solid rgba(255, 255, 255, .3); border-radius: 999px; color: #fff; font-size: 12px; font-weight: 700; text-decoration: none; transition: border-color 180ms ease, color 180ms ease, background-color 180ms ease, transform 140ms var(--ease-out); }
.footer-social svg { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 1.75; }
.footer-social svg path { fill: currentColor; stroke: none; }
.footer-social .social-dot { fill: currentColor; stroke: none; }
.footer-note { width: var(--shell); margin: 46px auto 0; padding-top: 18px; border-top: 1px solid rgba(255, 255, 255, .25); font-size: 11px; letter-spacing: .05em; opacity: .78; }

.menu-panel { position: fixed; z-index: var(--z-panel); top: 0; right: 0; display: flex; flex-direction: column; width: min(430px, 100vw); height: 100dvh; padding: 24px; background: var(--deep-green); color: #fff; transform: translateX(101%); transition: transform 320ms var(--ease-out); will-change: transform; }
.menu-panel.open { transform: translateX(0); }
.menu-scrim { position: fixed; z-index: var(--z-overlay); inset: 0; visibility: hidden; background: rgba(11, 18, 12, .44); opacity: 0; transition: opacity 220ms ease, visibility 0s linear 220ms; }
.menu-scrim.open { visibility: visible; opacity: 1; transition-delay: 0s; }
.language-panel { position: fixed; z-index: var(--z-panel); top: 78px; right: 20px; width: 232px; padding: 17px; border: 1px solid rgba(255, 255, 255, .14); background: var(--deep-green); color: #fff; box-shadow: 0 18px 42px rgba(19, 28, 20, .24); opacity: 0; pointer-events: none; transform: translateY(-8px) scale(.98); transform-origin: top right; transition: opacity 180ms ease, transform 220ms var(--ease-out); }
.language-panel.open { opacity: 1; pointer-events: auto; transform: translateY(0) scale(1); }
.language-panel-top { display: flex; align-items: center; justify-content: space-between; padding-bottom: 13px; border-bottom: 1px solid rgba(255, 255, 255, .2); }
.language-panel-top .close-menu { font-size: 26px; }
.language-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; padding-top: 13px; }
.language-links button { padding: 11px 8px; border: 0; background: transparent; color: #fff; cursor: pointer; font: inherit; font-size: 14px; text-align: left; transition: transform 140ms var(--ease-out), background 160ms ease, color 160ms ease; }
.language-links button[aria-pressed="true"] { background: rgba(255, 255, 255, .14); }
.language-scrim { display: none; }
.menu-panel-top { display: flex; align-items: center; justify-content: space-between; }
.menu-panel-word { font-size: 16px; font-weight: 700; letter-spacing: .13em; }
.close-menu, .lightbox-close { display: inline-grid; min-width: 44px; min-height: 44px; padding: 5px; border: 0; place-items: center; background: transparent; color: inherit; cursor: pointer; font-size: 33px; line-height: 1; transition: transform 140ms var(--ease-out), opacity 160ms ease; }
.menu-links { display: grid; gap: 17px; margin: auto 0; }
.menu-links a { color: #fff; font-size: clamp(35px, 9vw, 58px); line-height: 1; letter-spacing: -.05em; text-decoration: none; opacity: 0; transform: translateX(16px); transition: color 160ms ease, opacity 220ms var(--ease-out), transform 260ms var(--ease-out); }
.menu-panel.open .menu-links a { opacity: 1; transform: translateX(0); }
.menu-panel.open .menu-links a:nth-child(1) { transition-delay: 70ms; }
.menu-panel.open .menu-links a:nth-child(2) { transition-delay: 115ms; }
.menu-panel.open .menu-links a:nth-child(3) { transition-delay: 160ms; }
.menu-panel.open .menu-links a:nth-child(4) { transition-delay: 205ms; }
.menu-panel-bottom { display: flex; gap: 18px; font-size: 13px; }
.menu-panel-bottom a { color: #fff; }

.lightbox { position: fixed; z-index: var(--z-lightbox); inset: 0; display: flex; align-items: center; justify-content: center; padding: 58px 62px; visibility: hidden; background: rgba(10, 14, 11, .96); color: #fff; opacity: 0; transition: opacity 220ms ease, visibility 0s linear 220ms; }
.lightbox.open { visibility: visible; opacity: 1; transition-delay: 0s; }
.lightbox figure { display: grid; max-width: min(1120px, 100%); max-height: 100%; margin: 0; gap: 9px; justify-items: center; opacity: 0; transform: scale(.975); transition: opacity 220ms ease, transform 280ms var(--ease-out); }
.lightbox.open figure { opacity: 1; transform: scale(1); }
.lightbox img { max-width: 100%; max-height: calc(100dvh - 120px); object-fit: contain; transition: opacity 150ms ease, transform 180ms var(--ease-out), filter 150ms ease; }
.lightbox.is-switching img { opacity: 0; filter: blur(1px); transform: scale(.985); }
.lightbox figcaption { font-size: 13px; text-align: center; }
.lightbox-close { position: absolute; top: 18px; right: 22px; color: #fff; }
.lightbox-prev, .lightbox-next { position: absolute; top: 50%; padding: 12px; border: 0; background: transparent; color: #fff; cursor: pointer; font-size: 58px; font-weight: 200; transform: translateY(-50%); transition: transform 150ms var(--ease-out), opacity 150ms ease; }
.lightbox-prev { left: 12px; }
.lightbox-next { right: 12px; }

html.motion-ready .reveal { opacity: 0; transform: translateY(20px); transition: opacity 480ms ease, transform 520ms var(--ease-out); }
html.motion-ready .reveal.visible { opacity: 1; transform: none; }
html.motion-ready .story-image.reveal { opacity: 1; clip-path: none; transform: none; transition: opacity 180ms ease; }
html.motion-ready .story-image.reveal.visible { opacity: 1; }
html.motion-ready .gallery-item.reveal { clip-path: inset(0 0 8% 0); transform: translateY(12px); transition: clip-path 520ms var(--ease-out), opacity 360ms ease, transform 440ms var(--ease-out); }
html.motion-ready .gallery-item.reveal.visible { clip-path: inset(0 0 0 0); }
 .offering.reveal:nth-child(2) { transition-delay: 55ms; }
 .offering.reveal:nth-child(3) { transition-delay: 110ms; }
 .gallery-item.reveal:nth-child(2), .gallery-item.reveal:nth-child(5) { transition-delay: 45ms; }
 .gallery-item.reveal:nth-child(3), .gallery-item.reveal:nth-child(6) { transition-delay: 90ms; }
 @keyframes hero-in { from { opacity: .45; clip-path: inset(0 0 7% 0); transform: scale(1.075); } to { opacity: 1; clip-path: inset(0); transform: scale(1.025); } }
 @keyframes scrim-in { from { opacity: 0; } to { opacity: 1; } }
 @keyframes hero-copy-in { to { opacity: 1; transform: translateY(0); } }

@media (hover: hover) and (pointer: fine) {
  .brand:hover { opacity: .82; transform: translateY(-1px); }
  .language-button:hover { opacity: .76; }
  .menu-button:hover { background: rgba(255, 255, 255, .13); border-color: #fff; }
  .button:hover { transform: translateY(-2px); }
  .button-light:hover { background: var(--soft); }
  .button-ghost:hover { background: rgba(255, 255, 255, .15); }
  .button-dark:hover { background: var(--green); }
  .hero-note:hover { opacity: .72; }
  .hero-note:hover b { transform: translateX(3px); }
  .story-image:hover img { filter: saturate(1.04); transform: scale(1.025); }
  .offering:hover img { filter: saturate(1.05) contrast(1.02); transform: scale(1.035); }
  .gallery-item:hover img { filter: brightness(1.04) saturate(1.04); transform: scale(1.045); }
  .text-link:hover { color: var(--green); }
  .text-link:hover::after { transform: scaleX(1); }
  .text-link:hover b { transform: translateX(3px); }
  .footer-event:hover { color: var(--sun); transform: translateY(-1px); }
  .footer-event:hover b { transform: translate(2px, -2px); }
  .footer-social a:hover { border-color: var(--sun); background-color: var(--sun); color: var(--deep-green); transform: translateY(-2px); }
  .language-links button:hover { background: rgba(255, 255, 255, .14); transform: translateX(3px); }
  .close-menu:hover, .lightbox-close:hover { opacity: .7; transform: rotate(7deg) scale(1.04); }
  .menu-links a:hover { color: var(--sun); }
  .lightbox-prev:hover { transform: translate(-4px, -50%); }
  .lightbox-next:hover { transform: translate(4px, -50%); }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero > img { animation: none; transform: scale(1.025); }
  .hero-scrim, html.motion-ready .hero-copy.reveal > * { animation: none; opacity: 1; transform: none; }
  html.motion-ready .reveal, html.motion-ready .story-image.reveal, html.motion-ready .gallery-item.reveal { opacity: 1; clip-path: none; transform: none; transition: opacity 120ms ease; }
  .site-header, .menu-panel, .menu-scrim, .language-panel, .lightbox, .lightbox figure, .lightbox img, .button, .brand, .language-button, .menu-button, .text-link::after, .text-link b, .close-menu, .lightbox-close, .lightbox-prev, .lightbox-next, .offering-image img, .gallery-item img, .image-frame img, .language-links button, .menu-links a { transition-duration: 120ms !important; }
  .menu-links a { opacity: 1; transform: none; }
}

@media (max-width: 760px) {
  :root { --shell: calc(100vw - 32px); }
  .site-header { height: 64px; padding: 0 16px; }
  .footer-social a { min-width: 44px; min-height: 44px; }
  .brand strong { font-size: 14px; }
  .brand-mark { width: 36px; height: 36px; }
  .site-header .brand-mark { width: 36px; height: 36px; }
  .header-actions { gap: 7px; }
  .language-button { font-size: 11px; }
  .menu-button { padding: 7px 9px 7px 11px; }
  .language-panel { top: 0; right: 0; display: flex; flex-direction: column; width: min(430px, 100vw); height: 100dvh; padding: 24px; border: 0; box-shadow: none; opacity: 1; pointer-events: auto; transform: translateX(101%); transform-origin: right center; transition: transform 320ms var(--ease-out); }
  .language-panel.open { transform: translateX(0); }
  .language-panel-top { padding-bottom: 0; border: 0; }
  .language-links { grid-template-columns: 1fr; gap: 17px; margin: auto 0; padding-top: 0; }
  .language-links button { padding: 0; font-size: clamp(35px, 9vw, 58px); line-height: 1; letter-spacing: -.05em; }
  .language-links button:hover, .language-links button[aria-pressed="true"] { background: transparent; color: var(--sun); }
  .language-scrim { position: fixed; z-index: var(--z-overlay); inset: 0; display: block; visibility: hidden; background: rgba(11, 18, 12, .44); opacity: 0; transition: opacity 220ms ease, visibility 0s linear 220ms; }
  .language-scrim.open { visibility: visible; opacity: 1; transition-delay: 0s; }
  .hero-copy { padding-bottom: 82px; }
  .hero > img { object-position: 44% 42%; }
  h1 { font-size: clamp(46px, 13vw, 68px); line-height: .94; }
  h2 { font-size: 41px; }
  .story-copy h2 { font-size: 45px; }
  .story-copy > p:not(.eyebrow) { font-size: 17px; }
  .hero-copy > p:not(.eyebrow) { max-width: 32ch; font-size: 16px; }
  .hero-note { display: none; }
  .story { grid-template-columns: 1fr; gap: 31px; padding: 76px 0; }
  .image-frame { height: min(118vw, 540px); }
  .offerings { padding: 76px 0; }
  .section-heading { margin-bottom: 31px; }
  .offering-grid { grid-template-columns: 1fr; gap: 37px; }
  .offering-image { aspect-ratio: 4 / 5; }
  .reviews { padding: 76px 0; }
  .reviews-intro { display: block; margin-bottom: 34px; }
  .reviews-intro h2 { margin-bottom: 17px; }
  .reviews-intro > p:not(.eyebrow) { font-size: 16px; }
  .review-list { grid-template-columns: 1fr; gap: 28px; }
  .review { min-height: 0; padding-top: 22px; }
  .review blockquote { max-width: 27ch; font-size: 24px; }
  .review footer { margin-top: 24px; padding-top: 0; }
  .gallery-section { padding-bottom: 76px; }
  .gallery { grid-template-columns: 1fr; grid-template-rows: none; gap: 14px; }
  .gallery-item { aspect-ratio: 3 / 4; }
  .gallery-item:nth-child(3),
  .gallery-item:nth-child(4) { aspect-ratio: 9 / 16; }
  .visit { grid-template-columns: 1fr; min-height: 0; }
  .visit-content { padding: 70px 16px 57px; }
  .visit-map { order: 2; }
  .visit-map iframe { min-height: 390px; }
  .footer-grid { grid-template-columns: 1fr; gap: 25px; }
  .footer-utility { gap: 15px; }
  .footer-note { margin-top: 34px; }
  .lightbox { padding: 60px 17px 50px; }
  .lightbox-prev, .lightbox-next { top: auto; bottom: 4px; font-size: 42px; }
  .lightbox-prev { left: calc(50% - 70px); }
  .lightbox-next { right: calc(50% - 70px); }
}
