/* ============================================================================
   50-V8 — THE DOSSIER
   Design: Brand | Vibe: Editorial Luxury (paper-first monograph) | Layout:
   Editorial split + plate spreads | Color: Committed (paper ground, forest
   punctuation, brass linework).

   The V8 redesign system. Loaded last on every page; it owns the shared
   chrome (masthead, footer, buttons, forms, lightbox), the sitewide plate
   language, and the v8-* section components used by the rebuilt pages.
   Brand tokens are inherited from style.css :root and are not redefined.

   The one rule of the ground: paper carries the site. Forest appears exactly
   three ways — the masthead, one cinematic movement inside a long page, and
   the closing band that hands over to the footer. Brass never fills; it
   draws. Photography is never tinted.
   ============================================================================ */

:root{
  --v8-lite:#f7f4ed;
  --v8-text:"Source Serif 4",Georgia,"Times New Roman",serif;
  --v8-ink:#262d28;
  --v8-ink-soft:#4c544e;
  --v8-paper:var(--ivory);
  --v8-paper-raised:#fbf9f3;
  --v8-forest:#0a1c17;
  --v8-forest-2:#102622;
  --v8-brass-text:#7d5c34;        /* AA at caption sizes on paper */
  --v8-brass-text-dark:#d5bb86;   /* meta text on forest */
  --v8-rule:rgba(155,116,68,.26);
  --v8-rule-strong:rgba(155,116,68,.5);
  --v8-rule-dark:rgba(213,187,134,.24);
  --v8-shadow-plate:0 30px 60px -28px rgba(9,25,21,.35);
  --v8-ease:cubic-bezier(.32,.72,0,1);
  --v8-max:1360px;
  --v8-gutter:clamp(24px,4vw,64px);
  /* Section rhythm: three deliberate values, used unevenly. */
  --v8-beat-s:clamp(56px,7vw,88px);
  --v8-beat-m:clamp(88px,10vw,136px);
  --v8-beat-l:clamp(120px,13vw,184px);
}

/* ----------------------------------------------------------------------------
   1 · GROUND AND TYPE
   ---------------------------------------------------------------------------- */
body{
  background:var(--v8-paper);
  color:var(--v8-ink);
  font-family:var(--v8-text);
  font-size:1.0625rem;
  line-height:1.68;
  letter-spacing:0;
}
::selection{background:var(--green-800);color:var(--v8-lite)}

h1,h2,h3,h4{font-family:var(--serif);font-weight:500;color:inherit}
h1,h2{letter-spacing:-.025em;line-height:1.05}
h3{letter-spacing:-.015em;line-height:1.18}
p{max-width:62ch}
.lead{font-family:var(--v8-text);font-size:clamp(1.09rem,1.35vw,1.21rem);line-height:1.62;color:var(--v8-ink-soft)}
strong{font-weight:600}

/* The mono voice: indices, captions, wayfinding. Never paragraphs. */
.v8-mono,.ed-kicker,.eyebrow{
  font-family:var(--mono);
  font-size:.6875rem;
  font-weight:500;
  letter-spacing:.16em;
  text-transform:uppercase;
  color:var(--v8-brass-text);
  font-variant-numeric:tabular-nums;
}
.ed-kicker,.eyebrow{margin-bottom:20px;display:block}
[data-tone="dark"] .v8-mono,[data-tone="dark"] .ed-kicker,[data-tone="dark"] .eyebrow{color:var(--v8-brass-text-dark)}

/* Focus discipline on paper and forest alike. */
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{
  outline:2px solid var(--brass-600);outline-offset:3px}
[data-tone="dark"] a:focus-visible,[data-tone="dark"] button:focus-visible{
  outline-color:var(--brass-300)}

/* ----------------------------------------------------------------------------
   2 · MASTHEAD
   The letterhead of the dossier: one slim forest bar, the authentic mark,
   mono wayfinding. The old two-deck utility arrangement is retired.
   ---------------------------------------------------------------------------- */
.utility{display:none}
.site-header{
  position:sticky;top:0;left:0;right:0;z-index:100;
  background:var(--v8-forest);
  border-bottom:1px solid var(--v8-rule-dark);
  transition:box-shadow .3s var(--v8-ease);
}
.site-header.is-scrolled{
  position:sticky;top:0;
  background:var(--v8-forest);
  backdrop-filter:none;
  box-shadow:0 18px 40px -20px rgba(3,12,9,.6);
}
.nav-wrap{
  height:74px;
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:36px;
}
.brand img,.custom-logo{width:158px;max-height:58px;object-fit:contain;object-position:left center}
.main-nav{justify-self:center;font-family:var(--mono);font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:rgba(247,244,237,.82)}
.main-nav ul{display:flex;align-items:center;gap:30px;list-style:none;margin:0;padding:0}
.main-nav a{position:relative;padding:8px 0;transition:color .25s var(--v8-ease)}
.main-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:3px;height:1px;background:var(--brass-300);transition:right .34s var(--v8-ease)}
.main-nav a:hover{color:#fff}
.main-nav a:hover::after,.main-nav .current-menu-item>a::after{right:0}
.header-cta{
  min-height:0;height:40px;padding:0 18px;
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:.66rem;font-weight:500;letter-spacing:.15em;text-transform:uppercase;
  color:var(--v8-lite);background:transparent;
  border:1px solid rgba(213,187,134,.42);
  transition:background .3s var(--v8-ease),color .3s var(--v8-ease),border-color .3s var(--v8-ease);
}
.header-cta::after{content:"→";font-size:.9rem;transition:transform .3s var(--v8-ease)}
.header-cta:hover{background:var(--brass-300);border-color:var(--brass-300);color:var(--green-1000);transform:none;box-shadow:none}
.header-cta:hover::after{transform:translateX(3px)}
.menu-toggle{border-color:rgba(213,187,134,.42)}

/* ----------------------------------------------------------------------------
   3 · ACTIONS
   Two voices only: the drawn text link and the slim outline pill.
   The tan block button is retired sitewide.
   ---------------------------------------------------------------------------- */
.btn{
  min-height:0;padding:14px 26px;gap:12px;
  font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  background:transparent;color:var(--v8-ink);
  border:1px solid rgba(38,45,40,.55);
  box-shadow:none;border-radius:0;
  transition:background .32s var(--v8-ease),color .32s var(--v8-ease),border-color .32s var(--v8-ease);
}
.btn::after{content:"→";font-size:.95rem;transition:transform .32s var(--v8-ease)}
.btn:hover{transform:none;background:var(--green-950);border-color:var(--green-950);color:var(--v8-lite);box-shadow:none}
.btn:hover::after{transform:translateX(4px)}
.btn-primary,.btn-dark{background:transparent;color:var(--v8-ink);border-color:rgba(38,45,40,.55)}
.btn-primary:hover,.btn-dark:hover{background:var(--green-950);color:var(--v8-lite);border-color:var(--green-950)}
[data-tone="dark"] .btn,.v8-dark .btn,[data-tone="dark"] .btn-primary,[data-tone="dark"] .btn-outline{
  color:var(--v8-lite);border-color:rgba(213,187,134,.45);background:transparent}
[data-tone="dark"] .btn:hover,.v8-dark .btn:hover{
  background:var(--brass-300);border-color:var(--brass-300);color:var(--green-1000)}
.text-link{
  font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;
  color:var(--v8-ink);gap:10px;position:relative;padding-bottom:4px}
.text-link::before{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:var(--brass-500);transition:right .34s var(--v8-ease)}
.text-link:hover{color:var(--v8-ink)}
.text-link:hover::before{right:0}
.text-link::after{color:var(--brass-600);transition:transform .3s var(--v8-ease)}
.text-link:hover::after{transform:translateX(3px)}
[data-tone="dark"] .text-link{color:var(--v8-lite)}
[data-tone="dark"] .text-link::after{color:var(--brass-300)}

/* ----------------------------------------------------------------------------
   4 · STRUCTURE PRIMITIVES
   ---------------------------------------------------------------------------- */
.v8-wrap{width:min(100% - 2*var(--v8-gutter),var(--v8-max));margin-inline:auto}
.v8-section{padding-block:var(--v8-beat-m);position:relative}
.v8-section--s{padding-block:var(--v8-beat-s)}
.v8-section--l{padding-block:var(--v8-beat-l)}
.v8-section--flush-top{padding-top:0}

/* Section opener: index + rule + display sentence. The numbering is real
   wayfinding (chapters of one page), never decoration. */
.v8-chapter{display:grid;grid-template-columns:auto 1fr;gap:18px;align-items:baseline;margin-bottom:clamp(34px,4.5vw,58px)}
.v8-chapter .v8-mono{white-space:nowrap}
.v8-chapter::after{content:"";height:1px;background:var(--v8-rule);align-self:center}
.v8-display{
  font-family:var(--serif);font-weight:500;
  font-size:clamp(2.3rem,4.2vw,4rem);
  line-height:1.06;letter-spacing:-.025em;text-wrap:balance;margin:0 0 26px}
.v8-display i,.v8-display em{font-style:italic;font-weight:500}

/* Hairline index rows — the replacement for every card grid. */
.v8-index{border-top:1px solid var(--v8-rule)}
.v8-index-row{
  display:grid;grid-template-columns:64px 1fr auto;gap:28px;align-items:baseline;
  padding:26px 0;border-bottom:1px solid var(--v8-rule);
  position:relative;transition:padding-left .34s var(--v8-ease)}
a.v8-index-row{color:inherit}
.v8-index-row::before{
  content:"";position:absolute;left:0;top:-1px;height:1px;width:0;
  background:var(--brass-500);transition:width .5s var(--v8-ease)}
a.v8-index-row:hover::before{width:100%}
.v8-index-row .v8-mono{color:var(--v8-brass-text)}
.v8-index-row h3{font-size:clamp(1.35rem,1.9vw,1.8rem);margin:0}
.v8-index-row p{margin:6px 0 0;font-size:.95rem;color:var(--v8-ink-soft);max-width:56ch}
.v8-index-row .v8-index-cue{font-size:.9rem;color:var(--brass-600);transition:transform .34s var(--v8-ease)}
a.v8-index-row:hover .v8-index-cue{transform:translateX(5px)}

/* ----------------------------------------------------------------------------
   5 · THE PLATE SYSTEM  (signature)
   Photography presented as numbered plates of the firm's record.
   ---------------------------------------------------------------------------- */
.v8-plate{margin:0;position:relative}
.v8-plate-media{overflow:hidden;position:relative;background:var(--ivory-2)}
.v8-plate-media img{width:100%;height:100%;object-fit:cover;transition:transform 1.1s var(--v8-ease)}
.v8-plate:hover .v8-plate-media img{transform:scale(1.025)}
.v8-plate figcaption,.v8-platecap{
  display:flex;gap:18px;align-items:baseline;
  border-top:1px solid var(--v8-rule);
  margin-top:14px;padding-top:10px;
  font-family:var(--mono);font-size:.66rem;font-weight:400;
  letter-spacing:.13em;text-transform:uppercase;
  color:var(--v8-ink-soft);font-variant-numeric:tabular-nums}
.v8-plate figcaption b,.v8-platecap b{font-weight:500;color:var(--v8-brass-text)}
.v8-plate figcaption span{margin-left:auto;text-align:right}

/* Full-bleed plate: escapes the wrap without overflow. */
.v8-bleed{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.v8-bleed>figcaption,.v8-bleed .v8-platecap{width:min(100% - 2*var(--v8-gutter),var(--v8-max));margin-inline:auto}

/* Spread: two plates on one baseline, weighted. */
.v8-spread{display:grid;gap:clamp(20px,3vw,44px);align-items:end}
.v8-spread--64{grid-template-columns:1.55fr 1fr}
.v8-spread--46{grid-template-columns:1fr 1.55fr}
.v8-spread--55{grid-template-columns:1fr 1fr}
.v8-spread .v8-plate:nth-child(2){transform:translateY(clamp(-64px,-4vw,-28px))}
.v8-spread--flat .v8-plate:nth-child(2){transform:none}

/* Dark plate: the single cinematic movement. */
.v8-dark{background:var(--v8-forest);color:var(--v8-lite)}
.v8-dark .v8-display{color:var(--v8-lite)}
.v8-dark .lead{color:rgba(247,244,237,.72)}
.v8-dark .v8-plate figcaption{border-top-color:var(--v8-rule-dark);color:rgba(247,244,237,.62)}
.v8-dark .v8-plate figcaption b{color:var(--v8-brass-text-dark)}
.v8-dark .v8-index,.v8-dark .v8-index-row{border-color:var(--v8-rule-dark)}
.v8-dark .v8-chapter::after{background:var(--v8-rule-dark)}

/* ----------------------------------------------------------------------------
   6 · REVEAL REFINEMENT
   Same observer contract, quieter travel; plates unmask.
   ---------------------------------------------------------------------------- */
/* Progressive enhancement: content is visible by default (no JS, blocked JS,
   interrupted load). theme.js stamps html.v8-motion only when the observer is
   live, and only then do elements wait for their reveal. */
.reveal{opacity:1;transform:none;transition:opacity .8s var(--v8-ease),transform .8s var(--v8-ease)}
html.motion-ready .reveal:not(.visible),
html.v8-motion .reveal:not(.visible){opacity:0;transform:translateY(16px)}
.v8-plate .v8-plate-media img{transition:transform 1.1s var(--v8-ease)}
html.v8-motion .v8-plate.reveal:not(.visible) .v8-plate-media img{transform:scale(1.035)}
html.v8-motion .v8-spread .v8-plate:nth-child(2).reveal:not(.visible){transform:translateY(clamp(-48px,-3vw,-12px))}
html.v8-motion .v8-spread--flat .v8-plate:nth-child(2).reveal:not(.visible){transform:translateY(16px)}

/* ----------------------------------------------------------------------------
   7 · FORMS — the enquiry sheet
   Paper, hairline fields, mono labels. Contract untouched.
   ---------------------------------------------------------------------------- */
.inquiry-form{
  background:var(--v8-paper-raised);color:var(--v8-ink);
  padding:clamp(28px,3.5vw,46px);
  border:1px solid var(--v8-rule);border-top:none;box-shadow:none;position:relative}
.inquiry-form::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;background:var(--brass-500)}
.inquiry-form h3{font-size:clamp(1.6rem,2.2vw,2rem);margin-bottom:8px}
.form-note{font-family:var(--v8-text);font-size:.9rem;color:var(--v8-ink-soft)}
.field label{
  font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.15em;
  text-transform:uppercase;color:var(--v8-ink-soft)}
.field input,.field select,.field textarea{
  border:none;border-bottom:1px solid rgba(38,45,40,.35);background:transparent;
  padding:10px 2px;color:var(--v8-ink);border-radius:0;
  transition:border-color .25s var(--v8-ease)}
.field select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--brass-600) 50%),linear-gradient(135deg,var(--brass-600) 50%,transparent 50%);background-position:calc(100% - 14px) 55%,calc(100% - 9px) 55%;background-size:5px 5px;background-repeat:no-repeat}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-bottom-color:var(--brass-600)}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible{outline:none}
.inquiry-form .btn{width:100%;margin-top:22px;justify-content:center}
.inquiry-form .consent,.inquiry-form .field-consent{font-size:.8rem;color:var(--v8-ink-soft)}

/* ----------------------------------------------------------------------------
   8 · FOOTER — the colophon
   ---------------------------------------------------------------------------- */
.site-footer{
  background:var(--v8-forest);color:rgba(247,244,237,.66);
  padding:calc(var(--v8-beat-s) + 8px) 0 28px;border-top:1px solid var(--v8-rule-dark)}
.footer-grid{border-bottom:1px solid rgba(213,187,134,.16);gap:52px}
.footer-brand img{width:188px}
.footer-brand p{font-family:var(--v8-text);font-size:.92rem;line-height:1.66}
.footer-title{font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.2em;color:var(--v8-brass-text-dark)}
.footer-links{font-family:var(--v8-text);font-size:.92rem;gap:10px}
.footer-links a{transition:color .25s var(--v8-ease)}
.footer-bottom{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(247,244,237,.42)}

/* ============================================================================
   9 · LEGACY SURFACE ALIGNMENT
   The long tail keeps its markup; these rules bring it onto the dossier
   ground until each family is rebuilt.
   ============================================================================ */
.content-shell{background:var(--v8-paper)}
.entry-card{box-shadow:none;border:1px solid var(--v8-rule);background:var(--v8-paper-raised)}
.entry-content a{text-decoration-color:var(--brass-500)}
.section{padding:var(--v8-beat-m) 0}

/* Numbered stat strips and hairline rows inherit the mono voice. */
.ed-stat dt,.ed-stat dd,.ed-figcap{font-variant-numeric:tabular-nums}

/* Photography is never tinted: retire remaining scrims on plates. */
.project-image::after{display:none}
.hero-gridline{display:none}

/* ============================================================================
   10 · PAGE — HOME
   ============================================================================ */
.v8-plate-media.r-3x2{aspect-ratio:3/2}
.v8-plate-media.r-4x3{aspect-ratio:4/3}
.v8-plate-media.r-16x9{aspect-ratio:16/9}
.v8-plate-media.r-21x9{aspect-ratio:21/9}
.v8-plate-link{display:block;color:inherit}

/* Opening: the thesis on paper, then the lead plate. */
.v8-open{padding-top:clamp(48px,7vh,96px)}
.v8-open-line{margin:0 0 clamp(28px,4vh,52px)}
.v8-open-grid{
  display:grid;grid-template-columns:1.6fr 1fr;
  gap:clamp(32px,5vw,96px);align-items:end;
  margin-bottom:clamp(40px,6vh,84px)}
.v8-open-display{
  font-size:clamp(3rem,6.6vw,6.4rem);
  line-height:1.02;letter-spacing:-.03em;margin:0;text-wrap:balance}
.v8-open-aside p{font-size:clamp(1.05rem,1.25vw,1.16rem);line-height:1.6;color:var(--v8-ink-soft);margin-bottom:26px;max-width:38ch}
.v8-open-actions{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.v8-open-plate .v8-plate-media{height:clamp(420px,68vh,760px)}
.v8-open-plate .v8-plate-media img{height:100%}
.v8-open-plate figcaption{margin-top:16px}

/* Premise */
.v8-premise-grid{
  display:grid;grid-template-columns:1.35fr 1fr;
  gap:clamp(32px,5vw,110px);align-items:start;
  margin-bottom:clamp(44px,6vw,84px)}
.v8-premise-grid .lead{padding-top:14px;max-width:44ch}
.v8-premise-proof{align-items:start}
.v8-premise-proof .v8-plate:nth-child(2){transform:none}
.v8-premise-note{padding-top:clamp(8px,2vw,30px);max-width:40ch}
.v8-premise-note h3{font-size:clamp(1.5rem,2.1vw,2rem);margin-bottom:14px}
.v8-premise-note p{font-size:.98rem;color:var(--v8-ink-soft);margin-bottom:22px}

/* Record */
.v8-record-head{display:flex;align-items:baseline;justify-content:space-between;gap:36px;margin-bottom:clamp(34px,4.5vw,58px)}
.v8-record-head .v8-display{margin:0}
.v8-record-head .text-link{white-space:nowrap}

/* Transform */
.v8-transform-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:clamp(36px,5vw,92px);align-items:center}
.v8-transform-copy .v8-display{font-size:clamp(2rem,3.4vw,3.2rem)}
.v8-transform-copy p{font-size:.98rem;color:var(--v8-ink-soft)}
.v8-transform-copy .text-link{margin-top:8px}

/* Services head + foot */
.v8-services-head{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(32px,5vw,110px);align-items:end;margin-bottom:clamp(34px,4.5vw,56px)}
.v8-services-head .lead{max-width:42ch;padding-bottom:8px}
.v8-services-foot{margin:30px 0 0}
.v8-index-row h3{font-family:var(--serif);font-weight:500}

/* Standard — the forest movement */
.v8-standard-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(32px,5vw,110px);align-items:end;margin-bottom:clamp(40px,5vw,72px)}
.v8-standard-grid .v8-display{margin:0}
.v8-standard-grid .lead{margin-bottom:18px}
.v8-standard-list{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(40px,5vw,88px)}
.v8-standard-list li{
  display:grid;grid-template-columns:56px 1fr;gap:20px;align-items:start;
  padding:30px 0;border-top:1px solid var(--v8-rule-dark)}
.v8-standard-list li .v8-mono{font-size:.95rem;color:var(--v8-brass-text-dark);letter-spacing:.08em}
.v8-standard-list li p{margin:0;font-size:1.02rem;line-height:1.6;color:rgba(247,244,237,.86);max-width:44ch}

/* Stages — five columns on one rule */
.v8-process-head{display:grid;grid-template-columns:1.4fr 1fr;gap:clamp(32px,5vw,110px);align-items:end;margin-bottom:clamp(38px,5vw,64px)}
.v8-process-head .lead{max-width:36ch;padding-bottom:8px}
.v8-stages{
  list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(5,1fr);gap:clamp(20px,2.5vw,40px);
  border-top:1px solid var(--v8-rule)}
.v8-stages li{padding-top:22px;position:relative}
.v8-stages li::before{content:"";position:absolute;top:-1px;left:0;width:34px;height:1px;background:var(--brass-500)}
.v8-stages .v8-mono{display:block;margin-bottom:14px;font-size:.62rem}
.v8-stages h3{font-size:1.28rem;margin:0 0 10px}
.v8-stages p{font-size:.88rem;line-height:1.6;color:var(--v8-ink-soft);margin:0}

/* Practice */
.v8-practice-grid{display:grid;grid-template-columns:1.15fr 1fr;gap:clamp(36px,5vw,100px);align-items:center;margin-bottom:clamp(44px,6vw,76px)}
.v8-practice-copy .v8-display{font-size:clamp(2rem,3.4vw,3.3rem)}
.v8-practice-copy>p{color:var(--v8-ink-soft);max-width:46ch}
.v8-citylist{
  list-style:none;margin:28px 0 0;padding:0;
  display:grid;grid-template-columns:repeat(2,minmax(0,220px));gap:0 40px}
.v8-citylist li{border-bottom:1px solid var(--v8-rule)}
.v8-citylist a{
  display:block;padding:12px 2px;font-family:var(--v8-text);font-size:1rem;
  transition:padding-left .3s var(--v8-ease),color .3s var(--v8-ease)}
.v8-citylist a:hover{padding-left:10px;color:var(--brass-700)}
.v8-facts{
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,64px);
  margin:0;border-top:1px solid var(--v8-rule);padding-top:26px}
.v8-facts dt{font-family:var(--serif);font-weight:500;font-size:clamp(1.6rem,2.4vw,2.2rem);letter-spacing:-.01em}
.v8-facts dd{margin:4px 0 0;font-family:var(--mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:var(--v8-ink-soft)}

/* Close — invitation + enquiry sheet on forest */
.v8-close{padding-bottom:var(--v8-beat-m)}
.v8-close-grid{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(40px,6vw,110px);align-items:start}
.v8-close-copy{position:sticky;top:110px}
.v8-close-copy .v8-mono{margin-bottom:22px;display:block}
.v8-close-copy .v8-display{margin-bottom:22px}
.v8-close-copy .lead{max-width:40ch}
.v8-close-contacts{display:grid;gap:2px;margin-top:34px;justify-items:start}
.v8-close-contacts a{
  font-family:var(--serif);font-size:clamp(1.4rem,2vw,1.85rem);letter-spacing:-.01em;
  color:var(--v8-lite);padding:6px 0;position:relative}
.v8-close-contacts a::after{content:"";position:absolute;left:0;right:100%;bottom:2px;height:1px;background:var(--brass-300);transition:right .4s var(--v8-ease)}
.v8-close-contacts a:hover::after{right:0}
.v8-close .inquiry-form{background:var(--v8-paper-raised);border-color:rgba(213,187,134,.25)}

/* ----------------------------------------------------------------------------
   11 · RESPONSIVE
   ---------------------------------------------------------------------------- */
@media(max-width:1080px){
  .v8-open-grid{grid-template-columns:1fr;align-items:start;gap:26px}
  .v8-open-aside p{max-width:56ch}
  .v8-premise-grid,.v8-services-head,.v8-standard-grid,.v8-process-head{grid-template-columns:1fr;gap:18px}
  .v8-premise-grid .lead,.v8-services-head .lead,.v8-process-head .lead{padding:0;max-width:56ch}
  .v8-stages{grid-template-columns:repeat(2,1fr);gap:34px 28px}
  .v8-close-copy{position:static}
}
@media(max-width:940px){
  .nav-wrap{height:64px}
  .brand img,.custom-logo{width:138px;max-height:50px}
  .main-nav{position:fixed;inset:64px 0 auto 0;background:var(--v8-forest);border-bottom:1px solid var(--v8-rule-dark);padding:10px 24px 26px;transform:translateY(-130%);opacity:0;visibility:hidden;transition:transform .4s var(--v8-ease),opacity .3s var(--v8-ease),visibility .4s}
  .main-nav.open{transform:none;opacity:1;visibility:visible}
  .main-nav ul{display:grid;gap:0}
  .main-nav a{display:block;padding:15px 0;font-size:.78rem;border-bottom:1px solid rgba(213,187,134,.14)}
  .main-nav li:last-child a{border-bottom:none}
  .v8-spread--64,.v8-spread--46,.v8-spread--55{grid-template-columns:1fr}
  .v8-spread .v8-plate:nth-child(2),.v8-spread .v8-plate:nth-child(2).reveal.visible{transform:none}
  .v8-spread .v8-plate:nth-child(2).reveal{opacity:0;transform:translateY(16px)}
  .v8-record-head{flex-direction:column;align-items:flex-start;gap:16px}
  .v8-transform-grid,.v8-practice-grid,.v8-close-grid{grid-template-columns:1fr;gap:40px}
  .v8-index-row{grid-template-columns:44px 1fr auto;gap:18px;padding:22px 0}
  .v8-standard-list{grid-template-columns:1fr}
  .v8-facts{grid-template-columns:1fr;gap:20px}
  .v8-facts div{display:grid;grid-template-columns:auto 1fr;gap:16px;align-items:baseline}
  .v8-facts dd{margin:0}
}
@media(max-width:650px){
  .v8-open{padding-top:36px}
  .v8-open-display{font-size:clamp(2.5rem,11.5vw,3.4rem)}
  .v8-display{font-size:clamp(1.9rem,8vw,2.6rem)}
  .v8-open-plate .v8-plate-media{height:clamp(320px,52vh,460px)}
  .v8-plate figcaption,.v8-platecap{flex-wrap:wrap;gap:6px 14px}
  .v8-plate figcaption span{margin-left:0;text-align:left;width:100%}
  .v8-stages{grid-template-columns:1fr;gap:30px}
  .v8-citylist{grid-template-columns:1fr 1fr;gap:0 24px}
  .v8-index-row{grid-template-columns:36px 1fr;gap:14px}
  .v8-index-row .v8-index-cue{display:none}
  .v8-chapter{gap:14px;margin-bottom:30px}
  .v8-open-actions{gap:20px}
  .v8-open-actions .btn{width:100%;justify-content:center}
  .footer-grid{gap:34px}
}
@media(prefers-reduced-motion:reduce){
  .v8-plate .v8-plate-media img,.v8-plate.reveal .v8-plate-media img{transform:none!important;transition:none!important}
  .v8-spread .v8-plate:nth-child(2){transform:none!important}
}

/* ============================================================================
   12 · SPECIFICITY RECONCILIATION
   The legacy layers address chrome through body.utmost-launch-final
   .utmost-final-luxury selectors, several with !important. These rules meet
   them at the same weight, loaded last, so the dossier voice wins.
   ============================================================================ */
body.utmost-launch-final.utmost-final-luxury .main-nav a{
  font-family:var(--mono);font-size:.7rem;font-weight:500;
  letter-spacing:.15em;text-transform:uppercase;min-height:0;display:inline-block}
body.utmost-launch-final .main-nav a{font-family:var(--mono);font-size:.7rem;letter-spacing:.15em}

body.utmost-launch-final.utmost-final-luxury .btn,
body.utmost-launch-final.utmost-final-luxury .btn-primary,
body.utmost-launch-final.utmost-final-luxury .btn-dark{
  background:transparent;border:1px solid rgba(38,45,40,.55);color:var(--v8-ink);
  box-shadow:none;font-family:var(--mono);font-size:.68rem;font-weight:500;
  letter-spacing:.16em;padding:14px 26px;min-height:0}
body.utmost-launch-final.utmost-final-luxury .btn:hover,
body.utmost-launch-final.utmost-final-luxury .btn-primary:hover,
body.utmost-launch-final.utmost-final-luxury .btn-dark:hover{
  background:var(--green-950);border-color:var(--green-950);color:var(--v8-lite);
  box-shadow:none;transform:none}
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn,
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn-primary,
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn-outline{
  color:var(--v8-lite)!important;background:transparent!important;
  border-color:rgba(213,187,134,.45)!important}
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn:hover,
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn-primary:hover,
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] .btn-outline:hover{
  color:var(--green-1000)!important;background:var(--brass-300)!important;
  border-color:var(--brass-300)!important}
/* The enquiry sheet is a light island inside the forest close. */
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] [data-tone="light"] .btn-primary,
body.utmost-launch-final.utmost-final-luxury .inquiry-form .btn-primary{
  color:var(--v8-ink)!important;background:transparent!important;
  border-color:rgba(38,45,40,.55)!important}
body.utmost-launch-final.utmost-final-luxury [data-tone="dark"] [data-tone="light"] .btn-primary:hover,
body.utmost-launch-final.utmost-final-luxury .inquiry-form .btn-primary:hover{
  color:var(--v8-lite)!important;background:var(--green-950)!important;
  border-color:var(--green-950)!important}
body.utmost-launch-final.utmost-final-luxury .header-cta,
body.utmost-launch-final.utmost-final-luxury .btn.header-cta{
  height:40px;padding:0 18px;color:var(--v8-lite);background:transparent;
  border:1px solid rgba(213,187,134,.42);font-size:.66rem}
body.utmost-launch-final.utmost-final-luxury .header-cta:hover{
  background:var(--brass-300);border-color:var(--brass-300);color:var(--green-1000)}

/* Consent line reads as one sentence of text, not as a label row. */
.consent-field label{display:block!important;font-family:var(--v8-text)!important;font-size:.82rem!important;
  line-height:1.55;color:var(--v8-ink-soft);letter-spacing:0!important;text-transform:none!important}
.consent-field input{float:left;margin:4px 10px 0 0}
.consent-field a{color:var(--v8-ink);text-decoration-color:var(--brass-500)}

/* The close carries the one published commitment, in the mono voice. */
.v8-close-note{margin-top:40px;border-top:1px solid var(--v8-rule-dark);padding-top:16px;
  font-family:var(--mono);font-size:.66rem;letter-spacing:.15em;text-transform:uppercase;
  color:var(--v8-brass-text-dark)}

/* ============================================================================
   14 · PAGE FAMILY — CASE STUDIES (the record pages)
   ============================================================================ */
.v8-crumbs{display:flex;gap:10px;flex-wrap:wrap;align-items:baseline;
  font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--v8-ink-soft);margin-bottom:clamp(30px,4vh,54px)}
.v8-crumbs span{color:rgba(76,84,78,.55)}
.v8-crumbs a:hover{color:var(--v8-brass-text)}
.v8-cs-open{padding-top:clamp(40px,6vh,80px)}
.v8-cs-kicker{margin-bottom:20px}
.v8-cs-display{font-size:clamp(2.7rem,5.6vw,5.4rem);line-height:1.03;letter-spacing:-.028em;
  margin:0 0 clamp(26px,3.5vh,44px);max-width:24ch;text-wrap:balance}
.v8-cs-grid{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(32px,5vw,110px);
  align-items:start;margin-bottom:clamp(38px,5.5vh,72px)}
.v8-cs-grid .lead{max-width:52ch}
.v8-cs-facts dl{margin:0 0 24px;display:grid;gap:14px}
.v8-cs-facts dt{font-family:var(--mono);font-size:.6rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--v8-brass-text);margin-bottom:4px}
.v8-cs-facts dd{margin:0;font-size:.92rem;line-height:1.55;color:var(--v8-ink-soft)}
.v8-cs-lead .v8-plate-media{height:clamp(400px,64vh,720px)}
.v8-cs-lead .v8-plate-media img{width:100%;height:100%;object-fit:cover}

/* The gallery becomes plates of the record. Numbering equals the lightbox
   counter (data-plate = data-project-index + 1), so the two always agree. */
body.utmost-launch-final .case-study-gallery{background:var(--v8-paper);padding-block:var(--v8-beat-m)}
body.utmost-launch-final .case-study-gallery-head{margin-bottom:clamp(30px,4vw,52px)}
body.utmost-launch-final .case-study-grid{gap:clamp(22px,3vw,44px) clamp(16px,2vw,28px)}
body.utmost-launch-final .case-study-shot{background:transparent;border:none}
body.utmost-launch-final .case-study-shot button{background:var(--ivory-2)}
body.utmost-launch-final .case-study-shot img{transition:transform 1.1s var(--v8-ease)}
body.utmost-launch-final .case-study-shot:hover img{transform:scale(1.025)}
body.utmost-launch-final .case-study-shot figcaption{
  padding:10px 0 0;margin-top:12px;border-top:1px solid var(--v8-rule);
  display:flex;gap:14px;align-items:baseline;flex-wrap:wrap}
body.utmost-launch-final .case-study-shot figcaption::before{
  content:"Plate " attr(data-plate);
  font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--v8-brass-text);font-variant-numeric:tabular-nums}
body.utmost-launch-final .case-study-shot figcaption span{
  margin:0;font-family:var(--mono);font-size:.6rem;letter-spacing:.13em;
  color:var(--v8-ink-soft);text-transform:uppercase}
body.utmost-launch-final .case-study-shot figcaption strong{
  font-family:var(--serif);font-size:1.08rem;font-weight:500;letter-spacing:0}

/* Intro, scope, context and CTA come onto paper. */
body.utmost-launch-final .case-study-intro{background:var(--v8-paper)}
body.utmost-launch-final .case-study-scope span{font-family:var(--v8-text)}
body.utmost-launch-final .case-study-scope b{font-family:var(--mono);color:var(--v8-brass-text)}
body.utmost-launch-final .case-study-context{background:var(--v8-paper-raised)}
body.utmost-launch-final .case-study-cta{background:var(--v8-forest);padding:var(--v8-beat-m) 0}
body.utmost-launch-final .case-study-cta-media{display:none}
body.utmost-launch-final .case-study-cta h2{font-size:clamp(2.4rem,4.4vw,4.2rem)}

/* The record viewer follows the sheet. */
.project-lightbox-info .eyebrow{font-family:var(--mono)}
.project-lightbox .btn{margin-top:14px}

/* ============================================================================
   15 · THE PLATE LANGUAGE ACROSS EVERY RECORD GALLERY
   The V7 composed rhythm (spans and heights) survives; the dark slab and
   overlay captions retire. One hairline caption row, one numbering voice.
   ============================================================================ */
body.utmost-launch-final :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) > figure:nth-child(6n+6){
  background:transparent !important;padding:0 !important}
body.utmost-launch-final :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) > figure:nth-child(6n+6) figcaption{color:var(--v8-ink-soft) !important}
body.utmost-launch-final :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) > figure:nth-child(6n+6) figcaption :is(span,b,em){color:var(--v8-brass-text) !important}
body.utmost-launch-final :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) > figure:nth-child(6n+6) figcaption strong{color:var(--v8-ink) !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) figcaption{
  position:static !important;background:none !important;
  border-top:1px solid var(--v8-rule);margin-top:12px;
  padding:10px 0 0 !important;min-height:0 !important;
  display:flex;gap:14px;align-items:baseline;flex-wrap:wrap;
  pointer-events:auto}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) figcaption[data-plate]::before{
  content:"Plate " attr(data-plate);
  font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.14em;
  text-transform:uppercase;color:var(--v8-brass-text);font-variant-numeric:tabular-nums}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) figcaption :is(span):first-of-type{
  font-family:var(--mono);font-size:.6rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--v8-ink-soft) !important;margin:0}
body.utmost-launch-final.utmost-final-luxury :is(.case-study-grid,.city-gallery,.kitchen-editorial,.whole-home-story,.signature-baths-stage,.bathroom-city-images) figcaption strong{
  font-family:var(--serif);font-size:1.08rem;font-weight:500;color:var(--v8-ink) !important;margin:0}
body.utmost-launch-final.utmost-final-luxury .city-gallery figcaption small{display:none}

/* Relocated breadcrumbs open the page in the dossier voice. */
.v8-crumbs--page{
  position:static!important;transform:none!important;left:auto!important;top:auto!important;
  width:auto;margin:0 0 clamp(26px,3.5vh,44px);justify-content:flex-start;
  font-size:.62rem!important;color:var(--v8-ink-soft)!important;
  white-space:normal!important;overflow:visible!important;text-transform:uppercase}
.v8-crumbs--page a:hover{color:var(--v8-brass-text)}

/* Numbered proof strips follow the city treatment: paper, hairlines, ink. */
body.utmost-final-luxury .realtor-trust-strip{background:var(--v8-paper-raised);color:var(--v8-ink)}
body.utmost-final-luxury .realtor-trust-strip :is(strong,b){color:var(--v8-ink)}
body.utmost-final-luxury .realtor-trust-strip :is(span,small,p){color:var(--v8-ink-soft)}
.bathroom-proof,.services-hub-proof,.whole-home-proof,.realtor-trust-strip{
  background:var(--v8-paper-raised);color:var(--v8-ink);
  border-top:1px solid var(--v8-rule);border-bottom:1px solid var(--v8-rule)}
:is(.bathroom-proof,.services-hub-proof,.whole-home-proof,.realtor-trust-strip) :is(span){color:var(--v8-brass-text)}
:is(.bathroom-proof,.services-hub-proof,.whole-home-proof,.realtor-trust-strip) :is(strong){color:var(--v8-ink)}
:is(.bathroom-proof,.services-hub-proof,.whole-home-proof,.realtor-trust-strip) :is(small,p){color:var(--v8-ink-soft)}
:is(.bathroom-proof,.services-hub-proof,.whole-home-proof,.realtor-trust-strip) [class*="grid"]>div{border-color:var(--v8-rule)!important}

/* Foundation/service CTA closes: solid forest, no photograph wash. */
:is(.foundation-cta,.bathroom-cta,.kitchen-cta,.whole-home-cta,.new-home-cta,.services-hub-cta,.areas-hub-cta,.realtor-cta) :is([class*="-media"],[class*="-bg"]){display:none}
:is(.foundation-cta,.bathroom-cta,.kitchen-cta,.whole-home-cta,.new-home-cta,.services-hub-cta,.areas-hub-cta,.realtor-cta){background:var(--v8-forest)}

/* Ledger notes under forms use the middot voice. */
.form-assurance span::before{content:"·";color:var(--brass-500)}
.form-assurance span{font-family:var(--mono);font-size:.66rem;letter-spacing:.1em;color:var(--v8-ink-soft)}

/* The opening note block on page openings. */
.v8-open-note{margin:0 0 24px;border-top:1px solid var(--v8-rule);padding-top:14px}
.v8-note-title{font-family:var(--serif);font-size:1.15rem;margin:0 0 6px;color:var(--v8-ink)}
.v8-open-note p{font-size:.9rem;color:var(--v8-ink-soft);margin:0;line-height:1.6}

/* Legacy number chips on gallery photos retire in favour of plate captions. */
.image-index{display:none!important}

/* City chrome onto paper. */
.city-proof{background:var(--v8-paper-raised);color:var(--v8-ink);border-top:1px solid var(--v8-rule);border-bottom:1px solid var(--v8-rule)}
.city-proof a{border-right:1px solid var(--v8-rule);transition:background .3s var(--v8-ease)}
.city-proof a:hover{background:rgba(155,116,68,.07)}
.city-proof span{color:var(--v8-brass-text)}
.city-proof strong{font-family:var(--mono);font-size:.62rem;font-weight:500;letter-spacing:.14em}
.city-cta{background:var(--v8-forest)}
.city-cta-media{display:none}
.city-cta::after{display:none}
.city-cta-phone{color:var(--brass-300)}
.city-portfolio{background:var(--v8-paper)}

/* ============================================================================
   13 · COMPOSITION REFINEMENTS (post first render)
   ============================================================================ */
.v8-open-line{max-width:none}
.v8-chapter .v8-mono{color:var(--v8-brass-text)}
.v8-dark .v8-chapter .v8-mono,[data-tone="dark"] .v8-chapter .v8-mono{color:var(--v8-brass-text-dark)}

/* Trust-strip numerals follow the paper strip they now sit on. */
body.utmost-final-luxury .realtor-trust-strip .realtor-number{color:var(--v8-ink)!important}

/* The whole-home story movement keeps its forest ground: captions go ivory.
   Specificity meets 40-editorial's :is() chains so source order decides. */
body.utmost-launch-final.utmost-final-luxury .flagship-transformation figcaption{border-top-color:var(--v8-rule-dark)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation figcaption :is(strong,b){color:var(--v8-lite)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation figcaption :is(span,em){color:rgba(247,244,237,.66)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation figcaption[data-plate]::before{color:var(--v8-brass-text-dark)}
.v8-standard .v8-display{font-size:clamp(2.6rem,4.6vw,4.5rem)}
/* Tighter global beat; the movements keep their long measure. */
:root{--v8-beat-m:clamp(84px,9.5vw,124px);--v8-beat-l:clamp(112px,12vw,168px)}
/* Services index: the right side carries the real scope keywords. */
.v8-index-row{grid-template-columns:64px 1.1fr .9fr auto}
.v8-index-tags{
  font-family:var(--mono);font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--v8-ink-soft);text-align:right;align-self:center;
  font-variant-numeric:tabular-nums;line-height:2}
@media(max-width:1080px){.v8-index-row{grid-template-columns:44px 1fr auto}.v8-index-tags{display:none}}

/* ============================================================================
   16 · FINAL CASCADE AUTHORITY — flagship transformation captions
   The legacy layers stack four-class !important selectors here; this block
   sits last in the cascade with five-class weight so the forest movement
   keeps legible ivory captions.
   ============================================================================ */
body.utmost-launch-final.utmost-final-luxury .flagship-transformation .whole-home-story-shot.whole-home-story-shot.whole-home-story-shot figcaption{
  border-top:1px solid var(--v8-rule-dark)!important;background:none!important;color:rgba(247,244,237,.86)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation .whole-home-story-shot.whole-home-story-shot.whole-home-story-shot figcaption :is(strong,b){
  color:var(--v8-lite)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation .whole-home-story-shot.whole-home-story-shot.whole-home-story-shot figcaption :is(span,em,p){
  color:rgba(247,244,237,.66)!important}
body.utmost-launch-final.utmost-final-luxury .flagship-transformation .whole-home-story-shot.whole-home-story-shot.whole-home-story-shot figcaption[data-plate]::before{
  color:var(--v8-brass-text-dark)!important}
