/*
 * Phase 0A.3.2 — typography scale and Decision Navigator precision.
 * Narrow calibration over the approved Home-led system.
 */

body.phase0a32-precision {
  --phase32-h2: clamp(24px, 2.05vw, 29px);
  --phase32-h3: clamp(19px, 1.5vw, 21px);
}

body.phase0a32-precision :where(h1, h2, h3, p, li, dd) {
  word-break: normal;
  overflow-wrap: break-word;
  line-break: strict;
}

body.phase0a32-precision :where(h1, h2, h3) {
  text-wrap: pretty;
}

body.phase0a32-precision h2 {
  font-size: var(--phase32-h2);
  line-height: 1.38;
}

body.phase0a32-precision h3 {
  font-size: var(--phase32-h3);
  line-height: 1.48;
}

body.phase0a32-precision [data-protected-term],
body.phase0a32-precision .ns-no-break {
  display: inline-block;
  white-space: nowrap;
  word-break: keep-all;
  overflow-wrap: normal;
}

/* Two approved, semantic line compositions. These hooks replace manual <br>. */
.phase0a32-precision [data-approved-css-linebreak="home-question"] > span,
.phase0a32-precision [data-approved-css-linebreak="movink-question"] > span {
  display: block;
}

/* Approved Home: retain composition while calming type and fixing the Navigator. */
.phase0a32-precision .phase0a3-canonical-home .ns-home-hero {
  grid-template-columns: minmax(250px, 26%) minmax(430px, 44%) minmax(250px, 30%);
}

.phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 {
  font-size: clamp(50px, 3.9vw, 56px);
  line-height: 1.19;
}

.phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 > span {
  display: block;
}

.phase0a32-precision .phase0a3-canonical-home .ns-hero-support {
  max-width: 36em;
}

.phase0a32-precision .ns-hero-navigator {
  position: relative;
  display: flex;
  min-width: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 14px 10px 10px;
  overflow: visible;
}

.phase0a32-precision .ns-navigator-intro {
  position: relative;
  z-index: 2;
  width: min(100%, 300px);
  margin: 0 auto;
  text-align: center;
}

.phase0a32-precision .ns-hero-navigator .ns-navigator-title {
  position: static;
  width: auto;
  margin: 0;
  color: #b73528;
  font: 800 14px/1.25 var(--ns-sans) !important;
  letter-spacing: .12em;
  white-space: nowrap;
}

.phase0a32-precision .ns-hero-navigator .ns-navigator-description {
  position: static;
  width: auto;
  max-width: 29em;
  margin: 5px auto 0;
  color: var(--ns-ink-soft);
  font: 700 14px/1.55 var(--ns-sans) !important;
  letter-spacing: 0;
}

.phase0a32-precision .ns-navigator-description > span {
  display: inline-block;
  white-space: nowrap;
}

.phase0a32-precision .ns-hero-navigator .ns-compass-visual {
  position: relative;
  inset: auto;
  display: block;
  width: clamp(250px, 20.5vw, 310px);
  max-width: 100%;
  height: auto;
  margin: 0 auto;
  overflow: visible;
}

.phase0a32-precision .ns-compass-visual .ns-navigator-label-main text {
  font: 800 18px/1.2 var(--ns-sans) !important;
  letter-spacing: 0;
}

.phase0a32-precision .phase0a3-canonical-home .ns-stories-heading h2,
.phase0a32-precision .phase0a3-canonical-home .ns-promise-heading h2,
.phase0a32-precision .phase0a3-canonical-home .ns-preview-main h2,
.phase0a32-precision .phase0a3-canonical-home .ns-decision-outcomes h2 {
  font-size: clamp(24px, 1.8vw, 27px);
}

.phase0a32-precision .phase0a3-canonical-home .ns-story-copy h3 {
  font-size: 19px;
}

/* Product articles: preserve every decision module and reduce poster-scale type. */
.phase0a32-precision .home-derived-product-shell .decision-hero h1 {
  max-width: 690px;
  font-size: clamp(34px, 2.75vw, 40px);
  line-height: 1.24;
  text-wrap: pretty;
}

.phase0a32-precision .home-derived-product-shell .hero-copy {
  padding: clamp(30px, 3.7vw, 50px);
}

.phase0a32-precision .home-derived-product-shell .hero-answer {
  font-size: 17px;
}

.phase0a32-precision .home-derived-product-shell .section {
  padding-block: clamp(64px, 5.8vw, 82px);
}

.phase0a32-precision .home-derived-product-shell .product-spotlight h2,
.phase0a32-precision .home-derived-product-shell .section-heading h2,
.phase0a32-precision .home-derived-product-shell .evidence-summary h2 {
  font-size: clamp(24px, 1.8vw, 27px);
}

/* Movink keeps the approved CSS-line composition with a controlled scale. */
.phase0a32-precision .phase0a3-canonical-movink .ns-movink-copy h1 {
  font-size: clamp(38px, 3.4vw, 44px);
  line-height: 1.2;
}

.phase0a32-precision .phase0a3-canonical-movink :where(.ns-power-copy, .ns-scenario-section > header, .ns-regret-journey > header, .ns-alternatives > header, .ns-evidence > header) h2 {
  font-size: clamp(24px, 1.8vw, 27px);
}

.phase0a32-precision .phase0a3-canonical-movink .ns-thirty-second h2 {
  font-size: clamp(24px, 1.8vw, 27px);
}

/* Supporting articles use the same restrained hierarchy. */
/* SVG font sizes are user units: compensate for the measured rendered scale. */
.phase0a32-precision .hero-visual .phase0a3-visual text,
.phase0a32-precision .supporting-hero-visual .phase0a3-visual text {
  font-size: 22px !important;
  letter-spacing: 0;
}

.phase0a32-precision .ns-movink-visual svg text {
  font-size: 20px !important;
}

.phase0a32-precision .product-spotlight .phase0a3-visual text {
  font-size: 22px !important;
}

.phase0a32-precision .ns-story-visual text {
  font-size: 22px !important;
}

.phase0a32-precision [data-phase0a3-visual="editorial-commerce-separation"] text {
  font-size: 18px !important;
}

.phase0a32-precision .ns-power-ladder-visual text {
  font-size: 16px !important;
}

/* Small text uses AA-safe ink; the approved color fields stay unchanged. */
.phase0a32-precision [data-phase0a3-visual="methodology-journey"] text,
.phase0a32-precision .ns-ladder-number text:first-child {
  fill: #01121f;
}

.phase0a32-precision .ns-ladder-number text:nth-child(2),
.phase0a32-precision [data-phase0a3-visual="epr-decision"] text[fill="white"] {
  fill: #fffdf8;
}

.phase0a32-precision .home-derived-supporting-shell .supporting-hero {
  min-height: 340px;
  max-height: 400px;
}

.phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy {
  padding: clamp(30px, 3.8vw, 52px);
}

.phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy h1 {
  max-width: 700px;
  font-size: clamp(32px, 2.65vw, 38px);
  line-height: 1.26;
  text-wrap: pretty;
}

.phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy .lead {
  font-size: 17px;
  line-height: 1.78;
}

@media (min-width: 621px) {
  body.phase0a32-precision {
    font-size: 17px;
  }

  body.phase0a32-precision :is(.lead, .hero-answer, .ns-hero-support, .ns-movink-copy > h1 + p) {
    font-size: 17px !important;
  }
}

/* The inherited rollout used its 16px phone body rule up to 820px.
   Keep paragraph/list prose at 17px above phone widths. Explicit label and
   Navigator rules retain their own 14px roles. */
@media (min-width: 431px) {
  body.phase0a32-precision :where(p, li, dd):not(:where(.eyebrow, .section-kicker, .story-mode, .story-model, .alternative-type, .hero-question, [data-navigator-title], [data-navigator-description], .ns-story-meta *, .ns-preview-label *, .ns-preview-rail *, .breadcrumbs *, .identity-strip *, .freshness-marker *, .evidence-stamps *, .source-row *, [data-decision-navigator] *)),
  body.phase0a32-precision main :where(p, li, dd):not(:where(.eyebrow, .section-kicker, .story-mode, .story-model, .alternative-type, .hero-question, [data-navigator-title], [data-navigator-description], .ns-story-meta *, .ns-preview-label *, .ns-preview-rail *, .breadcrumbs *, .identity-strip *, .freshness-marker *, .evidence-stamps *, .source-row *, [data-decision-navigator] *)) {
    font-size: 17px !important;
  }
}

@media (min-width: 1400px) {
  .phase0a32-precision .ns-story-visual text {
    font-size: 19px !important;
  }

  .phase0a32-precision .ns-power-ladder-visual text {
    font-size: 14px !important;
  }

  .phase0a32-precision .ns-movink-visual svg text {
    font-size: 17.5px !important;
  }

  .phase0a32-precision .ns-compass-visual .ns-navigator-label-main text {
    font-size: 15.47px !important;
  }
}

@media (max-width: 1100px) {
  .phase0a32-precision .phase0a3-canonical-home .ns-home-hero {
    grid-template-columns: minmax(220px, 27%) minmax(360px, 43%) minmax(218px, 30%);
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 {
    font-size: clamp(43px, 5vw, 50px);
  }

  .phase0a32-precision .ns-hero-navigator .ns-compass-visual {
    width: clamp(210px, 28vw, 255px);
  }
}

@media (max-width: 820px) {
  .phase0a32-precision .ns-story-visual text {
    font-size: 14.5px !important;
  }

  .phase0a32-precision .ns-power-ladder-visual text,
  .phase0a32-precision .ns-tradeoff-visual text {
    font-size: 17px !important;
  }

  .phase0a32-precision .ns-scenarios-visual text {
    font-size: 22px !important;
  }

  .phase0a32-precision .ns-movink-visual svg text {
    font-size: 22px !important;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-home-hero {
    grid-template-columns: 29% 42% 29%;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 {
    font-size: 44px;
  }

  .phase0a32-precision .ns-hero-navigator {
    position: absolute;
    right: 32px;
    bottom: 8px;
    width: 250px;
    height: auto;
    gap: 5px;
    padding-inline: 4px;
  }

  .phase0a32-precision .ns-navigator-intro {
    width: min(100%, 240px);
  }

  .phase0a32-precision .ns-hero-navigator .ns-navigator-description {
    max-width: 18em;
  }

  .phase0a32-precision .ns-hero-navigator .ns-compass-visual {
    width: clamp(210px, 29vw, 245px);
  }

  .phase0a32-precision .ns-compass-visual .ns-navigator-label-main text {
    font-size: 21.5px !important;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-human-compass-route {
    display: none;
  }

  .phase0a32-precision .home-derived-product-shell .decision-hero h1 {
    font-size: 34px;
  }

  .phase0a32-precision .phase0a3-canonical-movink .ns-movink-copy h1 {
    font-size: 36px;
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy h1 {
    font-size: 33px;
  }
}

@media (max-width: 620px) {
  .phase0a32-precision .ns-story-visual text {
    font-size: 19px !important;
  }

  .phase0a32-precision .ns-journey-visual text {
    font-size: 31px !important;
  }

  .phase0a32-precision .product-spotlight .phase0a3-visual text {
    font-size: 34px !important;
  }

  .phase0a32-precision [data-phase0a3-visual="editorial-commerce-separation"] text {
    font-size: 31px !important;
  }

  .phase0a32-precision .ns-power-ladder-visual text {
    font-size: clamp(29px, calc(85px - 13.6vw), 36px) !important;
  }

  .phase0a32-precision .ns-tradeoff-visual text {
    font-size: clamp(30px, calc(86px - 13.3vw), 37px) !important;
  }

  .phase0a32-precision .hero-visual .phase0a3-visual text {
    font-size: 35px !important;
  }

  .phase0a32-precision .supporting-hero-visual .phase0a3-visual text {
    font-size: 35.5px !important;
  }

  body.phase0a32-precision {
    --phase32-h2: clamp(21px, 5.9vw, 23px);
    --phase32-h3: 18px;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-home-hero {
    grid-template-columns: minmax(0, 1fr);
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 {
    font-size: clamp(32px, 8.45vw, 35px);
    line-height: 1.23;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-hero-copy h1 > span:nth-child(2) .ns-phrase {
    display: block;
  }

  .phase0a32-precision .ns-hero-navigator {
    right: 5px;
    bottom: 7px;
    width: min(54%, 205px);
    max-width: 205px;
    padding: 8px 12px 12px;
    overflow: visible;
  }

  .phase0a32-precision .ns-navigator-intro {
    width: min(100%, 250px);
  }

  .phase0a32-precision .ns-hero-navigator .ns-navigator-title,
  .phase0a32-precision .ns-hero-navigator .ns-navigator-description {
    font-size: 14px !important;
  }

  .phase0a32-precision .ns-hero-navigator .ns-navigator-title {
    letter-spacing: .07em;
  }

  .phase0a32-precision .phase0a3-canonical-home .ns-story-copy h3 {
    font-size: 18px;
  }

  .phase0a32-precision .ns-hero-navigator .ns-navigator-description {
    width: min(100%, 22em);
  }

  .phase0a32-precision .ns-hero-navigator .ns-compass-visual {
    width: clamp(184px, 50vw, 202px);
  }

  .phase0a32-precision .ns-compass-visual .ns-navigator-label-main text {
    font-size: 26px !important;
  }

  .phase0a32-precision .home-derived-product-shell .decision-hero h1 {
    font-size: clamp(28px, 7.7vw, 32px);
    line-height: 1.28;
  }

  .phase0a32-precision .home-derived-product-shell .hero-copy {
    padding: 0;
  }

  .phase0a32-precision .home-derived-product-shell .section {
    padding-block: clamp(50px, 14vw, 68px);
  }

  .phase0a32-precision .phase0a3-canonical-movink .ns-movink-copy h1 {
    font-size: clamp(28px, 8vw, 32px);
    line-height: 1.23;
  }

  .phase0a32-precision .phase0a3-canonical-movink :where(.ns-power-copy, .ns-scenario-section > header, .ns-regret-journey > header, .ns-alternatives > header, .ns-evidence > header) h2 {
    font-size: clamp(21px, 5.9vw, 23px);
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero {
    min-height: 300px;
    max-height: none;
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy {
    padding: 26px 20px 23px;
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy h1 {
    font-size: clamp(27px, 7.5vw, 31px);
    line-height: 1.3;
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero-visual {
    min-height: 168px;
    padding: 14px 20px;
  }

  .phase0a32-precision .home-derived-supporting-shell .supporting-hero-visual .phase0a3-visual {
    max-height: 168px;
  }
}

@media (min-width: 1600px) {
  .phase0a32-precision .ns-story-visual text {
    font-size: 16px !important;
  }

  .phase0a32-precision .ns-movink-visual svg text {
    font-size: 15px !important;
  }
}

@media (max-width: 375px) {
  .phase0a32-precision .ns-hero-navigator {
    padding-inline: 8px;
  }

  .phase0a32-precision .ns-compass-visual .ns-navigator-label-main text {
    font-size: 26.5px !important;
  }
}

/* This story has a taller viewBox for a clear caption below both silhouettes.
   Its height-capped Tablet/Wide slot needs a separate label scale. */
@media (min-width: 621px) and (max-width: 820px), (min-width: 1600px) {
  .phase0a32-precision [data-ns-visual="ns-story-generation"] text {
    font-size: 17px !important;
  }
}

/* Small labels on known light surfaces need text contrast, not a new palette.
   Accent borders and the approved navy Promise band remain unchanged. */
.phase0a32-precision .home-derived-supporting-shell .supporting-hero-copy .eyebrow {
  color: #b73528;
}

.phase0a32-precision .home-derived-supporting-shell.updates-page .supporting-hero-copy .eyebrow {
  color: #8b5700;
}

.phase0a32-precision .home-derived-supporting-shell:is(.safety-page, .privacy-page) .supporting-hero-copy .eyebrow {
  color: #06766f;
}

.phase0a32-precision .phase0a3-canonical-home .ns-stories-heading > .ns-section-index,
.phase0a32-precision .phase0a3-canonical-home .ns-decision-outcomes .ns-section-index,
.phase0a32-precision .phase0a3-canonical-home .ns-article-preview :is(.ns-preview-label, .ns-preview-rail > span, .ns-preview-verdict > p, .ns-preview-regret > p, .ns-preview-alternative > p) {
  color: #b73528;
}

/* The monitor story is a diagram followed by copy, never a text overlay.
   Keep the SVG's horizontal space and font scale; let its row grow instead. */
.phase0a32-precision .phase0a3-canonical-home .ns-story-bandwidth {
  grid-template-rows: auto auto;
  align-content: start;
}

.phase0a32-precision .phase0a3-canonical-home .ns-story-bandwidth .ns-story-art {
  grid-row: 1;
  padding-top: 3.3rem;
  padding-bottom: .5rem;
}

.phase0a32-precision .phase0a3-canonical-home .ns-story-bandwidth .ns-story-copy {
  position: static;
  inset: auto;
  grid-row: 2;
  width: auto;
  padding: .65rem 1.25rem 1rem;
  background: none;
}

@media (min-width: 1121px) {
  .phase0a32-precision .phase0a3-canonical-home .ns-story-mosaic {
    grid-template-rows: 310px minmax(360px, auto);
  }
}

@media (min-width: 821px) and (max-width: 1120px) {
  .phase0a32-precision .phase0a3-canonical-home .ns-story-mosaic {
    grid-template-rows: 290px minmax(360px, auto);
  }
}

/* Mobile/tablet story art must reserve its full SVG height plus padding.
   Fixed 190/210px tracks let readable diagram labels intrude into the copy. */
@media (max-width: 820px) {
  .phase0a32-precision .phase0a3-canonical-home :is(.ns-story-generation, .ns-story-desk) {
    grid-template-rows: auto auto;
    align-content: start;
  }
}
