.nf-site {
  --nf-hairline: rgba(7, 37, 118, 0.14);
  --nf-hairline-onnavy: rgba(255, 255, 255, 0.14);
  --nf-h-section: clamp(30px, 4vw, 52px);
}

/* ════════════════════════════════════════════════════════════════════════
   How We Work — v2 (experimental comparison build)
   Loaded after site.css. Implements the narrative-architecture redesign.

   The page is the deliberate mirror of the Problems page: Problems shows
   accidental structure emerging; this shows intentional structure emerging.

   Colour rhythm:

       Hero          GREY  + grid   — observing / calm. The way in.
       The trap      BLUE  + grid   — the single moment of highest intensity.
       The reframe   WHITE, no grid — the bright release. The page breathes.
       First move    GREY  + grid   — the differentiator; clarity emerging (climax).
       Structure grows PAPER, no grid — mirror of Problems' "No one designed it…".
       Lead again    GREY  + grid   — the human payoff; calm resolution.
       Close         GREY  + arcs   — shared Final-Promise template (unchanged).

   Only bespoke components are defined here; everything else reuses the
   established site.css systems (.nf-page-hero, .nf-sec, .nf-promise, .nf-routing).
   ════════════════════════════════════════════════════════════════════════ */

/* ── 2 · THE TRAP — navy, the one immersion beat ───────────────────────── */
.v2-trap {
  position: relative; overflow: hidden; color: var(--nf-white);
  padding-block: clamp(76px, 11vw, 136px);
}
.v2-trap__curve {
  position: absolute; top: -10%; right: -5%; width: 38%;
  opacity: 0.10; pointer-events: none; user-select: none;
}
.v2-trap .nf-wrap { position: relative; z-index: 1; }
.v2-trap__head { max-width: 44ch; display: flex; flex-direction: column; gap: var(--nf-space-flow); }
.v2-trap__title {
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-title);
  font-size: var(--nf-t-feature); line-height: 1.06; color: var(--nf-white); margin: 0;
  text-wrap: balance;
}
.v2-trap__title em { color: var(--nf-coral); font-style: normal; }
.v2-trap__grid {
  margin-top: clamp(38px, 5vw, 60px);
  display: grid; grid-template-columns: repeat(2, 1fr);
  gap: clamp(2px, 0.4vw, 4px);
  border: 1px solid var(--nf-hairline-onnavy);
  background: var(--nf-hairline-onnavy);
}
.v2-road {
  background: var(--nf-navy);
  padding: clamp(26px, 3vw, 40px) clamp(24px, 2.8vw, 38px);
  display: flex; flex-direction: column; gap: var(--nf-space-flow-md);
}
.v2-road__k {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-xs); color: var(--nf-coral);
}
.v2-road__name {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: clamp(20px, 2.4vw, 30px); line-height: 1.16; color: var(--nf-white); margin: 0;
  text-wrap: pretty;
}
.v2-road__points { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }
.v2-road__points li {
  font-size: var(--text-base); line-height: 1.5; color: rgba(255,255,255,0.78);
  padding-left: 20px; position: relative; text-wrap: pretty;
}
.v2-road__points li::before {
  content: ""; position: absolute; left: 0; top: 0.62em;
  width: 8px; height: 1px; background: rgba(255,255,255,0.5);
}
.v2-road__points li.v2-road__cost { color: var(--nf-white); }
.v2-road__points li.v2-road__cost::before { background: var(--nf-coral); width: 10px; height: 2px; top: 0.6em; }
.v2-trap__recognise {
  margin: clamp(30px, 3.6vw, 42px) 0 0; max-width: 52ch;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: var(--nf-t-lead); line-height: 1.32; color: var(--nf-white);
  text-wrap: pretty;
}
.v2-trap__recognise em { color: var(--nf-coral); font-style: normal; }
@media (max-width: 720px) {
  .v2-trap__grid { grid-template-columns: 1fr; }
}

/* ── 3 · THE REFRAME — white, gridless exhale ──────────────────────────── */
.v2-reframe {
  background: var(--nf-white);
  padding-block: clamp(72px, 10vw, 120px);
}
.v2-reframe__inner {
  max-width: 760px; margin-inline: auto; text-align: center;
}
.v2-reframe__line {
  margin: 0;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: none; letter-spacing: normal;
  font-size: clamp(22px, 3vw, 38px); line-height: 1.3; color: var(--nf-navy);
  text-wrap: balance;
}
.v2-reframe__line em { color: var(--nf-coral); font-style: normal; }
.v2-reframe__line + .v2-reframe__line { margin-top: clamp(8px, 1.2vw, 14px); }
.v2-reframe__resolve {
  margin: clamp(18px, 2.4vw, 28px) 0 0;
  font-family: var(--font-body); font-weight: 400;
  font-size: 18px; line-height: 1.4; color: var(--nf-ink-600);
  max-width: 46ch; margin-inline: auto;
  text-wrap: balance;
}

/* ── 4 · FINDING THE FIRST MOVE — grey grid; the differentiator and the
   heaviest beat on the page. Concept C: headline + copy read as one panorama,
   then a single fused object — the route that IS the conclusion, with the
   three payoff phrases sitting on it as labelled waypoints. ── */
.eC-top {
  display: grid; grid-template-columns: 0.92fr 1.08fr;
  gap: var(--nf-space-section-gap); align-items: start;
  margin-bottom: clamp(24px, 3vw, 42px);
}
.eC-head { display: flex; flex-direction: column; gap: var(--nf-space-flow-lg); }
.eC-title {
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-title);
  font-size: var(--nf-h-section); line-height: 1.04; color: var(--nf-navy);
  margin: 0; max-width: 16ch; text-wrap: balance;
}
.eC-title em { color: var(--nf-coral); font-style: normal; }
.eC-copy { padding-top: clamp(4px, 1vw, 14px); }
.ed-lead {
  margin: 0; font-size: clamp(17px, 1.36vw, 20px); line-height: 1.82;
  color: var(--nf-ink-600); max-width: 48ch; text-wrap: pretty;
}
.ed-lead strong { color: var(--nf-navy); font-weight: var(--fw-semibold); }
.ed-lead em { color: var(--nf-coral); font-style: normal; font-weight: var(--fw-semibold); }

/* the fused route + payoff band — one signature-sweep corner */
.eC-band {
  position: relative;
  background: var(--nf-white); border: 1px solid var(--nf-line);
  border-radius: var(--radius-lg, 12px); border-bottom-left-radius: var(--radius-curve, 64px);
  padding: clamp(30px, 3.6vw, 48px) clamp(30px, 4vw, 60px) clamp(26px, 3vw, 38px);
}
.eC-payrow { --eC-gap: clamp(16px, 2.4vw, 36px); position: relative; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: end; gap: var(--eC-gap); }
.eC-step {
  margin: 0; text-wrap: balance;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: clamp(16px, 1.66vw, 21px); line-height: 1.32; color: var(--nf-navy);
  max-width: 15ch;
}
.eC-step:nth-child(1) { text-align: left; }
.eC-step:nth-child(2) { text-align: center; margin-inline: auto; }
.eC-step:nth-child(2) em { font-style: normal; font-weight: inherit; color: var(--nf-coral); }
.eC-step:nth-child(3) { text-align: right; margin-left: auto; }
/* progression “punctuation” — two near-invisible coral chevrons sitting in the
   gaps between the three stepping stones, marking direction without shouting. */
.eC-payrow::before, .eC-payrow::after {
  content: ""; position: absolute; top: 50%; z-index: 1;
  width: 9px; height: 9px;
  border-top: 2px solid var(--nf-coral); border-right: 2px solid var(--nf-coral);
  transform: translate(-50%, -50%) rotate(45deg); opacity: 0.62;
}
.eC-payrow::before { left: calc((100% - 2 * var(--eC-gap)) / 3 + var(--eC-gap) / 2); }
.eC-payrow::after  { left: calc(2 * (100% - 2 * var(--eC-gap)) / 3 + 1.5 * var(--eC-gap)); }

.eC-route { position: relative; height: clamp(116px, 12.5vw, 162px); margin-top: clamp(16px, 2vw, 26px); }
.eC-route .ed-route__svg { position: absolute; inset: 0; display: block; width: 100%; height: 100%; overflow: visible; }
.eC-anchors { position: absolute; inset: 0; display: grid; grid-template-columns: 1fr 1fr 1fr; align-items: end; padding-bottom: 1px; }
.eC-anchor {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-2xs, 11px); color: var(--nf-ink-600);
}
.eC-anchor:nth-child(1) { text-align: left; }
.eC-anchor:nth-child(2) { text-align: center; color: var(--nf-coral); }
.eC-anchor:nth-child(3) { text-align: right; }

/* the routing visual — the route is ONE path selected through the network.
   Ghost edges + faint junctions are the tangle of dependencies; the coral
   route lies exactly on a subset of those edges and lands on their junctions. */
.ed-thread { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.ed-thread--ghost { stroke: rgba(7, 37, 118, 0.16); stroke-width: 1.5; vector-effect: non-scaling-stroke; }
.ed-thread--route { stroke: var(--nf-coral); stroke-width: 3; vector-effect: non-scaling-stroke; }
.ed-thread--emerge { stroke: url(#edRouteEmerge); }
.ed-node { fill: var(--nf-white); stroke: var(--nf-coral); stroke-width: 3; }
.ed-node--fill { fill: var(--nf-coral); stroke: var(--nf-coral); }
.ed-node--halo { fill: none; stroke: var(--nf-coral); stroke-width: 1.4; opacity: 0.4; }
.ed-jnode { fill: rgba(7, 37, 118, 0.32); stroke: none; }
.ed-node--via { fill: var(--nf-coral); stroke: none; }

/* resting state is FULLY VISIBLE — print, PDF, reduced-motion and no-JS safe.
   The draw-in is opt-in: JS adds `.is-pending` (hidden) for one frame, then
   drops it so the transition resolves toward the visible base. */
.ed-route .ed-thread--route { stroke-dasharray: var(--routeLen, 1000); stroke-dashoffset: 0; }
@media (prefers-reduced-motion: no-preference) {
  .ed-route .ed-thread--route { transition: stroke-dashoffset 1.2s cubic-bezier(0.4, 0, 0.1, 1); }
  .ed-route .ed-thread--ghost { transition: opacity 0.9s ease-out; }
  .ed-route .ed-node, .ed-route .ed-node--halo, .ed-route .ed-jnode, .ed-route .ed-node--via { transition: opacity 0.4s ease-out, transform 0.4s ease-out; }
  .ed-route .ed-node--dest { transition-delay: 0.85s; }
  .ed-route.is-pending .ed-thread--route { stroke-dashoffset: var(--routeLen, 1000); }
  .ed-route.is-pending .ed-thread--ghost { opacity: 0; }
  .ed-route.is-pending .ed-jnode { opacity: 0; }
  .ed-route.is-pending .ed-node,
  .ed-route.is-pending .ed-node--via,
  .ed-route.is-pending .ed-node--halo { opacity: 0; transform: scale(0.4); }
}
.ed-node, .ed-node--halo, .ed-node--via { transform-box: fill-box; transform-origin: center; }

@media (max-width: 920px) {
  .eC-top { grid-template-columns: 1fr; gap: 24px; margin-bottom: 28px; }
  .eC-payrow { grid-template-columns: 1fr; gap: 10px; text-align: center; }
  .eC-payrow::before, .eC-payrow::after { display: none; }
  .eC-step, .eC-step:nth-child(1), .eC-step:nth-child(3) { text-align: center; max-width: none; margin-inline: auto; }
  .eC-route { margin-top: 22px; }
}
/* Phones: the route runs VERTICALLY — the same SVG rotated 90°, so the
   tangle→first-move→clear-line story keeps its full length top-to-bottom
   instead of being squashed into the viewport width. The three anchor
   labels sit in a column beside it, aligned to the waypoints. */
@media (max-width: 640px) {
  .eC-route { height: 580px; overflow: hidden; }
  .eC-route .ed-route__svg {
    position: absolute; inset: auto; top: 0; left: calc(100% - 208px);
    width: 580px; height: 208px;
    transform: rotate(90deg) translateY(-100%);
    transform-origin: top left;
  }
  .eC-anchors {
    inset: 0; width: calc(100% - 216px);
    display: flex; flex-direction: column;
    justify-content: space-between; align-items: flex-start;
    padding: 18px 8px 18px 0;
  }
  .eC-anchor, .eC-anchor:nth-child(2), .eC-anchor:nth-child(3) { text-align: left; }
  /* the viewBox is stretched non-uniformly here (0.58× along the route,
     1.04× across it), which turns the circles into ellipses — counter-scale
     each dot so it renders round again. */
  .eC-route .ed-node,
  .eC-route .ed-node--halo,
  .eC-route .ed-node--via,
  .eC-route .ed-jnode {
    transform-box: fill-box; transform-origin: center;
    transform: scale(1.34, 0.75);
  }
}

/* ── 5 · HOW GOOD STRUCTURE GROWS — warm paper; the deliberate mirror of the
   Problems page's "No one designed it this way". Same two-column chain-and-stack
   grammar, inverted: the accumulation builds a foundation, not a load. ───── */
.v2-grow { position: relative; }
.v2-grow__head {
  max-width: 50ch; margin-bottom: clamp(40px, 5.5vw, 68px);
  display: flex; flex-direction: column; gap: var(--nf-space-flow);
}
.v2-grow__title {
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-title);
  font-size: var(--nf-t-feature); line-height: 1.06; color: var(--nf-navy); margin: 0;
  max-width: 22ch; text-wrap: balance;
}
.v2-grow__title em { color: var(--nf-coral); font-style: normal; }
.v2-grow__grid {
  display: grid; grid-template-columns: 1fr 0.92fr;
  gap: clamp(40px, 6vw, 92px); align-items: start;
}

/* left — the six-beat intentional spine, a coral line running through it */
.v2-spine { list-style: none; margin: 0; padding: 0; position: relative; }
.v2-spine::before {
  content: ""; position: absolute; left: 11px; top: 18px; bottom: 18px; width: 2px;
  background: linear-gradient(var(--nf-coral), rgba(235,144,130,0.25));
}
.v2-beat {
  position: relative; display: grid; grid-template-columns: 24px 1fr;
  gap: clamp(16px, 1.8vw, 22px); align-items: start;
  padding: clamp(13px, 1.6vw, 18px) 0;
}
.v2-beat__dot {
  position: relative; z-index: 1; width: 24px; height: 24px; border-radius: 50%;
  background: var(--nf-paper); border: 2px solid rgba(7,37,118,0.30);
  display: grid; place-items: center;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: 11px; color: var(--nf-ink-600);
}
.v2-beat--first .v2-beat__dot { background: var(--nf-coral); border-color: var(--nf-coral); color: var(--nf-white); }
.v2-beat__stage {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: clamp(17px, 1.8vw, 22px); line-height: 1.25; color: var(--nf-navy); margin: 0 0 5px;
}
.v2-beat--first .v2-beat__stage { color: var(--nf-coral); }
.v2-beat__tag {
  display: inline-block; margin-left: 8px; vertical-align: middle;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: 10px; color: var(--nf-white); background: var(--nf-coral);
  border-radius: 999px; padding: 2px 9px;
}
.v2-beat__line { font-size: var(--text-base); line-height: 1.55; color: var(--nf-ink-600); margin: 0; }

/* right — THE FOUNDATION: one coral first move, support stacked above it */
.v2-found { position: relative; }
.v2-found__cap {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-xs); color: var(--nf-ink-600);
  margin: 0 0 14px; display: flex; align-items: center; gap: 10px;
}
.v2-found__cap::after { content: ""; flex: 1; height: 1px; background: var(--nf-hairline); }
.v2-fstack { display: flex; flex-direction: column; gap: 6px; }
.v2-flayer {
  display: flex; align-items: center; gap: 12px;
  background: var(--nf-white); border: 1px solid var(--nf-line);
  border-radius: var(--radius-md, 8px); padding: clamp(12px,1.4vw,15px) clamp(14px,1.6vw,18px);
  font-size: var(--text-sm); line-height: 1.4; color: var(--nf-ink-600);
  box-shadow: 0 1px 0 rgba(7,37,118,0.04);
}
.v2-flayer__i {
  flex: none; font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: 11px; color: rgba(7,37,118,0.40); width: 1.4em;
}
.v2-flayer--cap {
  background: rgba(7,37,118,0.05); border-style: solid; border-color: var(--nf-line);
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-xs); color: var(--nf-navy); justify-content: center;
}
.v2-flayer--foundation {
  background: var(--nf-navy); border-color: var(--nf-navy); color: var(--nf-white);
  margin-top: 4px; box-shadow: 0 10px 26px rgba(7,37,118,0.22); align-items: flex-start;
}
.v2-flayer--foundation .v2-flayer__i { color: rgba(255,255,255,0.55); }
.v2-flayer--foundation .v2-flayer__label { font-weight: var(--fw-semibold); }
.v2-flayer__base {
  display: block; font-family: var(--font-display);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: 10px; color: var(--nf-coral); margin-bottom: 3px;
}

/* close — a deliberate echo of the Problems page close, inverted */
.v2-grow__close {
  margin-top: clamp(20px, 2.6vw, 30px); padding-top: var(--nf-space-flow-lg);
  border-top: var(--border-width-rule) solid var(--nf-coral);
}
.v2-grow__close-intro {
  font-size: var(--text-md); line-height: 1.6; color: var(--nf-ink-600);
  margin: 0 0 clamp(10px, 1.2vw, 14px);
}
.v2-grow__close-statement {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: clamp(19px, 2vw, 26px); line-height: 1.3; color: var(--nf-navy); margin: 0; text-wrap: pretty;
}
.v2-grow__close-statement em { color: var(--nf-coral); font-style: normal; }

/* resting state is FULLY VISIBLE — the reveal plays FROM hidden only when JS
   adds .is-in (animation + `both` fill, the same robust pattern as nf-unt /
   v2-compound). If is-in never lands, the stack can never render blank. */
@keyframes nfFlayerIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: none; }
}
@media (prefers-reduced-motion: no-preference) {
  .v2-fstack.is-in .v2-flayer {
    animation: nfFlayerIn .5s ease-out both;
    animation-delay: calc(var(--d, 0) * 90ms);
  }
}
@media (max-width: 920px) {
  .v2-grow__grid { grid-template-columns: 1fr; gap: clamp(36px, 6vw, 48px); }
}

/* ── 6 · CAPABILITY ACCUMULATES QUIETLY — grey grid; the anti-loop. An operational
   insight headline, the compounds-over-time visual, the shifts it buys back for the
   people leading, then the quiet reveal. ─────── */
.v2-lead { padding-block: clamp(86px, 11vw, 150px); }
.v2-lead__head {
  max-width: 62ch; margin-bottom: clamp(34px, 4.4vw, 54px);
  display: flex; flex-direction: column; gap: var(--nf-space-flow);
}
.v2-lead__title {
  margin: 0;
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-title);
  font-size: var(--nf-t-feature); line-height: 1.06; color: var(--nf-navy);
  max-width: 22ch; text-wrap: balance;
}
.v2-lead__title em { color: var(--nf-coral); font-style: normal; }
.v2-lead__intro {
  margin: 0; font-size: var(--text-md); line-height: 1.7; color: var(--nf-ink-600);
  max-width: 58ch; text-wrap: pretty;
}

/* the capability-compounds-over-time visual — the deliberate inverse of the
   Problems page's growing year stacks. Same grammar (a stack that grows across
   time columns), inverted meaning: a strengthening foundation (navy) at the base,
   owned capability (outlined) building on it, and recovered leadership time (coral)
   appearing on top of the final, tallest column. */
.v2-compound {
  margin: clamp(36px, 5vw, 60px) 0 clamp(40px, 5.5vw, 64px);
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(20px, 3vw, 44px); align-items: start;
}
.v2-phase { display: flex; flex-direction: column; gap: 18px; }
.v2-phase__stack {
  display: flex; flex-direction: column; justify-content: flex-end; gap: 5px;
  /* Tall enough to hold the tallest column (phase 3: 1 lead + 4 cap + 3 found
     = 30 + 7×26 + 7×5 ≈ 247px) so every stack shares one bottom baseline. */
  min-height: 248px;
}
.v2-chip { height: 26px; border-radius: 5px; }
.v2-chip--found { background: var(--nf-navy); border: 1px solid var(--nf-navy); }
.v2-chip--cap { background: var(--nf-white); border: 1px solid rgba(7, 37, 118, 0.34); }
.v2-chip--lead {
  height: 30px; background: var(--nf-coral); border: 1px solid var(--nf-coral);
  display: grid; place-items: center;
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: 10px; color: var(--nf-white);
}
.v2-phase__body { display: flex; flex-direction: column; gap: 10px; }
.v2-phase__label {
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-xs); color: var(--nf-ink-600);
  padding-top: 16px; border-top: 2px solid var(--nf-hairline);
}
.v2-phase--lead .v2-phase__label { color: var(--nf-coral); border-top-color: var(--nf-coral); }
.v2-phase__text { margin: 0; font-size: var(--text-base); line-height: 1.5; color: var(--nf-ink-600); text-wrap: pretty; }

@media (prefers-reduced-motion: no-preference) {
  .v2-compound .v2-chip { opacity: 0; transform: translateY(12px); }
  .v2-compound.is-in .v2-chip {
    animation: nfChipRise 0.5s cubic-bezier(0.2, 0.7, 0.2, 1) forwards;
    animation-delay: calc(var(--i, 0) * 90ms);
  }
}
@keyframes nfChipRise { to { opacity: 1; transform: none; } }

@media (max-width: 620px) {
  .v2-compound { grid-template-columns: 1fr; gap: clamp(24px, 6vw, 32px); }
  /* each phase stacks vertically: label, horizontal bar, then full-width text —
     the bar grows left→right across the three phases, foundation first,
     with the coral "time to lead" band arriving at the far end. */
  .v2-phase { gap: 12px; }
  .v2-phase__stack {
    order: 1;
    flex-direction: row-reverse; align-items: stretch; justify-content: flex-end;
    min-height: 0; height: 40px;
  }
  .v2-chip { width: 18px; height: auto; }
  .v2-chip--lead { width: auto; padding: 0 12px; }
  .v2-phase__body { order: 0; gap: 8px; }
  .v2-phase__label { padding-top: 0; border-top: 0; }
}

.v2-shifts { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--nf-line); }
.v2-shift {
  display: grid; grid-template-columns: 1fr 44px 1fr; align-items: center;
  gap: clamp(12px, 2vw, 28px);
  padding: var(--nf-space-flow-lg) 0;
  border-bottom: 1px solid var(--nf-line);
}
.v2-shift__from {
  font-family: var(--font-body); font-size: var(--text-md); line-height: 1.4;
  color: var(--nf-ink-600); text-align: right; text-wrap: pretty;
}
.v2-shift__arrow { justify-self: center; color: var(--nf-coral); display: grid; place-items: center; }
.v2-shift__to {
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  font-size: clamp(17px, 1.9vw, 24px); line-height: 1.22; color: var(--nf-navy); text-wrap: pretty;
}
.v2-lead__close {
  margin: clamp(40px, 5vw, 60px) 0 0; padding-top: clamp(24px, 2.8vw, 32px);
  border-top: var(--border-width-rule) solid var(--nf-coral);
  display: grid; grid-template-columns: 1fr; gap: clamp(16px, 4vw, 22px);
  max-width: 52ch;
}
.v2-lead__close-intro {
  margin: 0; font-size: var(--text-md); line-height: 1.74; color: var(--nf-ink-600);
  max-width: 52ch; text-wrap: pretty;
}
.v2-lead__close-statement {
  margin: 0;
  font-family: var(--font-display); font-weight: var(--fw-extrabold);
  text-transform: uppercase; letter-spacing: var(--tracking-title);
  font-size: clamp(24px, 3vw, 40px); line-height: 1.08; color: var(--nf-navy);
  text-wrap: balance;
}
.v2-lead__close-statement em { color: var(--nf-coral); font-style: normal; }
.v2-lead__close-intro strong { color: var(--nf-navy); font-weight: var(--fw-semibold); }
@media (max-width: 640px) {
  .v2-shift { grid-template-columns: 1fr; gap: 4px; padding: clamp(16px,4vw,20px) 0; }
  .v2-shift__from { text-align: left; }
  .v2-shift__arrow { justify-self: start; transform: rotate(90deg); margin: 2px 0; }
}

/* ── temporary comparison ribbon (does NOT touch production nav) ────────── */
.v2-flag {
  position: relative; z-index: 1;
  background: var(--nf-coral);
  color: var(--nf-white);
  font-family: var(--font-display); font-weight: var(--fw-semibold);
  text-transform: uppercase; letter-spacing: var(--tracking-label);
  font-size: var(--text-xs);
  text-align: center;
  padding: 9px clamp(16px, 4vw, 40px);
  display: flex; gap: 18px; justify-content: center; align-items: center; flex-wrap: wrap;
}
.v2-flag a { color: var(--nf-white); text-decoration: underline; text-underline-offset: 2px; }
.v2-flag a:hover { color: var(--nf-navy); }
