/* ============================================================================
   60-V9 — NIGHT WORK
   Design: Brand | Vibe: dark cinematic material luxury | Layout: full-screen
   movements, one horizontal passage, pinned splits | Color: Drenched night
   forest, photography lit, brass drawn.

   The V9 system. Loads last. The ground turns to near-black forest; the
   photography carries the light; the interface whispers. New sections use
   the v9- namespace; the long tail is dark-adapted by the base overrides
   below plus the data-tone stamping system. All V8 functional machinery
   (reveal gating, forms, lightbox, nav toggle) keeps its contracts.
   ============================================================================ */

:root{
  --v9-night:#060d0b;
  --v9-night-2:#0b1613;
  --v9-night-3:#101d18;
  --v9-ivory:#f2efe6;
  --v9-ivory-70:rgba(242,239,230,.72);
  --v9-ivory-50:rgba(242,239,230,.5);
  --v9-brass:#d5bb86;
  --v9-brass-deep:#b08d57;
  --v9-line:rgba(213,187,134,.22);
  --v9-line-strong:rgba(213,187,134,.45);
  --v9-ease:cubic-bezier(.32,.72,0,1);
  --v9-grade-b:linear-gradient(180deg,rgba(6,13,11,0) 55%,rgba(6,13,11,.55) 82%,rgba(6,13,11,.92) 100%);
  --v9-grade-t:linear-gradient(0deg,rgba(6,13,11,0) 70%,rgba(6,13,11,.6) 100%);

  /* THE INVERSION: the V8 dossier system runs on these tokens; redefining
     them turns every V8 component to night without a specificity war. */
  --v8-ink:var(--v9-ivory);
  --v8-ink-soft:rgba(242,239,230,.66);
  --v8-paper:var(--v9-night);
  --v8-paper-raised:var(--v9-night-2);
  --v8-forest:var(--v9-night);
  --v8-forest-2:var(--v9-night-2);
  --v8-brass-text:var(--v9-brass);
  --v8-brass-text-dark:var(--v9-brass);
  --v8-rule:var(--v9-line);
  --v8-rule-strong:var(--v9-line-strong);
  --v8-rule-dark:var(--v9-line);
  --v8-shadow-plate:none;
  /* and the oldest layers' surface tokens follow the night too.
     --ivory is a BACKGROUND token in the legacy layers (38 uses in
     style.css alone); light text there uses --v8-lite / literals. */
  --ivory:var(--v9-night);
  --ink:var(--v9-ivory);
  --ink-soft:rgba(242,239,230,.66);
  --green-950:#0b1613;
  --green-900:#101d18;
  --ivory-2:var(--v9-night-2);
  --paper:var(--v9-night-2);
  --line:rgba(213,187,134,.2);
  --charcoal:var(--v9-ivory);
  --muted:rgba(242,239,230,.62);
}

/* ----------------------------------------------------------------------------
   1 · THE GROUND TURNS
   ---------------------------------------------------------------------------- */
html{background:var(--v9-night)}
body{background:var(--v9-night);color:var(--v9-ivory)}
/* overflow-x:hidden creates a scroll container and kills position:sticky;
   clip guards the same overflow without breaking the pinned rail. */
html,body{overflow-x:clip}
::selection{background:var(--v9-brass);color:var(--v9-night)}
h1,h2,h3,h4{color:var(--v9-ivory)}
.lead,p{color:var(--v9-ivory-70)}
.v8-mono,.ed-kicker,.eyebrow{color:var(--v9-brass)}
a{color:inherit}

/* Plaster material for select movements. */
.v9-material{position:relative;isolation:isolate}
.v9-material::before{
  content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:url("/assets/images/texture-plaster.svg") repeat;
  background-size:600px 600px;opacity:.16;mix-blend-mode:screen}

/* ----------------------------------------------------------------------------
   2 · MASTHEAD — floats over the night, solidifies on scroll
   ---------------------------------------------------------------------------- */
.site-header{
  position:fixed;top:0;left:0;right:0;
  background:transparent;border-bottom:1px solid transparent;
  transition:background .5s var(--v9-ease),border-color .5s var(--v9-ease),box-shadow .5s var(--v9-ease)}
.site-header.is-scrolled{
  position:fixed;background:rgba(6,13,11,.92);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--v9-line);box-shadow:none}
.main-nav{color:var(--v9-ivory-70)}
.main-nav a{font-size:.66rem;letter-spacing:.19em}
.main-nav a:hover{color:var(--v9-ivory)}
.header-cta{border-color:rgba(213,187,134,.35);color:var(--v9-ivory)}
.header-cta:hover{background:var(--v9-brass);border-color:var(--v9-brass);color:var(--v9-night)}
/* the fixed masthead overlays full-bleed heroes; every other page keeps
   its flow clear of the bar */
main{position:relative;padding-top:74px}
body.v9-home main{padding-top:0}
@media (max-width:940px){main{padding-top:64px}body.v9-home main{padding-top:0}}

/* ----------------------------------------------------------------------------
   3 · ACTIONS — quieter still
   ---------------------------------------------------------------------------- */
.btn{color:var(--v9-ivory);border-color:rgba(242,239,230,.35)}
.btn:hover{background:var(--v9-ivory);border-color:var(--v9-ivory);color:var(--v9-night)}
.btn-primary,.btn-dark{color:var(--v9-ivory);border-color:rgba(213,187,134,.5)}
.btn-primary:hover,.btn-dark:hover{background:var(--v9-brass);border-color:var(--v9-brass);color:var(--v9-night)}
.text-link{color:var(--v9-ivory)}
.text-link::before{background:var(--v9-brass)}
.text-link::after{color:var(--v9-brass)}
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline-color:var(--v9-brass)}

/* ----------------------------------------------------------------------------
   4 · MOVEMENTS — full-screen chapters
   ---------------------------------------------------------------------------- */
.v9-flow{scroll-snap-type:y proximity}
.v9-movement{
  min-height:100dvh;position:relative;display:grid;align-content:center;
  scroll-snap-align:start;scroll-snap-stop:normal;padding:96px 0}
.v9-movement--free{min-height:0;scroll-snap-align:none;padding:clamp(88px,12vh,160px) 0}
.v9-wrap{width:min(100% - 2*clamp(24px,4vw,72px),1560px);margin-inline:auto}

/* micro label: the only wayfinding a movement needs */
.v9-index{
  font-family:var(--mono);font-size:.64rem;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;color:var(--v9-brass);
  display:flex;align-items:center;gap:16px;margin-bottom:clamp(22px,3.5vh,42px)}
.v9-index::after{content:"";width:56px;height:1px;background:var(--v9-line-strong)}
.v9-display{
  font-family:var(--serif);font-weight:500;color:var(--v9-ivory);
  font-size:clamp(2.6rem,5.6vw,5.6rem);line-height:1.04;letter-spacing:-.02em;
  text-wrap:balance;margin:0}
.v9-display i,.v9-display em{font-style:italic;font-weight:500;color:var(--v9-ivory)}
.v9-sub{
  font-family:var(--v8-text);font-size:clamp(1rem,1.2vw,1.14rem);line-height:1.66;
  color:var(--v9-ivory-70);max-width:44ch;margin:26px 0 0}

/* ----------------------------------------------------------------------------
   5 · HERO — photography floor-to-ceiling, graded, one line
   ---------------------------------------------------------------------------- */
.v9-hero{min-height:100dvh;position:relative;display:grid;align-items:end;isolation:isolate;overflow:hidden;padding:0}
.v9-hero-media{position:absolute;inset:0;z-index:-2}
.v9-hero-media img{width:100%;height:100%;object-fit:cover;object-position:var(--focus,50% 55%)}
.v9-hero-grade{position:absolute;inset:0;z-index:-1;background:var(--v9-grade-b)}
.v9-hero-grade::before{content:"";position:absolute;inset:0;background:var(--v9-grade-t)}
.v9-hero-inner{width:min(100% - 2*clamp(24px,4vw,72px),1560px);margin:0 auto;padding:0 0 clamp(56px,9vh,120px)}
.v9-hero-kicker{
  font-family:var(--mono);font-size:.64rem;font-weight:500;letter-spacing:.24em;
  text-transform:uppercase;color:var(--v9-brass);margin:0 0 18px}
.v9-hero-title{
  font-family:var(--serif);font-weight:500;color:var(--v9-ivory);
  font-size:clamp(2.7rem,5.8vw,5.9rem);line-height:1.02;letter-spacing:-.02em;
  margin:0;text-wrap:balance;max-width:15ch}
.v9-hero-title i{font-style:italic}
.v9-hero-line{
  display:flex;align-items:baseline;gap:26px;flex-wrap:wrap;
  margin-top:26px;font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--v9-ivory-50)}
.v9-hero-line a{color:var(--v9-ivory);padding-bottom:3px;position:relative}
.v9-hero-line a::after{content:"→";margin-left:9px;color:var(--v9-brass)}
.v9-hero-line a::before{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--v9-brass);transition:right .4s var(--v9-ease)}
.v9-hero-line a:hover::before{right:0}
.v9-cue{
  position:absolute;left:50%;bottom:26px;transform:translateX(-50%);
  width:1px;height:52px;overflow:hidden}
.v9-cue::before{
  content:"";position:absolute;left:0;top:-52px;width:1px;height:52px;
  background:linear-gradient(180deg,transparent,var(--v9-brass));
  animation:v9cue 2.6s var(--v9-ease) infinite}
@keyframes v9cue{55%{transform:translateY(104px)}100%{transform:translateY(104px)}}

/* hero entrance after the veil rises. The hidden state exists only while
   the veil choreography is running (body.hero-boot, homepage only); pages
   without the veil paint their heroes immediately. */
.v9-hero-media img{transition:transform 2.8s var(--v9-ease)}
body.hero-boot .v9-hero-media img{transform:scale(1.05)}
body.hero-live .v9-hero-media img{transform:scale(1)}
.v9-hero-inner>*{transition:opacity 1s var(--v9-ease),transform 1s var(--v9-ease)}
body.hero-boot .v9-hero-inner>*{opacity:0;transform:translateY(18px)}
body.hero-live .v9-hero-inner>*{opacity:1;transform:none}
body.hero-live .v9-hero-inner>*:nth-child(2){transition-delay:.12s}
body.hero-live .v9-hero-inner>*:nth-child(3){transition-delay:.24s}
html.no-veil .v9-hero-media img,html.no-veil .v9-hero-inner>*{transition-duration:.9s}

/* Kikunoi handoff: a movement can dissolve into the next */
.v9-fade-out{mask-image:linear-gradient(180deg,#000 78%,transparent 100%);
  -webkit-mask-image:linear-gradient(180deg,#000 78%,transparent 100%)}

/* ----------------------------------------------------------------------------
   6 · THE RECORD — the one horizontal passage
   BASE (no JS, reduced motion, small screens): a native swipeable strip
   with x-snap. When theme.js activates the pinned mode it stamps
   html.v9-rail-on, and scroll drives translateX via --p (0..1).
   ---------------------------------------------------------------------------- */
/* BASE = a plain vertical sequence, one record per row. This is what every
   visitor gets who is not positively confirmed to support the pinned
   passage: phones, reduced motion, no JS, or JS that has not finished
   measuring. The old base was a manual horizontal strip, which meant any
   one of those conditions silently handed the visitor a sideways scroller
   they had to discover. Never again — horizontal is opt-in only. */
.v9-rail{position:relative;padding:0;scroll-snap-align:none}
.v9-rail-head{padding:clamp(28px,6vh,64px) 0 18px}
.v9-rail-head .v9-index{margin:0}
.v9-rail-sticky{overflow:visible}
.v9-rail-sticky::-webkit-scrollbar{display:none}
.v9-rail-track{display:block;width:100%;height:auto}
.v9-rail-panel{
  position:relative;width:100%;height:auto;min-height:min(70vh,560px);
  margin:0 0 clamp(12px,2vw,20px);
  isolation:isolate;overflow:hidden;display:grid;align-items:end}
.v9-rail-panel--intro{background:var(--v9-night);align-items:center;min-height:0;padding:clamp(20px,5vw,40px) clamp(18px,4vw,32px)}
.v9-rail-panel--close{background:var(--v9-night-2);align-items:center;min-height:0;padding:clamp(20px,5vw,40px) clamp(18px,4vw,32px)}
.v9-rail-panel img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;transition:transform 1.4s var(--v9-ease)}
.v9-rail-panel .v9-panel-grade{position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(6,13,11,.12) 0%,rgba(6,13,11,0) 40%,rgba(6,13,11,.72) 100%)}
.v9-panel-meta{padding:0 clamp(24px,3vw,52px) clamp(34px,6vh,72px);display:grid;gap:8px}
.v9-panel-meta .v9-mono-line{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;color:var(--v9-brass)}
.v9-panel-meta h3{font-family:var(--serif);font-weight:500;font-size:clamp(1.6rem,2.6vw,2.6rem);letter-spacing:-.015em;margin:0;color:var(--v9-ivory)}
.v9-panel-meta .v9-panel-sub{font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--v9-ivory-50)}
a.v9-rail-panel{color:inherit}
a.v9-rail-panel:hover img{transform:scale(1.02)}
.v9-rail-progress{display:none}

/* Pinned mode — added by theme.js only once it has confirmed a wide
   viewport, motion is allowed, and the track has actually been measured.
   Everything horizontal lives in here, so it cannot leak into a fallback. */
html.v9-rail-on .v9-rail-head{position:absolute;top:clamp(28px,6vh,64px);left:0;right:0;z-index:3;pointer-events:none;padding:0}
html.v9-rail-on .v9-rail-sticky{
  position:sticky;top:0;height:100dvh;overflow:hidden;display:grid;align-items:center;scroll-snap-type:none}
html.v9-rail-on .v9-rail-track{
  display:flex;gap:0;width:max-content;will-change:transform;
  height:100dvh;transform:translateX(calc(var(--p,0) * (-1 * var(--rail-span,0px))))}
html.v9-rail-on .v9-rail-panel{
  flex:0 0 auto;width:min(78vw,1180px);height:100%;min-height:0;margin:0;scroll-snap-align:none}
html.v9-rail-on .v9-rail-panel--intro,
html.v9-rail-on .v9-rail-panel--close{width:min(44vw,640px);padding:0 clamp(28px,4vw,64px)}
html.v9-rail-on .v9-rail-progress{
  display:block;position:absolute;bottom:30px;left:50%;transform:translateX(-50%);z-index:3;
  width:min(320px,40vw);height:1px;background:rgba(242,239,230,.14)}
html.v9-rail-on .v9-rail-progress i{
  position:absolute;left:0;top:0;height:1px;width:100%;background:var(--v9-brass);
  transform-origin:left;transform:scaleX(var(--p,0))}

/* ----------------------------------------------------------------------------
   7 · THE MONUMENT — one craft detail, full screen
   ---------------------------------------------------------------------------- */
.v9-monument{padding:0;min-height:100dvh;isolation:isolate;display:grid;align-items:end;overflow:hidden}
.v9-monument img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:var(--focus,50% 50%)}
.v9-monument::after{content:"";position:absolute;inset:0;z-index:-1;background:var(--v9-grade-b)}
.v9-monument figcaption{
  width:min(100% - 2*clamp(24px,4vw,72px),1560px);margin:0 auto;
  padding-bottom:clamp(40px,7vh,88px);
  display:flex;gap:20px;align-items:baseline;
  font-family:var(--mono);font-size:.64rem;letter-spacing:.18em;
  text-transform:uppercase;color:var(--v9-ivory-70)}
.v9-monument figcaption b{color:var(--v9-brass);font-weight:500}

/* ----------------------------------------------------------------------------
   8 · THE SPLIT — one side holds, the other flows
   ---------------------------------------------------------------------------- */
.v9-split{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(40px,6vw,120px);align-items:start}
.v9-split-hold{position:sticky;top:0;min-height:100dvh;display:grid;align-content:center;padding:96px 0}
.v9-split-flow{display:grid;gap:clamp(60px,10vh,140px);padding:15vh 0}
.v9-split-flow figure{margin:0}
.v9-split-flow img{width:100%;height:auto;display:block}
.v9-split-flow figcaption{
  display:flex;gap:16px;align-items:baseline;border-top:1px solid var(--v9-line);
  margin-top:12px;padding-top:9px;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--v9-ivory-50)}
.v9-split-flow figcaption b{color:var(--v9-brass);font-weight:500}
.v9-split-flow figure:nth-child(2n){width:82%;justify-self:end}
.v9-stages{list-style:none;margin:34px 0 0;padding:0;display:grid}
.v9-stages li{
  display:grid;grid-template-columns:64px 1fr;gap:18px;align-items:baseline;
  padding:15px 0;border-top:1px solid var(--v9-line)}
.v9-stages li:last-child{border-bottom:1px solid var(--v9-line)}
.v9-stages .v9-mono-line{font-family:var(--mono);font-size:.72rem;color:var(--v9-brass);letter-spacing:.1em}
.v9-stages h3{font-family:var(--serif);font-weight:500;font-size:1.2rem;margin:0;color:var(--v9-ivory)}
.v9-stages p{display:none}

/* ----------------------------------------------------------------------------
   9 · THE PLAQUE — contact as an engraved plate
   ---------------------------------------------------------------------------- */
.v9-plaque{
  border:1px solid var(--v9-line);padding:clamp(30px,4vw,56px);
  position:relative;background:rgba(11,22,19,.5)}
.v9-plaque::before{content:"";position:absolute;inset:8px;border:1px solid rgba(213,187,134,.1);pointer-events:none}
.v9-contact-lines{display:grid;gap:4px;justify-items:start;margin-top:30px}
.v9-contact-lines a{
  font-family:var(--serif);font-size:clamp(1.5rem,2.4vw,2.2rem);letter-spacing:-.01em;
  color:var(--v9-ivory);position:relative;padding:4px 0}
.v9-contact-lines a::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;background:var(--v9-brass);transition:right .4s var(--v9-ease)}
.v9-contact-lines a:hover::after{right:0}

/* form on night */
.inquiry-form{background:rgba(11,22,19,.55);border-color:var(--v9-line);color:var(--v9-ivory)}
.inquiry-form::before{background:var(--v9-brass-deep)}
.inquiry-form h3{color:var(--v9-ivory)}
.form-note{color:var(--v9-ivory-50)}
.field label{color:var(--v9-ivory-50)}
.field input,.field select,.field textarea{
  color:var(--v9-ivory);border-bottom-color:rgba(242,239,230,.3);background:transparent}
.field select{background-image:linear-gradient(45deg,transparent 50%,var(--v9-brass) 50%),linear-gradient(135deg,var(--v9-brass) 50%,transparent 50%)}
.field select option{background:var(--v9-night-2);color:var(--v9-ivory)}
.field input:focus,.field select:focus,.field textarea:focus{border-bottom-color:var(--v9-brass)}
.consent-field label,.consent-field a{color:var(--v9-ivory-50)!important}
.consent-field a{text-decoration-color:var(--v9-brass)}
.form-assurance span{color:var(--v9-ivory-50)}
.form-assurance span::before{color:var(--v9-brass)}
.utmost-hp{position:absolute!important;left:-10000px!important}

/* ----------------------------------------------------------------------------
   10 · FOOTER on night
   ---------------------------------------------------------------------------- */
.site-footer{background:var(--v9-night);border-top:1px solid var(--v9-line)}
.footer-grid{border-bottom-color:rgba(213,187,134,.12)}

/* ----------------------------------------------------------------------------
   11 · REVEAL travel (system unchanged, gated by v8-motion/motion-ready)
   ---------------------------------------------------------------------------- */
html.motion-ready .reveal:not(.visible),
html.v8-motion .reveal:not(.visible){opacity:0;transform:translateY(22px)}
.reveal{transition:opacity 1.1s var(--v9-ease),transform 1.1s var(--v9-ease)}

@media (prefers-reduced-motion:reduce){
  .v9-hero-media img,.v9-rail-panel img{transition:none!important;transform:none!important}
  .v9-cue::before{animation:none}
  .v9-flow{scroll-snap-type:none}
}
@media (max-width:940px){
  .v9-flow{scroll-snap-type:none}
  .v9-movement{min-height:0;padding:72px 0}
  .v9-hero{min-height:100dvh}
  .v9-split{grid-template-columns:1fr}
  .v9-split-hold{position:static;min-height:0;padding:72px 0 0}
  .v9-split-flow{padding:34px 0 0;gap:44px}
  .v9-split-flow figure:nth-child(2n){width:100%}
}


/* ----------------------------------------------------------------------------
   12 · PAGE — HOME
   ---------------------------------------------------------------------------- */
html:has(body.v9-home){scroll-snap-type:y proximity}
@media (max-width:940px),(prefers-reduced-motion:reduce){
  html:has(body.v9-home){scroll-snap-type:none}
}
.v9-thesis{align-content:center;text-align:left}
.v9-thesis .v9-sub{max-width:52ch}

.v9-territory-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(40px,6vw,120px);align-items:end}
.v9-cities{list-style:none;margin:34px 0 0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,240px));gap:0 44px}
.v9-cities li{border-bottom:1px solid var(--v9-line)}
.v9-cities a{display:block;padding:11px 2px;font-family:var(--v8-text);font-size:.98rem;color:var(--v9-ivory-70);transition:color .3s var(--v9-ease),padding-left .3s var(--v9-ease)}
.v9-cities a:hover{color:var(--v9-ivory);padding-left:10px}
.v9-facts{display:grid;gap:0;margin:0}
.v9-facts div{display:grid;grid-template-columns:auto 1fr;gap:20px;align-items:baseline;padding:16px 0;border-top:1px solid var(--v9-line)}
.v9-facts div:last-child{border-bottom:1px solid var(--v9-line)}
.v9-facts dt{font-family:var(--serif);font-weight:500;font-size:clamp(1.4rem,2vw,1.9rem);color:var(--v9-ivory);white-space:nowrap}
.v9-facts dd{margin:0;font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--v9-ivory-50)}

.v9-invite-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(40px,6vw,110px);align-items:start}
.v9-invite-copy{position:sticky;top:110px}
.v9-invite-copy .v9-contact-lines{margin-top:38px}

@media (max-width:1080px){
  .v9-territory-grid{grid-template-columns:1fr;gap:44px;align-items:start}
  .v9-invite-copy{position:static}
}
@media (max-width:940px){
  .v9-invite-grid{grid-template-columns:1fr;gap:44px}
  .v9-cities{grid-template-columns:1fr 1fr;gap:0 26px}
}


/* ============================================================================
   13 · CASCADE AUTHORITY — NIGHT
   The legacy layers scope colors with body.utmost-launch-final.utmost-final-
   luxury and element chains; these restatements carry the same weight and sit
   last, so the night ground and ivory ink always win.
   ============================================================================ */
body.utmost-launch-final.utmost-final-luxury{background:var(--v9-night);color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury :is(.v9-movement,.v9-movement--free,.v9-rail,.v9-monument,.v9-hero,section[class^="v9-"],main){background:var(--v9-night)}
body.utmost-launch-final.utmost-final-luxury .v9-rail-panel--intro{background:var(--v9-night)}
body.utmost-launch-final.utmost-final-luxury .v9-rail-panel--close{background:var(--v9-night-2)}
body.utmost-launch-final.utmost-final-luxury :is(h1,h2,h3,h4){color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury :is(h1,h2) :is(i,em){color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury :is(p,li,dd,dt){color:var(--v9-ivory-70)}
body.utmost-launch-final.utmost-final-luxury .v9-display,
body.utmost-launch-final.utmost-final-luxury .v9-display :is(i,em),
body.utmost-launch-final.utmost-final-luxury .v9-hero-title,
body.utmost-launch-final.utmost-final-luxury .v9-hero-title i,
body.utmost-launch-final.utmost-final-luxury .v9-panel-meta h3,
body.utmost-launch-final.utmost-final-luxury .v9-stages h3,
body.utmost-launch-final.utmost-final-luxury .v9-facts dt,
body.utmost-launch-final.utmost-final-luxury .v9-contact-lines a{color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury :is(.v9-index,.v9-hero-kicker,.v9-mono-line){color:var(--v9-brass)}
body.utmost-launch-final.utmost-final-luxury :is(.v9-sub,.v9-hero-line){color:var(--v9-ivory-70)}
body.utmost-launch-final.utmost-final-luxury .v9-hero-line a{color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury .v9-facts dd,
body.utmost-launch-final.utmost-final-luxury .v9-panel-sub{color:var(--v9-ivory-50)}
body.utmost-launch-final.utmost-final-luxury .v9-cities a{color:var(--v9-ivory-70)}
body.utmost-launch-final.utmost-final-luxury .v9-cities a:hover{color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury .v9-split-flow figcaption{color:var(--v9-ivory-50)}
body.utmost-launch-final.utmost-final-luxury .v9-split-flow figcaption b,
body.utmost-launch-final.utmost-final-luxury .v9-monument figcaption b{color:var(--v9-brass)}
body.utmost-launch-final.utmost-final-luxury .v9-monument figcaption{color:var(--v9-ivory-70)}

/* hero geometry: the movement grid centres; the hero must sit on its floor */
.v9-hero{align-content:end}
.v9-hero.v9-movement{padding:0}


/* Hero text carries its own shadow so the tree line never eats the kicker. */
.v9-hero-inner{text-shadow:0 1px 30px rgba(6,13,11,.65),0 1px 6px rgba(6,13,11,.5)}
.v9-hero .v9-hero-grade{background:linear-gradient(180deg,rgba(6,13,11,0) 46%,rgba(6,13,11,.6) 78%,rgba(6,13,11,.95) 100%)}

/* The enquiry sheet obeys the night (legacy body-scoped rules outrank the
   bare class; these carry the same weight and sit last). */
body.utmost-launch-final.utmost-final-luxury .inquiry-form{
  background:rgba(11,22,19,.55);border:1px solid var(--v9-line);color:var(--v9-ivory);box-shadow:none}
body.utmost-launch-final.utmost-final-luxury .inquiry-form::before{background:var(--v9-brass-deep)}
body.utmost-launch-final.utmost-final-luxury .inquiry-form h3{color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury .inquiry-form .form-note{color:var(--v9-ivory-50)}
body.utmost-launch-final.utmost-final-luxury .field label{color:var(--v9-ivory-50)}
body.utmost-launch-final.utmost-final-luxury .field :is(input,select,textarea){
  color:var(--v9-ivory);background:transparent;border:none;border-bottom:1px solid rgba(242,239,230,.3)}
body.utmost-launch-final.utmost-final-luxury .field :is(input,select,textarea):focus{border-bottom-color:var(--v9-brass)}
body.utmost-launch-final.utmost-final-luxury .field select option{background:var(--v9-night-2);color:var(--v9-ivory)}
body.utmost-launch-final.utmost-final-luxury .consent-field label,
body.utmost-launch-final.utmost-final-luxury .consent-field a{color:var(--v9-ivory-50)!important}


/* ============================================================================
   14 · NIGHT LITERALS AUTHORITY
   The oldest layers carry hard-coded ink/brass literals with four- and
   five-class !important selectors. The :is() chains below include a
   never-matching class (.v9x) purely to raise specificity, so these
   restatements outrank every literal while matching by element.
   Order inside this block is meaningful: generic text first, then strongs,
   headings, then the brass voices re-assert, then soft metas.
   ============================================================================ */
/* alias-family remaps (text roles only; --final-ink stays dual-role dark) */
:root{
  --final-muted:rgba(242,239,230,.62);
  --launch-muted:rgba(242,239,230,.62);
  --final-graphite:rgba(242,239,230,.78);
  --launch-graphite:rgba(242,239,230,.78);
  --final-ivory:var(--v9-night);
  --launch-ivory:var(--v9-night);
  --final-paper:var(--v9-night-2);
  --launch-paper:var(--v9-night-2);
  --final-line:rgba(213,187,134,.2);
  --launch-line:rgba(213,187,134,.2);
  --final-line-dark:rgba(213,187,134,.2);
  --final-shadow:none;
  --final-shadow-deep:none;
}
body.utmost-launch-final.utmost-final-luxury :is(p,li,dt,dd,span,small,blockquote,label,figcaption,cite,.v9x):is(p,li,dt,dd,span,small,blockquote,label,figcaption,cite,.v9x):is(p,li,dt,dd,span,small,blockquote,label,figcaption,cite,.v9x):is(p,li,dt,dd,span,small,blockquote,label,figcaption,cite,.v9x){
  color:rgba(242,239,230,.72)!important}
body.utmost-launch-final.utmost-final-luxury :is(strong,b,.v9x):is(strong,b,.v9x):is(strong,b,.v9x):is(strong,b,.v9x){
  color:var(--v9-ivory)!important}
body.utmost-launch-final.utmost-final-luxury :is(h1,h2,h3,h4,h5,summary,legend,.v9x):is(h1,h2,h3,h4,h5,summary,legend,.v9x):is(h1,h2,h3,h4,h5,summary,legend,.v9x):is(h1,h2,h3,h4,h5,summary,legend,.v9x){
  color:var(--v9-ivory)!important}
body.utmost-launch-final.utmost-final-luxury :is(h1,h2,h3,h4,.v9x):is(h1,h2,h3,h4,.v9x):is(h1,h2,h3,h4,.v9x) :is(i,em,.v9x){color:var(--v9-ivory)!important}
/* links inside prose keep the ivory, underlined brass */
body.utmost-launch-final.utmost-final-luxury :is(.entry-content,.about-standard,.practice-note,.v9x) a{color:var(--v9-ivory)!important;text-decoration-color:var(--v9-brass)}
/* the brass voices re-assert */
body.utmost-launch-final.utmost-final-luxury :is(.eyebrow,.ed-kicker,.v8-mono,.ed-index,.v9-index,.v9-mono-line,.v9-hero-kicker,.v9x):is(.eyebrow,.ed-kicker,.v8-mono,.ed-index,.v9-index,.v9-mono-line,.v9-hero-kicker,.v9x):is(.eyebrow,.ed-kicker,.v8-mono,.ed-index,.v9-index,.v9-mono-line,.v9-hero-kicker,.v9x):is(.eyebrow,.ed-kicker,.v8-mono,.ed-index,.v9-index,.v9-mono-line,.v9-hero-kicker,.v9x){
  color:var(--v9-brass)!important}
body.utmost-launch-final.utmost-final-luxury :is(.v8-crumbs--page,.v9x):is(.v8-crumbs--page,.v9x):is(.v8-crumbs--page,.v9x) :is(a,span,.v9x){color:rgba(242,239,230,.6)!important}
/* soft metas */
body.utmost-launch-final.utmost-final-luxury :is(.v9-panel-sub,.v9-facts dd,.form-note,.v8-platecap,.ba-caption,.v9x):is(.v9-panel-sub,.v9-facts dd,.form-note,.v8-platecap,.ba-caption,.v9x):is(.v9-panel-sub,.v9-facts dd,.form-note,.v8-platecap,.ba-caption,.v9x){
  color:rgba(242,239,230,.6)!important}
body.utmost-launch-final.utmost-final-luxury .field label{color:rgba(242,239,230,.55)!important}
/* gallery figcaptions: outrank the (0,5,4) literals with a quad set chain */
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas) figcaption{
  color:rgba(242,239,230,.6)!important;border-top-color:var(--v9-line)!important;background:none!important}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas) figcaption :is(span,em,p,div,small){
  color:rgba(242,239,230,.58)!important}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas) figcaption :is(strong,b){
  color:var(--v9-ivory)!important}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas):is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images,.project-atlas) figcaption[data-plate]::before{
  color:var(--v9-brass)!important}


/* No light panels survive the night: every sheet, card and plaque sits on
   night-2 with a brass hairline. Quad :is() chains outrank the legacy
   !important panel painters. */
body.utmost-launch-final.utmost-final-luxury :is(.inquiry-form,.case-study-card,.atlas-card,.entry-card,.post-summary,.realtor-proof-card,.realtor-moment-card,.contact-side-card,.v9x):is(.inquiry-form,.case-study-card,.atlas-card,.entry-card,.post-summary,.realtor-proof-card,.realtor-moment-card,.contact-side-card,.v9x):is(.inquiry-form,.case-study-card,.atlas-card,.entry-card,.post-summary,.realtor-proof-card,.realtor-moment-card,.contact-side-card,.v9x):is(.inquiry-form,.case-study-card,.atlas-card,.entry-card,.post-summary,.realtor-proof-card,.realtor-moment-card,.contact-side-card,.v9x){
  background:rgba(11,22,19,.72)!important;border:1px solid var(--v9-line)!important;box-shadow:none!important;color:var(--v9-ivory)!important}
body.utmost-launch-final.utmost-final-luxury .inquiry-form::before{background:var(--v9-brass-deep)!important}
body.utmost-launch-final.utmost-final-luxury :is(.inquiry-form,.v9x):is(.inquiry-form,.v9x):is(.inquiry-form,.v9x) :is(input,select,textarea){
  color:var(--v9-ivory)!important;background:transparent!important;border:none!important;border-bottom:1px solid rgba(242,239,230,.32)!important;border-radius:0!important}
body.utmost-launch-final.utmost-final-luxury :is(.inquiry-form,.v9x):is(.inquiry-form,.v9x):is(.inquiry-form,.v9x) :is(input,select,textarea):focus{border-bottom-color:var(--v9-brass)!important}
body.utmost-launch-final.utmost-final-luxury .inquiry-form .btn{color:var(--v9-ivory)!important;border:1px solid rgba(213,187,134,.5)!important;background:transparent!important}
body.utmost-launch-final.utmost-final-luxury .inquiry-form .btn:hover{background:var(--v9-brass)!important;color:var(--v9-night)!important;border-color:var(--v9-brass)!important}
body.utmost-launch-final.utmost-final-luxury .consent-field :is(label,a){color:rgba(242,239,230,.6)!important}
body.utmost-launch-final.utmost-final-luxury .consent-field a{text-decoration-color:var(--v9-brass)}


/* final literal kills */
body.utmost-launch-final.utmost-final-luxury :is(.project-story-index,.v9x):is(.project-story-index,.v9x):is(.project-story-index,.v9x):is(.project-story-index,.v9x){
  background:var(--v9-night)!important;color:var(--v9-ivory)!important}
body.utmost-launch-final.utmost-final-luxury :is(.atlas-card,.atlas-rail,.atlas-group,.v9x):is(.atlas-card,.atlas-rail,.atlas-group,.v9x):is(.atlas-card,.atlas-rail,.atlas-group,.v9x) a{
  color:var(--v9-brass)!important}
body.utmost-launch-final.utmost-final-luxury :is(.plan-tag,.v9x):is(.plan-tag,.v9x):is(.plan-tag,.v9x):is(.plan-tag,.v9x){
  color:rgba(242,239,230,.72)!important;border-color:var(--v9-line)!important;background:rgba(11,22,19,.6)!important}
body.utmost-launch-final.utmost-final-luxury :is(p,li,.v9x):is(p,li,.v9x):is(p,li,.v9x):is(p,li,.v9x) a:not(.btn):not(.text-link){
  color:var(--v9-ivory)!important;text-decoration-color:var(--v9-brass)}
body.utmost-launch-final.utmost-final-luxury :is(.wp-block-button__link,.v9x):is(.wp-block-button__link,.v9x):is(.wp-block-button__link,.v9x):is(.wp-block-button__link,.v9x){
  color:var(--v9-ivory)!important;background:transparent!important;border:1px solid rgba(213,187,134,.5)!important}


/* every button obeys the night: outline voice, brass on hover */
body.utmost-launch-final.utmost-final-luxury :is(.btn,.v9x):is(.btn,.v9x):is(.btn,.v9x):is(.btn,.v9x){
  color:var(--v9-ivory)!important;background:transparent!important;
  border:1px solid rgba(213,187,134,.45)!important;box-shadow:none!important;border-radius:0!important}
body.utmost-launch-final.utmost-final-luxury :is(.btn,.v9x):is(.btn,.v9x):is(.btn,.v9x):is(.btn,.v9x):hover{
  background:var(--v9-brass)!important;border-color:var(--v9-brass)!important;color:var(--v9-night)!important;transform:none!important}


/* ----------------------------------------------------------------------------
   15 · RECORD OPENINGS AT CINEMA SCALE
   The dossier openings keep their markup; the lead plate after each opening
   rises to near-full viewport so every record page opens on photography.
   ---------------------------------------------------------------------------- */
.v8-cs-open ~ figure.v8-plate .v8-plate-media,
.v8-cs-open + section figure.v8-plate:first-of-type .v8-plate-media,
.v8-cs-open ~ .v8-bleed .v8-plate-media{height:min(82vh,880px)}
.v8-cs-open ~ figure.v8-plate .v8-plate-media img{height:100%;object-fit:cover}
@media (max-width:940px){
  .v8-cs-open ~ figure.v8-plate .v8-plate-media,
  .v8-cs-open ~ .v8-bleed .v8-plate-media{height:min(58vh,520px)}
}


/* the consent checkbox joins the night */
body.utmost-launch-final.utmost-final-luxury .consent-field input[type="checkbox"]{
  width:15px!important;height:15px!important;flex:0 0 15px;
  accent-color:var(--v9-brass);margin-top:4px;border:1px solid rgba(213,187,134,.5)!important;
  appearance:auto;background:transparent!important}

/* while focus lives inside the rail, scrolling is instant so the
   corrective landing is never fighting an animation */
html:has(.v9-rail:focus-within){scroll-behavior:auto}


/* ============================================================================
   16 · FINALE — internal-page heroes
   Two archetypes, one system. A: full-bleed cinema (record pages). B: split
   architectural (practice pages) — type column on plaster, photography
   full-height beside it. Both share the homepage grammar.
   ============================================================================ */
.v9-hero--page{min-height:88dvh}
/* internal heroes carry brighter rooms than the homepage dusk shot: a left
   shade column and a taller bottom grade keep the type architecture legible
   on any photograph without flattening it */
.v9-hero--page .v9-hero-grade{background:
  linear-gradient(90deg,rgba(6,13,11,.62) 0%,rgba(6,13,11,.28) 30%,rgba(6,13,11,0) 52%),
  linear-gradient(180deg,rgba(6,13,11,0) 34%,rgba(6,13,11,.52) 66%,rgba(6,13,11,.94) 100%)}
.v9-hero--page .v9-hero-kicker{letter-spacing:.2em;max-width:52ch}
.v9-hero--page .v9-hero-title{font-size:clamp(2.4rem,4.8vw,4.9rem);max-width:18ch}
.v9-hero-crumbs{margin:0 0 14px;display:flex;gap:10px;flex-wrap:wrap;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(242,239,230,.5)}
.v9-hero-crumbs a{color:rgba(242,239,230,.5);transition:color .3s var(--v9-ease)}
.v9-hero-crumbs a:hover{color:var(--v9-ivory)}
.v9-hero-crumbs span{color:rgba(242,239,230,.35)}
.v9-hero-line .v9-hero-fact{color:rgba(242,239,230,.55)}

/* B: the split */
.v9-heroB{min-height:88dvh;position:relative;display:grid;
  grid-template-columns:minmax(0,.94fr) minmax(0,1.06fr);isolation:isolate;
  scroll-snap-align:none;padding:0;background:var(--v9-night)}
.v9-heroB-copy{display:grid;align-content:end;position:relative;z-index:1;
  padding:calc(74px + clamp(28px,6vh,64px)) clamp(28px,4vw,72px) clamp(48px,8vh,96px) clamp(24px,4vw,72px)}
.v9-heroB-copy .v9-hero-kicker{margin-bottom:16px}
.v9-heroB-copy h1{font-family:var(--serif);font-weight:500;color:var(--v9-ivory);
  font-size:clamp(2.3rem,3.6vw,3.9rem);line-height:1.05;letter-spacing:-.02em;margin:0;text-wrap:balance}
.v9-heroB-copy h1 i{font-style:italic}
.v9-heroB-lead{font-family:var(--v8-text);font-size:clamp(.98rem,1.1vw,1.08rem);
  line-height:1.62;color:rgba(242,239,230,.66);max-width:40ch;margin:22px 0 0}
.v9-heroB-copy .v9-hero-line{margin-top:26px}
.v9-heroB-media{position:relative;overflow:hidden;min-height:52vh}
.v9-heroB-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:var(--focus,50% 50%)}
.v9-heroB-media::after{content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,rgba(6,13,11,.42) 0%,rgba(6,13,11,0) 34%),
             linear-gradient(0deg,rgba(6,13,11,.35) 0%,rgba(6,13,11,0) 26%)}
.v9-heroB-cap{position:absolute;left:clamp(18px,2vw,34px);bottom:18px;z-index:1;
  display:flex;gap:14px;font-family:var(--mono);font-size:.6rem;letter-spacing:.15em;
  text-transform:uppercase;color:rgba(242,239,230,.72)}
.v9-heroB-cap b{color:var(--v9-brass);font-weight:500}
.v9-heroB .v9-hero-crumbs{position:absolute;top:calc(74px + 18px);left:clamp(24px,4vw,72px);z-index:2}
/* B media settles only under the veil choreography too */
.v9-heroB-media img{transition:transform 2.4s var(--v9-ease)}
body.hero-boot .v9-heroB-media img{transform:scale(1.04)}
body.hero-live .v9-heroB-media img{transform:scale(1)}

/* the intro band that receives content moved out of the fold */
.v9f-intro{padding:clamp(48px,7vh,84px) 0;border-bottom:1px solid rgba(213,187,134,.14)}
.v9f-intro .v9-wrap{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:clamp(32px,5vw,110px);align-items:start}
.v9f-intro .lead{margin:0}
.v9f-intro dl{margin:0;display:grid;gap:0}
.v9f-intro dl div{display:grid;grid-template-columns:130px 1fr;gap:18px;padding:10px 0;border-top:1px solid var(--v9-line);align-items:baseline}
.v9f-intro dl div:last-child{border-bottom:1px solid var(--v9-line)}
.v9f-intro dt{font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;color:var(--v9-brass)}
.v9f-intro dd{margin:0;font-family:var(--v8-text);font-size:.9rem;color:rgba(242,239,230,.72)}
.v9f-intro .v9-open-extra{display:grid;gap:14px}

@media (max-width:1080px){
  .v9-heroB{grid-template-columns:1fr}
  .v9-heroB-media{min-height:46vh;order:-1}
  .v9-heroB .v9-hero-crumbs{position:static;margin:0 0 12px;padding:0}
  .v9-heroB-copy{padding-top:clamp(24px,4vh,40px)}
  .v9f-intro .v9-wrap{grid-template-columns:1fr;gap:26px}
}
@media (max-width:940px){
  .v9-hero--page{min-height:72dvh}
  .v9-heroB{min-height:0}
}


/* ============================================================================
   17 · FINALE — the recomposed record galleries
   One rhythm, exact math: pair slots share a row height because their aspect
   ratios are proportional to their widths (9:5 beside 6:5; 3:2 beside 3:2).
   Buttons are the media boxes; the lightbox contract rides untouched.
   ============================================================================ */
.v9f-gallery{display:block}
.v9f-row{display:grid;gap:clamp(14px,1.6vw,26px);margin:0 0 clamp(22px,2.6vw,40px);width:100%}
/* minmax(0,...) so legacy intrinsic-width image rules can never inflate a
   column past the wrap (the min-content grid blowout seen on city pages) */
.v9f-row--lead,.v9f-row--full{grid-template-columns:minmax(0,1fr)}
.v9f-row--p64{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr)}
.v9f-row--p46{grid-template-columns:minmax(0,1fr) minmax(0,1.5fr)}
.v9f-row--p55{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
.v9f-row>*{min-width:0;max-width:100%}
.v9f-item{margin:0;position:relative}
.v9f-item button{
  display:block;width:100%;padding:0;border:0;background:none;cursor:zoom-in;
  overflow:hidden;position:relative}
.v9f-item button img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform 1.2s var(--v9-ease)}
.v9f-item button:hover img{transform:scale(1.025)}
.v9f-item button:focus-visible{outline:2px solid var(--v9-brass);outline-offset:3px}
.v9f-row--lead .v9f-item button{aspect-ratio:15/8}
.v9f-row--full .v9f-item button{aspect-ratio:16/9}
.v9f-row--p64 .v9f-item:first-child button,.v9f-row--p46 .v9f-item:last-child button{aspect-ratio:9/5}
.v9f-row--p64 .v9f-item:last-child button,.v9f-row--p46 .v9f-item:first-child button{aspect-ratio:6/5}
.v9f-row--p55 .v9f-item button{aspect-ratio:3/2}
.v9f-item figcaption{
  display:flex;gap:14px;align-items:baseline;
  border-top:1px solid var(--v9-line);margin-top:10px;padding-top:8px;
  font-family:var(--mono);font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;
  color:rgba(242,239,230,.55);font-variant-numeric:tabular-nums}
.v9f-item figcaption span{color:var(--v9-brass);flex:0 0 auto}
.v9f-item figcaption strong{
  color:rgba(242,239,230,.8);font-weight:500;flex:1 1 auto;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.v9f-item figcaption small{font-size:inherit;color:rgba(242,239,230,.45);flex:0 0 auto;text-align:right}
@media (max-width:940px){
  .v9f-row,.v9f-row--p64,.v9f-row--p46,.v9f-row--p55{grid-template-columns:1fr}
  .v9f-row{margin-bottom:20px;gap:20px}
  .v9f-row--lead .v9f-item button,.v9f-row--full .v9f-item button,
  .v9f-row--p64 .v9f-item button,.v9f-row--p46 .v9f-item button,
  .v9f-row--p55 .v9f-item button{aspect-ratio:4/3}
  .v9f-item figcaption strong{white-space:normal}
  .v9f-item figcaption small{display:none}
}


/* the finale gallery container escapes every legacy grid/column layout */
body.utmost-launch-final.utmost-final-luxury :is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x){
  display:block!important;grid-template-columns:none!important;grid-auto-rows:auto!important;
  gap:0!important;columns:auto!important;column-gap:0!important}
body.utmost-launch-final.utmost-final-luxury :is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x) .v9f-item{
  grid-column:auto!important;grid-row:auto!important;width:auto!important;height:auto!important}
body.utmost-launch-final.utmost-final-luxury :is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x):is(.v9f-gallery,.v9x) .v9f-item button{
  height:auto!important;min-height:0!important}


/* ============================================================================
   18 · FINALE — services as cinematic bands
   ============================================================================ */
.v9f-svcs{display:block;padding:0 0 clamp(48px,7vh,84px)}
.v9f-svc{position:relative;display:grid;align-items:end;isolation:isolate;overflow:hidden;
  min-height:clamp(340px,46vh,520px);margin:0 0 clamp(14px,1.6vw,24px);color:var(--v9-ivory)}
.v9f-svc img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;
  transition:transform 1.3s var(--v9-ease)}
.v9f-svc:hover img{transform:scale(1.025)}
.v9f-svc-grade{position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(6,13,11,.66) 0%,rgba(6,13,11,.22) 44%,rgba(6,13,11,0) 68%),
  linear-gradient(0deg,rgba(6,13,11,.62) 0%,rgba(6,13,11,0) 46%)}
.v9f-svc-copy{display:grid;gap:8px;padding:clamp(22px,3vw,44px);max-width:760px}
.v9f-svc-kicker{font-family:var(--mono);font-size:.62rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--v9-brass)}
.v9f-svc h2{font-family:var(--serif);font-weight:500;color:var(--v9-ivory);
  font-size:clamp(1.7rem,2.8vw,2.7rem);letter-spacing:-.015em;line-height:1.08;margin:0}
.v9f-svc-lead{font-family:var(--v8-text);font-size:.95rem;line-height:1.55;
  color:rgba(242,239,230,.7);max-width:56ch}
.v9f-svc-scope{font-family:var(--mono);font-size:.6rem;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(242,239,230,.5)}
.v9f-svc-cue{position:absolute;right:clamp(22px,3vw,44px);bottom:clamp(22px,3vw,40px);
  font-size:1.2rem;color:var(--v9-brass);transition:transform .35s var(--v9-ease)}
.v9f-svc:hover .v9f-svc-cue{transform:translateX(6px)}
.v9f-svc:focus-visible{outline:2px solid var(--v9-brass);outline-offset:3px}
/* the floor-plan SVG pathway keeps its drawing legible on night */
.v9f-svc img[src$=".svg"]{object-fit:contain;padding:6%;background:var(--v9-night-2)}
@media (max-width:940px){
  .v9f-svc{min-height:300px}
  .v9f-svc-lead{display:none}
  .v9f-svc-scope{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
}


/* ============================================================================
   MOBILE RECORD SEPARATION (<=767px)
   Mark's iPhone captures showed independent plates reading as one fused
   photographic block, and the portfolio CTA painted through a plate title.
   Rather than preserve the desktop pair wrappers on a phone, every record
   becomes its own full-width row: photograph, then ITS OWN plate number and
   category, then ITS OWN title, then a hairline that closes the record. The
   reveal transform is dropped here too, so nothing can ever be painted
   part-way across its neighbour mid-animation.
   ============================================================================ */
@media (max-width:767px){
  .v9f-gallery{display:block}
  .v9f-row,
  .v9f-row--lead,.v9f-row--full,.v9f-row--p64,.v9f-row--p46,.v9f-row--p55{
    display:block!important;grid-template-columns:none!important;
    gap:0!important;margin:0!important}
  .v9f-item{
    display:block!important;width:100%!important;max-width:100%;
    margin:0 0 clamp(26px,7vw,38px)!important;
    padding:0 0 clamp(16px,4.5vw,24px);
    border-bottom:1px solid rgba(213,187,134,.16)}
  .v9f-item:last-child{border-bottom:0;margin-bottom:0!important}
  .v9f-item button{width:100%!important;aspect-ratio:4/3!important}
  .v9f-item figcaption{
    display:flex!important;flex-wrap:wrap;align-items:baseline;gap:6px 12px;
    margin-top:14px;padding-top:12px;border-top:1px solid var(--v9-line)}
  .v9f-item figcaption strong{
    flex:1 1 100%;white-space:normal!important;overflow:visible;
    text-overflow:clip;font-size:.95rem;line-height:1.34}
  .v9f-item figcaption small{display:none}

  /* the portfolio CTA sits in normal flow, on its own rows, clear of the
     final plate — no absolute positioning, no negative pull, no transform */
  .city-portfolio-actions{
    position:static!important;transform:none!important;
    display:block!important;
    margin-top:clamp(30px,8vw,44px)!important;
    padding-top:clamp(18px,5vw,24px);
    border-top:1px solid rgba(213,187,134,.16)}
  .city-portfolio-actions>*{
    display:block!important;width:100%;margin:0 0 14px;text-align:center}
  .city-portfolio-actions>*:last-child{margin-bottom:0}

  /* a settling record must never be drawn across the one below it */
  .v9f-item.reveal,.v9f-item.reveal:not(.visible),
  .city-portfolio-actions.reveal,.city-portfolio-actions.reveal:not(.visible){
    transform:none!important}
}


/* clamp every gallery image inside the composed rows, over legacy weight */
body.utmost-launch-final.utmost-final-luxury :is(.v9f-item,.v9x):is(.v9f-item,.v9x):is(.v9f-item,.v9x):is(.v9f-item,.v9x) img{
  width:100%!important;height:100%!important;max-width:100%!important;min-width:0!important;object-fit:cover}
body.utmost-launch-final.utmost-final-luxury :is(.v9f-item,.v9x):is(.v9f-item,.v9x):is(.v9f-item,.v9x):is(.v9f-item,.v9x) button{
  width:100%!important;max-width:100%!important;display:block}
