/* SHARED·DISCLAIMER (1019) — the Phase 0/1 full-version disclaimer sheet, the app's trust
 * surface. REVERSE-PORT 2026-09-03 from web/js/views/disclaimer_modal.js + the .disclaimer-*
 * rules below (then in web/css/app.css ~2881-2905), seedCommit
 * 2079248574b246584045ef88c2e1ee727b42b747 (workbench/RULES.md §2 G3b).
 *
 * COPY IS LOCKED — content/STYLE.md §"Phase 0/1 disclaimer (locked 2026-04-29)" →
 * docs/sources/extensions/be-fr/disclaimer.md is canonical. The renderer
 * (web/js/cards/shared/disclaimer.render.js) carries it verbatim and paraphrases nothing;
 * verified word-for-word against the market file at extraction.
 *
 * THE MOVE (check 16 gives a prefix ONE stylesheet owner): the three shipped .disclaimer-*
 * rules MOVED here out of app.css — never copied. Consumers keep working because the class
 * NAMES did not change. Tokenised as part of the move, zero-pixel-drift unless noted:
 *   · margins 12px / 8px → var(--space-12) / var(--space-8); list indent 20px → var(--space-20)
 *   · the two JS inline style objects the shipped view carried (fontWeight 600 + marginTop
 *     14px) became .disclaimer-lead / .disclaimer-thanks below. 14px is OFF the 4px grid and
 *     has no token: snapped UP to var(--space-16) (D-511; the postlog.css extraction precedent,
 *     "14 was off the 4px grid"), which also keeps the lead-in a looser beat than the body's
 *     own 12px rhythm — snapping DOWN to 12 would have erased the beat entirely.
 *   · body copy stays var(--size-17): the disclaimer and the /about prose (405 .abt-p) are the
 *     two 17px measures in the app — larger than the 16px body floor on purpose. No --text-*
 *     role token exists for 17, so the line carries the marker rather than a silent 1px shrink.
 *
 * ⚠️ TWO RELATIVES THAT ARE NOT THIS CARD, so nobody merges them later:
 *   · the CONDENSED weekly banner — .weekly-disclaimer-banner (web/js/views/week-read.js,
 *     styled in app.css) — a different component with its own prefix;
 *   · the ONBOARDING disclaimer step (web/js/views/onboarding.js renderDisclaimer) — reuses
 *     .disclaimer-body / .disclaimer-list and is a SECOND CONSUMER, not a second card.
 * ⚠️ THE MODAL SCAFFOLD IS NOT THIS CARD EITHER: .modal-overlay / .modal-sheet / .modal-top /
 * .modal-title / .modal-close / .modal-body / .modal-foot / .btn stay in app.css — chrome
 * shared with the profile sheets and chat (REPORT-97: three measured blockers; resuming that
 * migration is nobody's side effect). The card owns its own vocabulary only. .disclaimer-sheet
 * stays a semantic hook exactly as shipped — unstyled, as shipped.
 * Micro-states (D-422): the card's own surface is prose — nothing in it takes a pointer. The
 * controls it mounts in are the scaffold's (.modal-close :hover, .btn :active, both app.css),
 * which carry their own press/focus feedback.
 */
.disclaimer-body p {
  font-size: var(--size-17); /* token-exception */
  line-height: var(--leading-155);
  color: var(--ink);
  margin: 0 0 var(--space-12);
} /* token-exception: 17px prose measure — the 405 .abt-p precedent, no --text-* role at 17 */

.disclaimer-body .disclaimer-list {
  list-style: disc;
  padding-left: var(--space-20);
  margin: 0 0 var(--space-12);
}

.disclaimer-body .disclaimer-list li {
  font-size: var(--size-17); /* token-exception */
  line-height: var(--leading-155);
  color: var(--ink);
  margin-bottom: var(--space-8);
} /* token-exception: 17px prose measure — the 405 .abt-p precedent, no --text-* role at 17 */

/* The two inline style objects the shipped view carried, now classes — see header. */
.disclaimer-body .disclaimer-lead {
  font-weight: var(--weight-600);
  margin-top: var(--space-16);
} /* token-exception: was 14px inline — off-grid, no token; snapped up (D-511), postlog.css precedent */

.disclaimer-body .disclaimer-thanks {
  margin-top: var(--space-16);
} /* token-exception: was 14px inline — off-grid, no token; snapped up (D-511), postlog.css precedent */
