/* SHARED·FIGURE (1059) — the figure chassis for the week read: kicker · title · BODY SLOT ·
 * caption · the D-333 "Illustrative" face label. (D-619's Figure form = 4B, full-bleed.)
 *
 * SOURCE: workbench/weeks/_bakeoffs/item-forms.html frames 5–6 (.wkr-fig .fk .ill .ft .fbody
 * figcaption + .bleed) — the only rendered figure specimens in the repo (REPORT-535 §5.4 kept
 * the file for exactly this). The CHOSEN form is (b) full-bleed, not (a) figure-as-Card:
 * the figure escapes the read's measure (`--space-16` side padding, `.wkr`), drops its side
 * chrome (no hairline, no kind bar, no radius) and sits on --surface-sunken; the caption
 * stays INSIDE the measure because a caption is prose. NOT a media tile (603's photo grid,
 * portrait's round thumb — REPORT-535 §5.1 released that hold).
 *
 * THE BODY SLOT IS THE CARD. A chart, a comparison table or an annotated diagram rides in as
 * the caller's HTML; the bodies are separate cards (REPORT-535 BUILD rows FIGURE·TABLE,
 * FIGURE·DIAGRAM; the band chart + the months timeline are CHOOSE rows). This file styles the
 * chassis and the slot's spacing only — never a body's internals.
 *
 * 🔴 SaMD / D-603 / D-333: a figure is UNIVERSAL content. It never plots this child's data
 * (that is Progress's), never fabricates a measurement, and carries the "Illustrative" label
 * ON ITS FACE — the label is the honesty claim, which is why it renders by default and a
 * caller must pass label:'' to remove it (a body that cannot be mistaken for data).
 *
 * TYPOGRAPHY — the template's values predate D-739 and are re-anchored to the ladder
 * (28 display · 18 subhead · 16 body · 14 everything-else; Fraunces is a display face ONLY):
 *   kicker  — the template's 10px micro eyebrow is superseded; the estate's eyebrows are the
 *             14 tier (.wkr-toc .t, .pha-ey, .srb .be). Inter 600 uppercase tracking-05.
 *   title   — Fraunces-600-16 → Inter 600 at --text-subtitle (18): the ladder's card-head
 *             step, one step above the 14 eyebrow so the figure keeps its two-level head.
 *             ⚠️ One judgement call: this reads as a peer of the read's own .wkr-sub (also 18).
 *             If it competes at the gate, 16 (--text-body) is the one-word fallback.
 *   label   — 14 tier like the kicker; gold is the ONLY distinction (D-739: inside a tier,
 *             hierarchy is weight + colour + case, never size).
 *   caption --text-caption (13), not the template's 12: the role token is NAMED caption and
 *             both shipped figure captions already sit there (.loop-figcap, 605's .d).
 *
 * ⚠️ ONE MEASURED DEVIATION FROM THE TEMPLATE: the label steps gold-700 → gold-800.
 * gold-700 on --surface-sunken measures 3.84:1 — a fail at the label's size (AA 4.5:1).
 * gold-800 measures 6.26:1. The template pair was tuned for --surface-card (5.02:1), which
 * the road-not-taken Card form sat on; the CHOSEN form sits on the darker sunken band.
 * (WCAG 2.1 relative-luminance ratios, computed 2026-09-04.)
 *
 * ⚠️ THE HEAD ROW deviates from the template's space-between on purpose: the label travels
 * WITH the kicker (kind line + honesty line are one statement), and the far right of the
 * head is the read's action slot (D-615) — the chassis positions a caller-passed .act-wrap
 * and never renders or styles the buttons themselves (403 owns those).
 *
 * The full-bleed negative margin IS the form, exactly as 431's bleed-to-edge scroller carries
 * its own: a host that cannot give the figure the full measure must not mount it in a padded
 * column. Values VERBATIM from the template's .bleed otherwise. */
.fig { background: var(--surface-sunken); border-radius: 0; padding: var(--space-12) var(--space-16); margin: var(--space-16) calc(var(--space-16) * -1) 0; }
.fig-head { display: flex; align-items: baseline; gap: var(--space-8); font-family: var(--font-label); font-size: var(--text-body-sm); font-weight: var(--weight-600); text-transform: uppercase; letter-spacing: var(--tracking-05); color: var(--ink-600); }
.fig-head .fig-ill { color: var(--gold-800); }   /* the D-333 honesty label, on the face */
.fig-head .act-wrap { margin-left: auto; align-self: flex-start; }   /* host context: the read's D-615 slot, positioned here, styled by 403 */
.fig-t { font-family: var(--font-body); font-weight: var(--weight-600); font-size: var(--text-subtitle); line-height: var(--leading-120); color: var(--text-primary); margin-top: var(--space-4); }
.fig-body { margin-top: var(--space-12); min-width: 0; }
.fig-body > svg { display: block; width: 100%; height: auto; }   /* an unstyled svg GROWS TO FILL ITS BOX — the slot pins it */
.fig-cap { font-size: var(--text-caption); line-height: var(--leading-145); color: var(--text-secondary); margin-top: var(--space-8); }
.fig-cap b { color: var(--text-primary); font-weight: var(--weight-600); }

/* title-below — D-619's own wording ("full-bleed visual with title+caption below"), declared
 * as a state against the built ABOVE form. One word from Andrew settles which is canonical
 * (REPORT-535 §4); until then both render from this one file. */
.fig.is-below .fig-t { margin-top: var(--space-12); }
