/* ============================================================
   THERAPY PAGE — Equ-cel (archetype)
   Layered on base.css + v3.css. Reuses tokens, type and the
   accent system so it tracks every palette automatically.
   ============================================================ */

/* ---------- Back link (shared look with .bio-back) ---------- */
.rx-back {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 34px;
  font-size: var(--fs-note);
  font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--slate-mid);
  cursor: pointer;
  text-decoration: none;
  transition: color 160ms var(--ease);
}
.rx-back:hover { color: var(--fg-strong); }
/* 21.4px tall, under the 24px AA minimum, and it is the back-out of a therapy
   page. Isolated near the top of the page — nothing else tappable within 44px —
   so this one can take the full 44 without overlapping anything. Hit area only;
   the link does not move. */
.rx-back { position: relative; }
.rx-back::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  top: 50%;
  height: 44px;
  transform: translateY(-50%);
}
.rx-back .arrow { transition: transform 160ms var(--ease);}
.rx-back:hover .arrow { transform: translateX(-3px);}

/* ============================================================
   HERO — name + INN + spec card
   ============================================================ */
.rx-hero {
  padding: 44px 0 84px;
  border-bottom: 1px solid var(--border-soft);
}
.rx-hero-grid {
  display: grid;
  grid-template-columns: 1.28fr 0.72fr;
  gap: clamp(40px, 5vw, 88px);
  align-items: end;
}

/* Chips row */
.rx-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 26px;
}
.rx-chip {
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 7px 14px;
  border-radius: 999px;
  line-height: 1;
}
.rx-chip.antigen { color: #fff; background: var(--accent-deep); }
.rx-chip.origin  { color: var(--sage-ink); background: var(--sage-pale); }
.rx-chip.paper {
  color: var(--accent-deep);
  background: transparent;
  border: 1px solid color-mix(in oklab, var(--accent-deep) 40%, transparent);
}

.rx-name {
  font-size: clamp(52px, 6vw, 92px);
  line-height: 0.96;
  letter-spacing: -0.02em;
}
.rx-inn {
  margin-top: 16px;
  font-family: var(--font-serif);
  font-weight:500;
  font-style: italic;
  font-size: clamp(24px,1.9vw, 25px);
  color: var(--slate-mid);
  letter-spacing: 0.005em;
}
/* Shared by 15 pages — the 7 condition heroes and the 8 therapy heroes.
   max-width was 556px, the only fixed-pixel measure among 34 ch caps, so it
   was the one measure that did not move when type sizes changed. 66ch is the
   same rendered width at the size this actually computes to, and now tracks
   the font.

   🔴 The clamp is now REVIVED `[Jacob, 7 Aug 2026]`. It had been dead: a bare
   `.rx-lead` is (0,1,0) and `:root:root p` in v3.css is (0,2,0), so the lede
   computed a flat 17px at every width and never reached the 20px it declares —
   at 1440, 1.5vw is 21.59px and it should clamp to 20. The flatness was an
   accident of specificity, not a decision, and this is the first paragraph a
   patient reads on the 7 condition and 8 therapy pages.

   ⚠️ :root:root is (0,3,0) and beats the v3 body rule. Same idiom v3.css uses
   for exactly this reason — see the note at the head of its override block.
   ⛔ Do not drop back to a bare `.rx-lead`; it silently reverts to 17px. */
.rx-lead {
  margin-top: 26px;
  line-height: 1.6;
  color: var(--fg-strong);
  max-width: var(--measure-wide);
  font-weight: 400;
}
:root:root .rx-lead { font-size: clamp(17px, 1.5vw, 20px); }
.rx-hero-ctas {
  margin-top: 34px;
  display: flex;
  align-items: center;
  gap: 26px;
  flex-wrap: wrap;
}

/* Spec card — the "at a glance" panel */
.rx-spec {
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: 8px 26px;
}
.rx-spec-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 20px;
  padding: 18px 0;
  border-bottom: 1px solid var(--border-soft);
}
.rx-spec-row:last-child { border-bottom: 0; }
.rx-spec-k {
  font-family: var(--font-sans);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--slate-mid);
  flex-shrink: 0;
}
.rx-spec-v {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 17px;
  color: var(--fg-strong);
  text-align: right;
  line-height: 1.3;
}
.rx-spec-v em { font-style: italic; color: var(--accent-deep); }

/* ============================================================
   HOW IT WORKS — diagram + narrative
   ============================================================ */
.rx-how { padding: var(--section-py) 0; }
.rx-how .section-head { margin-bottom: 48px; }
.rx-diagram {
  border-radius: 12px;
  overflow: hidden;
  border: 1px solid var(--border-soft);
  background: var(--bg-card);
  margin-bottom: 56px;
}
.rx-diagram img { display: block; width: 100%; height: auto; }
.rx-diagram figcaption {
  padding: 14px 22px;
  font-family: var(--font-sans);
  font-size: var(--fs-note);
  letter-spacing: 0.02em;
  color: var(--slate-mid);
  border-top: 1px solid var(--border-soft);
}

/* Stage list — the four clinical stages */
.rx-stages {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--border-soft);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  overflow: hidden;
}
.rx-stage {
  background: var(--bg);
  padding: 30px 26px 34px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.rx-stage .sn {
  font-family: var(--font-sans);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.rx-stage h4 {
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: 20px;
  line-height: 1.2;
  color: var(--fg-strong);
  margin: 0;
}
.rx-stage p {
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--slate-dark);
  margin: 0;
}
.rx-stage .where {
  margin-top: auto;
  padding-top: 8px;
  font-family: var(--font-sans);
  font-size: var(--fs-note);
  letter-spacing: 0.03em;
  color: var(--slate-mid);
}
/* Centred, not left-aligned. This is a footnote to the full-width .rx-stages
   grid above it. Left-aligned at reading width it filled 45% of a 1240px row
   and stranded 722px to its right, which read as a truncated paragraph rather
   than a note. ⛔ Do not "fix" this by widening the measure — at full width the
   line runs past 150 characters. The measure was never the problem; nothing
   occupying the rest of the row was. `[Jacob, 7 Aug 2026]` */
.rx-how-note {
  margin-top: 30px;
  font-size: 15px;
  line-height: 1.7;
  color: var(--slate-dark);
  max-width: var(--measure-wide);
  margin-inline: auto;
}
.rx-how-note .inline-link {
  color: var(--accent-deep);
  font-weight: 500;
  border-bottom: 1px solid color-mix(in oklab, var(--accent-deep) 45%, transparent);
  cursor: pointer;
}
.rx-how-note .inline-link:hover { border-color: var(--accent-deep); }

/* ============================================================
   TREATS — the conditions this therapy is used for
   ============================================================ */
.rx-treats {
  padding: var(--section-py) 0;
  background: var(--bg-alt);
}
.rx-treats .section-head { margin-bottom: 44px; }
.rx-cond {
  display: grid;
  grid-template-columns: 0.9fr 1.1fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: start;
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: clamp(32px, 4vw, 52px);
}
.rx-cond-head .tgt {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin-bottom: 14px;
}
.rx-cond-head h3 {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: clamp(28px, 3vw, 40px);
  line-height: 1.05;
  letter-spacing: -0.01em;
  color: var(--fg-strong);
  margin: 0 0 18px;
}
.rx-cond-meta {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 22px;
}
.rx-cond-meta div {
  display: flex;
  gap: 12px;
  font-size: var(--fs-sm);
  align-items: baseline;
}
.rx-cond-meta dt {
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--slate-mid);
  width: 92px;
  flex-shrink: 0;
}
.rx-cond-meta dd { margin: 0; color: var(--slate-dark); }
.rx-cond-body p {
  font-size: 15.5px;
  line-height: 1.72;
  color: var(--slate-dark);
  margin: 0 0 16px;
}
.rx-cond-body p:last-of-type { margin-bottom: 0; }
.rx-cond-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  margin-top: 24px;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  font-weight: 500;
  color: var(--accent-deep);
  cursor: pointer;
}
.rx-cond-link .arrow { transition: transform 160ms var(--ease);}
.rx-cond-link:hover .arrow { transform: translateX(4px);}

/* ============================================================
   EVIDENCE — published paper (compliance-critical)
   ============================================================ */
.rx-evidence { padding: var(--section-py) 0; }
.rx-evidence-panel {
  background: var(--sage-pale);
  border-radius: 14px;
  padding: clamp(44px, 5vw, 76px) clamp(32px, 5vw, 80px);
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(240px, 28vw, 320px);
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}
.rx-evidence-copy { min-width: 0; }
.rx-evidence-portrait {
  margin: 0;
  align-self: stretch;
  display: flex;
  flex-direction: column;
}
.rx-evidence-portrait img {
  width: 100%;
  display: block;
  border-radius: 12px 12px 0 0;
  background: #fff;
  object-fit: cover;
  object-position: center top;
}
.rx-evidence-portrait figcaption {
  background: var(--sage-deep);
  color: #fff;
  border-radius: 0 0 12px 12px;
  padding: 16px 20px;
  display: flex;
  flex-direction: column;
  gap: 3px;
}
.rx-portrait-name {
  font-family: var(--font-sans);
  font-size: 17px;
  font-weight: 500;
  letter-spacing: -0.01em;
}
.rx-portrait-role {
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.72);
}
@media (max-width: 860px) {
  .rx-evidence-panel { grid-template-columns: 1fr; }
  .rx-evidence-portrait { max-width: 320px; }
}
.rx-evidence-panel .eyebrow { color: var(--sage-deep); margin-bottom: 24px; }
.rx-evidence-panel .eyebrow::before { background: var(--sage-deep); }
.rx-evidence-head {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: clamp(28px, 3.2vw, 44px);
  line-height: 1.08;
  letter-spacing: -0.012em;
  color: var(--sage-ink);
  max-width: 20ch;
  margin: 0;
}
.rx-evidence-head em { font-style: italic; }
.rx-evidence-body {
  margin-top: 26px;
  font-size: 17px;
  line-height: 1.7;
  color: var(--sage-ink);
  max-width: var(--measure);
}
.rx-evidence-body em { font-style: italic; }
.rx-citation {
  margin-top: 32px;
  display: grid;
  grid-template-columns: 120px 1fr;
  gap: 6px 24px;
  padding: 22px 26px;
  background: color-mix(in oklab, var(--bg) 70%, transparent);
  border-radius: 10px;
  border: 1px solid color-mix(in oklab, var(--sage-deep) 18%, transparent);
}
.rx-citation-k {
  font-family: var(--font-sans);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--sage-deep);
  padding-top: 2px;
}
.rx-citation-v {
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--sage-ink);
}
.rx-citation-v .doi-link {
  color: var(--accent-deep);
  font-weight: 500;
  border-bottom: 1px solid color-mix(in oklab, var(--accent-deep) 45%, transparent);
  white-space: nowrap;
}
.rx-citation-v .doi-link:hover { border-color: var(--accent-deep); }
.rx-caveat {
  margin-top: 26px;
  font-size: var(--fs-sm);
  line-height: 1.66;
  color: color-mix(in oklab, var(--sage-ink) 82%, transparent);
  max-width: var(--measure-wide);
  border-left: 2px solid var(--accent);
  padding-left: 18px;
}
.rx-caveat strong { color: var(--sage-ink); font-weight: 600; }
.rx-evidence-link { margin-top: 28px; }

/* ============================================================
   CLOSING CTA (shared shape with .bio-cta-panel)
   ============================================================ */
.rx-cta-sec { padding: 0 0 112px; }
.rx-cta-panel {
  background: var(--bg-dark);
  border-radius: 14px;
  padding: clamp(56px, 6vw, 88px) clamp(32px, 6vw, 96px);
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.rx-cta-panel .eyebrow { color: var(--coral-soft); margin-bottom: 22px; }
.rx-cta-panel .eyebrow::before { background: var(--coral-soft); }
.rx-cta-panel h2 { color: #fff; max-width: 18ch; }
.rx-cta-panel h2 em { font-style: italic; }
.rx-cta-panel .lede {
  margin-top: 24px;
  max-width: var(--measure);
  color: rgba(255,255,255,0.78);
}
.rx-cta-panel .btn { margin-top: 36px; }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width: 1000px) {
  .rx-hero-grid { grid-template-columns: 1fr; gap: 44px; align-items: start; }
  .rx-stages { grid-template-columns: repeat(2, 1fr); }
  .rx-cond { grid-template-columns: 1fr; gap: 32px; }
}
@media (max-width: 640px) {
  .rx-hero { padding: 28px 0 56px; }
  .rx-how, .rx-treats, .rx-evidence { padding: 64px 0; }
  .rx-stages { grid-template-columns: 1fr; }
  .rx-citation { grid-template-columns: 1fr; gap: 4px; }
  .rx-citation-k { padding-top: 12px; }
}

/* ============================================================
   HERO — also-known-as line
   ============================================================ */
.rx-aka {
  margin-top: 16px;
  font-family: var(--font-sans);
  font-size: var(--fs-note);
  line-height: 1.5;
  letter-spacing: 0.01em;
  color: var(--slate-mid);
}
.rx-aka b { color: var(--slate-dark); font-weight: 600; }

/* ============================================================
   WHAT IT IS — plain-language mechanism
   ============================================================ */
.rx-about {
  padding: var(--section-py) 0;
  background: var(--bg-alt);
  border-bottom: 1px solid var(--border-soft);
}
.rx-about .section-head { margin-bottom: 42px; }
.rx-about-body {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(28px, 4vw, 60px);
}
.rx-about-body p {
  font-size: clamp(16px, 1.4vw, 18px);
  line-height: 1.76;
  color: var(--slate-dark);
  margin: 0;
}
.rx-about-body p strong { color: var(--fg-strong); font-weight: 600; }
.rx-about-body p em { font-style: italic; color: var(--accent-deep); font-weight: 500; }

/* ============================================================
   INDICATION — verbatim NMPA label (legal copy)
   ONE component, three shapes:
     · single sentence      p.rx-ind-text
     · numbered indications  ol.rx-ind-list.is-numbered
     · bulleted indications  ul.rx-ind-list.is-bulleted
   ...and three render states:
     · LIVE          default — publishes as-is
     · PLACEHOLDER   .rx-indication.is-empty — obviously empty, never greeked
   production. Only .is-review items are suppressed in the clean view.
   ============================================================ */
.rx-indication {
  grid-column: 1 / -1;
  margin-top: 8px;
  border: 1px solid var(--border-soft);
  border-left: 3px solid var(--sage-ink);
  background: var(--bg-card);
  border-radius: 0 10px 10px 0;
  padding: clamp(22px, 2.5vw, 32px) clamp(24px, 3vw, 38px);
}
.rx-ind-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px 22px;
  flex-wrap: wrap;
  padding-bottom: 15px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--border-soft);
}
.rx-ind-title {
  /* An <h2> since 5 Aug — §1 requires the indication to be a block heading,
     and a <span> is absent from the document outline. margin:0 cancels the
     UA h2 margin; this tree has no global h1..h6 reset. */
  margin: 0;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--sage-ink);
}
.rx-ind-src {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  font-family: var(--font-sans);
  font-size: var(--fs-note);
  letter-spacing: 0.04em;
  color: var(--slate-mid);
}
.rx-ind-src::before {
  content: "";
  width: 6px; height: 6px;
  border-radius: 999px;
  background: var(--sage-ink);
}
.rx-ind-lead {
  margin: 0 0 16px;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--slate-dark);
}
.rx-ind-lead strong { color: var(--fg-strong); font-weight: 600; }

/* single-sentence shape */
.rx-ind-text {
  margin: 0;
  font-family: var(--font-sans);
  font-weight: 500;
  font-size: clamp(20px,1.5vw, 20px);
  line-height: 1.55;
  color: var(--fg-strong);
}

/* SUH scope, stated separately from the approved indication.
   Deliberately OUTSIDE .rx-indication: that block is verbatim label text,
   and a SUH-specific claim must never sit inside it or share its sentence.
   Approval is what the label covers; availability is what SUH offers. */
.rx-ind-suh {
  margin: 14px 0 0;
  font-family: var(--font-sans);
  font-size: 15px;
  line-height: 1.6;
  color: var(--slate-dark);
}

/* ------------------------------------------------------------------
   Multi-part verbatim indications (CNCT19: two named indications, one
   carrying a conditional-approval sentence, one carrying a subtype list).
   The label's own structure is reproduced rather than flattened — the
   guide requires exact reproduction, no compression, no reordering.
   ------------------------------------------------------------------ */
.rx-ind-body {
  display: block;
  margin-top: 8px;
  font-family: var(--font-sans);
  font-weight: 400;
}
/* The conditional-approval sentence is part of the B-ALL indication and
   renders with it, at the same weight. Not a footnote. */
.rx-ind-cond {
  display: block;
  margin-top: 10px;
  font-family: var(--font-sans);
  color: var(--fg-strong);
}

.rx-ind-sub {
  margin: 10px 0 0;
  padding: 0 0 0 20px;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.rx-ind-sub li {
  position: relative;
  font-family: var(--font-sans);
  font-size: clamp(14.5px, 1.2vw, 16.5px);
  line-height: 1.45;
  color: var(--fg-strong);
}
.rx-ind-sub li::before {
  content: "";
  position: absolute;
  left: -14px; top: .62em;
  width: 5px; height: 5px;
  border-radius: 50%;
  background: var(--slate-mid);
}
/* Standing line. Sits immediately beneath the indication block because
   that is where tFL is named in the verbatim text — the reader meets the
   qualifier at the moment they read themselves into the label. */
.rx-ind-standing {
  margin: 14px 0 0;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--slate-dark);
}

/* list shape — numbered or bulleted full sentences */
.rx-ind-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.rx-ind-item {
  position: relative;
  padding-left: 38px;
  font-family: var(--font-sans);
  font-size: clamp(15.5px, 1.35vw, 18px);
  line-height: 1.5;
  color: var(--fg-strong);
}
.rx-ind-list.is-numbered { counter-reset: rxind; }
.rx-ind-list.is-numbered > .rx-ind-item { counter-increment: rxind; }
.rx-ind-list.is-numbered > .rx-ind-item::before {
  content: counter(rxind);
  position: absolute; left: 0; top: 0.1em;
  width: 25px; height: 25px;
  display: grid; place-items: center;
  font-family: var(--font-sans);
  font-size: 12px; font-weight: 600;
  color: #fff; background: var(--sage-ink);
  border-radius: 999px;
}
.rx-ind-list.is-bulleted > .rx-ind-item::before {
  content: "";
  position: absolute; left: 11px; top: 0.66em;
  width: 7px; height: 7px;
  border-radius: 999px;
  background: var(--sage-ink);
}

.rx-ind-flag {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 9px;
  font-family: var(--font-sans);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent-deep);
}
.rx-ind-flag::before {
  content: "";
  width: 7px; height: 7px;
  border-radius: 999px;
  background: var(--accent-deep);
}

/* PLACEHOLDER — obviously empty; never greeked as real copy */
.rx-indication.is-empty { border-left-color: color-mix(in oklab, var(--slate-mid) 60%, transparent); }
.rx-indication.is-empty .rx-ind-title { color: var(--slate-mid); }
.rx-indication.is-empty .rx-ind-src::before { background: var(--slate-mid); }
.rx-ind-empty {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 13px;
  padding: 28px 26px;
  border: 1px dashed color-mix(in oklab, var(--slate-mid) 50%, transparent);
  border-radius: 8px;
  background: repeating-linear-gradient(-45deg,
    transparent 0, transparent 9px,
    color-mix(in oklab, var(--slate-mid) 7%, transparent) 9px,
    color-mix(in oklab, var(--slate-mid) 7%, transparent) 10px);
}
.rx-ind-empty-mark {
  font-family: ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;
  font-size: 11.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--slate-mid);
  padding: 5px 11px;
  border: 1px solid color-mix(in oklab, var(--slate-mid) 35%, transparent);
  border-radius: 4px;
  background: var(--bg);
}
.rx-ind-empty p {
  margin: 0;
  font-family: var(--font-sans);
  font-size: var(--fs-sm);
  line-height: 1.6;
  color: var(--slate-mid);
  max-width: var(--measure-wide);
}

/* ============================================================
   ELIGIBILITY — who it's for
   ============================================================ */
.rx-elig { padding: var(--section-py) 0; }
.rx-elig .section-head { margin-bottom: 42px; }
.rx-elig-panel {
  display: grid;
  grid-template-columns: 0.82fr 1.18fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: start;
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: clamp(32px, 4vw, 52px);
}
.rx-elig-aside .tgt {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--accent-deep);
  margin-bottom: 14px;
}
.rx-elig-aside h3 {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: clamp(24px, 2.4vw, 32px);
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--fg-strong);
  margin: 0 0 16px;
}
.rx-elig-aside .rx-cond-link { margin-top: 4px; }
.rx-elig-crit {
  list-style: none;
  margin: 0 0 20px;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.rx-elig-crit li {
  position: relative;
  padding-left: 26px;
  font-size: 15.5px;
  line-height: 1.65;
  color: var(--slate-dark);
}
.rx-elig-crit li strong { color: var(--fg-strong); font-weight: 600; }
.rx-elig-crit li::before {
  content: "";
  position: absolute;
  left: 2px;
  top: 9px;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--accent);
}
.rx-elig-note {
  font-family: var(--font-sans);
  font-style: italic;
  font-size: 14.5px;
  line-height: 1.6;
  color: var(--slate-mid);
  border-left: 2px solid var(--sage-mid);
  padding-left: 18px;
  margin: 0;
}

/* ============================================================
   SAFETY — CRS / ICANS (two deliberately separate blocks)
   ============================================================ */
.rx-safety { padding: var(--section-py) 0; background: var(--bg-alt); }
.rx-safety .section-head { margin-bottom: 42px; }
.rx-safety-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}
.rx-safety-card {
  background: var(--bg-card);
  border: 1px solid var(--border-soft);
  border-radius: 12px;
  padding: clamp(28px, 3vw, 40px);
}
.rx-safety-card.suh { background: var(--sage-pale); border-color: transparent; }
.rx-safety-card .scope {
  display: inline-block;
  font-family: var(--font-sans);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.13em;
  text-transform: uppercase;
  color: var(--slate-mid);
  margin-bottom: 14px;
}
.rx-safety-card.suh .scope { color: var(--sage-deep); }
.rx-safety-card h4 {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: clamp(24px,2vw, 25px);
  line-height: 1.14;
  color: var(--fg-strong);
  margin: 0 0 14px;
}
.rx-safety-card.suh h4 { color: var(--sage-ink); }
.rx-safety-card p {
  font-size: 15px;
  line-height: 1.72;
  color: var(--slate-dark);
  margin: 0;
}
.rx-safety-card.suh p { color: var(--sage-ink); }
.rx-safety-card p strong { font-weight: 600; }
.rx-safety-card .icu {
  display: inline-flex;
  align-items: baseline;
  gap: 8px;
  margin-top: 18px;
  padding-top: 16px;
  border-top: 1px solid color-mix(in oklab, var(--sage-deep) 22%, transparent);
}
.rx-safety-card .icu .n {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: 34px;
  line-height: 1;
  color: var(--sage-deep);
}
.rx-safety-card .icu .t {
  font-family: var(--font-sans);
  font-size: var(--fs-note);
  letter-spacing: 0.04em;
  color: var(--sage-ink);
}

/* ============================================================
   COST — reuses .cost-signal from v3.css; local section frame
   ============================================================ */
.rx-cost { padding: var(--section-py) 0; }
.rx-cost .cost-copy p { font-size: 16px; line-height: 1.72; color: var(--slate-dark); }
.rx-cost .cost-copy .package {
  display: inline-flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 20px;
}
.rx-cost .cost-copy .package .k {
  font-family: var(--font-serif);
  font-weight:500;
  font-size: 40px;
  line-height: 1;
  color: var(--accent-deep);
  letter-spacing: -0.01em;
}
.rx-cost .cost-copy .package .v {
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--slate-mid);
}

/* ============================================================
   FAQ
   ============================================================ */
.rx-faq { padding: var(--section-py) 0; background: var(--bg-alt); }
.rx-faq .section-head { margin-bottom: 36px; }
.rx-faq-list {
  border-top: 1px solid var(--border);
  max-width: 860px;
}
.rx-faq-item {
  border-bottom: 1px solid var(--border);
}
.rx-faq-item summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 24px;
  padding: 24px 4px;
  font-family: var(--font-sans);
  font-weight: 600;
  font-size: clamp(18px, 1.8vw, 22px);
  line-height: 1.3;
  color: var(--fg-strong);
  transition: color 160ms var(--ease);
}
.rx-faq-item summary::-webkit-details-marker { display: none; }
.rx-faq-item summary:hover { color: var(--accent-deep); }
.rx-faq-item .sign {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  position: relative;
  transition: transform 220ms var(--ease);
}
.rx-faq-item .sign::before,
.rx-faq-item .sign::after {
  content: "";
  position: absolute;
  background: var(--accent);
  border-radius: 2px;
}
.rx-faq-item .sign::before { left: 0; top: 10px; width: 22px; height: 2px; }
.rx-faq-item .sign::after { left: 10px; top: 0; width: 2px; height: 22px; }
.rx-faq-item[open] .sign { transform: rotate(45deg); }
.rx-faq-item .ans {
  padding: 0 4px 26px;
  max-width: var(--measure-wide);
}
.rx-faq-item .ans p {
  font-size: 15.5px;
  line-height: 1.72;
  color: var(--slate-dark);
  margin: 0;
}
.rx-faq-item .ans a {
  color: var(--accent-deep);
  font-weight: 500;
  border-bottom: 1px solid color-mix(in oklab, var(--accent-deep) 45%, transparent);
}

@media (max-width: 900px) {
  .rx-elig-panel { grid-template-columns: 1fr; gap: 32px; }
  .rx-safety-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .rx-about, .rx-elig, .rx-safety, .rx-cost, .rx-faq { padding: 64px 0; }
  .rx-about-body { grid-template-columns: 1fr; gap: 16px; }
}
