/* exp35 . section stylesheet owned by the intent builder.
   Tokens only, no hard-coded colours. All 7 themes.

   Section 3 is a MERGE of exp33's #intent and #radius (PLAN-35-IA §7 Section 3,
   ADAPT-35 §1.1). Everything the two built components already had lives in
   assets/graph-sections.css and is untouched. This file adds only what the
   merge needs:
     1  the two-line H2 with its emphasis split (promoted from .gs-signature)
     2  beat 2 — the supporting line and its demoted sub-head
     3  beat 3 — the readout, gated off the figure's committed [data-sel]
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. THE HEADLINE
   The contrast the whole section exists to make. Line A is the world the
   reader already knows (--ink-60, receding); line B is the claim (--ink).
   Promoted from exp33's closing .gs-signature, emphasis split intact.
   -------------------------------------------------------------------------- */
.gs-intent .s35-h2{
  max-width:34ch;text-wrap:pretty;
}
/* line A stays INLINE so the terminal theme's "> " prompt keeps its line
   instead of hanging on one of its own; line B is what starts the new block. */
.gs-intent .s35-h2 .a{color:var(--ink-60);}
.gs-intent .s35-h2 .b{display:block;margin-top:.2em;color:var(--ink);}

/* --------------------------------------------------------------------------
   2. BEAT 2 — the hinge between the two figures
   A rule above it so the page reads as one section with two movements rather
   than two sections. The sub-head is exp33's headline, kept (ADAPT §1.1) but
   set below the plan's line, not above it.
   -------------------------------------------------------------------------- */
.gs-intent .s35-beat{
  margin:clamp(2.8rem,5vw,4.2rem) 0 0;
  padding-top:clamp(1.5rem,2.6vw,2.2rem);
  border-top:1px solid var(--hair);
}
/* deliberately a step under the section H2: the section still has exactly one
   loudest sentence, and this is the hinge, not a second headline. */
.gs-intent .s35-beat-h{
  margin:0;max-width:32ch;
  font-family:var(--prose,var(--sans));font-weight:500;letter-spacing:-.024em;
  font-size:clamp(1.25rem,2.2vw,1.7rem);line-height:1.2;
  color:var(--ink);text-wrap:pretty;
}
.gs-intent .s35-beat-sub{
  margin:.75rem 0 0;max-width:46ch;
  font-size:clamp(1.05rem,1.4vw,1.15rem);line-height:1.6;
  color:var(--ink-60);text-wrap:pretty;
}

/* the interaction follows the hinge directly */
.gs-intent .gs-rad{margin-top:clamp(1.7rem,3.2vw,2.5rem);}

/* --------------------------------------------------------------------------
   3. BEAT 3 — the impact readout
   radius.js no longer writes the readout: its per-node table still carries the
   BRIEF-33 counts that ADAPT §7 retires. Instead every selection ships its own
   row, and the row that matches the figure's committed [data-sel] is the one
   shown. radius.js sets that attribute on click, so the readout still answers
   the selection; with the script absent the shipped req042 row still reads.
   -------------------------------------------------------------------------- */
.gs-intent .s35-for,
.gs-intent .s35-v{display:none;}

.gs-intent .gs-rad[data-sel="req042"] .s35-for[data-for="req042"],
.gs-intent .gs-rad[data-sel="req18"]  .s35-for[data-for="req18"],
.gs-intent .gs-rad[data-sel="req61"]  .s35-for[data-for="req61"],
.gs-intent .gs-rad[data-sel="req94"]  .s35-for[data-for="req94"],
.gs-intent .gs-rad:not([data-sel]) .s35-for[data-for="req042"]{display:inline;}

.gs-intent .gs-rad[data-sel="req042"] .s35-v[data-for="req042"],
.gs-intent .gs-rad[data-sel="req18"]  .s35-v[data-for="req18"],
.gs-intent .gs-rad[data-sel="req61"]  .s35-v[data-for="req61"],
.gs-intent .gs-rad[data-sel="req94"]  .s35-v[data-for="req94"],
.gs-intent .gs-rad:not([data-sel]) .s35-v[data-for="req042"]{display:block;}

/* "related obligations" carries no count, so it must not sit on the numeric
   baseline of the terms beside it. */
.gs-intent .s35-v .gs-t:last-child{color:var(--ink-60);}

/* the readout is the section's conclusion, so it holds its own line */
.gs-intent .s35-cta{margin-top:clamp(1.3rem,2.4vw,2rem);}

@media (max-width:760px){
  .gs-intent .s35-h2{max-width:none;}
  .gs-intent .s35-beat-h{max-width:none;}
}

/* "Example service": the payments corpus is invented and must never be
   mistaken for the real jsonparser evidence shown elsewhere on the page. */
.fig-ex{font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:.86em;}

/* --------------------------------------------------------------------------
   4. THE BLAST-RADIUS CAPTION
   The figure shipped without one. Its sibling above carries "Example service"
   and audit.html carries "Counts are illustrative", so the one figure printing
   5 files / 13 tests was the only place in the section where an invented count
   had no mark on it. The caption is the same .fig-cap component as the sibling
   and needs only its spacing set, because it follows a boxed readout rather
   than a bare drawing.
   -------------------------------------------------------------------------- */
.gs-intent .gs-rad > .fig-cap{margin-top:1.1rem;}
