@font-face {
  font-family: "Manrope Local";
  src: url("assets/manrope-variable.ttf") format("truetype");
  font-style: normal;
  font-weight: 200 800;
  font-display: swap;
}

:root {
  color-scheme: light;
  --canvas: #fefdfb;
  --surface: #f6f4f0;
  --surface-strong: #eeebe5;
  --sand: #d4b98f;
  --sand-hover: #c5a575;
  --sand-soft: #eee4d4;
  --sand-ink: #76542f;
  --charcoal: #292824;
  --charcoal-soft: #504d47;
  --muted: #66615a;
  --line: #d8d3cc;
  --line-strong: #aaa39a;
  --focus: #67451f;
  --error: #8f2637;
  --shell: 1760px;
  --header-height: 82px;
  --radius-sm: 4px;
  --radius-md: 6px;
  --ease-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-menu: cubic-bezier(0.32, 0.72, 0, 1);
  --link-wipe-duration: 220ms;
  --shadow-menu-toggle: 0 8px 22px rgb(52 43 32 / 8%);
  --shadow-menu-popover: 0 18px 48px rgb(52 43 32 / 16%);
}

*, *::before, *::after { box-sizing: border-box; }

html {
  min-width: 320px;
  overflow-x: clip;
  scroll-behavior: auto;
  scroll-padding-top: calc(var(--header-height) + 18px);
  background: var(--canvas);
  scrollbar-color: var(--sand-ink) var(--surface);
}

body {
  margin: 0;
  min-width: 320px;
  overflow-x: clip;
  background: var(--canvas);
  color: var(--charcoal);
  font-family: "Manrope Local", system-ui, sans-serif;
  font-size: 16px;
  line-height: 1.62;
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
}

html:has(dialog[open]),
body:has(dialog[open]) { overflow: hidden; }
button, input, select, textarea { font: inherit; }
input, textarea { caret-color: var(--sand-ink); }
input[type="date"] { font-variant-numeric: tabular-nums; }
button, a {
  -webkit-tap-highlight-color: transparent;
  touch-action: manipulation;
}
button { cursor: pointer; }
img { display: block; max-width: 100%; }
a { color: inherit; }
[hidden] { display: none !important; }

::selection {
  background: var(--sand);
  color: var(--charcoal);
}

.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

.skip-link {
  position: fixed;
  top: 10px;
  left: 10px;
  z-index: 1000;
  padding: 10px 14px;
  border: 1px solid var(--charcoal);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--charcoal);
  font-weight: 720;
  text-decoration: none;
  transform: translateY(-150%);
  transition: transform 180ms var(--ease-out);
}

.skip-link:focus { transform: translateY(0); }

.shell {
  width: min(calc(100% - 104px), var(--shell));
  margin-inline: auto;
}

.site-header {
  position: sticky;
  top: 0;
  z-index: 80;
  min-height: var(--header-height);
  border-bottom: 1px solid rgb(41 40 36 / 11%);
  background: rgb(254 253 251 / 94%);
  color: var(--charcoal);
  backdrop-filter: blur(16px) saturate(108%);
  -webkit-backdrop-filter: blur(16px) saturate(108%);
}

.site-header__inner {
  min-height: var(--header-height);
  display: flex;
  align-items: center;
  gap: 28px;
}

.brand {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  text-decoration: none;
}

.brand__logo {
  width: auto;
  max-width: none;
  height: 50px;
  flex: 0 0 auto;
}

.desktop-nav {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: clamp(20px, 2vw, 34px);
  margin-left: auto;
  white-space: nowrap;
}

.desktop-nav a {
  position: relative;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  color: var(--charcoal-soft);
  font-size: 13px;
  font-weight: 670;
  text-decoration: none;
  transition: color 160ms ease;
}

.desktop-nav a::after {
  position: absolute;
  right: 0;
  bottom: 4px;
  left: 0;
  height: 1px;
  background: var(--sand-ink);
  content: "";
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.desktop-nav a:is([aria-current="location"], :focus-visible) {
  color: var(--charcoal);
}

.desktop-nav a:is([aria-current="location"], :focus-visible)::after {
  transform: scaleX(1);
  transform-origin: left center;
}

.header-cta {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 18px;
  border: 1px solid var(--sand);
  border-radius: var(--radius-sm);
  background: var(--sand);
  color: var(--charcoal);
  font-size: 12px;
  font-weight: 730;
  line-height: 1;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color 180ms ease, border-color 180ms ease, transform 180ms var(--ease-out);
}

.menu-toggle {
  width: 46px;
  height: 46px;
  display: none;
  place-items: center;
  margin-left: auto;
  padding: 0;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--charcoal);
  box-shadow: var(--shadow-menu-toggle);
  transition: transform 160ms var(--ease-out), background-color 160ms ease;
}

.menu-toggle img { width: 23px; height: 23px; }
.menu-toggle:active { transform: scale(0.97); }

.menu-dropdown {
  position: fixed;
  inset: calc(var(--header-height) + 8px) max(16px, calc((100vw - var(--shell)) / 2)) auto auto;
  width: min(252px, calc(100vw - 32px));
  margin: 0;
  padding: 7px;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--canvas);
  color: var(--charcoal);
  box-shadow: var(--shadow-menu-popover);
  opacity: 0;
  transform: translateY(-7px) scale(0.98);
  transform-origin: top right;
  transition:
    opacity 180ms var(--ease-menu),
    transform 180ms var(--ease-menu),
    display 180ms allow-discrete,
    overlay 180ms allow-discrete;
}

.menu-dropdown:popover-open,
.menu-dropdown.is-open {
  opacity: 1;
  transform: translateY(0) scale(1);
}

.menu-dropdown::backdrop { background: transparent; }

@starting-style {
  .menu-dropdown:popover-open {
    opacity: 0;
    transform: translateY(-7px) scale(0.98);
  }
}

.menu-dropdown a {
  min-height: 47px;
  display: flex;
  align-items: center;
  padding: 0 12px;
  border-radius: var(--radius-sm);
  font-size: 14px;
  font-weight: 660;
  text-decoration: none;
}

.menu-dropdown a[aria-current="location"] { background: var(--sand-soft); }
.menu-dropdown a:hover,
.menu-dropdown a:focus-visible { background: var(--surface); }

.menu-dropdown a.menu-dropdown__cta {
  justify-content: center;
  margin-top: 4px;
  border: 1px solid var(--sand);
  background: var(--sand);
  color: var(--charcoal);
  font-weight: 730;
}

.menu-dropdown a.menu-dropdown__cta[aria-current="location"] { background: var(--sand); }
.menu-dropdown a.menu-dropdown__cta:active { transform: scale(0.98); }

.button {
  min-height: 50px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0 21px;
  border: 1px solid transparent;
  border-radius: var(--radius-sm);
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 730;
  line-height: 1.1;
  text-align: center;
  text-decoration: none;
  white-space: nowrap;
  transition:
    transform 180ms var(--ease-out),
    background-color 180ms ease,
    border-color 180ms ease,
    color 180ms ease;
}

.button--primary {
  border-color: var(--sand);
  background: var(--sand);
}

.button--secondary {
  padding-inline: 8px;
  border: 0;
  border-radius: 0;
  background: transparent;
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
}

.button--secondary__content {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding-bottom: 6px;
}

.button--secondary__content::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  background: currentColor;
  content: "";
  opacity: 0.82;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--link-wipe-duration) var(--ease-out), opacity 160ms ease;
}

.button--secondary__arrow {
  color: var(--sand-ink);
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.button--secondary:focus-visible .button--secondary__content::after {
  opacity: 1;
  transform: scaleX(1);
  transform-origin: left center;
}

.button:active { transform: scale(0.98); }
.button:disabled { cursor: not-allowed; opacity: 0.5; }

.hero {
  position: relative;
  overflow: hidden;
  background: var(--canvas);
}

.hero__layout {
  min-height: min(820px, calc(100svh - var(--header-height)));
  display: grid;
  grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
  grid-template-rows: minmax(0, 1fr) auto;
  column-gap: clamp(52px, 5.2vw, 78px);
  row-gap: 34px;
  align-items: center;
  padding-block: clamp(44px, 5vw, 72px) 22px;
}

.hero__copy {
  max-width: 480px;
  padding-block: 24px;
}

.hero h1,
.section h2,
.legal-layout h1,
.season-heading h1,
.not-found h1 {
  margin: 0;
  color: var(--charcoal);
  font-weight: 470;
  letter-spacing: -0.045em;
  text-wrap: balance;
}

.hero h1 {
  max-width: 9.3ch;
  font-size: clamp(3.85rem, 5.35vw, 5.25rem);
  line-height: 0.94;
}

.hero__intro {
  max-width: 39ch;
  margin: 27px 0 0;
  color: var(--charcoal-soft);
  font-size: clamp(16px, 1.2vw, 18px);
  line-height: 1.65;
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 19px;
  margin-top: 31px;
}

.hero__media {
  width: 100%;
  min-height: 0;
  aspect-ratio: 4 / 3;
  align-self: center;
  border-radius: var(--radius-sm);
}

.image-frame {
  position: relative;
  display: block;
  overflow: hidden;
  margin: 0;
  background: var(--surface-strong);
}

.image-frame img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity 280ms ease, transform 700ms var(--ease-out);
}

.image-state-ready .image-frame[data-state="loading"] img { opacity: 0; }
.image-frame[data-state="ready"] img { opacity: 1; }
.image-frame[data-state="error"] { min-height: 220px; }

.image-error-message {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  margin: 0;
  padding: 28px;
  color: var(--muted);
  text-align: center;
}

.image-retry {
  position: absolute;
  left: 50%;
  bottom: 26px;
  min-height: 44px;
  padding: 0 16px;
  border: 1px solid var(--charcoal);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--charcoal);
  font-weight: 700;
  transform: translateX(-50%);
}

.hero__facts {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 0;
  margin: 0;
  padding: 22px 0 4px;
  border-top: 1px solid var(--line);
  list-style: none;
}

.hero__facts li {
  min-height: 44px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  border-right: 1px solid var(--line);
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 660;
}

.hero__facts li:first-child { justify-content: flex-start; }
.hero__facts li:last-child { justify-content: flex-end; border-right: 0; }

.fact-icon {
  width: 24px;
  height: 24px;
  flex: 0 0 auto;
  opacity: 0.72;
  filter: sepia(1) saturate(2.2) hue-rotate(350deg) brightness(0.82);
}

.dune-divider {
  width: 100%;
  height: clamp(150px, 13.5vw, 190px);
  display: block;
  margin-top: 0;
  object-fit: cover;
  object-position: center 46%;
  opacity: 0.9;
  pointer-events: none;
}

.dune-divider-picture { display: block; }

.section {
  position: relative;
  padding-block: clamp(88px, 7vw, 112px);
}

.section h2 {
  max-width: 12ch;
  font-size: clamp(3.25rem, 5.2vw, 4.5rem);
  line-height: 0.98;
}

.apartment { background: var(--canvas); }

.photo-story {
  display: grid;
  gap: clamp(58px, 5vw, 76px);
  margin-block: 0;
  padding: 0;
  list-style: none;
}

.photo-chapter {
  display: grid;
  grid-template-columns: minmax(290px, 0.76fr) minmax(0, 1.24fr);
  gap: clamp(52px, 7vw, 106px);
  align-items: center;
}

.photo-chapter--image-left {
  grid-template-columns: minmax(0, 1.22fr) minmax(280px, 0.78fr);
}

.photo-chapter--image-left .photo-chapter__visual {
  grid-column: 1;
  grid-row: 1;
}

.photo-chapter--image-left .photo-chapter__copy {
  grid-column: 2;
  grid-row: 1;
}

.photo-chapter__copy {
  width: min(100%, 390px);
}

.photo-chapter--copy-left .photo-chapter__copy { justify-self: start; }
.photo-chapter--image-left .photo-chapter__copy { justify-self: end; }

.chapter-number {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 17px;
  color: var(--sand-ink);
  font-size: 11px;
  font-weight: 730;
  letter-spacing: 0.08em;
  line-height: 1;
}

.chapter-number::after {
  width: 24px;
  height: 1px;
  background: var(--sand);
  content: "";
}

.photo-chapter__copy :is(h2, h3) {
  margin: 0;
  max-width: 12ch;
  color: var(--charcoal);
  font-size: clamp(3.25rem, 5.2vw, 4.5rem);
  font-weight: 470;
  letter-spacing: -0.045em;
  line-height: 0.98;
  text-wrap: balance;
}

.photo-chapter__copy p {
  max-width: 39ch;
  margin: 19px 0 0;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.7;
}

.detail-link {
  position: relative;
  min-height: 44px;
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 14px;
  padding-bottom: 4px;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 680;
  line-height: 1.45;
  text-decoration: none;
  transform: translateY(0);
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
}

.detail-link::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  background: var(--sand-ink);
  content: "";
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.detail-link span:last-child {
  color: var(--sand-ink);
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.detail-link:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left center;
}

.gallery-button {
  display: block;
  color: inherit;
  text-decoration: none;
}

.photo-chapter__visual {
  width: min(100%, 650px);
}

.photo-chapter--copy-left .photo-chapter__visual { justify-self: end; }
.photo-chapter--image-left .photo-chapter__visual { justify-self: start; }

.photo-chapter__frame { border-radius: var(--radius-sm); }
.photo-chapter__frame--landscape { aspect-ratio: 4 / 3; }
.photo-chapter__visual--wide { width: min(100%, 720px); }

.amenities {
  padding-block: clamp(62px, 6vw, 82px);
  background: var(--surface);
}

.amenities__layout {
  display: grid;
  grid-template-columns: minmax(220px, 0.72fr) minmax(0, 2.28fr);
  gap: clamp(42px, 6vw, 86px);
  align-items: start;
}

.amenities__intro h2 {
  max-width: 8ch;
  font-size: clamp(2.25rem, 3.5vw, 3.2rem);
  line-height: 1.02;
}

.amenities__list {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border-left: 1px solid var(--line);
}

.amenity-item {
  min-width: 0;
  padding-inline: clamp(22px, 2.6vw, 38px);
  border-right: 1px solid var(--line);
}

.amenity-icon {
  width: 28px;
  height: 28px;
  margin-bottom: 19px;
  opacity: 0.76;
  filter: sepia(1) saturate(2.2) hue-rotate(350deg) brightness(0.82);
}

.amenity-item h3 {
  margin: 0;
  color: var(--charcoal);
  font-size: 16px;
  font-weight: 720;
  letter-spacing: -0.015em;
  line-height: 1.3;
}

.amenity-item p {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.location { background: var(--canvas); }

.location__layout {
  display: grid;
  grid-template-columns: minmax(300px, 0.78fr) minmax(0, 1.22fr);
  column-gap: clamp(56px, 9vw, 132px);
  row-gap: 0;
  align-items: center;
}

.location__media {
  width: min(100%, 520px);
  aspect-ratio: 1 / 1;
  border-radius: var(--radius-sm);
  grid-column: 1;
  grid-row: 1;
}

.location__media img { object-position: center 42%; }

.location__copy {
  width: min(100%, 660px);
  grid-column: 2;
  grid-row: 1;
}
.location__copy h2 { max-width: 12ch; }

.location__copy > p {
  max-width: 57ch;
  margin: 27px 0 0;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.72;
}

.location__copy address {
  margin-top: 27px;
  color: var(--charcoal);
  font-size: 14px;
  font-style: normal;
  font-weight: 720;
}

.location__places {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin: 0;
  padding: 0;
  border-top: 1px solid var(--line-strong);
  list-style: none;
}

.location__places > li { min-width: 0; }

.location-place {
  appearance: none;
  width: 100%;
  min-height: 60px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    "name distance"
    "status status";
  column-gap: 12px;
  row-gap: 1px;
  align-items: center;
  padding: 9px 8px;
  border: 0;
  border-bottom: 1px solid var(--line);
  border-radius: 0;
  background: transparent;
  color: var(--charcoal-soft);
  font-size: 13px;
  font-weight: 620;
  text-align: left;
  cursor: pointer;
  transform: scale(1);
  transition:
    color 170ms ease,
    padding-inline 220ms var(--ease-out),
    background-color 170ms ease,
    transform 120ms var(--ease-out);
}

.location-place:disabled { cursor: default; }

.location-place__label {
  display: contents;
}

.location-place__name {
  min-width: 0;
  grid-area: name;
  line-height: 1.35;
}

.location-place__status {
  min-width: 0;
  display: flex;
  grid-area: status;
  flex-wrap: wrap;
  align-items: center;
  gap: 1px 6px;
}

.location-place__action {
  width: fit-content;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 680;
  letter-spacing: 0.025em;
  line-height: 1.35;
}

.location-place__action::before {
  width: 11px;
  height: 11px;
  flex: 0 0 auto;
  background: currentColor;
  content: "";
  -webkit-mask: url("assets/icons/map-pin-filled.svg") center / contain no-repeat;
  mask: url("assets/icons/map-pin-filled.svg") center / contain no-repeat;
}

.location-place__action::after {
  content: "→";
  display: inline-block;
  transition: transform 180ms var(--ease-out);
}

.location-place:disabled .location-place__action { display: none; }

.location-place__time {
  display: none;
  color: var(--sand-ink);
  font-size: 10px;
  font-weight: 680;
  line-height: 1.35;
  white-space: nowrap;
}

.location-place strong {
  grid-area: distance;
  justify-self: end;
  flex: 0 0 auto;
  color: var(--charcoal);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  font-weight: 740;
}

.location-place.is-active {
  background: var(--sand-soft);
  color: var(--sand-ink);
}

.location-place.is-active strong,
.location-place.is-active .location-place__action { color: var(--sand-ink); }

.location-place.is-active .location-place__time { display: inline; }

.location-place:focus-visible { outline-offset: -3px; }

.location-place:active:not(:disabled) { transform: scale(0.985); }

.location-map__pin:disabled { cursor: default; }

.location-map-scroll {
  position: relative;
  grid-column: 1 / -1;
  grid-row: 2;
  width: min(100%, 1180px);
  margin: clamp(22px, 2.6vw, 36px) auto 0;
}

.location-map {
  width: 100%;
  margin: 0;
}

.location-map__intro {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px 20px;
  margin-bottom: 14px;
  padding-top: 22px;
  border-top: 1px solid var(--line-strong);
}

.location-map__intro h3 {
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(1.55rem, 2.2vw, 2rem);
  font-weight: 520;
  letter-spacing: -0.035em;
  line-height: 1.05;
}

.location-map__legend {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  padding: 7px 10px 7px 8px;
  border: 1px solid rgb(212 185 143 / 72%);
  border-radius: var(--radius-sm);
  background: var(--sand-soft);
  box-shadow: 0 7px 18px rgb(52 43 32 / 8%);
  color: var(--charcoal-soft);
  font-size: 11px;
  line-height: 1.35;
}

.location-map__legend strong {
  color: var(--charcoal);
  font-size: 12px;
  font-weight: 740;
}

.location-map__legend-icon {
  flex: 0 0 auto;
  width: 22px;
  height: 22px;
  background: var(--sand-ink);
  -webkit-mask: url("assets/icons/home.svg") center / contain no-repeat;
  mask: url("assets/icons/home.svg") center / contain no-repeat;
}

.location-map__body {
  display: grid;
  grid-template-columns: minmax(220px, 258px) minmax(0, 1fr);
  gap: clamp(22px, 3vw, 38px);
  align-items: start;
}

.location-map__controls {
  min-width: 0;
}

.location-map__stage {
  position: relative;
  aspect-ratio: 1200 / 650;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  isolation: isolate;
}

.location-map__stage::after {
  position: absolute;
  z-index: 1;
  inset: 0;
  background: rgb(212 185 143 / 8%);
  content: "";
  pointer-events: none;
}

.location-map__stage picture,
.location-map__image {
  width: 100%;
  height: 100%;
}

.location-map__stage picture { display: block; }

.location-map__image {
  object-fit: cover;
  filter: grayscale(0.52) sepia(0.16) saturate(0.72) brightness(1.03) contrast(0.94);
}

.location-map__routes {
  position: absolute;
  z-index: 2;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.location-map__route {
  opacity: 0;
  transition: opacity 90ms ease;
}

.location-map__route-path {
  fill: none;
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: none;
  vector-effect: non-scaling-stroke;
}

.location-map__route-path--casing {
  stroke: rgb(254 253 251 / 92%);
  stroke-width: 8;
}

.location-map__route-path--line {
  stroke: var(--sand-ink);
  stroke-width: 3.25;
}

.location-map__route.is-active { opacity: 1; }

.location-map__route.is-active .location-map__route-path {
  stroke-dashoffset: 0;
  transition: stroke-dashoffset 833ms linear;
}

.location:has(.location-map__pin:focus-visible, .location-place:focus-visible) .location-map__route.is-active .location-map__route-path { transition-duration: 0ms; }

.location-map__pins {
  position: absolute;
  z-index: 3;
  inset: 0;
  pointer-events: none;
}

.location-map__stage[data-state="error"] .location-map__routes,
.location-map__stage[data-state="error"] .location-map__pins { display: none; }

.location-map__pin {
  --pin-color: var(--charcoal);
  --pin-position-x: var(--pin-x);
  --pin-position-y: var(--pin-y);
  --hit-offset-x: 0px;
  --hit-offset-y: 0px;
  position: absolute;
  top: calc(var(--pin-position-y) + var(--hit-offset-y));
  left: calc(var(--pin-position-x) + var(--hit-offset-x));
  width: 44px;
  height: 44px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  color: var(--pin-color);
  pointer-events: auto;
  transform: translate(-50%, -100%);
  transform-origin: 50% 100%;
}

.location-map__pin[data-map-pin="home"] { --hit-offset-y: -6px; }
.location-map__pin[data-map-pin="pavilion"] { --hit-offset-x: -8px; }
.location-map__pin[data-map-pin="station"] { --hit-offset-x: 14px; --hit-offset-y: -12px; }
.location-map__pin[data-map-pin="town"] { --hit-offset-y: 12px; }

.location-map__pin::after {
  position: absolute;
  bottom: calc(var(--hit-offset-y) - 3px);
  left: calc(50% - var(--hit-offset-x));
  width: 34px;
  height: 34px;
  border: 2px solid var(--focus);
  border-radius: 50%;
  content: "";
  opacity: 0;
  pointer-events: none;
  transform: translateX(-50%) scale(0.92);
  transition: opacity 150ms ease, transform 180ms var(--ease-out);
}

.location-map__pin:focus-visible { outline: 0; }

.location-map__pin:focus-visible::after {
  opacity: 1;
  transform: translateX(-50%) scale(1);
}

.location-map__pin--home {
  --pin-color: var(--sand-ink);
  width: 44px;
  height: 44px;
}

.location-map__pin--home::after {
  bottom: calc(var(--hit-offset-y) - 4px);
  left: calc(50% - var(--hit-offset-x) - 5px);
  width: 42px;
  height: 42px;
}

.location-map__pin--edge-top {
  top: calc(max(var(--pin-position-y), 28px) + var(--hit-offset-y));
  transform: translate(-50%, -28px);
}

.location-map__pin--edge-top .location-map__pin-icon {
  top: calc(0px - var(--hit-offset-y));
  bottom: auto;
}

.location-map__pin--edge-top::after {
  top: calc(-3px - var(--hit-offset-y));
  bottom: auto;
}

.location-map__pin-icon {
  position: absolute;
  bottom: var(--hit-offset-y);
  left: calc(50% - var(--hit-offset-x));
  width: 28px;
  height: 28px;
  background: currentColor;
  filter: drop-shadow(0 0 2px var(--canvas));
  -webkit-mask: url("assets/icons/map-pin-filled.svg") center / contain no-repeat;
  mask: url("assets/icons/map-pin-filled.svg") center / contain no-repeat;
  transform: translateX(-50%);
  transition: color 170ms ease, transform 220ms var(--ease-out);
}

.location-map__pin-icon--home {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--sand-ink);
  box-shadow: 0 0 0 3px rgb(254 253 251 / 94%), 0 7px 18px rgb(52 43 32 / 24%);
  filter: none;
  -webkit-mask: none;
  mask: none;
  transform: translateX(calc(-50% - 5px));
}

.location-map__pin-icon--home::before {
  position: absolute;
  inset: 7px;
  background: var(--canvas);
  content: "";
  -webkit-mask: url("assets/icons/home.svg") center / contain no-repeat;
  mask: url("assets/icons/home.svg") center / contain no-repeat;
}

.location-map__pin-icon--home::after {
  position: absolute;
  inset: -4px;
  border: 1px solid rgb(118 84 47 / 55%);
  border-radius: 50%;
  content: "";
  opacity: 0;
  pointer-events: none;
}

.reveal-enabled .location-map.is-revealed .location-map__pin-icon--home::after {
  animation: location-home-arrival 1100ms var(--ease-out) 260ms both;
}

@keyframes location-home-arrival {
  0% { opacity: 0; transform: scale(0.86); }
  28% { opacity: 0.48; }
  100% { opacity: 0; transform: scale(1.38); }
}

.location-map__pin.is-active { --pin-color: var(--sand-ink); z-index: 2; }

.location-map__pin.is-active .location-map__pin-icon,
.location-map__pin:focus-visible .location-map__pin-icon {
  transform: translate(-50%, -3px) scale(1.08);
}

.location-map__pin--home.is-active .location-map__pin-icon,
.location-map__pin--home:focus-visible .location-map__pin-icon {
  transform: translateX(calc(-50% - 5px)) scale(1.06);
}

.location-map__tooltip {
  --tooltip-shift-x: 0px;
  --tooltip-shift-y: 0px;
  position: absolute;
  left: calc(50% - var(--hit-offset-x));
  bottom: calc(100% + 5px + var(--hit-offset-y));
  width: max-content;
  max-width: min(220px, calc(100vw - 32px));
  min-height: 30px;
  display: flex;
  align-items: center;
  padding: 6px 9px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: rgb(254 253 251 / 96%);
  box-shadow: 0 9px 24px rgb(52 43 32 / 12%);
  color: var(--charcoal);
  font-size: 11px;
  font-weight: 720;
  line-height: 1.25;
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, 0);
  transition: opacity 160ms ease;
  translate: var(--tooltip-shift-x) var(--tooltip-shift-y);
  white-space: normal;
}

.location-map__pin--tooltip-below .location-map__tooltip {
  top: calc(100% + 5px - var(--hit-offset-y));
  bottom: auto;
  transform: translate(-50%, 0);
}

.location-map__pin--tooltip-left .location-map__tooltip {
  top: calc(50% - var(--hit-offset-y));
  right: calc(100% + 5px + var(--hit-offset-x));
  bottom: auto;
  left: auto;
  transform: translate(0, -50%);
}

.location-map__pin--tip-left .location-map__tooltip { left: calc(28% - var(--hit-offset-x)); }
.location-map__pin--tip-right .location-map__tooltip { left: calc(72% - var(--hit-offset-x)); }

.location-map__pin:focus-visible .location-map__tooltip {
  opacity: 1;
  transform: translate(-50%, 0);
}

.location-map__pin--tooltip-left:focus-visible .location-map__tooltip { transform: translate(0, -50%); }
.location-map__pin--tooltip-below:focus-visible .location-map__tooltip { transform: translate(-50%, 0); }

.location-map__credit {
  position: absolute;
  right: 0;
  bottom: 0;
  z-index: 4;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  padding: 5px 9px;
  background: rgb(254 253 251 / 94%);
  color: var(--charcoal-soft);
  font-size: 10px;
  font-weight: 620;
  text-underline-offset: 3px;
}

.prices {
  position: relative;
  border-top: 1px solid var(--line);
  background: var(--canvas);
}

.legacy-anchor {
  display: block;
  height: 0;
  scroll-margin-top: calc(var(--header-height) + 18px);
}

.prices__layout {
  display: grid;
  grid-template-columns: minmax(260px, 0.76fr) minmax(0, 1.24fr);
  column-gap: clamp(58px, 9vw, 132px);
  row-gap: clamp(40px, 3vw, 56px);
  align-items: start;
}

.prices__details { min-width: 0; }

.prices__calculator {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 680px) minmax(280px, 440px);
  justify-content: space-between;
  gap: clamp(32px, 5vw, 80px);
  align-items: start;
  padding-top: clamp(38px, 4.5vw, 58px);
  border-top: 1px solid var(--line-strong);
}

.prices__calculator-copy { min-width: 0; }

.prices__calculator h3 {
  max-width: 15ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(2.15rem, 3.25vw, 3.15rem);
  font-weight: 510;
  letter-spacing: -0.04em;
  line-height: 1.02;
  text-wrap: balance;
}

.prices__calculator-copy > p:last-child {
  max-width: 56ch;
  margin: 18px 0 0;
  color: var(--charcoal-soft);
  font-size: 15px;
  line-height: 1.68;
}

.prices__calculator-action { min-width: 0; }

.prices__calculator-button {
  width: 100%;
  min-height: 64px;
  justify-content: space-between;
  gap: 18px;
  padding-inline: clamp(21px, 3vw, 28px);
  text-align: left;
}

.prices__calculator-arrow {
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.prices__calculator-note {
  margin: 14px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.prices__intro h2 { max-width: 9ch; }

.prices__intro p {
  max-width: 40ch;
  margin: 25px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.7;
}

.prices__season-link {
  min-height: 44px;
  width: fit-content;
  display: inline-flex;
  align-items: center;
  margin-top: 14px;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 680;
  text-decoration: none;
  transform: translateY(0);
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
}

.prices__season-content {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding-bottom: 4px;
}

.prices__season-content::after {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  height: 1px;
  background: var(--sand-ink);
  content: "";
  opacity: 1;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.prices__season-arrow {
  color: var(--sand-ink);
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.prices__season-link:focus-visible .prices__season-content::after {
  opacity: 1;
  transform: scaleX(1);
  transform-origin: left center;
}

.price-ledger {
  margin: 0;
  border-top: 1px solid var(--line-strong);
  font-variant-numeric: tabular-nums;
}

.price-ledger__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 30px;
  align-items: center;
  padding-block: clamp(20px, 2.3vw, 30px);
  border-bottom: 1px solid var(--line);
}

.price-ledger dt {
  color: var(--charcoal);
  font-size: clamp(1.05rem, 1.7vw, 1.35rem);
  font-weight: 660;
  letter-spacing: -0.02em;
}

.price-ledger dd {
  display: grid;
  justify-items: end;
  gap: 5px;
  margin: 0;
  color: var(--charcoal);
  text-align: right;
}

.price-ledger dd span {
  font-size: clamp(2rem, 3.3vw, 3rem);
  font-weight: 510;
  letter-spacing: -0.035em;
  line-height: 1;
  white-space: nowrap;
}

.price-ledger dd small {
  max-width: 26ch;
  color: var(--muted);
  font-size: 12px;
  font-weight: 620;
  line-height: 1.2;
}

.cost-breakdowns {
  margin-top: 18px;
  border-top: 1px solid var(--line-strong);
}

.additional-costs {
  border-bottom: 1px solid var(--line-strong);
}

.additional-costs summary {
  min-height: 64px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 8px 2px;
  cursor: pointer;
  list-style: none;
}

.additional-costs summary::-webkit-details-marker { display: none; }

.additional-costs summary:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

.additional-costs__title {
  color: var(--charcoal);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
}

.additional-costs__action {
  display: inline-flex;
  align-items: center;
  flex: 0 0 auto;
  gap: 12px;
  color: var(--sand-ink);
  font-size: 12px;
  font-weight: 700;
}

.additional-costs__hide { display: none; }
.additional-costs[open] .additional-costs__show { display: none; }
.additional-costs[open] .additional-costs__hide { display: inline; }

.additional-costs__chevron {
  width: 9px;
  height: 9px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 220ms var(--ease-out);
}

.additional-costs[open] .additional-costs__chevron { transform: translateY(2px) rotate(225deg); }

.additional-costs__body {
  padding: 0 2px 28px;
  border-top: 1px solid var(--line);
}

.additional-costs__intro {
  max-width: 62ch;
  margin: 20px 0 0;
  color: var(--charcoal-soft);
  font-size: 14px;
  line-height: 1.68;
}

.additional-costs__list {
  margin: 20px 0 0;
  border-top: 1px solid var(--line);
  font-variant-numeric: tabular-nums;
}

.additional-costs__row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 28px;
  align-items: start;
  padding-block: 17px;
  border-bottom: 1px solid var(--line);
}

.additional-costs__row dt,
.additional-costs__row dd {
  margin: 0;
}

.additional-costs__row dt {
  display: grid;
  gap: 5px;
  color: var(--charcoal);
  font-size: 14px;
  font-weight: 700;
  line-height: 1.35;
}

.additional-costs__row dt small,
.additional-costs__row dd small {
  color: var(--muted);
  font-size: 12px;
  font-weight: 450;
  line-height: 1.55;
}

.additional-costs__row dt small { max-width: 54ch; }

.additional-costs__row dd {
  display: grid;
  justify-items: end;
  gap: 3px;
  color: var(--charcoal);
  text-align: right;
}

.additional-costs__row dd strong {
  font-size: 16px;
  font-weight: 680;
  line-height: 1.2;
  white-space: nowrap;
}

.additional-costs__rates { gap: 11px !important; }

.additional-costs__rates > span {
  display: grid;
  justify-items: end;
  gap: 2px;
}

.additional-costs__note {
  max-width: 64ch;
  margin: 18px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.additional-costs__sources {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 20px;
  margin: 12px 0 0;
  font-size: 12px;
  font-weight: 670;
}

.additional-costs__sources a {
  color: var(--sand-ink);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}

.calculator-main {
  min-height: calc(100dvh - var(--header-height));
  padding-block: clamp(42px, 6vw, 92px);
}

.calculator-main:focus { outline: none; }
.calculator-main > .breadcrumbs { margin-bottom: clamp(24px, 3vw, 40px); }

.stay-calculator {
  grid-column: 1 / -1;
  width: 100%;
  display: grid;
  grid-template-columns: minmax(210px, 0.7fr) minmax(420px, 1.25fr) minmax(300px, 0.85fr);
  gap: clamp(32px, 3vw, 54px);
  align-items: start;
  padding-block: clamp(42px, 4vw, 62px);
  border-block: 1px solid var(--line-strong);
}

.stay-calculator__eyebrow {
  margin: 0 0 14px;
  color: var(--sand-ink);
  font-size: 11px;
  font-weight: 740;
  letter-spacing: 0.1em;
  line-height: 1.4;
  text-transform: uppercase;
}

.stay-calculator__title {
  max-width: 14ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(2rem, 2.7vw, 3rem);
  font-weight: 510;
  letter-spacing: -0.04em;
  line-height: 1.04;
  text-wrap: balance;
}

.stay-calculator__intro > p:not(.stay-calculator__eyebrow) {
  max-width: 42ch;
  margin: 20px 0 0;
  color: var(--charcoal-soft);
  font-size: 14px;
  line-height: 1.68;
}

.stay-calculator__intro .stay-calculator__privacy {
  margin-top: 15px;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.62;
}

.stay-calculator__form {
  min-width: 0;
  display: grid;
  gap: 28px;
}

.stay-calculator__fieldset {
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}

.stay-calculator__fieldset legend {
  width: 100%;
  margin: 0 0 12px;
  padding: 0;
  color: var(--charcoal);
  font-size: 14px;
  font-weight: 720;
  line-height: 1.4;
}

.stay-calculator__hint {
  margin: -5px 0 13px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.stay-calculator__fields {
  display: grid;
  gap: 12px;
}

.stay-calculator__fields--guests {
  gap: 0;
  border-top: 1px solid var(--line);
}

.stay-calendar {
  position: relative;
  min-width: 0;
}

.stay-calendar__trigger {
  width: 100%;
  min-width: 0;
  min-height: 66px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 11px 15px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--charcoal);
  text-align: left;
  transition: border-color 160ms ease, background-color 160ms ease, box-shadow 160ms ease;
}

.stay-calendar__trigger-copy {
  min-width: 0;
  display: grid;
  gap: 3px;
}

.stay-calendar__trigger-label {
  color: var(--muted);
  font-size: 10px;
  font-weight: 720;
  letter-spacing: 0.06em;
  line-height: 1.35;
  text-transform: uppercase;
}

.stay-calendar__trigger-value {
  overflow-wrap: anywhere;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
  font-weight: 650;
  line-height: 1.35;
}

.stay-calendar__trigger-icon {
  width: 22px;
  height: 22px;
  flex: 0 0 auto;
  fill: none;
  stroke: var(--sand-ink);
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.5;
}

.stay-calendar__trigger:hover,
.stay-calendar.is-open .stay-calendar__trigger { border-color: var(--sand-ink); }

.stay-calendar__trigger[aria-invalid="true"] {
  border-color: var(--error);
  background: #fff8f8;
}

.stay-calendar__hint {
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.5;
}

.stay-calendar__popover {
  position: absolute;
  z-index: 45;
  top: calc(100% + 10px);
  inset-inline-start: 0;
  width: min(100%, 420px);
  padding: 18px;
  border-radius: var(--radius-md);
  background: var(--canvas);
  box-shadow: var(--shadow-menu-popover);
  animation: stay-calendar-open 180ms var(--ease-out) both;
  transform-origin: top left;
}

@keyframes stay-calendar-open {
  from { opacity: 0; filter: blur(2px); transform: translateY(-6px); }
  to { opacity: 1; filter: blur(0); transform: translateY(0); }
}

.stay-calendar__header {
  min-height: 48px;
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) 44px;
  gap: 10px;
  align-items: center;
}

.stay-calendar__heading {
  min-width: 0;
  display: grid;
  gap: 2px;
  text-align: center;
}

.stay-calendar__prompt,
.stay-calendar__month { margin: 0; }

.stay-calendar__prompt {
  color: var(--sand-ink);
  font-size: 10px;
  font-weight: 740;
  letter-spacing: 0.06em;
  line-height: 1.35;
  text-transform: uppercase;
}

.stay-calendar__month {
  color: var(--charcoal);
  font-size: 15px;
  font-weight: 710;
  line-height: 1.35;
}

.stay-calendar__rule {
  margin: 10px 0 2px;
  padding: 8px 10px;
  border-block: 1px solid var(--line);
  color: var(--sand-ink);
  font-size: 11px;
  font-weight: 650;
  line-height: 1.45;
  text-align: center;
  transition: background-color 160ms ease, border-color 160ms ease;
}

.stay-calendar__nav {
  width: 44px;
  height: 44px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--canvas);
  color: var(--charcoal);
  transition: border-color 160ms ease, background-color 160ms ease, color 160ms ease;
}

.stay-calendar__nav span {
  width: 8px;
  height: 8px;
  border-bottom: 1.5px solid currentColor;
  border-left: 1.5px solid currentColor;
  transform: translateX(2px) rotate(45deg);
}

.stay-calendar__nav--next span { transform: translateX(-2px) rotate(225deg); }

.stay-calendar__nav:disabled {
  cursor: not-allowed;
  color: var(--line-strong);
  background: var(--surface);
}

.stay-calendar__weekdays,
.stay-calendar__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.stay-calendar__weekdays {
  margin-top: 12px;
  color: var(--muted);
  font-size: 10px;
  font-weight: 680;
  line-height: 1;
  text-align: center;
}

.stay-calendar__weekdays span {
  min-height: 28px;
  display: grid;
  place-items: center;
}

.stay-calendar__day,
.stay-calendar__blank {
  min-width: 0;
  min-height: 44px;
}

.stay-calendar__day {
  position: relative;
  display: grid;
  place-items: center;
  padding: 0;
  border: 0;
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--charcoal);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  font-weight: 620;
  line-height: 1;
  transition: background-color 140ms ease, color 140ms ease, opacity 140ms ease;
}

.stay-calendar__day.is-in-range {
  border-radius: 0;
  background: var(--sand-soft);
  color: var(--charcoal);
}

.stay-calendar__day:is(.is-range-start, .is-range-end) {
  background: var(--sand-ink);
  color: var(--canvas);
  font-weight: 760;
}

.stay-calendar__day:disabled {
  cursor: not-allowed;
  color: var(--muted);
  background: transparent;
  opacity: 0.32;
}

.stay-calendar__day.is-past {
  color: var(--line-strong);
  background: var(--surface);
  opacity: 0.58;
  -webkit-text-fill-color: currentColor;
}

.stay-calendar__day.is-minimum-stay-blocked { opacity: 0.46; }

.stay-calendar__day.is-range-start:disabled { opacity: 1; }

.stay-calendar__day:focus-visible {
  z-index: 1;
  outline-offset: -3px;
}

.stay-calculator__guest-row {
  min-width: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding-block: 13px;
  border-bottom: 1px solid var(--line);
}

.stay-calculator__guest-label {
  min-width: 0;
  display: grid;
  gap: 2px;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 690;
  line-height: 1.3;
}

.stay-calculator__guest-label small {
  color: var(--muted);
  font-size: 10px;
  font-weight: 500;
  line-height: 1.4;
}

.stay-calculator__stepper {
  display: grid;
  grid-template-columns: 44px 54px 44px;
  align-items: stretch;
  overflow: hidden;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: var(--canvas);
}

.stay-calculator__stepper button,
.stay-calculator__stepper input {
  min-width: 0;
  min-height: 46px;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--charcoal);
  font: inherit;
}

.stay-calculator__stepper button {
  display: grid;
  place-items: center;
  padding: 0;
  cursor: pointer;
  font-size: 20px;
  font-weight: 450;
  line-height: 1;
  transition: background-color 160ms ease, color 160ms ease;
}

.stay-calculator__stepper button:first-child { border-right: 1px solid var(--line); }
.stay-calculator__stepper button:last-child { border-left: 1px solid var(--line); }

.stay-calculator__stepper button:disabled {
  cursor: not-allowed;
  color: var(--line-strong);
  background: var(--surface);
}

.stay-calculator__stepper button:focus-visible,
.stay-calculator__stepper input:focus-visible {
  position: relative;
  z-index: 1;
  outline: 3px solid var(--focus);
  outline-offset: -3px;
}

.stay-calculator__stepper input {
  width: 100%;
  padding: 0 5px;
  appearance: textfield;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
  font-weight: 690;
  line-height: 1;
  text-align: center;
}

.stay-calculator__stepper input[aria-invalid="true"] { background: #fff8f8; color: var(--error); }
.stay-calculator__stepper input::-webkit-inner-spin-button,
.stay-calculator__stepper input::-webkit-outer-spin-button { margin: 0; appearance: none; }

.stay-calculator__error {
  margin: -8px 0 0;
  padding-left: 12px;
  border-left: 2px solid var(--error);
  color: var(--error);
  font-size: 13px;
  font-weight: 630;
  line-height: 1.55;
}

.stay-calculator__submit {
  width: fit-content;
  min-width: 210px;
  justify-content: center;
}

.stay-calculator__noscript {
  margin: 0;
  color: var(--error);
  font-size: 12px;
}

.stay-calculator__result {
  min-width: 0;
  min-height: 0;
  align-self: start;
  padding: clamp(24px, 2.5vw, 34px);
  border: 1px solid var(--sand);
  border-radius: var(--radius-sm);
  background: var(--sand-soft);
}

.stay-calculator__result-label {
  margin: 0;
  color: var(--sand-ink);
  font-size: 11px;
  font-weight: 740;
  letter-spacing: 0.09em;
  line-height: 1.4;
  text-transform: uppercase;
}

.stay-calculator__empty p {
  max-width: 28ch;
  margin: 34px 0 0;
  color: var(--charcoal-soft);
  font-size: 15px;
  line-height: 1.65;
}

.stay-calculator__total {
  display: block;
  margin-top: 18px;
  color: var(--charcoal);
  font-size: clamp(2.45rem, 4vw, 4rem);
  font-weight: 520;
  font-variant-numeric: tabular-nums;
  letter-spacing: -0.05em;
  line-height: 1;
  white-space: nowrap;
}

.stay-calculator__summary {
  margin: 13px 0 0;
  color: var(--charcoal-soft);
  font-size: 12px;
  font-weight: 660;
  font-variant-numeric: tabular-nums;
  line-height: 1.5;
}

.stay-calculator__breakdown {
  margin-top: 25px;
  border-top: 1px solid rgb(118 84 47 / 36%);
  border-bottom: 1px solid rgb(118 84 47 / 36%);
}

.stay-calculator__breakdown summary {
  min-height: 54px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  cursor: pointer;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 710;
  list-style: none;
}

.stay-calculator__breakdown summary::-webkit-details-marker { display: none; }

.stay-calculator__breakdown summary:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

.stay-calculator__chevron {
  width: 9px;
  height: 9px;
  flex: 0 0 auto;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 220ms var(--ease-out);
}

.stay-calculator__breakdown[open] .stay-calculator__chevron { transform: translateY(2px) rotate(225deg); }

.stay-calculator__breakdown-body { padding-bottom: 15px; }

.stay-calculator__ledger {
  margin: 0;
  font-variant-numeric: tabular-nums;
}

.stay-calculator__ledger > div {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 18px;
  align-items: start;
  padding-block: 12px;
  border-top: 1px solid rgb(118 84 47 / 22%);
}

.stay-calculator__ledger dt,
.stay-calculator__ledger dd { margin: 0; }

.stay-calculator__ledger dt {
  display: grid;
  gap: 3px;
  color: var(--charcoal);
  font-size: 12px;
  font-weight: 680;
  line-height: 1.4;
}

.stay-calculator__ledger dt small {
  max-width: 32ch;
  color: var(--muted);
  font-size: 10px;
  font-weight: 480;
  line-height: 1.5;
}

.stay-calculator__ledger dd {
  color: var(--charcoal);
  font-size: 12px;
  font-weight: 720;
  line-height: 1.4;
  text-align: right;
  white-space: nowrap;
}

.stay-calculator__provisional {
  margin: 18px 0 0;
  padding-left: 11px;
  border-left: 2px solid var(--sand-ink);
  color: var(--charcoal-soft);
  font-size: 11px;
  line-height: 1.55;
}

.stay-calculator__disclaimer {
  margin: 18px 0 0;
  color: var(--muted);
  font-size: 10px;
  line-height: 1.62;
}

.calculator-costs {
  display: grid;
  grid-template-columns: minmax(220px, 0.62fr) minmax(0, 1.38fr);
  gap: clamp(44px, 7vw, 104px);
  align-items: start;
  padding-block: clamp(58px, 7vw, 104px);
  border-bottom: 1px solid var(--line-strong);
}

.calculator-costs__eyebrow {
  margin: 0 0 13px;
  color: var(--sand-ink);
  font-size: 10px;
  font-weight: 760;
  letter-spacing: 0.1em;
  line-height: 1.4;
  text-transform: uppercase;
}

.calculator-costs__intro h2 {
  max-width: 11ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(2.15rem, 3.8vw, 3.65rem);
  font-weight: 510;
  letter-spacing: -0.045em;
  line-height: 1.02;
  text-wrap: balance;
}

.calculator-costs__intro > p:last-child {
  max-width: 36ch;
  margin: 20px 0 0;
  color: var(--charcoal-soft);
  font-size: 14px;
  line-height: 1.68;
}

.calculator-costs__breakdowns {
  min-width: 0;
  margin-top: 0;
}

.booking-handoff {
  grid-column: 1 / -1;
  display: grid;
  grid-template-columns: minmax(0, 680px) minmax(360px, 620px);
  justify-content: space-between;
  gap: clamp(40px, 4vw, 72px);
  align-items: start;
  margin-top: 0;
  padding: clamp(38px, 4.5vw, 58px) clamp(28px, 5vw, 68px);
  border: 1px solid var(--sand);
  border-radius: var(--radius-sm);
  background: var(--sand-soft);
}

.booking-handoff h3 {
  max-width: 16ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(2.15rem, 3.7vw, 3.45rem);
  font-weight: 500;
  letter-spacing: -0.04em;
  line-height: 1.02;
  text-wrap: balance;
}

.booking-handoff__copy > p {
  max-width: 52ch;
  margin: 20px 0 0;
  color: var(--charcoal-soft);
  font-size: 15px;
  line-height: 1.7;
}

.booking-handoff__action {
  min-width: 0;
  padding-top: 4px;
}

.booking-handoff__button {
  width: 100%;
  min-height: 68px;
  justify-content: space-between;
  gap: 12px;
  margin-top: 0;
  padding-inline: clamp(21px, 3vw, 28px);
  font-size: 15px;
  text-align: left;
}

.booking-handoff__arrow {
  font-size: 15px;
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.booking-handoff__note {
  max-width: 68ch;
  margin: 16px 0 0;
  color: var(--sand-ink);
  font-size: 12px;
  line-height: 1.6;
}

.site-footer {
  padding: 24px 0;
  border-top: 1px solid var(--line);
  background: var(--canvas);
  color: var(--muted);
}

.footer-layout {
  min-height: 44px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 28px;
  align-items: center;
  font-size: 12px;
}

.footer-layout--home { grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); }

.footer-identity {
  min-width: 0;
  display: grid;
  justify-items: start;
  gap: 1px;
}

.footer-brand .brand__logo { height: 42px; }

.footer-copyright {
  padding-left: 2px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.35;
}

.footer-address { text-align: center; }

.footer-meta {
  min-width: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  align-items: center;
  gap: 20px;
}

.footer-meta a,
.footer-meta button {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  text-underline-offset: 4px;
}

.footer-meta button {
  padding: 0;
  border: 0;
  background: transparent;
  color: inherit;
  font-size: inherit;
  text-decoration: underline;
  text-decoration-thickness: auto;
  text-underline-offset: 4px;
}

.consent-panel {
  position: fixed;
  right: 24px;
  bottom: calc(24px + env(safe-area-inset-bottom));
  z-index: 90;
  width: min(440px, calc(100% - 48px));
  max-height: min(55dvh, 420px);
  overflow-y: auto;
  padding: 20px;
  border: 0;
  border-radius: var(--radius-md);
  background: var(--canvas);
  box-shadow: var(--shadow-menu-popover);
  color: var(--charcoal);
  overscroll-behavior: contain;
}

.consent-panel__top {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 16px;
  align-items: start;
}

.consent-panel h2 {
  margin: 0;
  font-size: 24px;
  font-weight: 590;
  letter-spacing: -0.025em;
  line-height: 1.18;
}

.consent-panel p {
  margin: 14px 0 0;
  color: var(--charcoal-soft);
  font-size: 13px;
  line-height: 1.6;
}

.consent-panel__current {
  color: var(--sand-ink) !important;
  font-weight: 700;
}

.consent-panel__link {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  margin-top: 3px;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 680;
  text-underline-offset: 4px;
}

.consent-panel__close {
  min-height: 44px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
  font-weight: 680;
  text-decoration: underline;
  text-underline-offset: 4px;
}

.consent-panel__actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin-top: 12px;
}

.consent-panel__actions .button {
  width: 100%;
  min-height: 46px;
}

.consent-panel__decline {
  border-color: var(--line-strong);
  background: var(--canvas);
}

code {
  color: var(--charcoal);
  font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
  font-size: 0.9em;
}

dialog {
  max-width: none;
  max-height: none;
  padding: 0;
  border: 1px solid var(--line);
  border-radius: var(--radius-md);
  background: var(--canvas);
  color: var(--charcoal);
}

dialog::backdrop { background: rgb(32 30 27 / 78%); }

.dialog-topbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 20px;
  padding: 17px 19px;
  border-bottom: 1px solid var(--line);
}

.dialog-topbar h2 {
  margin: 0;
  font-size: 25px;
  font-weight: 560;
  letter-spacing: -0.025em;
  line-height: 1;
}

.dialog-close,
.lightbox__actions button {
  min-height: 44px;
  padding: 0 14px;
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  background: transparent;
  color: var(--charcoal);
  font-weight: 700;
}

.dialog-close:active,
.lightbox__actions button:active { transform: scale(0.98); }

.lightbox {
  width: min(100% - 40px, 1120px);
  margin: auto;
  overscroll-behavior: contain;
}

.lightbox figure { margin: 0; padding: 21px; }
.lightbox__frame { width: 100%; height: min(68dvh, 820px); border-radius: var(--radius-sm); }
.lightbox__image { object-fit: contain !important; }

.lightbox__footer {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 20px;
  align-items: center;
  margin-top: 15px;
}

.lightbox__count { color: var(--muted); font-size: 14px; }
.lightbox__actions { display: flex; gap: 10px; }
.lightbox__actions button:disabled { cursor: not-allowed; opacity: 0.35; }

.legal-main {
  min-height: calc(100dvh - var(--header-height));
  padding-block: clamp(64px, 9vw, 120px);
}

.season-main {
  min-height: calc(100dvh - var(--header-height));
  padding-block: clamp(64px, 9vw, 120px);
}

.season-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.65fr) minmax(0, 1.35fr);
  gap: clamp(44px, 8vw, 120px);
  align-items: start;
}

.season-heading h1 {
  max-width: 8ch;
  font-size: clamp(50px, 7vw, 80px);
  line-height: 0.98;
}

.season-heading p {
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 16px;
  line-height: 1.65;
}

.season-content { max-width: 760px; }

.season-intro {
  max-width: 62ch;
  margin: 0;
  color: var(--charcoal);
  font-size: 17px;
  line-height: 1.72;
}

.season-boundary-note {
  max-width: 62ch;
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.7;
}

.season-meta {
  margin: 16px 0 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 660;
}

.season-years {
  margin-top: 36px;
  border-bottom: 1px solid var(--line-strong);
}

.season-year { border-top: 1px solid var(--line-strong); }

.season-year summary {
  min-height: 72px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 8px 2px;
  cursor: pointer;
  list-style: none;
}

.season-year summary::-webkit-details-marker { display: none; }

.season-year summary:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

.season-year__year {
  color: var(--charcoal);
  font-size: clamp(1.75rem, 3vw, 2.4rem);
  font-weight: 540;
  letter-spacing: -0.03em;
  line-height: 1;
}

.season-year__action {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  color: var(--sand-ink);
  font-size: 12px;
  font-weight: 700;
}

.season-year__hide { display: none; }
.season-year[open] .season-year__show { display: none; }
.season-year[open] .season-year__hide { display: inline; }

.season-year__chevron {
  width: 9px;
  height: 9px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: translateY(-2px) rotate(45deg);
  transition: transform 220ms var(--ease-out);
}

.season-year[open] .season-year__chevron { transform: translateY(2px) rotate(225deg); }

.season-year__body {
  padding: 0 2px 28px;
  border-top: 1px solid var(--line);
}

.season-year__note {
  margin: 20px 0 4px;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

.season-ranges {
  margin: 0;
  font-variant-numeric: tabular-nums;
}

.season-ranges > div {
  display: grid;
  grid-template-columns: minmax(150px, 0.72fr) minmax(220px, 1.28fr);
  gap: 24px;
  align-items: center;
  padding-block: 17px;
  border-bottom: 1px solid var(--line);
}

.season-ranges > div:last-child { border-bottom: 0; }

.season-ranges dt {
  color: var(--charcoal);
  font-size: 15px;
  font-weight: 690;
}

.season-ranges dd {
  display: flex;
  justify-content: flex-end;
  gap: 7px;
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.5;
  text-align: right;
}

.season-handoff {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  margin-top: 34px;
  padding-top: 26px;
  border-top: 1px solid var(--line-strong);
}

.season-handoff p {
  max-width: 42ch;
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.65;
}

.season-handoff .button { flex: 0 0 auto; }

.detail-main {
  min-height: calc(100dvh - var(--header-height));
  padding-block: 28px clamp(88px, 9vw, 128px);
}

.breadcrumbs ol {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 7px;
  margin: 0;
  padding: 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 650;
  list-style: none;
}

.breadcrumbs li + li::before {
  margin-right: 7px;
  color: var(--line-strong);
  content: "/";
}

.breadcrumbs a { text-underline-offset: 4px; }

.detail-hero {
  display: grid;
  grid-template-columns: minmax(300px, 0.82fr) minmax(0, 1.18fr);
  gap: clamp(52px, 7vw, 104px);
  align-items: center;
  padding-block: clamp(52px, 7vw, 92px) clamp(82px, 9vw, 124px);
}

.detail-hero__copy { max-width: 560px; }

.detail-hero h1,
.detail-section h2,
.detail-handoff h2 {
  margin: 0;
  color: var(--charcoal);
  font-weight: 470;
  letter-spacing: -0.04em;
  text-wrap: balance;
}

.detail-hero h1 {
  max-width: 11ch;
  font-size: clamp(3.6rem, 5.3vw, 5rem);
  line-height: 0.96;
}

.detail-hero__copy > p {
  max-width: 50ch;
  margin: 27px 0 0;
  color: var(--charcoal-soft);
  font-size: 17px;
  line-height: 1.72;
}

.detail-hero__media {
  width: 100%;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-sm);
}

.detail-hero__media--portrait {
  aspect-ratio: 1 / 1;
}

.detail-hero__media--portrait img { object-position: center 43%; }

.detail-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  margin: 32px 0 0;
  padding: 17px 0 0;
  border-top: 1px solid var(--line);
  list-style: none;
}

.detail-facts li {
  min-width: 0;
  padding-right: 14px;
  border-right: 1px solid var(--line);
}

.detail-facts li + li { padding-left: 14px; }
.detail-facts li:last-child { padding-right: 0; border-right: 0; }

.detail-facts strong,
.detail-facts span { display: block; }

.detail-facts strong {
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 730;
  line-height: 1.35;
}

.detail-facts span {
  margin-top: 4px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.4;
}

.detail-address {
  margin-top: 27px;
  color: var(--charcoal-soft);
  font-size: 14px;
  font-style: normal;
  line-height: 1.65;
}

.detail-address strong { color: var(--charcoal); font-weight: 720; }

.detail-content {
  display: grid;
  gap: clamp(86px, 9vw, 132px);
}

.detail-section {
  display: grid;
  gap: clamp(34px, 5vw, 64px);
  padding-top: clamp(42px, 5vw, 66px);
  border-top: 1px solid var(--line-strong);
}

.detail-section--split {
  grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
  gap: clamp(48px, 8vw, 116px);
}

.detail-section__heading { max-width: 640px; }

.detail-section h2 {
  max-width: 13ch;
  font-size: clamp(2.8rem, 4.5vw, 4rem);
  line-height: 0.99;
}

.detail-section__heading > p {
  max-width: 56ch;
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.72;
}

.detail-section__heading .detail-meta {
  margin-top: 13px;
  font-size: 12px;
  font-weight: 660;
}

.detail-photo-pair {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(18px, 3vw, 34px);
}

.detail-photo-pair .image-frame,
.detail-wide-photo {
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-sm);
}

.detail-wide-photo { width: min(100%, 980px); }

.detail-ledger {
  margin: 0;
  border-top: 1px solid var(--line-strong);
}

.detail-ledger > div {
  display: grid;
  grid-template-columns: minmax(150px, 0.64fr) minmax(0, 1.36fr);
  gap: 28px;
  padding-block: 19px;
  border-bottom: 1px solid var(--line);
}

.detail-ledger dt {
  color: var(--charcoal);
  font-size: 14px;
  font-weight: 710;
  line-height: 1.5;
}

.detail-ledger dd {
  margin: 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.65;
}

.detail-ledger--distances dd {
  display: grid;
  justify-items: end;
  gap: 2px;
  text-align: right;
}

.detail-ledger--distances dd strong {
  color: var(--charcoal);
  font-size: 18px;
  font-variant-numeric: tabular-nums;
  font-weight: 620;
  line-height: 1.25;
}

.detail-ledger--distances dd span { font-size: 12px; }

.detail-map { margin: 0; }

.detail-map__stage { position: relative; }

.detail-map__image {
  width: 100%;
  aspect-ratio: 1200 / 650;
  border-radius: var(--radius-sm);
}

.detail-map__home {
  position: absolute;
  top: 49%;
  left: 49.85%;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 2px solid var(--canvas);
  border-radius: 50%;
  background: var(--sand);
  transform: translate(-50%, -50%);
}

.detail-map__home img { width: 18px; height: 18px; }

.detail-map figcaption {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  margin-top: 11px;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.55;
}

.detail-map figcaption a {
  flex: 0 0 auto;
  text-underline-offset: 3px;
}

.detail-section--questions {
  grid-template-columns: minmax(220px, 0.52fr) minmax(0, 1.48fr);
  gap: clamp(48px, 8vw, 116px);
}

.detail-questions {
  margin: 0;
  border-top: 1px solid var(--line-strong);
}

.detail-questions > div {
  padding-block: 19px;
  border-bottom: 1px solid var(--line);
}

.detail-questions dt {
  color: var(--charcoal);
  font-size: 15px;
  font-weight: 710;
  line-height: 1.5;
}

.detail-questions dd {
  max-width: 64ch;
  margin: 7px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.7;
}

.detail-handoff {
  position: relative;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: clamp(32px, 6vw, 88px);
  padding: clamp(32px, 4vw, 52px);
  border-block: 1px solid var(--line-strong);
  border-left: 0;
  background: var(--surface);
}

.detail-handoff h2 {
  max-width: 17ch;
  font-size: clamp(2.1rem, 3.5vw, 3.25rem);
  line-height: 1.02;
}

.detail-handoff p {
  max-width: 54ch;
  margin: 15px 0 0;
  color: var(--muted);
  font-size: 14px;
  line-height: 1.7;
}

.detail-handoff .button { flex: 0 0 auto; }

.legal-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.65fr) minmax(0, 1.35fr);
  gap: clamp(44px, 8vw, 120px);
  align-items: start;
}

.legal-layout h1 { font-size: clamp(50px, 7vw, 88px); line-height: 0.98; }

.draft-notice {
  padding: 18px;
  border: 1px solid var(--error);
  border-radius: var(--radius-sm);
  background: rgb(143 38 55 / 6%);
  line-height: 1.65;
}

.legal-copy { max-width: 70ch; line-height: 1.75; }

.legal-meta {
  margin: 0 0 18px;
  color: var(--muted);
  font-size: 13px;
  font-weight: 650;
}

.privacy-summary {
  margin-top: 24px;
  padding: 20px 22px;
  border: 1px solid var(--line);
  border-radius: var(--radius-sm);
  background: var(--surface);
}

.privacy-summary p { margin-top: 0; color: var(--charcoal); }
.privacy-summary ul { margin-bottom: 0; padding-left: 1.2em; }

.privacy-toc {
  margin-top: 28px;
  padding-block: 18px;
  border-block: 1px solid var(--line);
}

.privacy-toc strong { color: var(--charcoal); }

.privacy-toc ol {
  columns: 2;
  gap: 34px;
  margin: 10px 0 0;
  padding-left: 1.35em;
}

.privacy-toc li { break-inside: avoid; margin-top: 3px; }
.privacy-toc a { color: var(--charcoal-soft); }

.legal-copy h2 {
  scroll-margin-top: calc(var(--header-height) + 18px);
  margin: 42px 0 12px;
  color: var(--charcoal);
  font-size: 31px;
  font-weight: 590;
  letter-spacing: -0.025em;
}

.legal-copy h3 {
  margin: 24px 0 8px;
  color: var(--charcoal);
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.012em;
}

.legal-copy p,
.legal-copy ul { color: var(--muted); }
.legal-copy li + li { margin-top: 7px; }
.legal-copy a { text-underline-offset: 4px; }

.credit-list > p:first-child {
  max-width: 58ch;
  margin-top: 0;
  color: var(--charcoal-soft);
  font-size: 17px;
}

.credit-entry {
  scroll-margin-top: calc(var(--header-height) + 20px);
  padding-block: 27px;
  border-bottom: 1px solid var(--line);
}

.credit-entry:first-of-type {
  margin-top: 30px;
  border-top: 1px solid var(--line-strong);
}

.credit-entry h2 {
  margin: 0 0 9px;
  font-size: 1.55rem;
  line-height: 1.16;
}

.credit-entry p { margin: 0; }
.header-back { margin-left: auto; }
.header-back__short { display: none; }

.not-found {
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(300px, 1.2fr);
  gap: clamp(44px, 8vw, 120px);
  align-items: center;
  padding-block: 48px;
}

.not-found h1 { max-width: 10ch; font-size: clamp(52px, 7vw, 88px); line-height: 0.98; }
.not-found p { max-width: 48ch; margin: 24px 0 28px; color: var(--muted); font-size: 17px; line-height: 1.7; }
.not-found__image { aspect-ratio: 4 / 3; border-radius: var(--radius-sm); }

.hero__guide-link {
  max-width: 52ch;
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.65;
}

.hero__guide-link a {
  position: relative;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 7px;
  color: var(--charcoal);
  font-weight: 720;
  text-decoration: none;
  transform: translateY(0);
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
}

.hero__guide-link a::after,
.guide-entry > a::after,
.guide-related a::after {
  position: absolute;
  right: 0;
  bottom: 4px;
  left: 0;
  height: 1px;
  background: var(--sand-ink);
  content: "";
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.hero__guide-link a:focus-visible::after,
.guide-entry > a:focus-visible::after,
.guide-related a:focus-visible::after {
  transform: scaleX(1);
  transform-origin: left center;
}

.hero__guide-link a > span[aria-hidden="true"],
.guide-entry > a > span[aria-hidden="true"],
.guide-related a > span[aria-hidden="true"] {
  transition: transform var(--link-wipe-duration) var(--ease-out);
}

.hero__guide-link a:focus-visible,
.guide-entry > a:focus-visible,
.guide-related a:focus-visible {
  color: var(--sand-ink);
  transform: translateY(-2px);
}

.hero__guide-link a:focus-visible > span[aria-hidden="true"],
.guide-entry > a:focus-visible > span[aria-hidden="true"],
.guide-related a:focus-visible > span[aria-hidden="true"] {
  transform: translateX(3px);
}

.guide-main {
  min-height: calc(100dvh - var(--header-height));
  padding-block: 28px clamp(92px, 9vw, 132px);
}

.guide-page {
  --guide-feature: 1420px;
  --guide-reading: 760px;
  --guide-rail: 220px;
  --guide-rail-gap: clamp(54px, 6vw, 92px);
  --guide-handoff: var(--guide-feature);
}

.guide-hero {
  display: grid;
  grid-template-columns: minmax(300px, 0.86fr) minmax(0, 1.14fr);
  gap: clamp(52px, 7vw, 104px);
  align-items: center;
  padding-block: clamp(52px, 7vw, 92px) clamp(82px, 9vw, 124px);
}

.guide-hero__copy { max-width: 590px; }

.guide-hero h1,
.guide-index h2,
.guide-article__header h1,
.guide-related h2,
.article-sources h2 {
  margin: 0;
  color: var(--charcoal);
  font-weight: 470;
  letter-spacing: -0.04em;
  text-wrap: balance;
}

.guide-hero h1 {
  max-width: 11ch;
  font-size: clamp(3.6rem, 5.3vw, 5rem);
  line-height: 0.96;
}

.guide-hub-page .guide-hero h1 { max-width: 14ch; }

.guide-hero__copy > p:not(.guide-reviewed) {
  max-width: 53ch;
  margin: 27px 0 0;
  color: var(--charcoal-soft);
  font-size: 17px;
  line-height: 1.72;
}

.guide-reviewed {
  margin: 16px 0 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 660;
}

.guide-hero__media {
  width: 100%;
  max-width: 1000px;
  justify-self: end;
  aspect-ratio: 4 / 3;
  border-radius: var(--radius-sm);
}

.guide-hero__media--portrait {
  max-width: 560px;
  aspect-ratio: 4 / 5;
}

.guide-hub-page .guide-hero__media img { object-position: center 54%; }

.guide-index {
  display: grid;
  grid-template-columns: minmax(280px, 0.52fr) minmax(0, 1.48fr);
  gap: clamp(52px, 8vw, 118px);
  padding-top: clamp(52px, 6vw, 76px);
  border-top: 1px solid var(--line-strong);
}

.guide-index__heading { max-width: 470px; }

.guide-index h2 {
  max-width: 11ch;
  font-size: clamp(2.8rem, 4.4vw, 4rem);
  line-height: 0.99;
}

.guide-index__heading p {
  max-width: 44ch;
  margin: 23px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.72;
}

.guide-list { border-top: 1px solid var(--line-strong); }

.guide-entry {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: clamp(32px, 4vw, 58px);
  align-items: center;
  padding-block: clamp(30px, 3vw, 42px);
  border-bottom: 1px solid var(--line);
}

.guide-entry h3 {
  max-width: 30ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(1.55rem, 2.1vw, 2.08rem);
  font-weight: 520;
  letter-spacing: -0.03em;
  line-height: 1.12;
  text-wrap: balance;
}

.guide-entry p {
  max-width: 65ch;
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.7;
}

.guide-entry > a {
  position: relative;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: var(--charcoal);
  font-size: 13px;
  font-weight: 730;
  text-decoration: none;
  transform: translateY(0);
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
  white-space: nowrap;
}

.island-moments {
  width: min(100%, var(--guide-handoff));
  margin: clamp(92px, 10vw, 142px) auto 0;
  padding-top: clamp(52px, 6vw, 76px);
  border-top: 1px solid var(--line-strong);
}

.island-moments__heading {
  display: grid;
  grid-template-columns: minmax(180px, 0.5fr) minmax(0, 1.5fr);
  column-gap: clamp(44px, 8vw, 112px);
  align-items: start;
  margin-bottom: clamp(38px, 5vw, 66px);
}

.island-moments__eyebrow {
  margin: 8px 0 0;
  color: var(--sand-ink);
  font-size: 12px;
  font-weight: 760;
  letter-spacing: 0.12em;
  line-height: 1.4;
  text-transform: uppercase;
}

.island-moments__heading h2 {
  max-width: 13ch;
  margin: 0;
  color: var(--charcoal);
  font-size: clamp(2.8rem, 4.4vw, 4rem);
  font-weight: 470;
  letter-spacing: -0.04em;
  line-height: 0.99;
  text-wrap: balance;
}

.island-moments__heading > p:last-child {
  grid-column: 2;
  max-width: 55ch;
  margin: 22px 0 0;
  color: var(--muted);
  font-size: 15px;
  line-height: 1.72;
}

.island-moments__grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(12px, 1.5vw, 22px);
}

.island-moments__item {
  width: 100%;
  aspect-ratio: 4 / 5;
  border-radius: var(--radius-sm);
}

.island-moments__item--seals img { object-position: center 72%; }
.island-moments__item--bird-shore img { object-position: center 62%; }
.island-moments__item--bird-dunes img { object-position: center 60%; }
.island-moments__item--chair-evening img { object-position: center 62%; }
.island-moments__item--blue-hour img { object-position: center 56%; }
.island-moments__item--benches img { object-position: center 62%; }

.guide-handoff { margin-top: clamp(82px, 9vw, 124px); }

.guide-page .guide-handoff {
  width: min(100%, var(--guide-handoff));
  overflow: visible;
  isolation: isolate;
  display: grid;
  grid-template-columns: minmax(0, 580px) minmax(260px, 320px);
  justify-content: center;
  column-gap: clamp(40px, 3vw, 56px);
  align-items: center;
  margin-inline: auto;
  border-block: 0;
  background: transparent;
}

.guide-page .guide-handoff::before {
  position: absolute;
  z-index: -1;
  top: 0;
  bottom: 0;
  left: 50%;
  width: 100vw;
  border-block: 1px solid var(--line-strong);
  background: var(--surface);
  content: "";
  transform: translateX(-50%);
}

.guide-page .guide-handoff h2 { max-width: 18ch; }
.guide-page .guide-handoff p { max-width: 60ch; }

.guide-handoff__actions {
  width: 100%;
  flex: 0 0 auto;
  display: grid;
  justify-items: center;
  gap: 9px;
}

.guide-handoff__actions .button { width: 100%; }
.guide-handoff__actions .detail-link { min-height: 44px; margin-top: 0; }

.guide-article {
  width: min(100%, var(--guide-feature));
  display: grid;
  grid-template-columns:
    minmax(0, 1fr)
    minmax(180px, var(--guide-rail))
    var(--guide-rail-gap)
    minmax(0, var(--guide-reading))
    minmax(0, 1fr);
  column-gap: 0;
  margin-inline: auto;
  padding-top: clamp(52px, 7vw, 92px);
}

.guide-article__header {
  grid-column: 1 / -1;
  max-width: 970px;
  padding-bottom: clamp(54px, 7vw, 88px);
}

.guide-article__header--media {
  max-width: none;
  display: grid;
  grid-template-columns: minmax(0, 0.92fr) minmax(480px, 1.08fr);
  gap: clamp(56px, 5vw, 92px);
  align-items: center;
}

.guide-article__header--portrait {
  grid-template-columns: minmax(0, 620px) minmax(380px, 500px);
  justify-content: space-between;
  align-items: start;
}

.guide-article__header--portrait .guide-article__media-wrap {
  max-width: 500px;
  justify-self: end;
}

.guide-article__heading { min-width: 0; }

.guide-article__header h1 {
  max-width: 15ch;
  font-size: clamp(3.65rem, 4.6vw, 5.15rem);
  line-height: 0.98;
  overflow-wrap: normal;
}

.guide-article__lead {
  max-width: 67ch;
  margin: 28px 0 0;
  color: var(--charcoal-soft);
  font-size: 18px;
  line-height: 1.74;
}

.guide-answer {
  max-width: 67ch;
  margin: 28px 0 0;
  color: var(--charcoal-soft);
  font-size: 18px;
  line-height: 1.74;
}

.guide-article__media {
  width: 100%;
  aspect-ratio: 3 / 2;
  align-self: auto;
  border-radius: var(--radius-sm);
}

.guide-article__media--portrait { aspect-ratio: 4 / 5; }
.guide-article__media--portrait-full { aspect-ratio: 2 / 3; }

.guide-article__media--harbor img { object-position: center 58%; }

.guide-article__media-wrap {
  min-width: 0;
  width: 100%;
  align-self: center;
  margin: 0;
}

.photo-credit {
  margin-top: 10px;
  color: var(--charcoal-soft);
  font-size: 13px;
  line-height: 1.55;
}

.photo-credit a {
  color: var(--charcoal-soft);
  text-decoration: none;
  text-underline-offset: 3px;
}

.guide-article__meta {
  margin: 16px 0 0;
  color: var(--muted);
  font-size: 12px;
  font-weight: 660;
}

.guide-toc {
  grid-column: 2;
  align-self: start;
  position: sticky;
  top: calc(var(--header-height) + 28px);
  padding-block: 18px;
  border-block: 1px solid var(--line);
}

.guide-toc h2 {
  margin: 0;
  color: var(--charcoal);
  font-size: 14px;
  font-weight: 720;
  letter-spacing: -0.01em;
  line-height: 1.4;
}

.guide-toc ol,
.guide-toc ul {
  display: grid;
  gap: 8px;
  margin: 13px 0 0;
  padding-left: 1.25em;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.55;
}

.guide-toc a { text-decoration-color: var(--line-strong); text-underline-offset: 3px; }

.guide-prose,
.article-sources,
.guide-related {
  grid-column: 4;
  min-width: 0;
}

.guide-prose { max-width: 72ch; }

.guide-prose > :first-child { margin-top: 0; }
.guide-prose section[id] { scroll-margin-top: calc(var(--header-height) + 22px); }

.guide-prose h2 {
  scroll-margin-top: calc(var(--header-height) + 22px);
  margin: 58px 0 15px;
  color: var(--charcoal);
  font-size: clamp(1.9rem, 3vw, 2.45rem);
  font-weight: 510;
  letter-spacing: -0.035em;
  line-height: 1.12;
  text-wrap: balance;
}

.guide-prose h3 {
  scroll-margin-top: calc(var(--header-height) + 22px);
  margin: 28px 0 9px;
  color: var(--charcoal);
  font-size: 1.15rem;
  font-weight: 710;
  letter-spacing: -0.018em;
  line-height: 1.35;
}

.guide-prose p,
.guide-prose li {
  color: var(--charcoal-soft);
  font-size: 16.5px;
  line-height: 1.78;
}

.guide-prose p { margin: 0 0 18px; }
.guide-prose ul,
.guide-prose ol { margin: 0 0 22px; padding-left: 1.3em; }
.guide-prose li + li { margin-top: 8px; }

.article-photo {
  margin: 42px 0 48px;
}

@media (min-width: 1200px) {
  .article-photo--wide {
    --article-photo-width: min(848px, calc(100vw - 104px));
    width: var(--article-photo-width);
    max-width: none;
    margin-left: calc((100% - var(--article-photo-width)) / 2);
    transform: none;
  }
}

.article-photo__frame {
  width: 100%;
  aspect-ratio: 16 / 9;
  border-radius: var(--radius-sm);
}

.guide-prose a,
.article-sources a,
.guide-related a {
  color: var(--sand-ink);
  text-decoration-color: rgb(118 84 47 / 42%);
  text-underline-offset: 4px;
  transition: color 160ms ease, text-decoration-color 160ms ease;
}

.guide-prose a { font-weight: 650; }

.guide-related a {
  position: relative;
  width: fit-content;
  padding-bottom: 4px;
  text-decoration: none;
  transform: translateY(0);
  transition: color 160ms ease, transform var(--link-wipe-duration) var(--ease-out);
}

.guide-callout,
.guide-prose .article-section--checklist {
  margin-block: 38px;
  padding: 24px 26px;
  border-block: 1px solid var(--line-strong);
  background: var(--surface);
}

.guide-prose .article-section--checklist h2 { margin-top: 0; }

.article-sources {
  margin-top: 70px;
  padding-block: 25px;
  border-block: 1px solid var(--line-strong);
}

.article-sources h2 {
  max-width: 24ch;
  font-size: 1.55rem;
  line-height: 1.16;
}

.article-sources ul {
  display: grid;
  gap: 8px;
  margin: 18px 0 0;
  padding-left: 1.25em;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.6;
}

.article-sources p {
  margin: 17px 0 0;
  color: var(--muted);
  font-size: 12px;
  line-height: 1.65;
}

.guide-related {
  margin-top: 52px;
  padding-top: 25px;
  border-top: 1px solid var(--line);
}

.guide-related h2 {
  font-size: 1.35rem;
  line-height: 1.2;
}

.guide-related ul {
  display: grid;
  gap: 10px;
  margin: 17px 0 0;
  padding: 0;
  list-style: none;
}

.guide-related a {
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: 14px;
  font-weight: 680;
}

.guide-article + .guide-handoff {
  width: min(100%, var(--guide-handoff));
  margin-inline: auto;
}

@media (max-width: 1120px) {
  .guide-article { grid-template-columns: 1fr; }
  .guide-article__header,
  .guide-toc,
  .guide-prose,
  .article-sources,
  .guide-related { grid-column: 1; }
  .guide-toc,
  .guide-prose,
  .article-sources,
  .guide-related {
    width: min(100%, var(--guide-reading));
    margin-inline: auto;
  }
  .guide-toc {
    position: static;
    margin-bottom: 48px;
  }
}

@media (max-width: 1080px) {
  .guide-article__header--media {
    max-width: 800px;
    grid-template-columns: 1fr;
    gap: 36px;
    margin-inline: auto;
  }

  .guide-article__header--portrait .guide-article__media-wrap {
    justify-self: center;
  }
}

@media (max-width: 900px) {
  .guide-hero { grid-template-columns: 1fr; gap: 42px; }
  .guide-hero__copy { max-width: 680px; }
  .guide-hero h1 { max-width: 13ch; }
  .guide-hero__media { aspect-ratio: 16 / 10; }
  .guide-hero__media--portrait {
    width: min(100%, 560px);
    justify-self: center;
    aspect-ratio: 4 / 5;
  }
  .guide-index { grid-template-columns: 1fr; gap: 38px; }
  .guide-index__heading { max-width: 650px; }
  .guide-index h2 { max-width: 14ch; }
  .island-moments__heading {
    grid-template-columns: 1fr;
    row-gap: 14px;
  }
  .island-moments__heading > p:last-child {
    grid-column: 1;
    margin-top: 8px;
  }
  .island-moments__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .guide-article__header--media {
    max-width: 720px;
    grid-template-columns: 1fr;
    gap: 36px;
  }
}

@media (max-width: 780px) {
  .guide-page .guide-handoff {
    grid-template-columns: 1fr;
    align-items: flex-start;
    row-gap: 24px;
  }
}

@media (max-width: 560px) {
  .hero__guide-link { margin-top: 18px; }
  .guide-main { padding-top: 22px; }
  .guide-hero { padding-block: 42px 72px; }
  .guide-hero h1,
  .guide-article__header h1 {
    font-size: clamp(2.65rem, 13.2vw, 3.65rem);
    hyphens: auto;
    line-height: 0.99;
  }
  .guide-hero__copy > p:not(.guide-reviewed),
  .guide-article__lead,
  .guide-answer { font-size: 16px; }
  .guide-index { padding-top: 42px; }
  .guide-index h2 { font-size: 2.65rem; }
  .island-moments { margin-top: 74px; padding-top: 42px; }
  .island-moments__heading { margin-bottom: 28px; }
  .island-moments__heading h2 { font-size: 2.65rem; }
  .island-moments__grid { gap: 10px; }
  .guide-entry { grid-template-columns: 1fr; gap: 7px; padding-block: 24px; }
  .guide-entry > a { width: fit-content; }
  .guide-page .guide-handoff { display: grid; padding: 28px 22px; }
  .guide-handoff__actions { width: 100%; }
  .guide-handoff__actions .button { width: 100%; }
  .guide-article { padding-top: 42px; }
  .guide-article__header { padding-bottom: 46px; }
  .guide-article__header--media { gap: 28px; }
  .guide-article__header--portrait .guide-article__media-wrap {
    width: min(84vw, 310px);
  }
  .guide-toc { margin-bottom: 38px; }
  .guide-prose h2 { margin-top: 48px; font-size: 1.85rem; }
  .guide-prose p,
  .guide-prose li { font-size: 16px; line-height: 1.75; }
  .guide-callout,
  .guide-prose .article-section--checklist { margin-inline: -4px; padding: 21px 18px; }
}

:where(h1, h2, h3)[tabindex="-1"]:focus-visible {
  outline: 0;
  text-decoration-line: underline;
  text-decoration-color: var(--sand-ink);
  text-decoration-thickness: 2px;
  text-underline-offset: 9px;
}

@keyframes intro-rise {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes consent-rise {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.analytics-configured .consent-panel:not([hidden]) {
  animation: consent-rise 180ms var(--ease-out) both;
}

.intro-ready [data-intro] {
  animation: intro-rise 720ms var(--ease-out) both;
}

.intro-ready .hero__media[data-intro] { animation-delay: 90ms; }

.reveal-enabled [data-reveal] {
  opacity: 0;
  transform: translateY(32px);
}

.reveal-enabled [data-reveal].is-revealed {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 640ms var(--ease-out) var(--reveal-delay, 0ms),
    transform 720ms var(--ease-out) var(--reveal-delay, 0ms);
}

@media (min-width: 901px) {
  .location-map__legend { margin-inline-end: clamp(18px, 2.4vw, 34px); }

  .location-map__pin[data-map-pin="pavilion"] .location-map__tooltip {
    top: calc(-1px - var(--hit-offset-y));
    right: calc(50% + 18px + var(--hit-offset-x));
    bottom: auto;
    left: auto;
    transform: translate(0, 0);
  }

  .location-map__pin[data-map-pin="pavilion"]:is(:hover, :focus-visible) .location-map__tooltip {
    transform: translate(0, 0);
  }

  .location-map__pin[data-map-pin="south-beach"] .location-map__tooltip {
    top: calc(100% + 5px - var(--hit-offset-y));
    bottom: auto;
    transform: translate(-50%, 0);
  }

  .location-map__pin[data-map-pin="south-beach"]:is(:hover, :focus-visible) .location-map__tooltip {
    transform: translate(-50%, 0);
  }

  .location-map__pin:is([data-map-pin="station"], [data-map-pin="town"]) .location-map__tooltip {
    top: auto;
    bottom: calc(33px + var(--hit-offset-y));
  }
}

@media (hover: hover) and (pointer: fine) {
  .desktop-nav a:hover { color: var(--charcoal); }
  .desktop-nav a:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
  .header-cta:hover,
  .button--primary:hover { border-color: var(--sand-hover); background: var(--sand-hover); transform: translateY(-2px); }
  .menu-dropdown a.menu-dropdown__cta:hover,
  .menu-dropdown a.menu-dropdown__cta:focus-visible { border-color: var(--sand-hover); background: var(--sand-hover); }
  .button--secondary:hover { color: var(--sand-ink); transform: translateY(-2px); }
  .button--secondary:hover .button--secondary__content::after {
    opacity: 1;
    transform: scaleX(1);
    transform-origin: left center;
  }
  .button--secondary:hover .button--secondary__arrow { transform: translateX(3px); }
  .footer-meta button:hover,
  .consent-panel__link:hover,
  .consent-panel__close:hover { color: var(--sand-ink); }
  .consent-panel__decline:hover { border-color: var(--charcoal); background: var(--surface); }
  .gallery-button:hover .image-frame img { transform: scale(1.015); }
  .location-place:hover {
    background: var(--sand-soft);
    color: var(--sand-ink);
  }
  .location-place:hover strong { color: var(--sand-ink); }
  .location-place:hover .location-place__action { color: var(--sand-ink); }
  .location-place:hover .location-place__action::after { transform: translateX(3px); }
  .prices__season-link:hover {
    color: var(--sand-ink);
    transform: translateY(-2px);
  }
  .prices__season-link:hover .prices__season-content::after {
    opacity: 1;
    transform: scaleX(1);
    transform-origin: left center;
  }
  .prices__season-link:hover .prices__season-arrow { transform: translateX(3px); }
  .prices__calculator-button:hover .prices__calculator-arrow { transform: translateX(3px); }
  .stay-calendar__nav:not(:disabled):hover,
  .stay-calendar__day:not(:disabled):not(.is-range-start):not(.is-range-end):hover {
    background: var(--sand-soft);
    color: var(--sand-ink);
  }
  .stay-calendar__popover:has(.stay-calendar__day.is-minimum-stay-blocked:hover) .stay-calendar__rule {
    border-color: var(--sand-ink);
    background: var(--sand-soft);
  }
  .stay-calculator__stepper button:not(:disabled):hover { background: var(--sand-soft); color: var(--sand-ink); }
  .booking-handoff__button:hover .booking-handoff__arrow { transform: translateX(3px); }
  .detail-link:hover { color: var(--sand-ink); transform: translateY(-2px); }
  .detail-link:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
  .detail-link:hover span:last-child { transform: translateX(3px); }
  .hero__guide-link a:hover,
  .guide-entry > a:hover,
  .guide-related a:hover {
    color: var(--sand-ink);
    transform: translateY(-2px);
  }
  .hero__guide-link a:hover::after,
  .guide-entry > a:hover::after,
  .guide-related a:hover::after {
    transform: scaleX(1);
    transform-origin: left center;
  }
  .hero__guide-link a:hover span,
  .guide-entry > a:hover span,
  .guide-related a:hover span { transform: translateX(3px); }
  .guide-prose a:hover,
  .article-sources a:hover,
  .guide-toc a:hover {
    color: var(--sand-ink);
    text-decoration-color: currentColor;
  }
  .photo-credit a:hover {
    color: var(--sand-ink);
    text-decoration: underline;
  }
  .season-year summary:hover { background: var(--sand-soft); }
  .additional-costs summary:hover { background: var(--sand-soft); }
  .location-map__pin:hover { --pin-color: var(--sand-ink); z-index: 2; }
  .location-map__pin:hover .location-map__pin-icon { transform: translate(-50%, -3px) scale(1.08); }
  .location-map__pin--home:hover .location-map__pin-icon { transform: translateX(calc(-50% - 5px)) scale(1.06); }
  .location-map__pin:hover .location-map__tooltip {
    opacity: 1;
    transform: translate(-50%, 0);
  }
  .location-map__pin--tooltip-left:hover .location-map__tooltip { transform: translate(0, -50%); }
  .location-map__pin--tooltip-below:hover .location-map__tooltip { transform: translate(-50%, 0); }
}

@media (hover: none), (pointer: coarse) {
  .location-map__pin.is-active:not(.location-map__pin--home) .location-map__tooltip {
    opacity: 1;
    transform: translate(-50%, 0);
  }

  .location-map__pin--tooltip-left.is-active:not(.location-map__pin--home) .location-map__tooltip { transform: translate(0, -50%); }
  .location-map__pin--tooltip-below.is-active:not(.location-map__pin--home) .location-map__tooltip { transform: translate(-50%, 0); }
}

@media (min-width: 1800px) {
  .hero__layout {
    min-height: min(880px, calc(100svh - var(--header-height)));
    grid-template-columns: minmax(0, 0.7fr) minmax(0, 1.3fr);
    column-gap: clamp(84px, 5vw, 128px);
    padding-bottom: 40px;
  }

  .dune-divider { height: clamp(225px, 12.5vw, 400px); }

  .hero__copy { max-width: 540px; }
  .hero h1 { font-size: 5.65rem; }
  .hero__intro { max-width: 42ch; font-size: 19px; }

  .photo-chapter {
    grid-template-columns: minmax(330px, 0.72fr) minmax(0, 1.28fr);
  }

  .photo-chapter--image-left {
    grid-template-columns: minmax(0, 1.28fr) minmax(330px, 0.72fr);
  }

  .photo-chapter__copy { width: min(100%, 440px); }
  .photo-chapter__visual { width: min(100%, 780px); }
  .photo-chapter__visual--wide { width: min(100%, 860px); }
  .location__media { width: min(100%, 620px); }
  .location-map-scroll { width: min(100%, 1460px); }
  .prices__details { width: min(100%, 920px); justify-self: end; }
  .detail-wide-photo { width: min(100%, 1100px); }
  .guide-hero__copy { max-width: 650px; }
}

@media (max-width: 1180px) {
  .shell { width: min(calc(100% - 72px), var(--shell)); }
  .hero__layout { column-gap: 46px; }
  .hero h1 { font-size: clamp(3.7rem, 5.7vw, 4.65rem); }
  .photo-chapter { gap: 58px; }
  .amenities__layout { gap: 48px; }
  .amenity-item { padding-inline: 24px; }

  .stay-calculator {
    grid-template-columns: minmax(0, 1.15fr) minmax(300px, 0.85fr);
  }

  .stay-calculator__intro {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: minmax(250px, 0.8fr) minmax(0, 1.2fr);
    gap: 10px 48px;
    align-items: start;
  }

  .stay-calculator__eyebrow { grid-column: 1 / -1; }
  .stay-calculator__title { grid-column: 1; grid-row: 2 / 4; }
  .stay-calculator__intro > p:not(.stay-calculator__eyebrow) { grid-column: 2; margin-top: 0; }
}

@media (min-width: 901px) and (max-width: 1080px) {
  .nav-ready .site-header__inner { flex-wrap: nowrap; }
  .nav-ready .desktop-nav,
  .nav-ready .header-cta { display: none; }
  .nav-ready .menu-toggle { display: grid; }
}

@media (max-width: 900px) {
  :root { --header-height: 74px; }
  .shell { width: min(calc(100% - 40px), var(--shell)); }

  .site-header__inner {
    min-height: var(--header-height);
    flex-wrap: wrap;
    gap: 0 18px;
    padding-block: 9px;
  }

  .desktop-nav {
    order: 3;
    width: 100%;
    justify-content: flex-start;
    gap: 20px;
    margin: 2px 0 0;
    overflow-x: auto;
  }

  .header-cta { margin-left: auto; }
  .nav-ready .site-header__inner { flex-wrap: nowrap; padding-block: 0; }
  .nav-ready .desktop-nav,
  .nav-ready .header-cta { display: none; }
  .nav-ready .menu-toggle { display: grid; }
  .brand__logo { height: 44px; }

  .hero__layout {
    min-height: auto;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    column-gap: 36px;
    padding-block: 48px 22px;
  }

  .hero h1 { font-size: clamp(3.45rem, 7.5vw, 4.5rem); }
  .hero__facts { padding-top: 18px; }
  .location-map__pin {
    --pin-position-x: var(--pin-x-mid);
    --pin-position-y: var(--pin-y-mid);
  }

  .location-map__body {
    grid-template-columns: 1fr;
    gap: 12px;
  }

  .location__places {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    border-top: 0;
  }

  .location-place {
    min-height: 64px;
    padding: 8px 10px;
    border: 1px solid var(--line);
    border-radius: var(--radius-sm);
  }

  .section { padding-block: 104px; }
  .photo-story { gap: 72px; }
  .photo-chapter { gap: 42px; }
  .photo-chapter__copy p { font-size: 15px; }

  .amenities__layout {
    grid-template-columns: 1fr;
    gap: 42px;
  }

  .amenities__intro h2 { max-width: none; }

  .prices__layout {
    grid-template-columns: 1fr;
    gap: 46px;
  }

  .prices__intro h2 { max-width: none; }
  .prices__calculator {
    grid-template-columns: minmax(0, 1fr) minmax(260px, 0.72fr);
    gap: 36px;
  }
  .stay-calculator { grid-template-columns: 1fr; }
  .stay-calculator__intro { display: block; }
  .stay-calculator__title { max-width: 16ch; }
  .stay-calculator__intro > p:not(.stay-calculator__eyebrow) { margin-top: 20px; }
  .stay-calculator__intro .stay-calculator__privacy { margin-top: 15px; }
  .calculator-costs { grid-template-columns: 1fr; gap: 34px; }
  .calculator-costs__intro h2 { max-width: none; }
  .booking-handoff {
    grid-template-columns: 1fr;
    gap: 28px;
  }
  .booking-handoff__action { padding-top: 0; }
  .legal-layout { grid-template-columns: 1fr; gap: 36px; }
  .season-layout { grid-template-columns: 1fr; gap: 36px; }
  .season-heading h1 { max-width: none; }
  .detail-hero { grid-template-columns: 1fr; gap: 36px; }
  .detail-hero__copy { max-width: 680px; }
  .detail-hero h1 { max-width: 12ch; font-size: clamp(3.25rem, 7.6vw, 4.35rem); }
  .detail-section--split,
  .detail-section--questions { gap: 54px; }
  .footer-layout,
  .footer-layout--home { grid-template-columns: auto minmax(0, 1fr); }
  .footer-address { display: none; }
}

@media (max-width: 780px) {
  .hero__layout {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto;
    gap: 34px;
    padding-top: 46px;
  }

  .hero__copy { max-width: 620px; padding: 0; }
  .hero h1 { max-width: 9ch; font-size: clamp(3.35rem, 12vw, 4.2rem); }
  .hero__intro { margin-top: 21px; }
  .hero__actions { margin-top: 27px; }
  .hero__media { aspect-ratio: 16 / 10; }
  .hero__facts { grid-column: 1; }
  .dune-divider { height: 130px; }

  .photo-chapter,
  .photo-chapter--image-left {
    grid-template-columns: 1fr;
    gap: 35px;
  }

  .photo-chapter__copy,
  .photo-chapter--image-left .photo-chapter__copy,
  .photo-chapter--copy-left .photo-chapter__copy {
    width: min(100%, 540px);
    justify-self: start;
  }

  .photo-chapter__visual,
  .photo-chapter--copy-left .photo-chapter__visual,
  .photo-chapter--image-left .photo-chapter__visual {
    grid-column: auto;
    grid-row: auto;
    justify-self: start;
  }

  .photo-chapter--image-left .photo-chapter__copy {
    grid-column: auto;
    grid-row: auto;
  }

  .photo-chapter--copy-left .photo-chapter__visual { justify-self: end; }

  .location__layout {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .location__copy {
    max-width: calc(100% - clamp(0px, 6vw, 42px));
    grid-column: auto;
    grid-row: auto;
    margin-left: clamp(0px, 6vw, 42px);
    order: 1;
  }

  .location__media {
    grid-column: auto;
    grid-row: auto;
    order: 2;
    width: min(100%, 620px);
    aspect-ratio: 16 / 10;
  }

  .location-map-scroll {
    grid-column: auto;
    grid-row: auto;
    order: 3;
    width: 100%;
    margin-top: 0;
  }

  .location__places { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .prices__calculator {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .prices__calculator-action { width: min(100%, 440px); }

  .footer-layout,
  .footer-layout--home {
    grid-template-columns: auto minmax(0, 1fr);
  }

  .footer-address { display: none; }
  .detail-hero { grid-template-columns: 1fr; gap: 36px; }
  .detail-hero__copy { max-width: 680px; }
  .detail-hero h1 { max-width: 12ch; }
  .detail-hero__media { aspect-ratio: 16 / 10; }
  .detail-hero__media--portrait { aspect-ratio: 1 / 1; }
  .detail-section--split,
  .detail-section--questions { grid-template-columns: 1fr; gap: 34px; }
}

@media (max-width: 680px) {
  .amenities__list {
    grid-template-columns: 1fr;
    border-top: 1px solid var(--line);
    border-left: 0;
  }

  .amenity-item {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    gap: 8px 16px;
    padding: 24px 0;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .amenity-icon { grid-row: 1 / 3; margin: 0; }
  .amenity-item p { margin: 0; }
  .privacy-toc ol { columns: 1; }
}

@media (max-width: 560px) {
  .shell { width: min(calc(100% - 32px), var(--shell)); }
  .site-header__inner:has(.header-back) { gap: 0 10px; }
  .header-back { padding-inline: 12px; }
  .header-back__long { display: none; }
  .header-back__short { display: inline; }
  .hero__layout { padding-top: 38px; }

  .hero h1 { font-size: clamp(3.15rem, 15vw, 3.7rem); }
  .hero__actions { display: grid; grid-template-columns: 1fr; gap: 10px; }
  .hero__actions .button { width: 100%; }

  .hero__facts {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0;
    padding-top: 13px;
  }

  .hero__facts li,
  .hero__facts li:first-child,
  .hero__facts li:last-child {
    min-height: 72px;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    gap: 7px;
    padding: 10px 8px;
    font-size: 11px;
    line-height: 1.35;
  }

  .fact-icon { width: 22px; height: 22px; }
  .dune-divider { height: 96px; }
  .section { padding-block: 80px; }
  .section h2 { font-size: clamp(2.75rem, 13vw, 3.8rem); }
  .photo-story { gap: 72px; }
  .photo-chapter { gap: 28px; }
  .photo-chapter__copy :is(h2, h3) { font-size: clamp(2.75rem, 13vw, 3.8rem); }
  .photo-chapter__copy p { margin-top: 15px; }
  .amenities { padding-block: 62px; }
  .amenities__layout { gap: 32px; }

  .location__layout { gap: 28px; }
  .location__copy {
    max-width: none;
    margin-left: 0;
  }
  .location__places { grid-template-columns: repeat(2, minmax(0, 1fr)); }

  .location-place {
    min-height: 90px;
    grid-template-columns: 1fr;
    grid-template-areas:
      "name"
      "status"
      "distance";
    align-content: center;
    justify-items: start;
    gap: 1px;
    padding: 8px 10px;
  }

  .location-place__name,
  .location-place__action,
  .location-place__time,
  .location-place strong { line-height: 1.2; }

  .location-place__status { gap: 1px 5px; }
  .location-place strong { justify-self: start; font-size: 11px; }

  .location-map__intro {
    align-items: flex-start;
    justify-content: flex-start;
    margin-bottom: 10px;
    padding-top: 16px;
  }

  .location-map__legend { flex-basis: 100%; }

  .location-map__stage { aspect-ratio: 500 / 650; }

  .location-map__pin {
    --pin-position-x: var(--pin-x-small);
    --pin-position-y: var(--pin-y-small);
  }

  .location-map__pin--edge-top:focus-visible { outline-offset: -3px; }

  .location-map__tooltip {
    max-width: min(176px, calc(100vw - 48px));
    min-height: 28px;
    padding: 5px 8px;
    font-size: 10px;
  }

  .location-map__pin.is-active:not(.location-map__pin--home) .location-map__tooltip {
    opacity: 1;
    transform: translate(-50%, 0);
  }

  .location-map__pin--tooltip-left.is-active:not(.location-map__pin--home) .location-map__tooltip { transform: translate(0, -50%); }
  .location-map__pin--tooltip-below.is-active:not(.location-map__pin--home) .location-map__tooltip { transform: translate(-50%, 0); }

  .location-map__credit {
    min-height: 44px;
    padding-inline: 7px;
    font-size: 10px;
  }

  .price-ledger__row { gap: 18px; }
  .price-ledger dd span { font-size: clamp(1.9rem, 9vw, 2.5rem); }

  .prices__calculator-button { width: 100%; min-width: 0; }
  .calculator-main > .breadcrumbs { margin-bottom: 20px; }

  .additional-costs__show,
  .additional-costs__hide { display: none !important; }

  .additional-costs__row {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .additional-costs__row dd,
  .additional-costs__rates > span {
    justify-items: start;
    text-align: left;
  }

  .stay-calculator { padding-block: 36px; }
  .calculator-main { padding-block: 24px 64px; }
  .stay-calendar__popover {
    position: relative;
    top: auto;
    width: 100%;
    margin-top: 10px;
    padding: 14px 10px;
  }
  .stay-calendar__day,
  .stay-calendar__blank { min-height: clamp(38px, 11vw, 44px); }
  .stay-calculator__submit { width: 100%; }
  .stay-calculator__result { padding: 24px 20px; }
  .calculator-costs { padding-block: 56px; }

  .booking-handoff__button { width: 100%; }

  .season-ranges > div {
    grid-template-columns: 1fr;
    gap: 4px;
  }

  .season-ranges dd {
    justify-content: flex-start;
    text-align: left;
  }

  .season-handoff {
    align-items: stretch;
    flex-direction: column;
  }

  .season-handoff .button { width: 100%; }
  .detail-main { padding-top: 20px; }
  .detail-hero { padding-block: 42px 76px; }
  .detail-hero h1 {
    max-width: 100%;
    font-size: clamp(2.45rem, 12vw, 3.4rem);
    hyphens: none;
    overflow-wrap: normal;
  }
  .detail-hero__copy > p { margin-top: 21px; font-size: 16px; }
  .detail-facts { grid-template-columns: 1fr; padding-top: 0; }
  .detail-facts li,
  .detail-facts li + li {
    display: grid;
    grid-template-columns: minmax(110px, 0.72fr) minmax(0, 1.28fr);
    gap: 14px;
    padding: 13px 0;
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }
  .detail-facts span { margin-top: 0; }
  .detail-content { gap: 80px; }
  .detail-section { gap: 28px; }
  .detail-section h2 { font-size: clamp(2.65rem, 12vw, 3.45rem); }
  .detail-photo-pair { grid-template-columns: 1fr; }
  .detail-ledger > div { grid-template-columns: 1fr; gap: 5px; }
  .detail-ledger--distances dd { justify-items: start; text-align: left; }
  .detail-map__image { aspect-ratio: 500 / 650; }
  .detail-map figcaption { flex-direction: column; gap: 5px; }
  .detail-map figcaption a { width: fit-content; }
  .detail-handoff { align-items: stretch; flex-direction: column; padding: 28px 22px; }
  .detail-handoff .button { width: 100%; }

  .consent-panel {
    right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom));
    left: 12px;
    width: auto;
    max-height: min(55dvh, 340px);
    padding: 16px;
  }

  .consent-panel h2 { font-size: 21px; }
  .consent-panel__actions { grid-template-columns: 1fr; }

  .lightbox { width: calc(100% - 20px); }
  .lightbox figure { padding: 12px; }
  .lightbox__frame { height: 61dvh; }
  .lightbox__footer { grid-template-columns: 1fr; }
  .lightbox__actions { justify-content: stretch; }
  .lightbox__actions button { flex: 1; }

  .footer-layout,
  .footer-layout--home { grid-template-columns: 1fr; gap: 8px; }
  .footer-meta { justify-content: flex-start; gap: 18px; }
}

@media (max-width: 360px) {
  .site-header__inner:has(.header-back) { gap: 0 10px; }
  .site-header__inner:has(.header-back) .brand__logo { height: 38px; }
  .header-back { padding-inline: 12px; }
  .header-back__long { display: none; }
  .header-back__short { display: inline; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    scroll-behavior: auto !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    animation-delay: 0ms !important;
    transition-duration: 0.01ms !important;
    transition-delay: 0ms !important;
  }
  .reveal-enabled [data-reveal] {
    opacity: 1 !important;
    transform: none !important;
  }
  .button--secondary,
  .prices__season-link,
  .detail-link,
  .hero__guide-link a,
  .guide-entry > a,
  .guide-related a,
  .button--secondary__arrow,
  .prices__season-arrow,
  .prices__calculator-arrow,
  .booking-handoff__arrow,
  .detail-link span:last-child,
  .hero__guide-link a span,
  .guide-entry > a span,
  .guide-related a span { transform: none !important; }
}

@media (prefers-reduced-transparency: reduce) {
  .site-header {
    background: var(--canvas);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

@media (prefers-contrast: more) {
  :root { --line: #aaa39a; --line-strong: #706a63; --muted: #4f4b45; }
  .site-header { background: var(--canvas); }
}

@media (forced-colors: active) {
  .image-frame { border: 1px solid CanvasText; }
  .chapter-number::after { background: CanvasText; }
  .button--secondary__content::after { background: CanvasText; }
  .location-map__route-path--casing { stroke: Canvas; }
  .location-map__route-path--line { stroke: Highlight; }
  .location-map__pin-icon { background: ButtonText; filter: none; }
  .location-map__pin.is-active .location-map__pin-icon { background: Highlight; }
  .location-map__pin-icon--home { box-shadow: none; }
  .location-map__pin-icon--home::before { background: Canvas; }
  .location-map__legend-icon { background: ButtonText; }
  .location-map__tooltip,
  .location-map__credit { border: 1px solid CanvasText; background: Canvas; color: CanvasText; }
  .consent-panel { border: 1px solid CanvasText; box-shadow: none; }
  .stay-calendar__popover { border: 1px solid CanvasText; box-shadow: none; }
  .stay-calendar__day:disabled { opacity: 0.55; }
  .stay-calendar__day.is-in-range { background: SelectedItem; color: SelectedItemText; }
  .stay-calendar__day:is(.is-range-start, .is-range-end) {
    forced-color-adjust: none;
    background: Highlight;
    color: HighlightText;
  }
}

@media print {
  .site-header,
  .menu-dropdown,
  .hero__actions,
  .booking-handoff__button,
  .stay-calendar__popover,
  .site-footer,
  .consent-panel,
  .lightbox { display: none !important; }
  .hero__layout,
  .photo-chapter,
  .amenities__layout,
  .location__layout { display: block; min-height: auto; }
  .hero__media,
  .photo-chapter__visual,
  .location__media { max-width: 520px; margin-top: 24px; }
  .location-map-scroll { min-height: auto; width: 100%; margin-top: 28px; }
  .location-map { position: static; top: auto; max-width: 900px; margin-inline: auto; }
  .location-map__routes,
  .location-map__pin { display: none; }
  .location-map__legend { display: none; }
  .season-year:not([open]) > .season-year__body { display: block; }
  .season-year__action { display: none; }
  .additional-costs:not([open]) > .additional-costs__body { display: block; }
  .additional-costs__action { display: none; }
  .section { padding-block: 36px; break-inside: avoid; }
}
