/* Hospitality & Wellness · page-scoped styles (hospitality.html). Rebuilt for the sub-page revamp (docs/REVAMP-PLAN.md §2,
   §3 and §5, 2026-10-14) on the homepage precedent: hero E (Osmo slideshow), the chapter strip and bands, the collection on
   the navy horizontal track, the experience film (.sfilm, 2026-10-15) and its rail, the held featured door, lifestyle on navy,
   the wellness services as core cards, the wellness zoom. Scrubbed components: the collection track, the experience film and
   the wellness zoom (three, at Josh's request). Every selector starts with .page-hospitality; tokens only; sharp corners, no shadows.
   The .vhero block is the plan's canonical copy (same class names on every page, to be lifted into pages.css, §8). */

/* ───────────── the hero family · canonical .vhero (REVAMP-PLAN §2, verbatim, prefixed) ───────────── */
.page-hospitality .vhero { position: relative; isolation: isolate; overflow: clip; background-color: var(--deep); color: var(--text-1); }
.page-hospitality .vhero__media { position: absolute; inset: 0; z-index: -2; overflow: hidden; background-color: var(--deep); }
.page-hospitality .vhero__img, .page-hospitality .vhero__film { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); }
@media (max-width: 767px) { .page-hospitality .vhero__img, .page-hospitality .vhero__film { object-position: var(--focus-phone, var(--focus, 50% 50%)); } }
.page-hospitality .vhero__film { opacity: 0; transition: opacity 900ms var(--ease-out); }
.page-hospitality .vhero__film.is-playing { opacity: 1; }
.page-hospitality .vhero__veil { position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(to bottom, rgb(var(--veil) / 0.55), rgb(var(--veil) / 0) 24%),
              linear-gradient(to top, rgb(var(--veil) / 0.9), rgb(var(--veil) / 0.55) 34%, rgb(var(--veil) / 0) 64%); }
.page-hospitality .vhero__inner { display: grid; align-content: end; gap: var(--space-head); min-height: max(38rem, 100svh);
  padding: calc(var(--nav-h) + 4rem) var(--edge) clamp(3rem, 2rem + 4vw, 6rem); }
.page-hospitality .vhero__head, .page-hospitality .vhero__aside { display: grid; gap: var(--space-head); justify-items: start; align-content: end; }
.page-hospitality .vhero__crest { width: 2.25rem; height: calc(2.25rem * 1210 / 1092); color: var(--gold); }
.page-hospitality .vhero__label { font-family: var(--font-text); font-size: var(--fs-label); font-weight: 500; line-height: 1.4; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-1); }
.page-hospitality .vhero__title { max-width: 18ch; font-size: clamp(2.6rem, 1.5rem + 3.4vw, 5rem); font-weight: 300; line-height: 1.04; letter-spacing: -0.02em; color: var(--text-1); text-wrap: balance; }
@media (max-width: 767px) { .page-hospitality .vhero__title { font-weight: 400; } }
.page-hospitality .vhero__lede { max-width: 46ch; font-size: var(--fs-body); line-height: 1.7; color: var(--text-2); }
.page-hospitality .vhero__action { justify-self: start; margin-top: calc(var(--space-action) - var(--space-head)); }
@media (min-width: 992px) {
  .page-hospitality .vhero__inner { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--col-gap); align-items: end; }
  .page-hospitality .vhero__head { grid-column: 1 / span 7; }
  .page-hospitality .vhero__aside { grid-column: 9 / -1; }
}
.page-hospitality .vhero--c2 .vhero__inner { grid-template-columns: minmax(0, 1fr); align-content: center; justify-items: center; text-align: center; }
.page-hospitality .vhero--c2 .vhero__head, .page-hospitality .vhero--c2 .vhero__aside { grid-column: 1 / -1; justify-items: center; }
.page-hospitality .vhero--c2 .vhero__action { justify-self: center; }
.page-hospitality .vhero--c2 .vhero__veil { background: linear-gradient(to bottom, rgb(var(--veil) / 0.55), rgb(var(--veil) / 0) 24%),
  radial-gradient(ellipse 70% 60% at 50% 55%, rgb(var(--veil) / 0.72), rgb(var(--veil) / 0.35) 70%, rgb(var(--veil) / 0.2)); }
.page-hospitality .vhero--short .vhero__inner { min-height: max(32rem, 76svh); }
.page-hospitality .vhero__img { animation: vhero-settle 2600ms var(--ease-out) both; }
.page-hospitality .vhero__crest, .page-hospitality .vhero__label, .page-hospitality .vhero__title, .page-hospitality .vhero__lede, .page-hospitality .vhero__action { animation: vhero-rise 1000ms cubic-bezier(0, 0, 0.2, 1) both; }
.page-hospitality .vhero__crest { animation-delay: 60ms; } .page-hospitality .vhero__label { animation-delay: 160ms; } .page-hospitality .vhero__title { animation-delay: 280ms; }
.page-hospitality .vhero__lede { animation-delay: 460ms; } .page-hospitality .vhero__action { animation-delay: 600ms; }
@keyframes vhero-settle { from { transform: scale(1.08); } to { transform: none; } }
@keyframes vhero-rise { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  .page-hospitality .vhero__img, .page-hospitality .vhero__crest, .page-hospitality .vhero__label, .page-hospitality .vhero__title, .page-hospitality .vhero__lede, .page-hospitality .vhero__action { animation: none; }
  .page-hospitality .vhero__film { display: none; }
}

/* ───────────── hero E · Osmo "Parallax Image Gallery with Thumbnails" (docs/osmo/parallax-image-gallery-with-thumbnails/):
   three slides stacked in the hero's media; the current one shows, js/pages/hospitality.js wipes them sideways while the
   picture inside moves the other way at half the distance. Thumbnails bottom right with the pause control; the gold line
   along the current thumbnail is the autoplay timer (its animationend advances the slide) ───────────── */
.page-hospitality .hw-hero__slide { position: absolute; inset: 0; overflow: hidden; opacity: 0; pointer-events: none; }
.page-hospitality .hw-hero__slide.is--current { opacity: 1; }
.page-hospitality .hw-hero__parallax { position: absolute; inset: 0; }
.js .page-hospitality .hw-hero__slide, .js .page-hospitality .hw-hero__parallax { will-change: transform; }
/* the pooled veil of C2 with a foot under the controls; the centre pool reaches a little lower over the bright valley sky */
.page-hospitality .hw-hero .vhero__veil { background:
  linear-gradient(to bottom, rgb(var(--veil) / 0.74), rgb(var(--veil) / 0.4) 12%, rgb(var(--veil) / 0) 28%),
  linear-gradient(to top, rgb(var(--veil) / 0.6), rgb(var(--veil) / 0) 30%),
  radial-gradient(ellipse 64% 60% at 50% 52%, rgb(var(--veil) / 0.78), rgb(var(--veil) / 0.48) 62%, rgb(var(--veil) / 0.2)); }
.page-hospitality .hw-hero .vhero__lede { margin-inline: auto; }

.page-hospitality .hw-hero__nav { position: absolute; right: var(--edge); bottom: clamp(1.5rem, 1rem + 1.5vw, 2.5rem); z-index: 1; display: none; align-items: center; gap: 12px; }
.js .page-hospitality .hw-hero__nav { display: flex; }
.page-hospitality .hw-hero__thumbs { display: flex; gap: 8px; }
.page-hospitality .hw-hero__thumb { position: relative; display: block; width: clamp(4.5rem, 3rem + 3vw, 7rem); aspect-ratio: 3 / 2; padding: 0; overflow: hidden; border: 1px solid rgb(244 239 230 / 0.3); background-color: var(--deep); cursor: pointer; transition: border-color var(--dur-3) var(--ease-out); }
.page-hospitality .hw-hero__thumb img { width: 100%; height: 100%; object-fit: cover; opacity: 0.72; transition: opacity var(--dur-3) var(--ease-out); }
.page-hospitality .hw-hero__thumb.is--current { border-color: var(--text-1); }
.page-hospitality .hw-hero__thumb.is--current img { opacity: 1; }
@media (hover: hover) and (pointer: fine) { .page-hospitality .hw-hero__thumb:hover { border-color: rgb(244 239 230 / 0.62); } .page-hospitality .hw-hero__thumb:hover img { opacity: 1; } }
.page-hospitality .hw-hero__thumb:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.page-hospitality .hw-hero__progress { position: absolute; left: 0; right: 0; bottom: 0; height: 2px; background-color: var(--gold); transform: scaleX(0); transform-origin: 0 50%; pointer-events: none; }
.page-hospitality .hw-hero.is-playing .hw-hero__thumb.is--current .hw-hero__progress { animation: hw-hero-progress 7000ms linear forwards; }
.page-hospitality .hw-hero.is-paused .hw-hero__progress { animation-play-state: paused !important; }
@keyframes hw-hero-progress { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.page-hospitality .hw-hero__pause { display: flex; align-items: center; justify-content: center; flex: none; width: 44px; height: 44px; padding: 0; border: 1px solid rgb(244 239 230 / 0.3); color: var(--text-1); background-color: rgb(var(--veil) / 0.35); transition: border-color var(--dur-3) var(--ease-out); }
.page-hospitality .hw-hero__pause svg { width: 16px; height: 16px; }
.page-hospitality .hw-hero__play-icon { display: none; }
.page-hospitality .hw-hero__pause[aria-pressed="true"] .hw-hero__pause-icon { display: none; }
.page-hospitality .hw-hero__pause[aria-pressed="true"] .hw-hero__play-icon { display: block; }
@media (hover: hover) and (pointer: fine) { .page-hospitality .hw-hero__pause:hover { border-color: rgb(244 239 230 / 0.62); } }
.page-hospitality .hw-hero__pause:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; }
.page-hospitality .hw-hero__pause:active { transform: scale(0.96); }
/* phones: the words at the foot, the controls centred under them; the top air and the controls' foot trimmed so the
   words, the action and the thumbnails all fit the first screen (390 x 664), as the desktop hero does (2026-10-15) */
@media (max-width: 767px) {
  .page-hospitality .hw-hero .vhero__inner { align-content: end; padding-top: calc(var(--nav-h) + 1.5rem); padding-bottom: calc(1rem + 48px + 1.5rem); }
  .page-hospitality .hw-hero__nav { left: var(--margin); right: var(--margin); bottom: 1rem; justify-content: center; }
  .page-hospitality .hw-hero .vhero__veil { background:
    linear-gradient(to bottom, rgb(var(--veil) / 0.74), rgb(var(--veil) / 0.4) 10%, rgb(var(--veil) / 0) 24%),
    radial-gradient(ellipse 85% 16% at 50% 27%, rgb(var(--veil) / 0.66), rgb(var(--veil) / 0)),
    linear-gradient(to top, rgb(var(--veil) / 0.92), rgb(var(--veil) / 0.78) 46%, rgb(var(--veil) / 0.3) 72%, rgb(var(--veil) / 0.12)); }
}
@media (prefers-reduced-motion: reduce) {
  .page-hospitality .hw-hero__pause, .page-hospitality .hw-hero__progress { display: none; }
  .page-hospitality .hw-hero__thumb, .page-hospitality .hw-hero__thumb img { transition: none; }
}

/* ───────────── navy rhythm (REVAMP-PLAN §3.2, until the shared rule exists, §8) ───────────── */
.page-hospitality .section[data-tone="dark"], .page-hospitality .section + .section[data-tone="dark"], .page-hospitality .section[data-tone="dark"] + .section { padding-block: clamp(5rem, 3rem + 6vw, 9rem); }
/* the crest rule between two white sections: the same air above and below it */
.page-hospitality .hw-rule { margin-bottom: var(--space-open); }

/* ───────────── chapter strip (§3.6) and chapter band (§3.5) ───────────── */
.page-hospitality .chapters { padding-top: clamp(2rem, 1.5rem + 1.5vw, 3rem); background-color: var(--page); }
.page-hospitality .chapters__list { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.25rem clamp(2rem, 1rem + 4vw, 4.5rem); }
.page-hospitality .chapters__rule { margin-top: clamp(1.75rem, 1.25rem + 1.5vw, 2.75rem); }
.page-hospitality .chapters + .section { padding-top: var(--space-open); }
.page-hospitality .chapter__inner { display: grid; justify-items: center; gap: var(--space-head); text-align: center; }
.page-hospitality .chapter__label { font-family: var(--font-text); font-size: var(--fs-label); font-weight: 500; line-height: 1.4; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-1); }
.page-hospitality .chapter__title { max-width: 20ch; font-family: var(--font-display); font-size: var(--fs-display); font-weight: 300; line-height: 1.06; letter-spacing: -0.02em; color: var(--text-1); text-wrap: balance; }
.page-hospitality .chapter__text { max-width: 52ch; color: var(--text-2); }
.page-hospitality .chapter .mark-crest { margin-bottom: 0; }
.page-hospitality .chapter__lede { max-width: 40ch; margin-top: calc(var(--space-action) - var(--space-head)); font-family: var(--font-display); font-size: var(--fs-lede); line-height: 1.5; color: var(--text-1); text-wrap: balance; }
@media (max-width: 767px) { .page-hospitality .chapter__title { font-weight: 400; } }

/* ───────────── the collection opener: the old introduction statement reads as a lede ───────────── */
.page-hospitality .hw-opener .hw-opener__lede { font-family: var(--font-display); font-size: var(--fs-lede); line-height: 1.5; color: var(--text-2); }
.page-hospitality .hc-nowrap { white-space: nowrap; }

/* ───────────── discover the collection: the homepage destinations track without the map. The intro panel takes the
   words alone; each card carries its name and Kelly's line under the photograph ───────────── */
@media (min-width: 768px) {
  .page-hospitality .hw-collection .hscroll__panel--intro { width: max(27rem, 40vw); display: flex; align-items: center; padding-right: clamp(2rem, 1rem + 3vw, 5rem); }
}
.page-hospitality .hw-collection .hscroll__lede { max-width: 30ch; }
.page-hospitality .hw-collection__text { margin-top: 1.1rem; max-width: 40ch; color: var(--text-3); }
.page-hospitality .hw-collection .hscroll__img { object-position: var(--focus, 50% 50%); }
.page-hospitality .hw-collection__caption { display: grid; gap: 6px; padding-top: 14px; }
.page-hospitality .hw-collection__caption .hscroll__name { padding-top: 0; }
.page-hospitality .hw-collection__line { max-width: 56ch; font-size: var(--fs-small); line-height: 1.6; color: var(--text-3); }
.page-hospitality .hw-collection .hscroll__card { scroll-margin-top: var(--nav-h); }
/* phones travel sideways too (Josh, 2026-10-15): the shared phone track, the photograph 4:3 so Kelly's line fits under it;
   reduced motion stacks the panels as before */
@media (max-width: 767px) {
  .page-hospitality .hw-collection .hscroll__img { aspect-ratio: 4 / 3; }
  .page-hospitality .hw-collection.is-static .hscroll__panel { padding-bottom: var(--space-head); }
  .page-hospitality .hw-collection.is-static .hscroll__panel:last-child { padding-bottom: var(--section); }
}
/* reduced motion on tablets and desktops: the panels in two columns under the intro (the seventh centred), not a 7-deep stack */
@media (min-width: 768px) {
  .page-hospitality .hw-collection.is-static .hscroll__row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: var(--col-gap); padding-inline: var(--edge); }
  .page-hospitality .hw-collection.is-static .hscroll__panel { width: auto; padding-inline: 0; }
  .page-hospitality .hw-collection.is-static .hscroll__panel--intro { grid-column: 1 / -1; display: block; padding: var(--section) 0 var(--space-open); }
  .page-hospitality .hw-collection.is-static .hscroll__panel:last-child { grid-column: 1 / -1; justify-self: center; width: calc(50% - var(--col-gap) / 2); }
  .page-hospitality .hw-collection.is-static .hscroll__img { aspect-ratio: 3 / 2; }
}

/* ───────────── the experience: a scroll film chapter (css/scroll-film.css, Josh's pick 2026-10-15), then the homepage rail
   with a gold line icon beside each number. The film's window opens out of the collection track's crest navy, so the
   surround takes that navy rather than the film's deep bed and the two meet without a seam. The rail follows on the white
   page as the film's continuation: its arrows on the right above the cards, a shorter opening than a new section ───────────── */
.page-hospitality .hw-xfilm { background-color: var(--brand); }
/* after the swap the head has already faded out on its container (js/scroll-film.js); its children follow so the head's
   words report their real opacity and are not judged as visible text over the lede (no visual change; still in the
   accessibility tree). Component request filed: fade the children in the script */
.page-hospitality .hw-xfilm.is-swapped .sfilm__head > * { opacity: 0 !important; }
.page-hospitality .hw-experience { padding-block: var(--space-open); }
.page-hospitality .hw-experience .showcase__intro { justify-content: flex-end; }
.page-hospitality .hw-experience__step { display: flex; align-items: center; gap: 12px; }
.page-hospitality .hw-experience__icon { flex: none; width: 24px; height: 24px; color: var(--accent); }
.page-hospitality .hw-experience .rail__img { object-position: var(--focus, 50% 50%); }

/* ───────────── featured destinations: the heading beside one door (Limestone Bay Estate, the property's own photograph
   in the shared 4:3 door frame) ───────────── */
.page-hospitality .hw-featured { padding-top: 0; }
.page-hospitality .hw-featured__grid { display: grid; gap: var(--space-open) var(--col-gap); align-items: center; }
.page-hospitality .hw-featured__head { margin-bottom: 0; }
.page-hospitality .hw-featured__list { width: 100%; max-width: 30rem; }
@media (min-width: 992px) {
  .page-hospitality .hw-featured__grid { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .page-hospitality .hw-featured__head { grid-column: 1 / span 6; }
  .page-hospitality .hw-featured__list { grid-column: 8 / -1; max-width: none; }
}
.page-hospitality .hw-featured__text { margin-top: 0.75rem; max-width: 36ch; color: var(--text-3); }
.page-hospitality .hw-featured .door__title { margin-top: 0; }
.page-hospitality .hw-featured .door__link:hover .door__img { transform: none; } /* not a link yet: no hover zoom */

/* ───────────── wellness, recreation & lifestyle on the crest navy: four tall photographs in a staggered row, the
   fifteen experiences beneath with their gold line icons (five columns from 1200px, three from 768px, two on phones) ───────────── */
.page-hospitality .hw-lifestyle__photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--col-gap); align-items: start; }
.page-hospitality .hw-lifestyle__tile { aspect-ratio: 3 / 4; overflow: hidden; overflow: clip; } /* clip, not a scroll container: the 1.08 settle never adds scrollable overflow */
.page-hospitality .hw-lifestyle__tile:nth-child(even) { margin-top: var(--space-head); }
.page-hospitality .hw-lifestyle__tile img { width: 100%; height: 100%; object-fit: cover; object-position: var(--focus, 50% 50%); filter: saturate(0.9); background-color: var(--raised); }
@media (min-width: 768px) {
  .page-hospitality .hw-lifestyle__photos { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .page-hospitality .hw-lifestyle__tile:nth-child(even) { margin-top: var(--space-open); }
}
/* the photographs enter on the shared [data-reveal-media] reveal (pages.js adds .is-in once, as each tile comes into view;
   hidden only under .pages-js, the class that same script sets): here the clip wipes upward from the bottom edge instead
   of opening from the middle, with the shared 1.08 to 1 settle, 120 ms apart along each row (four across from 768px, two
   on phones). The clip sits on the photograph, not the tile: Chrome measures an observed element through its own
   clip-path, so a fully clipped tile would never reach the observer's 20% and never reveal. Clip-path and transform
   only, so nothing moves in the layout */
.pages-js .page-hospitality .hw-lifestyle__tile[data-reveal-media] { clip-path: none; transition: none; }
.pages-js .page-hospitality .hw-lifestyle__tile[data-reveal-media] img { clip-path: inset(100% 0 0 0); transition: clip-path 1200ms var(--ease-out) var(--reveal-delay, 0ms), transform 1400ms var(--ease-out) var(--reveal-delay, 0ms); }
.pages-js .page-hospitality .hw-lifestyle__tile[data-reveal-media].is-in img { clip-path: inset(0 0 0 0); }
.page-hospitality .hw-lifestyle__tile:nth-child(even) { --reveal-delay: 120ms; }
@media (min-width: 768px) {
  .page-hospitality .hw-lifestyle__tile:nth-child(3) { --reveal-delay: 240ms; }
  .page-hospitality .hw-lifestyle__tile:nth-child(4) { --reveal-delay: 360ms; }
}
.page-hospitality .hw-lifestyle__body { margin-top: var(--space-open); }
.page-hospitality .hw-lifestyle__lead { margin-bottom: 1rem; font-family: var(--font-text); font-size: var(--fs-label); font-weight: 500; line-height: 1.4; letter-spacing: 0.2em; text-transform: uppercase; color: var(--text-3); max-width: none; }
.page-hospitality .hw-lifestyle__names { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.page-hospitality .hw-lifestyle__names .index__item { padding: 1.1rem 0 1.2rem; align-items: center; }
.page-hospitality .hw-lifestyle__names .index__icon { grid-row: 1; width: 26px; height: 26px; }
.page-hospitality .hw-lifestyle__names .index__title { font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.25rem); }
@media (min-width: 768px) { .page-hospitality .hw-lifestyle__names { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .page-hospitality .hw-lifestyle__names { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
@media (max-width: 479px) { .page-hospitality .hw-lifestyle__names .index__item { column-gap: 0.75rem; grid-template-columns: 22px minmax(0, 1fr); } .page-hospitality .hw-lifestyle__names .index__icon { width: 22px; height: 22px; } }

/* ───────────── gatherings & celebrations: the large editorial image takes seven columns beside the copy ───────────── */
@media (min-width: 992px) {
  .page-hospitality .hc-gatherings .split__media { grid-column: 6 / -1; }
  .page-hospitality .hc-gatherings .split__body { grid-column: 1 / span 4; }
}

/* ───────────── wellness advisory team: one large gold-ring portrait beside the name, title and opening of the biography ───────────── */
.page-hospitality .advisors { padding-bottom: var(--space-open); }
.page-hospitality .advisor { display: grid; gap: var(--space-head) var(--col-gap); align-items: center; }
.page-hospitality .advisor__portrait { justify-self: start; width: min(15rem, 66%); height: auto; aspect-ratio: 1; object-fit: contain; }
.page-hospitality .advisor__name { font-size: var(--fs-subtitle); font-weight: 400; line-height: 1.15; letter-spacing: -0.01em; color: var(--text-1); }
.page-hospitality .advisor__role { margin-top: 0.75rem; font-family: var(--font-text); font-size: var(--fs-label); font-weight: 500; line-height: 1.5; letter-spacing: 0.06em; text-transform: uppercase; color: var(--text-2); }
.page-hospitality .advisor__bio { margin-top: var(--space-head); max-width: 56ch; color: var(--text-3); }
.page-hospitality .advisor__more { margin-top: calc(var(--space-action) - 0.75rem); }
@media (min-width: 768px) {
  .page-hospitality .advisor { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); column-gap: clamp(2rem, 5vw, 6rem); }
  .page-hospitality .advisor__portrait { justify-self: center; width: min(22rem, 100%); }
}
@media (min-width: 992px) {
  .page-hospitality .advisor { grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--col-gap); }
  .page-hospitality .advisor__portrait { grid-column: 1 / span 6; }
  .page-hospitality .advisor__body { grid-column: 8 / -1; }
  .page-hospitality .advisor__name { font-weight: 300; }
}
@media (hover: hover) and (pointer: fine) { .page-hospitality .advisor__more:hover::after { transform: scaleX(1); } }
.page-hospitality .advisors__more { display: grid; gap: 1rem var(--col-gap); margin-top: var(--space-open); padding-top: var(--space-head); border-top: 1px solid var(--line-2); }
.page-hospitality .advisors__more-title { font-size: var(--fs-lede); font-weight: 400; line-height: 1.3; color: var(--text-1); }
.page-hospitality .advisors__more p { max-width: 56ch; color: var(--text-3); }
@media (min-width: 992px) {
  .page-hospitality .advisors__more { grid-template-columns: repeat(12, minmax(0, 1fr)); }
  .page-hospitality .advisors__more-title { grid-column: 1 / span 6; }
  .page-hospitality .advisors__more p { grid-column: 8 / -1; }
}

/* ───────────── wellness services: the homepage core cards, not linked; four over three from 1200px (three, three and one
   from 992px), the short row centred ───────────── */
.page-hospitality .hw-services { padding-top: 0; }
.page-hospitality .hw-services .core__link { border-color: var(--line); }
@media (min-width: 992px) {
  .page-hospitality .hw-services__list { grid-template-columns: repeat(6, minmax(0, 1fr)); row-gap: clamp(1rem, 1.6vw, 1.75rem); }
  .page-hospitality .hw-services__list > * { grid-column: span 2; }
  .page-hospitality .hw-services__list > :nth-child(7) { grid-column: 3 / span 2; }
}
@media (min-width: 1200px) {
  .page-hospitality .hw-services__list { grid-template-columns: repeat(8, minmax(0, 1fr)); }
  .page-hospitality .hw-services__list > :nth-child(7) { grid-column: span 2; }
  .page-hospitality .hw-services__list > :nth-child(5) { grid-column: 2 / span 2; }
}
@media (max-width: 991px) and (min-width: 640px) {
  .page-hospitality .hw-services__list > :last-child { grid-column: 1 / -1; justify-self: center; width: calc(50% - clamp(1rem, 1.6vw, 1.75rem) / 2); }
}
.page-hospitality .hw-services .core__name { font-size: clamp(1.375rem, 1.2rem + 0.5vw, 1.75rem); }
.js .page-hospitality .hw-services .core__step[data-reveal]:nth-child(5) { transition-delay: 0ms; }
.js .page-hospitality .hw-services .core__step[data-reveal]:nth-child(6) { transition-delay: 80ms; }
.js .page-hospitality .hw-services .core__step[data-reveal]:nth-child(7) { transition-delay: 160ms; }

/* ───────────── wellness across every destination: the homepage zoom; the services' bottom air is its gap ───────────── */
.page-hospitality .hw-zoom { padding-top: 0; }
.page-hospitality .hw-zoom .zoom__h { max-width: 16ch; text-wrap: balance; }
.page-hospitality .hw-zoom .zoom__img { object-position: 50% 55%; }

/* ───────────── Confidante Hospitality and the partnerships ───────────── */
.page-hospitality .hc-company { padding-bottom: var(--space-open); }
.page-hospitality .hc-company .intro__statement { max-width: 40ch; font-size: var(--fs-subtitle); line-height: 1.35; }
.page-hospitality .hc-partners .section-head { margin-bottom: 0; }

/* ───────────── reduced motion: the photographs hold still (the lifestyle photographs shown at once, no wipe or
   settle), the bio action's underline does not slide ───────────── */
@media (prefers-reduced-motion: reduce) {
  .page-hospitality .advisor__more::after { transition: none; }
  .pages-js .page-hospitality .hw-lifestyle__tile[data-reveal-media], .pages-js .page-hospitality .hw-lifestyle__tile[data-reveal-media] img { clip-path: none; transform: none; transition: none; }
}
