/* ============================================================================
 * 442 SHARED·QUESTIONLABEL — the Fraunces question a tool asks. One voice, four volumes.
 * ============================================================================
 * WHAT IT IS. The label over a control: "How much did she drink?" · "When?" ·
 * "Need to log another feed?" · "How did it go? Tap as many as fit." Every question on
 * every logger is drawn with this, and SIZE carries the hierarchy (kept source's own
 * rule, workbench/weaning/_shared/logger-surface.css:192-196): the one that names the
 * screen is loudest, the one that opens a block is next, a sub-question inside a drawer
 * is quietest.
 *
 * A COMPONENT, NOT A TYPE (Andrew, 2026-09-05 — the ruled example): using it means
 * CHOOSING one of four sizes, and a wrong choice is a visible inconsistency across
 * fifteen screens. The choice is the class:
 *
 *   .lg-q        26 · Fraunces 600   the form's question — names the screen
 *   .lg-when-q   20 · Fraunces 600   the compulsory "When?" line
 *   .lbl-q       20 · Fraunces 600   a record section head — "Need to log another
 *                                    feed?", "Recent logs" (kept: the SAME SIZE as
 *                                    .lg-when-q because they are the same kind of
 *                                    thing — the line that opens a block)
 *   .subq        13 · Inter 400 · secondary ink   a question inside a folded row
 *
 * 🔴 CLASS NAMES UNCHANGED — .lg-q / .lg-when-q / .lbl-q / .subq, byte-for-byte the kept
 * source's own names, exactly as 430 SHARED·SELECTIONPILL kept .pills/.pill bare. This
 * component's job is to eventually REPLACE the four loggers' private copies (bottle-
 * logger.css:33-44, breastfeed-logger.css:61-73, sleep-backfill.css:77-89 + 165-168 +
 * 196, multiloglist.css:72 + 113, and the 1122 nappy copy) — not sit alongside them — so
 * sharing the names is the end state, not a workaround, and it is what lets a mirror
 * render the SAME selector the kept page renders.
 *
 * ⚠️ STATUS STAYS PROVISIONAL, NOT draft, DELIBERATELY: the private copies this component
 * will one day delete STILL STAND in the tool stylesheets (this build's brief forbids
 * deleting them — the adoption jobs do that). Check 16 (card-mirror) enforces single-source
 * of a card's classes from `draft` up, so arming it now would refuse the very copies the
 * brief preserves. The row carries the file pointers; adoption deletes the copies; THEN the
 * row can move to draft. (The 443/444/446/449 cohort is in the same position.)
 *
 * KEPT VALUES — every declaration below is the kept source's, byte-for-byte, except the
 * deltas listed here (each with its reason):
 *   1. colour DECLARED, not inherited, on .lg-q and .lg-when-q — the kept source set
 *      colour only on .lbl-q and let the other three inherit; card CSS is self-contained
 *      (D-470 corollary), and the inherited computed value was rgb(26,26,26) =
 *      var(--text-primary) on every label (measured on the kept page before the move),
 *      so this states what was already true.
 *   2. font-family and font-weight DECLARED on .subq — kept inherited Inter 400 from the
 *      page; same reasoning, same computed values.
 *   3. .subq .opt-tag ink: --text-tertiary → --text-secondary — D-740 (the --ink-400
 *      role split: every TEXT use leaves the retired token; the kept source is a
 *      workbench file, where ~450 --text-tertiary uses are still allowed). Carried from
 *      sleep-backfill.css:168, the one copy that already held the ruled fix.
 *   4. the .fs rule — the teal terminal mark (Fraunces punctuation ruling, 2026-09-16,
 *      STANDING app-wide): the renderer wraps a final ? . or ! in <span class="fs"> and
 *      this sheet colours it var(--brand) — the same token the read hero, week hero,
 *      collections tile and article headlines already paint it with. A head with no
 *      terminal mark renders none.
 *
 * THE TWO SPACING HABITS, OWNED HERE AS MODIFIERS. Each was the same decision written in
 * several host files, and a host-scoped rule reaching into these classes is exactly what
 * the mirror refuses once the row is enforced:
 *   .qlab-gap    20 above — the question opens a NEW block after another block. The kept
 *                source carried this as an inline style="margin-top:var(--space-20)" on
 *                ten labels across the loggers, plus bottle's `.lg > .lg-when-q` rule.
 *                Adoption: `class="subq qlab-gap"` replaces the inline style.
 *   .qlab-tight  4 below instead of 12 — the label heading a LIST of banked rows
 *                ("Ready to log" over the entries in multi-log mode). Was
 *                `.ml-list .subq { margin-bottom: var(--space-4) }` in three files.
 *                Adoption: `class="subq qlab-tight"` replaces the scoped override.
 * (The 18px step-down inside the multi-log card — `.ml-card .lg-q` — is NOT moved here:
 * it is scoped to multiloglist's own root class, multiloglist.css owns it, and a rule
 * that leads with another card's prefix belongs to that card. It stays there until that
 * card's own adoption job moves it.)
 *
 * NOT 1067 SHARED·QUESTIONROW — that is the composed row (stem + why-line + one control
 * slot) that USES this label as its stem; one contains the other, never merged.
 * ============================================================================ */

/* the four sizes — the choice a builder makes. Values byte-for-byte the kept source's
   (deltas 1-3 above are the only departures, each commented at its line). */
.lg-q { font-family: var(--font-display); font-size: var(--size-26); /* token-exception */
  font-weight: var(--weight-600); line-height: var(--leading-120);
  color: var(--text-primary); margin-bottom: var(--space-16); }
.lg-when-q { font-family: var(--font-display); font-size: var(--size-20); /* token-exception */
  font-weight: var(--weight-600); line-height: var(--leading-120);
  color: var(--text-primary); margin-bottom: var(--space-12); }
/* Its own class, NOT .lbl — .lbl is the teal eyebrow shared with "Allergens logged so
   far"; restyling .lbl here would have flipped that one back to grey (kept comment). */
.lbl-q { font-family: var(--font-display); font-size: var(--size-20); /* token-exception */
  font-weight: var(--weight-600); line-height: var(--leading-120);
  color: var(--text-primary); margin-bottom: var(--space-12); }
/* A sub-question is BODY type at caption size, not a small Fraunces head — the kept
   source inherited both from the page; declared here (delta 2). */
.subq { font-family: var(--font-body); font-size: var(--size-13); /* token-exception */
  font-weight: var(--weight-400); color: var(--text-secondary);
  line-height: var(--leading-150); margin-bottom: var(--space-12); }
.subq b { color: var(--text-primary); font-weight: var(--weight-600); }
/* D-740 (delta 3): was --text-tertiary in the kept source — retired for app text. */
.subq .opt-tag { color: var(--text-secondary); font-weight: var(--weight-400); }

/* Delta 4 — the teal terminal mark (2026-09-16 standing rule). The renderer wraps the
   final ? . or ! in <span class="fs">; the words stay ink. var(--brand) is the same teal
   every other Fraunces terminal in the estate takes (week-hero.css .wkhero-headline .fs
   and its siblings). No mark in the text, no span, no colour. */
.lg-q .fs, .lg-when-q .fs, .lbl-q .fs, .subq .fs { color: var(--brand); }

/* The two spacing habits, owned here (see header). No kept value changes: these are the
   host files' own values, given one home. */
.qlab-gap { margin-top: var(--space-20); }
.qlab-tight { margin-bottom: var(--space-4); }
