:root {
  --cream: #f5f1e8;
  --sand: #e8ded0;
  --ink: #292927;
  --ink-soft: #4a4a46;
  --green: #3f4b40;
  --green-light: #536154;
  --earth: #8a6a52;
  --purple: #8b59c3;
  --white: #fff;
  --focus-ring: rgba(139, 89, 195, .28);
  --cta-shadow: 0 14px 34px rgba(41, 41, 39, .16);
  --serif: "Libre Baskerville", Georgia, serif;
  --sans: "Montserrat", Arial, sans-serif;
  --shell: min(1240px, calc(100vw - 48px));
  --transition: 520ms cubic-bezier(.16, 1, .3, 1);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
html { scrollbar-color: var(--green-light) var(--cream); scrollbar-width: thin; }
::-webkit-scrollbar { width: 10px; }
::-webkit-scrollbar-track { background: var(--cream); }
::-webkit-scrollbar-thumb { border: 3px solid var(--cream); border-radius: 999px; background: var(--green-light); }
body {
  margin: 0;
  background: var(--cream);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 16px;
  line-height: 1.75;
  -webkit-font-smoothing: antialiased;
}
html.menu-open, body.menu-open { height: 100%; overflow: hidden; overscroll-behavior: none; }
body.menu-open { width: 100%; touch-action: none; }
::selection { background: var(--green); color: var(--cream); }
img { display: block; width: 100%; height: auto; }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .22em; }
button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 2px solid var(--purple); outline-offset: 5px; }

h1, h2, h3, h4, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 400; }
h1, h2 { letter-spacing: -.025em; text-wrap: balance; }
h2 { margin-bottom: 32px; font-size: clamp(2.35rem, 4.2vw, 4.6rem); line-height: 1.13; }
h3 { font-size: clamp(1.4rem, 2vw, 2rem); line-height: 1.25; }
em, .serif-italic { font-family: var(--serif); font-style: italic; }
.shell { width: var(--shell); margin-inline: auto; }
.shell--wide { width: min(1440px, calc(100vw - 32px)); margin-inline: auto; }
.narrow { width: min(820px, calc(100vw - 48px)); margin-inline: auto; }
.section { padding-block: clamp(104px, 12vw, 184px); }
.section-label {
  margin-bottom: 28px;
  color: var(--green-light);
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .28em;
  line-height: 1.4;
  text-transform: uppercase;
}
.section-header { max-width: 780px; margin-bottom: clamp(56px, 8vw, 104px); }
.section-header h2 { margin-bottom: 0; }
.split-header { display: grid; grid-template-columns: 1.2fr .8fr; gap: clamp(48px, 9vw, 144px); align-items: end; margin-bottom: clamp(64px, 9vw, 120px); }
.split-header > div:last-child { max-width: 480px; padding-bottom: 10px; }
.split-header p { color: var(--ink-soft); }
.split-header .serif-italic { color: var(--green-light); }

.skip-link { position: fixed; top: 12px; left: 12px; z-index: 200; transform: translateY(-160%); padding: 10px 16px; background: var(--cream); color: var(--ink); }
.skip-link:focus { transform: none; }
.site-header { position: fixed; inset: 0 0 auto; z-index: 100; color: var(--white); transition: color 300ms ease, background 300ms ease, box-shadow 300ms ease; }
.site-header.is-scrolled, body:not(.home) .site-header { background: rgba(245, 241, 232, .96); color: var(--ink); box-shadow: 0 12px 36px rgba(41, 41, 39, .08); backdrop-filter: blur(16px); }
.scroll-progress { position: absolute; right: 0; bottom: 0; left: 0; height: 2px; background: var(--purple); transform: scaleX(0); transform-origin: left; will-change: transform; }
.site-header__inner { width: var(--shell); min-height: 92px; margin-inline: auto; display: flex; align-items: center; justify-content: space-between; gap: 32px; }
.site-brand, .site-brand a { color: inherit; font-family: var(--serif); font-size: 1.15rem; letter-spacing: .3em; line-height: 1; text-decoration: none; text-transform: uppercase; }
.site-brand, .menu-toggle { position: relative; z-index: 2; }
.site-brand__official { position: relative; display: block; width: 148px; aspect-ratio: 720 / 429; }
.site-brand__logo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: contain; transition: opacity 260ms ease; }
.site-brand__logo--color { opacity: 0; }
.site-header.is-scrolled .site-brand__logo--light, body:not(.home) .site-brand__logo--light { opacity: 0; }
.site-header.is-scrolled .site-brand__logo--color, body:not(.home) .site-brand__logo--color { opacity: 1; }
.menu-open .site-brand__logo--light { opacity: 1; }
.menu-open .site-brand__logo--color { opacity: 0; }
.site-brand .custom-logo-link { display: block; }
.site-brand .custom-logo { width: auto; max-width: 210px; max-height: 58px; }
.site-nav { display: flex; align-items: center; gap: 34px; }
.site-nav__list { display: flex; align-items: center; gap: clamp(18px, 2.3vw, 36px); margin: 0; padding: 0; list-style: none; }
.site-nav__list a { position: relative; font-size: .64rem; font-weight: 500; letter-spacing: .18em; text-decoration: none; text-transform: uppercase; }
.site-nav__list a::after { content: ""; position: absolute; right: 0; bottom: -8px; left: 0; height: 1px; background: currentColor; transform: scaleX(0); transform-origin: right; transition: transform var(--transition); }
.site-nav__list a:hover::after { transform: scaleX(1); transform-origin: left; }
.menu-toggle { display: none; border: 0; background: transparent; color: inherit; font: 600 .65rem/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; }
.menu-toggle__icon { display: inline-grid; gap: 5px; width: 22px; margin-left: 10px; vertical-align: middle; }
.menu-toggle__icon i { display: block; height: 1px; background: currentColor; transition: transform 250ms ease; }

.button { display: inline-flex; min-height: 52px; align-items: center; justify-content: center; padding: 14px 28px; border: 1px solid transparent; border-radius: 999px; font-size: .67rem; font-weight: 600; letter-spacing: .18em; line-height: 1.2; text-align: center; text-decoration: none; text-transform: uppercase; transition: color 280ms ease, background 280ms ease, border-color 280ms ease, box-shadow 280ms ease, transform 280ms ease; }
.button:hover { transform: translateY(-2px) scale(1.012); box-shadow: var(--cta-shadow); }
.button:focus-visible { outline-color: var(--purple); box-shadow: 0 0 0 6px var(--focus-ring); }
.button:active { transform: translateY(0) scale(.985); transition-duration: 120ms; }
.button--small { min-height: 42px; padding: 10px 22px; }
.button--light { background: var(--cream); color: var(--ink); }
.button--light:hover { background: var(--white); }
.button--outline { border-color: rgba(255, 255, 255, .62); color: var(--white); }
.button--outline:hover { border-color: var(--white); background: var(--white); color: var(--ink); }
.site-header.is-scrolled .button--outline, body:not(.home) .site-header .button--outline { border-color: rgba(41, 41, 39, .3); color: var(--ink); }
.site-header.is-scrolled .button--outline:hover, body:not(.home) .site-header .button--outline:hover { background: var(--green); color: var(--white); }
.button--solid { background: var(--green-light); color: var(--white); }
.button--solid:hover { background: var(--green); }
.button-row { display: flex; flex-wrap: wrap; gap: 14px; }
.text-link { position: relative; display: inline-block; font-size: .68rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; }
.text-link::after { content: ""; position: absolute; right: 0; bottom: -7px; left: 0; height: 1px; background: currentColor; transform: scaleX(.18); transform-origin: left; opacity: .5; transition: transform var(--transition), opacity 240ms ease; }
.text-link:hover::after { transform: scaleX(1); opacity: 1; }
.text-link b { display: inline-block; font-weight: 400; transition: transform var(--transition); }
a:hover .text-link b, .text-link:hover b { transform: translateX(7px); }

.hero { --parallax-y: 0px; position: relative; min-height: max(720px, 100svh); display: flex; overflow: hidden; align-items: flex-end; background: var(--green); color: var(--white); isolation: isolate; }
.hero::before { content: ""; position: absolute; inset: -5%; z-index: 0; background: var(--hero-image) center/cover no-repeat; transform: translate3d(0, var(--parallax-y), 0) scale(1.02); animation: hero-breathe 1.25s cubic-bezier(.16, 1, .3, 1) both; will-change: transform; }
.hero__scrim { position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(25, 30, 25, .64) 0%, rgba(25, 30, 25, .22) 30%, rgba(25, 30, 25, .46) 58%, rgba(25, 30, 25, .86) 100%); animation: hero-light 1.1s ease-out both; }
.hero__content { position: relative; z-index: 2; padding-bottom: clamp(44px, 7vh, 76px); }
.hero h1 { max-width: 980px; margin-bottom: 30px; font-size: clamp(3.25rem, 7.2vw, 6rem); line-height: 1.03; clip-path: inset(0 0 0 0); animation: hero-title 900ms 160ms cubic-bezier(.16, 1, .3, 1) both; }
.hero > .hero__content > p { max-width: 620px; margin-bottom: 38px; color: rgba(255, 255, 255, .97); font-size: clamp(1rem, 1.5vw, 1.17rem); font-weight: 400; text-shadow: 0 2px 14px rgba(15, 18, 15, .78), 0 1px 2px rgba(15, 18, 15, .72); animation: hero-copy 720ms 380ms cubic-bezier(.16, 1, .3, 1) both; }
.hero .button-row { animation: hero-copy 720ms 500ms cubic-bezier(.16, 1, .3, 1) both; }
.hero__scroll { position: absolute; right: 22px; bottom: 26px; display: flex; align-items: center; gap: 14px; color: rgba(255, 255, 255, .8); font-size: .58rem; font-weight: 600; letter-spacing: .19em; text-decoration: none; text-transform: uppercase; writing-mode: vertical-rl; }
.hero__scroll i { position: relative; display: block; width: 1px; height: 64px; overflow: hidden; background: rgba(255, 255, 255, .35); }
.hero__scroll i::after { content: ""; position: absolute; inset: 0; background: var(--white); transform: translateY(-100%); animation: scroll-line 2.4s 1.1s cubic-bezier(.16, 1, .3, 1) infinite; }
.hero__foot { display: flex; justify-content: space-between; gap: 20px; margin-top: clamp(60px, 11vh, 104px); padding-top: 20px; border-top: 1px solid rgba(255, 255, 255, .35); font-size: .65rem; letter-spacing: .24em; text-transform: uppercase; animation: hero-copy 720ms 640ms cubic-bezier(.16, 1, .3, 1) both; }
.hero__foot .serif-italic { font-size: .88rem; letter-spacing: 0; text-transform: none; }

.intro { padding-bottom: 0; }
.intro__copy { padding-bottom: clamp(44px, 6vw, 80px); text-align: center; }
.intro__copy > p:not(.section-label):not(.intro__signature) { max-width: 710px; margin-inline: auto; color: var(--ink-soft); }
.intro__signature { margin-top: 34px; color: var(--green-light); font-size: 1.15rem; }
.full-bleed-image { height: clamp(480px, 76vw, 860px); overflow: hidden; }
.full-bleed-image img { height: 112%; object-fit: cover; transform: translate3d(0, var(--parallax-y, 0px), 0) scale(1.04); }

.discover__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(24px, 3.5vw, 54px); }
.editorial-card { display: flex; flex-direction: column; color: var(--ink); text-decoration: none; transition: transform var(--transition); }
.editorial-card:hover { transform: translateY(-8px); }
.editorial-card--offset { margin-top: 80px; }
.editorial-card img { aspect-ratio: 3 / 4; margin-bottom: 26px; object-fit: cover; transition: filter var(--transition), transform 800ms cubic-bezier(.16, 1, .3, 1); }
.editorial-card:hover img { filter: saturate(.82) contrast(1.03); transform: scale(1.025); }
.editorial-card__number { margin-bottom: 13px; color: var(--earth); font-size: .68rem; font-weight: 600; letter-spacing: .25em; }
.editorial-card h3 { margin-bottom: 16px; }
.editorial-card p { min-height: 84px; color: var(--ink-soft); font-size: .9rem; line-height: 1.8; }
.editorial-card .text-link { margin-top: auto; color: var(--green-light); }

.spaces { background: var(--sand); }
.spaces__grid { display: grid; grid-template-columns: 1.12fr .88fr; gap: clamp(60px, 9vw, 140px); align-items: center; }
.spaces__gallery { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.spaces__gallery img { aspect-ratio: 4/5; height: 108%; object-fit: cover; transform: translate3d(0, var(--parallax-y, 0px), 0) scale(1.03); }
.spaces__gallery-main { grid-column: 1 / -1; aspect-ratio: 16/10 !important; }
.spaces__gallery-low { transform: translateY(48px); }
.spaces__copy p:not(.section-label):not(.serif-italic) { color: var(--ink-soft); }
.spaces__copy .serif-italic { margin-top: 32px; color: var(--green-light); }

.rooms__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px; }
.room { display: flex; flex-direction: column; overflow: hidden; background: var(--white); transition: transform var(--transition), box-shadow var(--transition); }
.room:hover { transform: translateY(-8px); box-shadow: 0 24px 54px rgba(41, 41, 39, .12); }
.room__gallery { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--sand); }
.room__track { display: flex; width: 100%; height: 100%; overflow-x: auto; scroll-behavior: smooth; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; }
.room__track::-webkit-scrollbar { display: none; }
.room__track:focus-visible { outline: 2px solid var(--cream); outline-offset: -5px; }
.room__slide { flex: 0 0 100%; height: 100%; margin: 0; overflow: hidden; scroll-snap-align: center; scroll-snap-stop: always; }
.room__slide img { width: 100%; height: 100%; object-fit: cover; transition: transform 900ms cubic-bezier(.16, 1, .3, 1), filter 500ms ease; }
.room:hover .room__slide img { transform: scale(1.025); filter: saturate(.9); }
.room__gallery-controls { position: absolute; right: 16px; bottom: 16px; z-index: 2; display: flex; align-items: center; overflow: hidden; border-radius: 999px; background: rgba(35, 52, 42, .94); box-shadow: 0 10px 28px rgba(22, 30, 25, .24); color: var(--cream); }
.room__gallery-button { display: grid; width: 44px; height: 44px; padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; place-items: center; transition: background-color 220ms ease; }
.room__gallery-button:hover { background: rgba(255, 255, 255, .12); }
.room__gallery-button:focus-visible { outline: 2px solid var(--cream); outline-offset: -4px; }
.room__gallery-button svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.7; }
.room__counter { display: flex; min-width: 42px; align-items: center; justify-content: center; gap: 4px; font-size: .64rem; font-variant-numeric: tabular-nums; letter-spacing: .08em; }
.room__body { display: flex; flex: 1; flex-direction: column; padding: 30px; }
.room__meta { color: var(--earth); font-size: .62rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; }
.room h3 { margin-bottom: 15px; }
.room__body > p:not(.room__meta) { color: var(--ink-soft); font-size: .88rem; }
.room .text-link { margin-top: auto; padding-top: 18px; color: var(--green-light); text-decoration: none; }

.experiences { background: var(--green); color: var(--cream); }
.split-header--light p { color: rgba(245, 241, 232, .74); }
.split-header--light .section-label { color: var(--sand); }
.experiences__grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; margin-bottom: 54px; }
.experience { transition: transform var(--transition); }
.experience img { aspect-ratio: 4/5; margin-bottom: 24px; object-fit: cover; transition: transform 900ms cubic-bezier(.16, 1, .3, 1), filter 500ms ease; }
.experience:hover { transform: translateY(-7px); }
.experience:hover img { transform: scale(1.02); filter: brightness(1.06) saturate(.86); }
.experience h3 { margin-bottom: 13px; font-size: 1.3rem; }
.experience p { color: rgba(245, 241, 232, .75); font-size: .84rem; line-height: 1.75; }

.gastronomy__intro { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(60px, 9vw, 140px); align-items: center; }
.gastronomy__intro figure { margin: 0; overflow: hidden; }
.gastronomy__intro img { aspect-ratio: 4/5; height: 108%; object-fit: cover; transform: translate3d(0, var(--parallax-y, 0px), 0) scale(1.03); }
.gastronomy__intro > div p:not(.section-label):not(.serif-italic) { color: var(--ink-soft); }
.gastronomy__intro .serif-italic { color: var(--green-light); font-size: 1.1rem; }
.gastronomy__breakfast { margin-top: 30px; }
.gastronomy__intro .text-link { display: inline-block; margin-top: 12px; color: var(--green-light); text-decoration: none; }
.menu-card { margin-top: clamp(80px, 11vw, 150px); padding: clamp(36px, 6vw, 76px); border: 1px solid rgba(41, 41, 39, .22); }
.menu-card__head { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 24px; padding-bottom: 36px; border-bottom: 1px solid rgba(41, 41, 39, .2); color: var(--green-light); font-size: .65rem; letter-spacing: .22em; text-transform: uppercase; }
.menu-card__head h3 { margin: 0; color: var(--ink); font-size: clamp(1.6rem, 3vw, 2.6rem); letter-spacing: -.01em; text-align: center; text-transform: none; }
.menu-card__head span:last-child { text-align: right; }
.menu-card__intro { max-width: 700px; margin: 42px auto 0; text-align: center; }
.menu-card__intro p:first-child { margin-bottom: 8px; color: var(--ink-soft); }
.menu-card__intro .serif-italic { color: var(--green-light); }
.menu-card__grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(28px, 5vw, 70px); padding-top: 46px; }
.menu-card h4 { font-size: .71rem; letter-spacing: .17em; text-transform: uppercase; }
.menu-card p { color: var(--ink-soft); font-size: .86rem; }
.menu-card .menu-note { color: var(--green-light); font-family: var(--serif); font-size: .82rem; font-style: italic; }
.menu-includes { margin-top: 48px; padding-top: 38px; border-top: 1px solid rgba(41, 41, 39, .18); }
.menu-includes .section-label { margin-bottom: 24px; text-align: center; }
.menu-includes > div { display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; }
.menu-includes p { margin-bottom: 0; }
.menu-includes strong { color: var(--ink); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; }

.pause { --parallax-y: 0px; position: relative; min-height: 88svh; display: grid; overflow: hidden; place-items: center; background: var(--green); color: var(--white); text-align: center; isolation: isolate; }
.pause::before { content: ""; position: absolute; inset: -5%; z-index: 0; background: var(--pause-image) center/cover no-repeat; transform: translate3d(0, var(--parallax-y), 0) scale(1.04); will-change: transform; }
.pause::after { content: ""; position: absolute; inset: 0; z-index: 1; background: rgba(30, 36, 31, .62); }
.pause__content { position: relative; z-index: 2; padding-block: 120px; }
.pause h2 { font-size: clamp(2.8rem, 6vw, 5.25rem); }
.pause p { max-width: 620px; margin-inline: auto; color: rgba(255, 255, 255, .86); }
.pause__rhythm { margin-bottom: 32px; font-size: .68rem; font-weight: 600; letter-spacing: .2em; line-height: 2; text-transform: uppercase; }
.pause__rhythm span { display: inline-block; }
.pause__rhythm span + span::before { content: " · "; }
.pause .button { margin-top: 28px; }

.arrival__address { display: grid; grid-template-columns: 180px 1fr; max-width: 820px; margin: -36px 0 70px; color: var(--ink-soft); }
.arrival__address strong { color: var(--green-light); font-size: .7rem; letter-spacing: .18em; text-transform: uppercase; }
.arrival__intro { max-width: 760px; margin: 0 0 70px 180px; }
.arrival__intro h3 { margin-bottom: 12px; }
.arrival__intro p:not(.serif-italic) { color: var(--ink-soft); }
.arrival__intro .serif-italic { color: var(--green-light); }
.arrival__image { position: relative; height: clamp(440px, 62vw, 700px); margin: 0 0 76px; overflow: hidden; }
.arrival__image::after { content: ""; position: absolute; inset: 35% 0 0; background: linear-gradient(transparent, rgba(25, 30, 25, .68)); }
.arrival__image img { height: 112%; object-fit: cover; object-position: center 56%; transform: translate3d(0, var(--parallax-y, 0px), 0) scale(1.03); }
.arrival__image figcaption { position: absolute; right: clamp(24px, 5vw, 64px); bottom: clamp(30px, 5vw, 64px); left: clamp(24px, 5vw, 64px); z-index: 1; color: var(--white); font-family: var(--serif); font-size: clamp(2rem, 4vw, 4rem); line-height: 1.15; }
.arrival__options { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; background: rgba(41, 41, 39, .18); }
.arrival__options > div { padding: clamp(32px, 5vw, 62px); background: var(--cream); }
.arrival__options h3 { margin-bottom: 14px; }
.arrival__options p:not(.section-label) { color: var(--ink-soft); }
.arrival__options .button { margin-top: 18px; }
.arrival__support { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(40px, 8vw, 120px); margin-top: 70px; padding-top: 54px; border-top: 1px solid rgba(41, 41, 39, .18); }
.arrival__support h3 { margin-bottom: 10px; font-size: 1.25rem; }
.arrival__support p { color: var(--ink-soft); }
.arrival__link { display: inline-block; margin-top: 24px; color: var(--green-light); text-decoration: none; }

.contact { background: var(--sand); text-align: center; }
.contact p:not(.section-label) { max-width: 620px; margin-inline: auto; color: var(--ink-soft); }
.contact__actions { display: flex; flex-wrap: wrap; justify-content: center; gap: 14px; margin-top: 32px; }
.button--ghost { border-color: rgba(41, 41, 39, .3); color: var(--ink); }
.button--ghost:hover { border-color: var(--green); background: var(--green); color: var(--white); }
.contact .contact__help { margin-top: 20px; font-size: .82rem; }

.site-footer { padding-top: 84px; background: var(--green); color: var(--cream); }
.site-footer__grid { display: grid; grid-template-columns: 1.5fr .65fr .65fr; gap: clamp(48px, 9vw, 140px); padding-bottom: 70px; }
.site-footer__brand > a { font-family: var(--serif); font-size: 1.35rem; letter-spacing: .28em; text-decoration: none; text-transform: uppercase; }
.site-footer__brand .site-footer__logo { display: block; width: min(220px, 72vw); margin-bottom: 26px; }
.site-footer__logo img { width: 100%; height: auto; }
.site-footer__brand p:last-child { max-width: 460px; color: rgba(245, 241, 232, .72); }
.footer-heading { margin-bottom: 22px; font-family: var(--sans); font-size: .65rem; font-weight: 600; letter-spacing: .22em; text-transform: uppercase; }
.footer-links, .site-footer .site-nav__list { display: grid; gap: 10px; margin: 0; padding: 0; list-style: none; }
.footer-links a, .site-footer .site-nav__list a { color: var(--sand); font-size: .86rem; text-decoration: none; }
.site-footer__bottom { display: flex; justify-content: space-between; gap: 20px; padding-block: 24px; border-top: 1px solid rgba(245, 241, 232, .2); color: rgba(245, 241, 232, .66); font-size: .62rem; letter-spacing: .18em; text-transform: uppercase; }

.content-shell, .error-page { min-height: 70vh; padding-top: 180px; padding-bottom: 120px; }
.archive-header, .entry-content { max-width: 820px; }
.archive-header h1, .entry-content h1, .error-page h1 { font-size: clamp(2.6rem, 6vw, 5rem); line-height: 1.08; }
.post-list { display: grid; gap: 24px; margin-top: 60px; }
.post-card { padding: 32px 0; border-top: 1px solid rgba(41, 41, 39, .18); }
.post-card h2 a { text-decoration: none; }
.post-card__meta { color: var(--earth); font-size: .68rem; letter-spacing: .16em; text-transform: uppercase; }
.entry-content { margin-inline: auto; }
.entry-content > * { max-width: 72ch; }
.entry-content > .alignwide { max-width: 1100px; margin-inline: calc((820px - min(1100px, 90vw)) / 2); }
.entry-hero { max-width: 1100px; margin: 42px 0; }
.error-page { max-width: 820px; }

@keyframes hero-breathe {
  from { transform: translate3d(0, var(--parallax-y), 0) scale(1.1); filter: saturate(.72) brightness(.82); }
  to { transform: translate3d(0, var(--parallax-y), 0) scale(1.02); filter: none; }
}
@keyframes hero-light { from { opacity: .2; } to { opacity: 1; } }
@keyframes hero-title {
  from { opacity: 0; transform: translateY(42px); clip-path: inset(0 0 100% 0); }
  to { opacity: 1; transform: none; clip-path: inset(0 0 0 0); }
}
@keyframes hero-copy { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes scroll-line { 0% { transform: translateY(-100%); } 45%, 55% { transform: translateY(0); } 100% { transform: translateY(110%); } }

.js [data-reveal] {
  opacity: 0;
  transform: translateY(22px);
  filter: blur(3px);
  transition: opacity 760ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms), transform 760ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms), filter 760ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms);
}
.js [data-reveal="card"] { transform: translateY(34px) scale(.985); }
.js [data-reveal="clip"] { opacity: 1; transform: none; filter: none; }
.js [data-reveal="clip"] img { clip-path: inset(0 0 100% 0); transform-origin: center; transition: clip-path 980ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms), transform 1.2s cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms); }
.js .menu-card[data-reveal="clip"] { opacity: 0; transform: translateY(22px); transition: opacity 760ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms), transform 760ms cubic-bezier(.16, 1, .3, 1) var(--reveal-delay, 0ms); }
.js [data-reveal].is-visible { opacity: 1; transform: none; filter: none; }
.js [data-reveal="clip"].is-visible img { clip-path: inset(0 0 0 0); }

@media (max-width: 1080px) {
  .menu-toggle { display: block; cursor: pointer; }
  .site-nav { position: fixed; inset: 0; z-index: 1; display: grid; width: 100%; height: 100dvh; min-height: 100svh; align-content: start; justify-items: center; gap: clamp(22px, 4dvh, 34px); padding: max(108px, calc(env(safe-area-inset-top) + 88px)) 24px max(32px, env(safe-area-inset-bottom)); overflow-y: auto; overscroll-behavior: contain; background: var(--green); color: var(--cream); opacity: 0; pointer-events: none; transform: translateY(-18px); transition: opacity 280ms ease, transform var(--transition); -webkit-overflow-scrolling: touch; }
  .site-nav.is-open { opacity: 1; pointer-events: auto; transform: none; }
  .site-nav__list { display: grid; gap: clamp(14px, 2.6dvh, 22px); text-align: center; }
  .site-nav__list a { font-family: var(--serif); font-size: clamp(1.45rem, 6vw, 2rem); font-weight: 400; line-height: 1.2; letter-spacing: 0; text-transform: none; }
  .site-nav .button { border-color: rgba(255, 255, 255, .5) !important; color: var(--white) !important; }
  .menu-open .site-header { inset: 0; height: 100dvh; color: var(--cream); background: var(--green); box-shadow: none; backdrop-filter: none; }
  body.menu-open .site-header .site-brand__logo--light { opacity: 1; }
  body.menu-open .site-header .site-brand__logo--color { opacity: 0; }
  .menu-open .scroll-progress { opacity: 0; }
  .menu-open .menu-toggle__icon i:first-child { transform: translateY(3px) rotate(45deg); }
  .menu-open .menu-toggle__icon i:last-child { transform: translateY(-3px) rotate(-45deg); }
  .experiences__grid { grid-template-columns: repeat(2, 1fr); gap: 48px 20px; }
}

@media (max-width: 780px) {
  :root { --shell: min(100% - 32px, 1240px); }
  .section { padding-block: 82px; }
  .site-header__inner { min-height: 76px; }
  .site-brand { font-size: .95rem; }
  .site-brand__official { width: 112px; }
  .menu-toggle { min-width: 44px; min-height: 44px; padding: 10px 0 10px 10px; }
  .hero { min-height: max(780px, 100svh); }
  .hero__content { padding-top: max(118px, calc(env(safe-area-inset-top) + 102px)); }
  .hero h1 { font-size: clamp(3rem, 14.5vw, 4.25rem); }
  .hero__scroll { display: none; }
  .hero__foot { align-items: flex-start; flex-direction: column; }
  .split-header, .spaces__grid, .gastronomy__intro, .site-footer__grid { grid-template-columns: 1fr; }
  .section-header { margin-bottom: 56px; }
  .split-header { gap: 12px; margin-bottom: 58px; }
  .discover__grid, .rooms__grid { grid-template-columns: 1fr; gap: 70px; }
  .editorial-card--offset { margin-top: 0; }
  .editorial-card img { aspect-ratio: 4/5; }
  .editorial-card p { min-height: 0; }
  .spaces__grid { gap: 68px; }
  .rooms__grid { gap: 18px; }
  .room__body { padding: 26px; }
  .gastronomy__intro { gap: 40px; }
  .menu-card { margin-top: 74px; padding: 32px 26px; }
  .menu-card__head { grid-template-columns: 1fr; text-align: center; }
  .menu-card__head span:last-child { text-align: center; }
  .menu-card__grid { grid-template-columns: 1fr; }
  .menu-includes > div { grid-template-columns: 1fr; }
  .arrival__address { grid-template-columns: 1fr; gap: 8px; margin-top: -18px; }
  .arrival__intro { margin: 0 0 56px; }
  .arrival__options { grid-template-columns: 1fr; }
  .arrival__support { grid-template-columns: 1fr; }
  .site-footer__grid { gap: 48px; }
  .site-footer__bottom { align-items: flex-start; flex-direction: column; }
}

@media (max-width: 520px) {
  .site-header__inner { width: calc(100% - 32px - env(safe-area-inset-left) - env(safe-area-inset-right)); }
  .button-row .button { width: 100%; }
  .hero__content { padding-top: max(116px, calc(env(safe-area-inset-top) + 100px)); padding-bottom: 38px; }
  .full-bleed-image { width: 100%; height: 500px; }
  .discover__grid, .experiences__grid {
    grid-template-columns: none;
    grid-auto-flow: column;
    grid-auto-columns: min(82vw, 330px);
    gap: 18px;
    margin-inline: -16px;
    padding: 0 16px 24px;
    overflow-x: auto;
    overscroll-behavior-inline: contain;
    scroll-padding-inline: 16px;
    scroll-snap-type: inline mandatory;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
  }
  .discover__grid::-webkit-scrollbar, .experiences__grid::-webkit-scrollbar { display: none; }
  .editorial-card, .experience { scroll-snap-align: start; }
  .editorial-card img { aspect-ratio: 4/5; margin-bottom: 22px; }
  .experiences__grid { grid-auto-columns: min(78vw, 310px); margin-bottom: 34px; }
  .spaces__gallery { gap: 8px; }
  .experience img { aspect-ratio: 4/5; }
  .gastronomy__intro figure { min-height: 460px; }
  .menu-card__head { gap: 14px; padding-bottom: 28px; }
  .menu-card__grid { gap: 38px; padding-top: 36px; }
  .pause__rhythm { letter-spacing: .13em; }
  .pause__rhythm span { display: block; }
  .pause__rhythm span + span::before { content: none; }
  .arrival__image { width: calc(100% + 32px); margin-left: -16px; }
  .arrival__support { gap: 30px; margin-top: 56px; padding-top: 42px; }
  .contact__actions .button { width: 100%; }
  .js [data-reveal] { transform: translateY(14px); filter: blur(1px); transition-duration: 560ms; }
}

@media (hover: none) {
  .editorial-card:hover, .room:hover, .experience:hover { transform: none; box-shadow: none; }
  .editorial-card:hover img, .room:hover .room__slide img, .experience:hover img { filter: none; transform: none; }
  .editorial-card:active, .room:active, .experience:active { opacity: .94; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: .01ms !important; }
  .hero::before, .hero__scrim, .hero h1, .hero > .hero__content > p, .hero .button-row, .hero__foot { animation: none; }
  .hero__scroll i::after { animation: none; transform: none; }
  .js [data-reveal], .js [data-reveal="clip"], .js [data-reveal="clip"] img { opacity: 1; transform: none; filter: none; clip-path: none; }
}
