/* Home: hero film, day explorer, sections. */

/* ---------- hero ---------- */
.hero { position: relative; height: 150vh; background: var(--mist); }   /* 24 Oct: 1.5 screens (was 3); touch scrolls natively */
.hero__stage { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; }
.hero__poster, .hero__poster img, .hero__film { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero__film { opacity: 0; transition: opacity .6s var(--ease); }
.hero__film.is-ready { opacity: 1; }
.hero__shade { position: absolute; inset: 0; pointer-events: none;
  /* the headline side stays calm (Hugo audit, 23 Oct): the opening shot is mirrored so the skyline sits right and the
     copy sits over open water, and a light shade on the left 45% keeps it readable; it fades as the copy leaves */
  background: linear-gradient(90deg, rgba(5, 22, 56, .42) 0%, rgba(5, 22, 56, .26) 30%, rgba(5, 22, 56, .04) 52%, rgba(5, 22, 56, 0) 64%),
              linear-gradient(180deg, rgba(5, 22, 56, .55) 0%, rgba(5, 22, 56, .12) 32%, rgba(5, 22, 56, 0) 55%, rgba(5, 22, 56, .28) 100%); }
@media (max-width: 700px) { .hero__shade { background: linear-gradient(180deg, rgba(5, 22, 56, .7) 0%, rgba(5, 22, 56, .55) 45%, rgba(5, 22, 56, .2) 70%, rgba(5, 22, 56, .35) 100%); } }
/* the ending: the house stays visible up top under a thin veil, and the mist thickens downward into the intro
   section's own colour, so the hero hands over instead of washing out to a blank screen */
.hero__mist { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(243,247,252,.18) 0%, rgba(243,247,252,.42) 38%, rgba(243,247,252,.86) 70%, var(--mist) 94%); opacity: 0; pointer-events: none; }
.hero__copy { position: absolute; left: 0; right: 0; top: calc(var(--crisis-h) + var(--nav-h) + clamp(28px, 7vh, 90px)); color: #fff; }
.hero__eyebrow { margin-bottom: clamp(16px, 2.4vh, 28px); }
.hero__title { font-size: var(--fs-hero); font-weight: 600; line-height: 1.02; letter-spacing: -.03em; text-shadow: 0 2px 40px rgba(5, 22, 56, .25); }
.hero__line { display: block; }
.hero__line em { color: #CFE3FF; }
@media (prefers-reduced-motion: no-preference) {
  .hero__line { animation: heroRise 1.4s cubic-bezier(.16, .8, .24, 1) backwards; }
  .hero__line:nth-child(2) { animation-delay: .12s; }
  .hero__line:nth-child(3) { animation-delay: .24s; }
  .hero__eyebrow { animation: heroFade 1.2s cubic-bezier(.16, .8, .24, 1) .5s backwards; }
  .hero__foot { animation: heroFade 1.2s cubic-bezier(.16, .8, .24, 1) .62s backwards; }
}
@keyframes heroRise { from { translate: 0 .45em; } }
@keyframes heroFade { from { opacity: 0; translate: 0 18px; } }
/* scroll-driven hero copy and overlays move on their own compositor layers (transform/opacity only), so the soft text-shadows are not re-rasterised every scroll frame */
.js-motion .hero__line, .js-motion .hero__foot, .js-motion .hero__eyebrow, .js-motion .hero__beat, .js-motion .hero__reveal, .js-motion .hero__shade, .js-motion .hero__mist { will-change: transform, opacity; }
.hero__foot { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 24px; margin-top: clamp(24px, 5vh, 56px); }
.hero__sub { max-width: 30em; font-size: var(--fs-lede); line-height: 1.5; color: rgba(255, 255, 255, .9); margin: 0; text-shadow: 0 1px 20px rgba(5, 22, 56, .35); }
.hero__ctas { display: flex; flex-wrap: wrap; gap: 12px; }
.hero__ghost { color: #fff; border-color: rgba(255, 255, 255, .6); }
.hero__beat { position: absolute; left: 0; right: 0; top: 27%; transform: translateY(-50%); text-align: center; font-family: var(--serif); font-size: clamp(2.4rem, 6vw, 5.6rem); line-height: 1; color: #fff; opacity: 0; margin: 0; padding-inline: var(--gutter); pointer-events: none; text-shadow: 0 2px 30px rgba(5, 22, 56, .35); }
.hero__beat em { color: #CFE3FF; }
.hero__beat { isolation: isolate; text-shadow: 0 2px 24px rgba(5, 22, 56, .55), 0 0 2px rgba(5, 22, 56, .25); }
.hero__beat::before { content: ""; position: absolute; z-index: -1; left: 10%; right: 10%; top: -60%; bottom: -60%; background: radial-gradient(ellipse at center, rgba(5, 22, 56, .42) 0%, rgba(5, 22, 56, .18) 45%, rgba(5, 22, 56, 0) 72%); pointer-events: none; }
.hero__beat > span { display: inline-block; }
.js-motion .hero__beat > span { opacity: 0; will-change: transform, opacity; }
.hero__reveal { position: absolute; left: var(--gutter); right: var(--gutter); top: 50%; transform: translateY(-50%); margin: 0; color: #fff; opacity: 0; pointer-events: none; text-shadow: 0 2px 36px rgba(5, 22, 56, .55); }
.hero__reveal .serif { display: block; font-size: calc(var(--fs-hero) * .72); font-weight: 600; line-height: 1.02; letter-spacing: -.03em; max-width: 12em; }
.reduced .hero__reveal { display: none; }
.hero__scroll { position: absolute; left: 50%; bottom: 26px; transform: translateX(-50%); display: grid; justify-items: center; gap: 10px; color: rgba(255, 255, 255, .85); font-size: .8125rem; letter-spacing: var(--track-label); text-transform: uppercase; }
.hero__scroll i { width: 1px; height: 46px; background: rgba(255, 255, 255, .3); position: relative; overflow: hidden; }
.hero__scroll b { position: absolute; left: 0; top: 0; width: 100%; height: 40%; background: #fff; animation: drip 2.2s var(--ease-in-out) infinite; }
/* once the film starts, the line stops dripping and fills with progress: a fixed-pace scroll should look deliberate */
.hero__scroll.is-going b { animation: none; height: 100%; transform-origin: top; transform: scaleY(var(--p, 0)); }
@keyframes drip { 0% { transform: translateY(-100%); } 100% { transform: translateY(260%); } }
@media (max-width: 700px) {
  .hero__copy { top: calc(var(--crisis-h) + var(--nav-h) + 20px); }
  .hero__foot { margin-top: 22px; }
  .hero__sub { font-size: 1rem; }
  .hero__ctas .btn { flex: 1 1 100%; }
}
.reduced .hero { height: auto; }
.reduced .hero__stage { position: relative; height: 100svh; min-height: 640px; }
.reduced .hero__film, .reduced .hero__scroll, .reduced .hero__beat { display: none; }


/* ---------- intro ---------- */
.intro { background: var(--mist); padding-top: clamp(40px, 6vw, 90px); }
.intro__statement { font-family: var(--serif); font-weight: 500; font-size: clamp(1.9rem, 3.8vw, 3.4rem); line-height: 1.15; letter-spacing: -.02em; max-width: 15.5em; margin: 0; }
.intro__statement em { color: var(--sapphire-deep); }
.facts { display: grid; grid-template-columns: 1.5fr 1fr 1fr; gap: 0; margin-top: clamp(56px, 8vw, 110px); border-top: 1px solid var(--line); }
.fact { padding: 26px 24px 0 0; display: grid; gap: 8px; align-content: start; }
.fact + .fact { padding-left: 24px; border-left: 1px solid var(--line); }
.fact b { font-size: clamp(3rem, 5vw, 4.6rem); line-height: .9; font-weight: 400; }
.fact b small { font-size: .35em; font-family: var(--sans); margin-left: 4px; letter-spacing: .04em; }
.fact span { font-size: .9375rem; color: var(--ink-2); max-width: 16em; }
.fact:first-child b { font-size: clamp(5.5rem, 10vw, 9.5rem); line-height: .8; color: var(--sapphire-deep); }
.todo { color: #B26B00; font-weight: 600; cursor: help; }
@media (max-width: 900px) { .facts { grid-template-columns: 1fr 1fr; } .fact:first-child { grid-column: 1 / -1; } .fact:nth-child(2) { border-left: 0; padding-left: 0; } .fact:nth-child(n+2) { border-top: 1px solid var(--line); margin-top: 26px; } }

/* ---------- day explorer ---------- */
.day { position: relative; height: 440vh; background: #F3F7FC; }
.day__pin { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; display: flex; align-items: center; }
.day__sky { position: absolute; left: 0; right: 0; top: calc(var(--crisis-h) + var(--nav-h) - 10px); height: 20vh; color: rgba(20, 24, 28, .18); pointer-events: none; }
.day__arc { width: 100%; height: 100%; }
.day__grid { display: grid; grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr); gap: clamp(28px, 5vw, 80px); align-items: center; padding-top: calc(var(--crisis-h) + var(--nav-h) + 4vh); }
.day__h { font-size: clamp(2.4rem, 4.4vw, 4.2rem); }
.day__intro { margin: 12px 0 26px; max-width: 30em; }
.day__steps { list-style: none; margin: 0; padding: 0; position: relative; }
.day__step { display: grid; grid-template-columns: 70px 1fr; gap: 14px; padding: 11px 0; border-top: 1px solid var(--line); opacity: .36; transition: opacity .5s var(--ease); cursor: pointer; }
.day__step:last-child { border-bottom: 1px solid var(--line); }
.day__step h3 { font-size: 1.35rem; line-height: 1.2; }
.day__step p { margin: 0; max-height: 0; overflow: hidden; opacity: 0; font-size: .9375rem; color: var(--ink-2); transition: max-height .6s var(--ease), opacity .5s var(--ease), margin .5s var(--ease); }
.day__time { font-family: var(--serif); font-weight: 600; font-size: 1.35rem; color: var(--sapphire-deep); padding-top: 1px; }
.day__step.is-active { opacity: 1; }
.day__step.is-active p { max-height: 6em; opacity: 1; margin-top: 6px; }
.day__media { position: relative; }
.day__frame { position: relative; margin: 0; aspect-ratio: 4 / 3.4; border-radius: 3px; overflow: hidden; background: #cfd6de; }
.day__layer { position: absolute; inset: 0; opacity: 0; transform: scale(1.06); transition: opacity 1s var(--ease), transform 1.6s var(--ease); }
.day__layer.is-active { opacity: 1; transform: scale(1); }
.day__layer img, .day__layer video { width: 100%; height: 100%; object-fit: cover; }
.day__cap { position: absolute; left: 18px; right: 18px; bottom: 16px; display: flex; align-items: center; gap: 14px; color: #fff; font-family: var(--serif); font-size: 1.4rem; text-shadow: 0 1px 12px rgba(0, 0, 0, .4); }
.day__prog { flex: 1; height: 1px; background: rgba(255, 255, 255, .35); position: relative; }
.day__prog i { position: absolute; left: 0; top: 0; height: 100%; width: 100%; background: #fff; transform: scaleX(0); transform-origin: left; }
.day__note { margin-top: 12px; }
@media (max-width: 980px) {
  .day { height: auto; background: var(--paper); }
  .day__pin { position: relative; height: auto; display: block; padding-block: 96px; }
  .day__sky { display: none; }
  .day__grid { grid-template-columns: 1fr; padding-top: 0; }
  .day__media { display: none; }
  .day__step { opacity: 1; grid-template-columns: 1fr; gap: 10px; padding: 18px 0; cursor: default; }
  .day__step p { max-height: none; opacity: 1; margin-top: 6px; }
  .day__step .day__thumb { display: block; border-radius: 3px; overflow: hidden; aspect-ratio: 16 / 10; margin-top: 12px; }
  .day__step .day__thumb img { width: 100%; height: 100%; object-fit: cover; }
}
.reduced .day { height: auto; }
.reduced .day__pin { position: relative; height: auto; padding-block: 96px; }
.reduced .day__step { opacity: 1; }
.reduced .day__step p { max-height: none; opacity: 1; margin-top: 6px; }

/* ---------- therapies ---------- */
.therapies__head, .pricing__head, .team__head, .journey__head { display: grid; grid-template-columns: 1.1fr .9fr; gap: clamp(24px, 5vw, 80px); align-items: end; margin-bottom: clamp(48px, 7vw, 96px); }
@media (max-width: 900px) { .therapies__head, .pricing__head, .team__head, .journey__head { grid-template-columns: 1fr; } }
.t-row { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 5vw, 80px); align-items: center; padding-block: clamp(36px, 5vw, 64px); border-top: 1px solid var(--line); }
.t-row--flip > :first-child { order: 2; }
.t-row__n { font-size: 1.4rem; font-weight: 600; color: var(--sapphire); display: block; margin-bottom: 10px; }
.t-row h3 { font-size: clamp(1.9rem, 3vw, 2.8rem); margin-bottom: 14px; }
.t-list { list-style: none; margin: 18px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 0 22px; }
.t-list li { padding: 10px 0; border-top: 1px solid var(--line); font-size: .9375rem; }
.t-row__card { background: #fff; border-radius: var(--radius-lg); padding: clamp(24px, 3vw, 40px); display: grid; gap: 10px; border: 1px solid var(--line); }
.t-quote { font-size: clamp(1.6rem, 2.4vw, 2.2rem); line-height: 1.15; margin: 0; }
.t-row .media img { height: 120%; }
@media (max-width: 900px) { .t-row { grid-template-columns: 1fr; } .t-row--flip > :first-child { order: 0; } .t-list { grid-template-columns: 1fr; } }

/* ---------- pricing ---------- */
.indicative { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: .875rem; color: var(--ink-2); margin: 0 0 22px; }
/* pricing: the flagship is a full-width white row with the stone photographed on acrylic; the other three are a
   ruled comparison, not three more cards */
.plans { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 0; row-gap: clamp(36px, 5vw, 64px); }
.plan { display: flex; flex-direction: column; gap: 6px; padding: 26px clamp(18px, 2.4vw, 32px) 0; border-top: 1px solid var(--ink); }
.plan:not(.plan--feature) + .plan:not(.plan--feature) { border-left: 1px solid var(--line); }
.plan:nth-child(2) { padding-left: 0; }
.plan h3 { font-size: 1.7rem; }
.plan__kicker { font-size: var(--fs-label); letter-spacing: var(--track-label); text-transform: uppercase; font-weight: 500; color: var(--ink-3); margin: 0; }
.plan__price { font-family: var(--serif); font-size: 2.6rem; line-height: 1; margin: 14px 0 4px; }
.plan__price small { font-family: var(--sans); font-size: .8125rem; color: var(--ink-3); }
.plan__meta { font-size: .875rem; color: var(--ink-3); margin: 0 0 12px; }
.plan ul { list-style: none; margin: 0 0 20px; padding: 0; display: grid; gap: 8px; font-size: .9375rem; flex: 1; }
.plan li { padding-left: 20px; position: relative; }
.plan li::before { content: ""; position: absolute; left: 2px; top: .62em; width: 7px; height: 7px; transform: rotate(45deg); background: var(--sapphire); opacity: .75; }
.plan .btn { align-self: flex-start; }
.plan--feature { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: clamp(24px, 4vw, 64px); align-items: center; background: #fff; border: 1px solid var(--line); border-top: 1px solid var(--ink); padding: clamp(28px, 3.6vw, 52px); }
.plan--feature .plan__price { font-size: clamp(3.4rem, 6vw, 5.6rem); }
.plan--feature h3 { font-size: clamp(2rem, 3vw, 2.6rem); }
.plan--feature ul { margin: 0; align-self: center; }
.pricing__foot { display: grid; grid-template-columns: 1fr 1.6fr; gap: 14px; margin-top: 14px; }
.pricing__foot .card { border-radius: var(--radius-lg); }
.funding { display: flex; align-items: center; justify-content: space-between; gap: 22px; }
@media (max-width: 760px) { .plans, .pricing__foot, .plan--feature { grid-template-columns: 1fr; } .plan, .plan:nth-child(2) { padding-left: 0; padding-right: 0; } .plan:not(.plan--feature) + .plan:not(.plan--feature) { border-left: 0; } .plan--feature { padding: 24px; } .funding { flex-direction: column; align-items: flex-start; } }

/* ---------- admissions ---------- */
.admissions h2 { max-width: 12em; margin-bottom: clamp(40px, 6vw, 80px); }
/* admissions: heading holds on the left while four steps stack on the right like a staircase (the journey section
   below keeps the horizontal track, so the two never read as the same four columns) */
.admissions .wrap { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); column-gap: clamp(32px, 6vw, 110px); align-items: start; }
.admissions .chapter { grid-column: 1 / -1; }
.admissions h2 { position: sticky; top: 130px; grid-column: 1; }
.admissions .steps, .admissions .admissions__ctas, .admissions .admissions__bed { grid-column: 2; }
.admissions .wrap--refer { display: block; }
.admissions .admissions__bed + .admissions__ctas { margin-top: 22px; }
.refer { margin-top: clamp(40px, 6vw, 72px); display: grid; grid-template-columns: minmax(0, 1.4fr) auto; gap: clamp(20px, 4vw, 56px); align-items: center; padding: clamp(24px, 4vw, 44px); background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--sapphire); border-radius: var(--radius-lg); }
.refer h3 { font-size: clamp(1.5rem, 2.4vw, 2rem); margin: 6px 0 10px; }
.refer p:last-child { margin: 0; color: var(--ink-2); max-width: 40em; text-wrap: pretty; }
.refer__ctas { display: flex; flex-direction: column; gap: 10px; }
@media (max-width: 860px) { .refer { grid-template-columns: 1fr; } .refer__ctas { flex-direction: row; flex-wrap: wrap; } }
.steps { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.step { display: grid; grid-template-columns: clamp(64px, 7vw, 104px) 1fr; column-gap: 20px; padding: 26px 0 30px; border-top: 1px solid rgba(20, 24, 28, .18); }
.step:nth-child(2) { margin-left: 4%; } .step:nth-child(3) { margin-left: 8%; } .step:nth-child(4) { margin-left: 12%; }
.step__n { grid-row: span 2; font-size: clamp(3rem, 5vw, 4.6rem); line-height: .85; font-weight: 600; color: var(--sapphire-deep); }
.step h3 { font-size: 1.6rem; margin-bottom: 8px; }
.step p { font-size: .9375rem; color: var(--ink-2); margin: 0; max-width: 46ch; }
@media (max-width: 900px) { .admissions .wrap { grid-template-columns: 1fr; } .admissions h2 { position: static; } .admissions .steps, .admissions .admissions__ctas, .admissions .admissions__bed { grid-column: 1; } .step:nth-child(n) { margin-left: 0; } }

/* ---------- circle ---------- */
.circle__grid { align-items: center; }
.circle h2 { margin: 14px 0 20px; }
.circle__points { list-style: none; padding: 0; margin: 26px 0 28px; display: grid; gap: 12px; }
.circle__points li { padding-left: 26px; position: relative; color: rgba(233, 236, 245, .86); }
.circle__points li::before { content: ""; position: absolute; left: 0; top: .55em; width: 10px; height: 10px; border-radius: 50%; border: 1px solid var(--dawn); }
.phone { background: #fff; color: var(--ink); border-radius: 36px; padding: 22px 20px 20px; max-width: 390px; margin-left: auto; box-shadow: 0 50px 100px -40px rgba(0, 0, 0, .7), 0 0 0 10px rgba(255, 255, 255, .06); }
.phone__bar { display: flex; justify-content: space-between; align-items: center; font-size: .8125rem; font-weight: 600; color: var(--ink-3); }
.phone__h { font-size: 1.9rem; margin: 10px 0 6px; }
.person { border: 1px solid var(--line); border-radius: 18px; padding: 6px 14px 0; margin-top: 10px; }
.person__head { display: flex; align-items: center; gap: 10px; padding: 8px 0 4px; }
.person__head small { margin-left: auto; color: var(--ink-3); font-size: .75rem; }
.av { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; background: var(--sapphire); color: #fff; font-weight: 600; font-size: .8125rem; }
.av--2 { background: var(--moss); }
.person .switch { padding: 10px 0; font-size: .875rem; }
.person .switch:last-child { border-bottom: 0; }
.log { margin-top: 14px; background: var(--mist); border-radius: 16px; padding: 12px 14px; }
.log__h { font-size: var(--fs-label); letter-spacing: var(--track-label); text-transform: uppercase; font-weight: 500; color: var(--ink-3); margin: 0 0 6px; }
.log__list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; font-size: .8125rem; }
.log__list li { display: flex; justify-content: space-between; gap: 10px; }
.log__list time { color: var(--ink-3); white-space: nowrap; }
.log__list li.is-new { animation: logIn .6s var(--ease); }
@keyframes logIn { from { opacity: 0; transform: translateY(-6px); } }
@media (max-width: 900px) { .phone { margin: 0 auto; } }

/* ---------- journey ---------- */
.track { position: relative; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(16px, 3vw, 40px); padding-top: 40px; }
.track__line { position: absolute; left: 0; right: 0; top: 10px; height: 1px; background: var(--line); }
.track__line i { position: absolute; left: 0; top: 0; height: 100%; width: 100%; background: var(--sapphire); transform-origin: left; transform: scaleX(var(--track, 0)); }
.track__dot { position: absolute; top: -36px; left: 0; width: 13px; height: 13px; border-radius: 50%; background: var(--mist); border: 1px solid var(--sapphire); }
.track__stop { position: relative; }
.track__stop h3 { font-size: 1.6rem; margin-bottom: 8px; display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.track__stop p { font-size: .9375rem; color: var(--ink-2); margin: 0; }
.journey__portal { margin-top: clamp(48px, 6vw, 80px); display: flex; align-items: center; justify-content: space-between; gap: 28px; border-radius: var(--radius-lg); }
.journey__portal h3 { margin: 10px 0 8px; }
@media (max-width: 900px) {
  .track { grid-template-columns: 1fr; padding-top: 0; padding-left: 34px; gap: 26px; }
  .track__line { left: 6px; right: auto; top: 0; bottom: 0; width: 1px; height: auto; }
  .track__line i { transform: scaleY(var(--track, 0)); transform-origin: top; }
  .track__dot { top: 8px; left: -34px; }
  .journey__portal { flex-direction: column; align-items: flex-start; }
}

/* ---------- team ---------- */
/* team (23 Oct, Hugo audit): an editorial roster, no portraits for privacy. Two leads set large 50/50, then ruled lists. */
.roster2 { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 5vw, 80px); border-top: 1px solid var(--ink); padding-top: clamp(24px, 3vw, 40px); }
.lead2__role, .crew2__h { font-size: var(--fs-label); font-weight: 500; letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-3); margin: 0 0 14px; }
.lead2__name { font-weight: 600; font-size: clamp(2.8rem, 5.4vw, 4.8rem); line-height: 1; letter-spacing: -.03em; margin: 0 0 20px; color: var(--ink); }
.lead2__bio { font-size: var(--fs-body); line-height: 1.6; color: var(--ink-2); max-width: 40ch; margin: 0; }
.lead2__reg { margin: 14px 0 0; font-size: var(--fs-micro); color: var(--ink-3); }
.crew2 { margin-top: clamp(40px, 5vw, 64px); }
.crew2__list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.crew2__list li { display: grid; grid-template-columns: minmax(120px, .7fr) minmax(150px, .9fr) 2.4fr; gap: 20px; align-items: baseline; padding: 18px 0; border-bottom: 1px solid var(--line); }
.crew2__list b { font-weight: 600; font-size: 1.6rem; letter-spacing: -.02em; line-height: 1.1; color: var(--ink); }
.crew2__role { font-size: var(--fs-small); color: var(--sapphire); font-weight: 500; }
.crew2__bio { font-size: var(--fs-small); line-height: 1.6; color: var(--ink-2); }
.crew2__bio small { display: block; margin-top: 4px; font-size: var(--fs-micro); color: var(--ink-3); }
.team-note { margin: clamp(32px, 4vw, 48px) 0 0; font-size: var(--fs-small); color: var(--ink-3); max-width: 60ch; }
@media (max-width: 760px) { .roster2 { grid-template-columns: 1fr; } .crew2__list li { grid-template-columns: 1fr; gap: 4px; } }

/* ---------- finale ---------- */
.finale { position: relative; min-height: 110vh; display: flex; align-items: center; overflow: hidden; background: var(--sapphire-night); color: #fff; }
.finale__media { position: absolute; inset: -8% 0; }
.finale__media img, .finale__video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.finale__video { opacity: 0; transition: opacity 1.2s var(--ease); }
.finale__video.is-playing { opacity: 1; }
@media (max-width: 760px) { .finale__video { display: none; } }
.finale__shade { position: absolute; inset: 0; background: radial-gradient(ellipse 60% 42% at 50% 52%, rgba(5, 22, 56, .5), rgba(5, 22, 56, 0) 100%), linear-gradient(180deg, rgba(5, 22, 56, .7) 0%, rgba(5, 22, 56, .2) 40%, rgba(5, 22, 56, .6) 100%); }
.finale__copy { position: relative; text-align: center; display: grid; justify-items: center; gap: 18px; padding-block: 140px; }
.finale__title { font-size: var(--fs-hero); font-weight: 600; line-height: 1.02; letter-spacing: -.03em; max-width: 9em; }
.finale__title em { color: #CFE3FF; }
.finale__sub { max-width: 32em; color: rgba(255, 255, 255, .85); font-size: var(--fs-lede); margin: 0 0 8px; }
.finale .hero__ctas { justify-content: center; }

/* ---------- the house (client photography) ---------- */
.house { display: grid; gap: 14px; margin-top: clamp(56px, 8vw, 110px); }
.house__main { margin: 0; aspect-ratio: 16 / 8.4; }
.house__main picture { position: absolute; inset: 0; display: block; }
.house__main img { height: 112%; margin-top: -6%; }
.house__main::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(5, 22, 56, 0) 55%, rgba(5, 22, 56, .55) 100%); pointer-events: none; }
.house__tag { position: absolute; left: clamp(18px, 3vw, 40px); bottom: clamp(16px, 3vw, 36px); z-index: 1; display: grid; gap: 6px; color: #fff; }
.house__tag .serif { font-size: clamp(1.6rem, 3.4vw, 3.2rem); line-height: 1; letter-spacing: -.01em; }
.house__row { display: grid; grid-template-columns: 1fr 1fr .9fr; gap: 14px; align-items: flex-start; }
.house__row .media { margin: 0; aspect-ratio: 4 / 3; }
.house__cap { align-self: end; padding: 0 0 6px 10px; display: grid; gap: 10px; }
@media (max-width: 900px) { .house__main { aspect-ratio: 4 / 3; } .house__row { grid-template-columns: 1fr 1fr; } .house__cap { grid-column: 1 / -1; padding: 0; } }

/* ---------- interlude: full-bleed view, then a pinned horizontal gallery of the real house ---------- */

.gal { position: relative; background: var(--sapphire-night); color: #fff; }
.gal__pin { position: relative; overflow: hidden; padding-block: clamp(48px, 8vh, 96px) clamp(56px, 9vh, 110px); }
.gal__track { display: flex; align-items: flex-end; gap: clamp(16px, 2vw, 32px); padding-inline: max(var(--gutter), calc((100vw - var(--maxw)) / 2 + var(--gutter))); will-change: transform; }
.gal__intro { flex: 0 0 clamp(280px, 27vw, 400px); align-self: center; display: grid; gap: 18px; padding-right: clamp(12px, 3vw, 48px); }
.gal__h { font-size: clamp(2.2rem, 4.2vw, 4rem); line-height: .98; letter-spacing: -.02em; margin: 0; }
.gal__h em { color: #CFE3FF; }
.gal__p { color: rgba(255, 255, 255, .78); margin: 0; max-width: 24em; }
.gal__intro .btn { justify-self: start; }
.gal__item { flex: 0 0 auto; margin: 0; display: grid; gap: 14px; }
.gal__img { height: min(62vh, 640px); aspect-ratio: 3 / 2; border-radius: var(--radius-lg); }
.gal__item--tall .gal__img { aspect-ratio: 3 / 4; }
.gal__img img { transform: scale(1.04); transition: transform 1.2s var(--ease); }
.gal__item:hover .gal__img img { transform: scale(1); }
.gal__item figcaption { display: grid; grid-template-columns: auto 1fr; column-gap: 12px; row-gap: 2px; font-size: .9rem; max-width: 34em; }
.gal__item figcaption .num { grid-row: span 2; color: #CFE3FF; font-size: .8rem; padding-top: 3px; }
.gal__item figcaption b { font-weight: 500; }
.gal__item figcaption span:last-child { color: rgba(255, 255, 255, .66); }
.gal__end { flex: 0 0 clamp(260px, 26vw, 380px); align-self: center; display: grid; gap: 20px; justify-items: start; padding-inline: clamp(12px, 3vw, 48px) 0; }
.gal__end .serif { font-size: clamp(1.8rem, 3vw, 2.8rem); line-height: 1.02; margin: 0; }
.gal__end em { color: #CFE3FF; }
.gal__bar { position: absolute; left: max(var(--gutter), calc((100vw - var(--maxw)) / 2 + var(--gutter))); right: max(var(--gutter), calc((100vw - var(--maxw)) / 2 + var(--gutter))); bottom: clamp(24px, 4vh, 44px); height: 1px; background: rgba(255, 255, 255, .18); }
.gal__bar i { position: absolute; inset: 0; background: #CFE3FF; transform-origin: 0 50%; transform: scaleX(0); }
/* pinned horizontal travel on wide screens with motion; phones and reduced motion swipe natively */
.js-motion .gal--pin .gal__pin { position: sticky; top: 0; height: 100vh; height: 100svh; display: flex; flex-direction: column; justify-content: center; padding-block: 0; }
@media (max-width: 980px) {
  .gal__track { overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter); -webkit-overflow-scrolling: touch; scrollbar-width: none; padding-bottom: 8px; align-items: flex-start; gap: 12px; }
  .gal__track::-webkit-scrollbar { display: none; }
  .gal__item, .gal__intro, .gal__end { scroll-snap-align: start; }
  .gal__img, .gal__item--tall .gal__img { height: auto; width: 84vw; aspect-ratio: 1 / 1; }
  .gal__intro { flex-basis: 84vw; align-self: flex-start; padding-right: 0; }
  .gal__end { flex-basis: 76vw; }
}
@media (max-width: 700px) {   /* 31 Oct QA: a narrower intro so the first room shows a real edge, not a 41 px sliver */
  .gal__intro { flex-basis: 70vw; }
  .gal__bar { display: none; }
}
.reduced .gal__track { overflow-x: auto; scroll-snap-type: x mandatory; }
.gal__hint--touch { display: none; }
@media (max-width: 980px) { .gal__hint { display: none; } .gal__hint--touch { display: inline; } }
.reduced .gal__hint { display: none; } .reduced .gal__hint--touch { display: inline; }
.reduced .gal__bar { display: none; }

/* ---------- 10 Oct 2026: magazine corner meta, crisis strip under the hero, audience router ---------- */
.hero__meta { pointer-events: none; color: rgba(255, 255, 255, .78); font-size: .8125rem; font-weight: 500; letter-spacing: var(--track-label); text-transform: uppercase; line-height: 1.6; }
.hero__meta > span { position: absolute; }
.hero__meta > span:first-child { left: var(--gutter); bottom: 26px; }                                    /* magazine corners: */
.hero__meta > span:last-child { right: var(--gutter); top: calc(var(--crisis-h) + var(--nav-h) + 40px); text-align: right; }  /* bottom-left, top-right */
@media (max-width: 760px) { .hero__meta { display: none; } }
.crisis-strip { background: var(--paper); border-bottom: 1px solid var(--line); font-size: .875rem; position: relative; z-index: 2; }
.crisis-strip__in { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; padding-block: 14px; }
.crisis-strip a { color: var(--ink); text-underline-offset: .25em; font-weight: 500; }
.crisis-strip span[aria-hidden] { color: var(--ink-3); }
.crisis-strip__note { color: var(--ink-3); margin-left: auto; }
@media (max-width: 760px) { .crisis-strip__note { margin-left: 0; width: 100%; } }
.router { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 0 0 clamp(40px, 6vw, 72px); }
.router__k { font-size: var(--fs-label); font-weight: 500; letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-3); margin-right: 6px; }
.router__a { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border-radius: 999px; border: 1px solid rgba(20, 24, 28, .2);
  text-decoration: none; font-size: .9375rem; transition: background .25s var(--ease), border-color .25s; }
.router__a:hover { background: #fff; border-color: var(--sapphire); }
.admissions__bed { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 28px 0 0; color: var(--ink-2); }

/* After chapter over the golden-hour city (Hugo audit 23 Oct): the page sells the life after, then the finale returns
   to the sunrise the hero opened on */
.journey--city { position: relative; overflow: hidden; background: var(--sapphire-night); color: #fff; }
.journey__bg { position: absolute; inset: -6% 0; }
.journey__bg picture, .journey__bg img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.journey--city::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(180deg, rgba(5, 22, 56, .78) 0%, rgba(5, 22, 56, .35) 38%, rgba(5, 22, 56, .55) 70%, rgba(5, 22, 56, .9) 100%); }
.journey--city > .wrap { position: relative; z-index: 2; }
.journey--city h2, .journey--city h3 { color: #fff; }
.journey--city h2 em { color: var(--dawn); }
.journey--city .lede, .journey--city .track p { color: rgba(255, 255, 255, .82); }
.journey--city .chapter__n { color: var(--dawn); }
.journey--city .chapter__rule { background: rgba(255, 255, 255, .2); }
.journey--city .journey__portal { background: rgba(255, 255, 255, .94); color: var(--ink); }
.journey--city .journey__portal h3 { color: var(--ink); }
.journey--city .track__line { background: rgba(255, 255, 255, .25); }
.journey--city .track__line i { background: var(--dawn); }
.journey--city .track__dot { background: var(--sapphire-night); border-color: var(--dawn); }

/* hierarchy (Hugo audit 23 Oct): three levels instead of six equal 48 px H2s. Story chapters (Day, After, Finale) set
   large; utility chapters (Pricing, Admissions, People) set smaller in a 25/75 split. */
.day h2, .journey h2 { font-size: clamp(2.8rem, 6vw, 5.5rem); line-height: 1; letter-spacing: -.035em; }
.pricing__head h2, .admissions h2, .team__head h2 { font-size: clamp(1.9rem, 2.8vw, 2.5rem); }
.pricing__head, .team__head { grid-template-columns: .8fr 1.6fr; }
@media (max-width: 900px) { .pricing__head, .team__head { grid-template-columns: 1fr; } }
.facts { grid-template-columns: repeat(3, 1fr); }

/* ---------- 23 Oct 2026 (Hugo audit 2) ---------- */
/* hero opening: a deeper left-hand ink falloff so the towers behind the right end of the headline sit in shadow;
   the headline is a size smaller and line 2 is white (its italic word carries the warmth, not a colour on sand) */
.hero__shade {
  background: linear-gradient(90deg, rgba(5, 22, 56, .66) 0%, rgba(5, 22, 56, .52) 34%, rgba(5, 22, 56, .3) 56%, rgba(5, 22, 56, .08) 72%, rgba(5, 22, 56, 0) 82%),
              linear-gradient(180deg, rgba(5, 22, 56, .5) 0%, rgba(5, 22, 56, .1) 32%, rgba(5, 22, 56, 0) 55%, rgba(5, 22, 56, .3) 100%);
}
@media (max-width: 700px) { .hero__shade { background: linear-gradient(180deg, rgba(5, 22, 56, .74) 0%, rgba(5, 22, 56, .62) 50%, rgba(5, 22, 56, .3) 72%, rgba(5, 22, 56, .4) 100%); } }
.hero__title { font-size: clamp(2.6rem, 5.5vw, 5.3rem); text-shadow: 0 2px 32px rgba(5, 22, 56, .45); }
.hero__line em { color: #fff; }
.hero__beat em { color: #fff; }
/* the payoff line: white, big, left-middle, over the house while it is still in colour; balanced on phones */
.hero__reveal { text-shadow: 0 2px 28px rgba(5, 22, 56, .6), 0 0 2px rgba(5, 22, 56, .3); }
.hero__reveal::before { content: ""; position: absolute; z-index: -1; left: -10%; right: 30%; top: -70%; bottom: -70%; background: radial-gradient(ellipse at 30% 50%, rgba(5, 22, 56, .45), rgba(5, 22, 56, 0) 70%); }
.hero__reveal { isolation: isolate; }
.hero__reveal .serif { font-weight: 500; letter-spacing: -.035em; text-wrap: balance; }
@media (max-width: 700px) { .hero__reveal .serif { font-size: clamp(2.1rem, 10vw, 2.8rem); max-width: 100%; } }
.hero__reveal em { font-family: var(--accent); font-style: normal; font-weight: 400; letter-spacing: -.01em;  color: color-mix(in srgb, currentColor 66%, transparent); }

/* pricing and getting here: ruled tiers, text links per tier, one solid button for the whole chapter */
.pricing__head h2 { font-size: clamp(2.2rem, 3.8vw, 3.4rem); }
.tiers { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; border-top: 2px solid var(--ink); }
.tier { display: flex; flex-direction: column; gap: 6px; padding: 26px clamp(16px, 2vw, 28px) 30px; border-left: 1px solid var(--line); }
.tier:first-child { border-left: 0; padding-left: 0; }
.tier__k { margin: 0; font-size: var(--fs-label); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-3); font-weight: 500; }
.tier h3 { font-size: clamp(1.4rem, 1.9vw, 1.75rem); font-weight: 500; letter-spacing: -.025em; }
.tier__price { margin: 6px 0 0; font-family: var(--accent); font-style: normal; font-weight: 500; font-size: clamp(2.6rem, 3.6vw, 3.6rem); line-height: 1; letter-spacing: -.03em; }
.tier--lead .tier__price { font-size: clamp(3.4rem, 5.4vw, 5.4rem); color: var(--sapphire-deep); }
.tier__price small { font-family: var(--sans); font-style: normal; font-size: .875rem; color: var(--ink-3); letter-spacing: 0; }
.tier__meta { font-size: .875rem; color: var(--ink-2); margin: 0 0 10px; }
.tier ul { list-style: none; margin: 0 0 18px; padding: 0; display: grid; gap: 7px; font-size: .9375rem; flex: 1; }
.tier li { padding-left: 16px; position: relative; }
.tier li::before { content: ""; position: absolute; left: 0; top: .7em; width: 8px; height: 1px; background: var(--ink-3); }
.tier__link { align-self: flex-start; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: .9375rem; text-decoration: none; border-bottom: 1px solid currentColor; padding-bottom: 2px; color: var(--sapphire-deep); }
.tier__link:hover .arrow { transform: translateX(3px); }
.tier__link .arrow { width: 14px; height: 14px; transition: transform .3s var(--ease); }
.pricing__notes { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(20px, 4vw, 64px); border-top: 1px solid var(--line); padding-top: 22px; font-size: .9375rem; color: var(--ink-2); }
.pricing__notes p { margin: 0; }
.pricing__notes b { color: var(--ink); }
.getting-here { margin-top: clamp(56px, 7vw, 96px); }
.getting-here__h { font-size: clamp(1.7rem, 2.6vw, 2.4rem); font-weight: 500; letter-spacing: -.03em; margin-bottom: 28px; }
.getting-here__h em { font-family: var(--accent); font-style: normal; font-weight: 400;  color: color-mix(in srgb, currentColor 66%, transparent); }
.getting-here .steps { grid-template-columns: repeat(4, minmax(0, 1fr)); position: relative; padding-top: 22px; }
.getting-here .steps::before, .getting-here .steps::after { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 1px; background: var(--line); }
.getting-here .steps::after { background: var(--ink); transform-origin: left; transform: scaleX(var(--draw, 1)); }
.getting-here .step { display: block; margin: 0 !important; padding: 0 clamp(14px, 2vw, 28px) 0 0; border: 0; opacity: calc(.35 + var(--k, 1) * .65); }
.getting-here .step__n { display: block; font-size: var(--fs-label); letter-spacing: var(--track-label); color: var(--sapphire); margin-bottom: 10px; }
.getting-here .step h4 { font-size: 1.2rem; font-weight: 600; letter-spacing: -.015em; margin: 0 0 6px; }
.getting-here .step p { font-size: .9375rem; color: var(--ink-2); margin: 0; }
.getting-here .admissions__ctas { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; margin-top: 34px; }
@media (max-width: 900px) {
  .tiers { grid-template-columns: 1fr 1fr; }
  .tier:nth-child(3) { border-left: 0; padding-left: 0; }
  .tier--lead { grid-column: 1 / -1; border-bottom: 1px solid var(--line); }
  .tier:nth-child(2) { padding-left: 0; border-left: 0; }
  .getting-here .steps { grid-template-columns: 1fr 1fr; row-gap: 26px; }
  .pricing__notes { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .tiers { grid-template-columns: 1fr; }
  .tier { border-left: 0; padding-left: 0; padding-right: 0; border-top: 1px solid var(--line); }
  .tier--lead { border-top: 0; }
  .tier ul { display: none; }   /* phones: price, terms and the link; the lists live on /programs */
  .getting-here .steps { grid-template-columns: 1fr; }
}
.circle__app { margin-top: clamp(28px, 4vw, 44px); padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .16); display: grid; gap: 10px; justify-items: start; }
.circle__app-h { font-size: 1.125rem; line-height: 1.5; color: rgba(233, 236, 245, .86); margin: 0 0 4px; max-width: 34em; }
/* care: one photograph beside a ruled list of three, not three alternating image rows */
.t-row__n { font-size: var(--fs-label); letter-spacing: var(--track-label); font-weight: 500; }
.t-row h3 { font-size: clamp(1.6rem, 2.4vw, 2.2rem); font-weight: 500; letter-spacing: -.03em; }
.t-more { display: grid; grid-template-columns: 5fr 7fr; gap: clamp(24px, 5vw, 80px); align-items: start; border-top: 1px solid var(--line); padding-top: clamp(36px, 5vw, 64px); }
.t-more__img { aspect-ratio: 4 / 5; position: sticky; top: calc(var(--crisis-h) + var(--nav-h) + 24px); }
.t-more__img img { width: 100%; height: 120%; object-fit: cover; }
.t-more__list { list-style: none; margin: 0; padding: 0; }
.t-more__list li { padding: 0 0 clamp(22px, 3vw, 34px); margin-bottom: clamp(22px, 3vw, 34px); border-bottom: 1px solid var(--line); }
.t-more__list li:last-child { border-bottom: 0; margin-bottom: 0; }
.t-more__list h3 { font-size: clamp(1.5rem, 2.2vw, 2rem); font-weight: 500; letter-spacing: -.03em; margin: 0 0 10px; }
.t-more__list p { margin: 0; max-width: 40ch; }
@media (max-width: 900px) { .t-more { grid-template-columns: 1fr; } .t-more__img { position: relative; top: 0; aspect-ratio: 3 / 2; } }
/* team: three disciplines side by side, so the roster reads in one screen */
.crew-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 48px); margin-top: clamp(32px, 4vw, 56px); }
.crew-grid .crew2 { margin: 0; }
.crew-grid .crew2__list li { grid-template-columns: 1fr; gap: 2px; padding: 14px 0; }
.crew-grid .crew2__bio { font-size: .875rem; }
@media (max-width: 900px) { .crew-grid { grid-template-columns: 1fr; } }
/* intro: the price is visible on the first scroll (customer audit: phones met the first price on screen 15) */
.price-strip { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px 26px; margin: calc(clamp(40px, 6vw, 72px) * -.55) 0 clamp(40px, 6vw, 72px); padding: 14px 0; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); text-decoration: none; color: var(--ink-2); font-size: .9375rem; }
.price-strip b { font-family: var(--accent); font-style: normal; font-weight: 500; font-size: 1.6rem; color: var(--ink); letter-spacing: -.02em; margin-right: 4px; }
.price-strip__more { margin-left: auto; color: var(--sapphire-deep); font-weight: 600; border-bottom: 1px solid currentColor; }
.price-strip:hover .price-strip__more { color: var(--ink); }
@media (max-width: 700px) { .price-strip { gap: 4px 18px; } .price-strip__more { margin-left: 0; flex-basis: 100%; margin-top: 4px; width: fit-content; } }
.house__tag { z-index: 3; }
.facts, .house { margin-top: clamp(40px, 5vw, 72px); }
.intro { padding-bottom: clamp(56px, 6vw, 96px); }
/* day: a shorter pin (about a third of a screen per hour) */
.day { height: 360vh; }
/* phones: the eight hours are one swipeable row (scroll-snap), not eight stacked photos */
@media (max-width: 980px) {
  .day { height: auto; }
  :root:not(.no-js) .day__steps { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; margin-inline: calc(var(--gutter) * -1); padding: 4px var(--gutter) 14px; scrollbar-width: none; overscroll-behavior-x: contain; }
  :root:not(.no-js) .day__steps::-webkit-scrollbar { display: none; }
  :root:not(.no-js) .day__step { flex: 0 0 78%; scroll-snap-align: start; border: 0; padding: 0; display: flex; flex-direction: column; }
  :root:not(.no-js) .day__step > div { display: flex; flex-direction: column; }
  :root:not(.no-js) .day__step .day__thumb { order: -1; margin: 0 0 12px; aspect-ratio: 4 / 3; }
  :root:not(.no-js) .day__step:last-child { border-bottom: 0; }
  .day__swipe { display: block; font-size: var(--fs-label); letter-spacing: var(--track-label); text-transform: uppercase; color: var(--ink-3); margin: 0 0 14px; }
}
@media (min-width: 981px) { .day__swipe { display: none; } }
@media (max-width: 980px) { .day__pin { padding-block: 64px; } }
.day { height: 320vh; }
@media (max-width: 980px) { .day { height: auto; } }
.house__row--text { grid-template-columns: 1fr; }
.house__row--text .house__cap { display: grid; grid-template-columns: 1fr 1.4fr 1fr; gap: clamp(16px, 3vw, 48px); align-items: baseline; padding-top: 6px; }
.house__row--text .house__cap > * { margin: 0; }
@media (max-width: 900px) { .house__row--text .house__cap { grid-template-columns: 1fr; gap: 10px; } }
/* one emphasis voice: the italic carries it, the colour follows the surface */
.intro__statement em, .finale__title em, .gal__h em, .gal__end em, .journey--city h2 em { color: inherit; }
.day__h em { font-family: var(--accent); font-style: normal; font-weight: 400;  color: color-mix(in srgb, currentColor 66%, transparent); }
.tier__price small { display: block; margin-top: 6px; }
.t-more { align-items: stretch; }
.t-more__img { position: relative; top: 0; aspect-ratio: auto; min-height: 420px; height: 100%; }
@media (max-width: 900px) { .t-more__img { min-height: 0; height: auto; aspect-ratio: 3 / 2; } }
@media (min-width: 981px) { .day__step { padding: 8px 0; } .day__step h3 { font-size: 1.2rem; } .day__h { font-size: clamp(2.4rem, 4vw, 3.8rem); } }
.gal__end em { font-family: var(--accent); font-style: normal; font-weight: 400;  color: color-mix(in srgb, currentColor 66%, transparent); }
@media (max-width: 700px) { .hero__reveal em { display: block; } }
@media (max-width: 980px) { .day__grid { grid-template-columns: minmax(0, 1fr); } .day__text { min-width: 0; } }
@media (max-width: 980px) { :root:not(.no-js) .day__steps { scroll-padding-inline: var(--gutter); } }
/* finale carries the after-care route: the same city, the step-down path drawn under the call to act */
.finale { min-height: 100vh; }
.finale__copy { padding-block: clamp(96px, 12vh, 140px); }
.finale__title { font-weight: 500; letter-spacing: -.035em; }
.finale__after { margin-top: clamp(28px, 5vh, 56px); width: min(100%, 860px); display: grid; gap: 16px; }
.finale__after-h { margin: 0; font-size: 1.0625rem; color: rgba(255, 255, 255, .88); }
.finale__after-h em { font-family: var(--accent); font-style: normal; font-weight: 400;  color: color-mix(in srgb, currentColor 66%, transparent); }
.finale__route { list-style: none; margin: 0; padding: 22px 0 0; display: grid; grid-template-columns: repeat(4, 1fr); position: relative; font-size: .9375rem; color: rgba(255, 255, 255, .78); }
.finale__route::before, .finale__route::after { content: ""; position: absolute; left: 12.5%; right: 12.5%; top: 5px; height: 1px; background: rgba(255, 255, 255, .25); }
.finale__route::after { background: #fff; transform-origin: left; transform: scaleX(var(--draw, 1)); }
.finale__route li { position: relative; padding-top: 4px; }
.finale__route li::before { content: ""; position: absolute; left: 50%; top: -22px; width: 9px; height: 9px; margin-left: -4.5px; border-radius: 50%; background: var(--sapphire-night); border: 1px solid rgba(255, 255, 255, .6); transition: background .4s var(--ease); }
.finale__route li.is-lit { color: #fff; }
.finale__route li.is-lit::before { background: #fff; }
.finale__route .tag { display: block; width: fit-content; margin: 6px auto 0; }
@media (max-width: 600px) { .finale__route { grid-template-columns: 1fr 1fr; row-gap: 34px; } .finale__route::before, .finale__route::after { display: none; } }
/* team, shorter: bios become one quiet line, the roster reads in one screen */
.crew-grid .crew2__list li { padding: 11px 0; }
.crew-grid .crew2__list b { font-size: 1.25rem; }
@media (max-width: 760px) {   /* phones: names and roles as a tight list; registration lines stay, the bios live on desktop */
  .crew-grid { gap: 26px; }
  .crew-grid .crew2__list li { grid-template-columns: 1fr auto; align-items: baseline; padding: 9px 0; }
  .crew-grid .crew2__bio { font-size: 0; grid-column: 1 / -1; }
  .crew-grid .crew2__bio small { font-size: .8125rem; margin-top: 2px; }
  .lead2__bio { font-size: 1rem; }
}
.lead2__name { font-size: clamp(2.6rem, 5vw, 4.4rem) !important; }
.day { height: 280vh; }
@media (max-width: 980px) { .day { height: auto; } }
/* phones: pricing reads as one lead row plus a 2 x 2 of the rest; the four steps are a tight 2 x 2 */
@media (max-width: 560px) {
  .tiers { grid-template-columns: 1fr 1fr; }
  .tier--lead { grid-column: 1 / -1; }
  .tier { padding: 18px 12px 20px 0; border-top: 1px solid var(--line); }
  .tier:nth-child(odd):not(.tier--lead) { padding-left: 12px; border-left: 1px solid var(--line); }
  .tier__k { display: none; }
  .tier--lead .tier__k { display: block; }
  .tier__price { font-size: 2.1rem; }
  .tier--lead .tier__price { font-size: 3.2rem; }
  .tier__meta { font-size: .8125rem; }
  .tier__meta .tag { display: none; }
  .tier--lead .tier__meta .tag { display: inline-flex; }
  .tier__link { font-size: .875rem; }
  .getting-here .steps { grid-template-columns: 1fr 1fr; gap: 22px 14px; }
  .getting-here .step p { font-size: .875rem; }
  .pricing__notes { font-size: .875rem; }
}
/* proof chapter (renders only when content/proof.json has entries) */
.proof__head { display: grid; gap: 12px; margin-bottom: clamp(28px, 4vw, 48px); }
.proof__stories { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: clamp(20px, 3vw, 40px); border-top: 2px solid var(--ink); padding-top: 26px; }
.proof__story { margin: 0; display: grid; gap: 16px; align-content: start; }
.proof__story blockquote { margin: 0; font-family: var(--accent); font-style: normal; font-weight: 500; font-size: clamp(1.5rem, 2.2vw, 2rem); line-height: 1.25; letter-spacing: -.01em; }
.proof__story figcaption { display: grid; gap: 2px; font-size: .9375rem; color: var(--ink-2); }
.proof__story small { color: var(--ink-3); font-size: .8125rem; }
.proof__creds { list-style: none; margin: clamp(32px, 4vw, 56px) 0 0; padding: 0; border-top: 1px solid var(--line); }
.proof__creds li { display: grid; grid-template-columns: minmax(180px, .8fr) 1.4fr auto; gap: 8px 24px; align-items: baseline; padding: 14px 0; border-bottom: 1px solid var(--line); }
@media (max-width: 700px) { .proof__creds li { grid-template-columns: 1fr; } }
.therapies__head { margin-bottom: clamp(32px, 4vw, 56px); row-gap: 22px; }
.therapies__scope { grid-column: 2; display: grid; gap: 12px; border-left: 2px solid var(--ink); padding-left: 20px; }
.therapies__scope .t-quote { font-size: clamp(1.35rem, 1.9vw, 1.7rem); font-weight: 500; letter-spacing: -.02em; line-height: 1.25; }
.therapies__scope .t-quote em { font-family: var(--accent); font-style: normal; font-weight: 400;  color: color-mix(in srgb, currentColor 66%, transparent); }
.therapies__scope .small { margin: 0; }
@media (max-width: 900px) { .therapies__scope { grid-column: 1; } }
.house__main { aspect-ratio: 16 / 7.4; }
@media (max-width: 900px) { .house__main { aspect-ratio: 4 / 3; } }

/* ---------- hero, fundamentals pass (24 Oct 2026): say what it is, what it costs, and the number, on the first screen ---------- */
.hero__what { margin: 0 0 clamp(14px, 2.2vh, 26px); max-width: 34em; font-size: clamp(1rem, 1.25vw, 1.2rem); font-weight: 600; line-height: 1.35; color: #fff; text-shadow: 0 1px 18px rgba(5, 22, 56, .45); }
.hero__what span { font-weight: 400; color: rgba(255, 255, 255, .85); }
.hero__ai { display: none; }   /* phones only: desktop has the caption */
.hero__sub b { font-weight: 600; color: #fff; white-space: nowrap; }
.hero .call-note { margin-top: 14px; flex-basis: 100%; }
.hero__foot { flex-wrap: wrap; }
@media (prefers-reduced-motion: no-preference) { .hero__what { animation: heroFade 1.2s cubic-bezier(.16, .8, .24, 1) .4s backwards; } }
@media (max-width: 700px) {
  .hero__copy { top: calc(var(--crisis-h) + var(--nav-h) + 8px); }
  .hero__title { font-size: clamp(2.3rem, 10.4vw, 2.75rem); }
  .hero__foot { margin-top: 16px; gap: 14px; }
  .hero__sub { font-size: 1rem; }
  .hero__ctas { gap: 10px; width: 100%; }
  .hero__ctas .btn { min-height: 52px; }
  .hero .call-note { margin-top: 0; font-size: 1rem; }
  .hero__beat, .hero__reveal, .hero__scroll, .hero__meta { display: none; }
}
/* the reduced-motion hero holds all of that copy without clipping */
.reduced .hero__stage { min-height: 720px; }
/* families band (replaces the Planned Circle demo on the homepage) and the early call reassurance */
.fam-band__in { display: grid; grid-template-columns: 1.4fr 1fr; gap: clamp(28px, 5vw, 80px); align-items: end; }
.fam-band h2 { max-width: 13em; }
.fam-band__ctas { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; }
@media (max-width: 900px) { .fam-band__in { grid-template-columns: 1fr; } }
.call-first { margin: 0 0 22px; max-width: 46em; font-size: 1.0625rem; line-height: 1.55; color: var(--ink-2); padding: 14px 18px; border-left: 2px solid var(--sapphire); background: rgba(15, 82, 186, .05); }
.call-first b { color: var(--ink); }
.call-first a { font-weight: 600; white-space: nowrap; }
.call-first__s:not(:empty)::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #2E8B57; margin: 0 6px 1px 2px; vertical-align: middle; }
.hero__price { color: #fff; text-underline-offset: .25em; }
/* team list: collapsed on phones only */
.crew-more__s { display: none; }
@media (max-width: 760px) {
  .crew-more__s { display: flex; align-items: center; min-height: 48px; margin-top: 18px; padding: 0 18px; border: 1px solid var(--line); border-radius: 999px; font-weight: 600; cursor: pointer; list-style: none; width: fit-content; }
  .crew-more__s::-webkit-details-marker { display: none; }
  .crew-more__s .muted { margin-left: 6px; font-weight: 400; }
  .crew-more[open] .crew-more__s { margin-bottom: 18px; }
  /* a shorter phone page: the crisis bar above already carries these numbers; the horse photo repeats the day explorer */
  .crisis-strip, .t-more__img, .house__row--text .note { display: none; }
}
@media (max-width: 760px) {
  .facts { grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 40px; }
  .fact:first-child { grid-column: auto; }
  .fact:nth-child(n) { border-top: 0; margin-top: 0; padding: 18px 10px 0 0; }
  .fact + .fact { padding-left: 10px; border-left: 1px solid var(--line); }
  .fact b, .fact:first-child b { font-size: 2.6rem; line-height: .9; }
  .fact span { font-size: 1rem; }
  .finale { min-height: 84svh; }
}

/* ---------- hero, drone pass (24 Oct 2026): ambient drone-style film of the real house, with an honest caption ---------- */
.hero__film { background: transparent; pointer-events: none; }
.hero__cap { position: absolute; left: var(--gutter); bottom: 26px; max-width: 30em; margin: 0; font-size: .75rem; line-height: 1.45; letter-spacing: .01em; color: rgba(255, 255, 255, .86); text-shadow: 0 1px 10px rgba(5, 22, 56, .7); pointer-events: none; }
.hero__meta > span:first-child { display: none; }   /* the caption owns the bottom-left corner and already names Reedy Creek */
/* the house is a bright daylight aerial (the coast film was dusk): a light even veil plus the left falloff keeps every line AA */
.hero__shade {
  background: linear-gradient(90deg, rgba(5, 22, 56, .62) 0%, rgba(5, 22, 56, .5) 36%, rgba(5, 22, 56, .3) 60%, rgba(5, 22, 56, .2) 100%),
              linear-gradient(180deg, rgba(5, 22, 56, .5) 0%, rgba(5, 22, 56, .12) 32%, rgba(5, 22, 56, .1) 60%, rgba(5, 22, 56, .45) 100%);
}
@media (max-width: 760px) { .hero__cap { right: var(--gutter); bottom: calc(96px + env(safe-area-inset-bottom, 0px)); font-size: .6875rem; } }

/* ---------- hero, S pass (27 Oct 2026: HERO-SPEC §2 Sapphire + wearebrand playbook §4.3) ----------
   One sentence on two lines, the one accent word in the serif italic the site already uses. The hero is 1.2 screens:
   the drone move belongs to the scroll (home.js) and rests on the house, so there is no dead half screen before the
   intro. Desktop: the place name sits on its own line under the eyebrow and the corner meta sits level with the copy,
   out of the nav band. Phones: the copy sits on the bottom edge above the dock so the house owns the top 45%; the beat,
   the corner meta, the caption, the place line and the call note go (the dock already says "Open now"), and the
   caption's honesty line moves into the intro note. */
.hero { height: 120vh; }
.hero__title { font-size: clamp(2.4rem, 5vw, 4.8rem); }
.hero__what span { display: block; margin-top: 2px; }   /* the place name on its own line (the eyebrow is a plain block, no dot) */
.hero__meta > span:last-child { top: calc(var(--crisis-h) + var(--nav-h) + clamp(28px, 7vh, 90px)); }
@media (max-width: 700px) {
  .hero__poster img, .hero__film { object-position: 50% 28%; }
  .hero__copy { top: auto; bottom: calc(92px + env(safe-area-inset-bottom, 0px)); }
  .hero__cap, .hero__beat, .hero__meta, .hero .call-note, .hero__scroll { display: none; }
  .hero__what > span { margin-top: 6px; font-size: .75rem; line-height: 1.4; text-shadow: 0 1px 3px rgba(5, 22, 56, .8), 0 0 16px rgba(5, 22, 56, .6); }   /* 31 Oct QA: the place and the AI line stay on phones, the caption is hidden here */
  .hero__ai { display: block; margin-top: 0; }
  .hero__what { margin-bottom: 14px; }
  .hero__shade { background: linear-gradient(180deg, rgba(5, 22, 56, .35) 0%, rgba(5, 22, 56, .1) 30%, rgba(5, 22, 56, .55) 58%, rgba(5, 22, 56, .9) 100%); }
}
@media (max-width: 760px) { .house__row--text .note { display: block; } }   /* the honesty line stays on phones now that the hero caption is gone there */
/* 31 Oct: the trough photo is landscape; stretched to the full list height it showed only fur. Hold it at 4:5,
   sticky beside the list, framed on the horse's head and the trough. */
@media (min-width: 901px) {
  .t-more__img { aspect-ratio: 4 / 5; height: auto; min-height: 0; align-self: start; position: sticky; top: calc(var(--crisis-h) + var(--nav-h) + 24px); }
}
.t-more__img img { object-position: 72% 58%; }
/* 31 Oct: the resting day steps were dimmed to .36 (2.1:1, fails AA). .66 keeps the active step clearly first and
   passes for this large, bold text */
@media (min-width: 981px) { .day__step { opacity: .66; } .day__step.is-active, .reduced .day__step { opacity: 1; } }
@media (min-width: 901px) { .t-more__img { overflow: hidden; } .t-more__img img { position: relative; height: 132%; top: -16%; } }

/* 1 Nov 2026 (Hugo pre-launch audit): stat strip goes 1 + 2 on phones so words don't break */
@media (max-width: 480px) { .facts { grid-template-columns: 1fr 1fr; } .fact:first-child { grid-column: 1 / -1; } .fact:nth-child(2) { border-left: 0; padding-left: 0; } .fact:nth-child(n+2) { border-top: 1px solid var(--line); margin-top: 26px; } .fact span { hyphens: manual; } }
[data-hours-state] { white-space: nowrap; }
@media (max-width: 980px) { .day__pin { padding-bottom: 40px; } }

/* ---------- 1 Nov 2026: the hero line is true (proof line + Life after Sapphire band) ---------- */
.hero__true { margin: clamp(14px, 2vh, 22px) 0 0; max-width: 30em; font-size: clamp(1rem, 1.2vw, 1.15rem); line-height: 1.45; color: rgba(255, 255, 255, .92); text-shadow: 0 1px 18px rgba(5, 22, 56, .75), 0 0 3px rgba(5, 22, 56, .5); }
.hero__true b { color: #fff; font-weight: 600; }
.proof__h { font-size: clamp(2rem, 4.2vw, 3.6rem); line-height: 1.04; letter-spacing: -.025em; max-width: 18em; margin: 14px 0 clamp(28px, 4vw, 48px); text-wrap: balance; }
.proof__h em { font-style: normal; color: #CFE3FF; }
.proof__card h3 { font-size: clamp(1.3rem, 1.8vw, 1.6rem); margin: 10px 0 10px; letter-spacing: -.01em; }
.proof__card p { margin: 0; }
.proof__n { font-size: .8125rem; font-weight: 600; letter-spacing: var(--track-label); color: var(--sapphire); }
.hero__true-s { display: none; }
/* phones: the copy is bottom-anchored under the house, so the proof is one line here and the band below tells the rest */
@media (max-width: 700px) { .hero__true { font-size: .95rem; margin-top: 10px; } .hero__true-l { display: none; } .hero__true-s { display: inline; } .hero__foot { margin-top: 14px; } }
@media (max-width: 700px) and (max-height: 660px) { .hero__true { display: none; } }   /* short phones: the band right below carries the proof */
.proof__ctas { margin-top: clamp(28px, 4vw, 44px); }
@media (max-width: 700px) { .proof__ctas .btn { flex: 1 1 100%; } }
