/* Utility classes for the handful of layout nudges views used to write
   inline (design review 2026-09-14: inline styles bypass the token cascade
   and the seams). Spacing steps are the shape scale; text roles route
   through the type tokens. Loads after forms.css, before internal.css. */
.m-0 { margin: 0; }
.mt-0 { margin-top: 0; }
.mt-1 { margin-top: var(--sp-1); }
.mt-2 { margin-top: var(--sp-2); }
.mt-3 { margin-top: var(--sp-3); }
.mt-4 { margin-top: 2rem; }
.mb-0 { margin-bottom: 0; }
.mb-1 { margin-bottom: var(--sp-1); }
.mb-2 { margin-bottom: var(--sp-2); }
.mb-4 { margin-bottom: 2rem; }
.ml-1 { margin-left: var(--sp-1); }
.t-meta { font-size: var(--fs-meta); color: var(--ink2); }
.t-hint { font-size: var(--fs-meta); color: var(--ink3); }
.t-sm { font-size: var(--fs-meta); }
.t-xs { font-size: var(--fs-label); }
.t-body { font-size: var(--fs-body); }
.t-bold { font-weight: 600; }
.t-num { font-variant-numeric: tabular-nums; }
.t-dim { opacity: 0.55; }
.pre-wrap { white-space: pre-wrap; overflow-wrap: anywhere; }
.scroll-x { overflow-x: auto; }
.list-plain { list-style: none; padding: 0; margin: 0; }
.grid-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--sp-2); }
@media (max-width: 860px) { .grid-2 { grid-template-columns: minmax(0, 1fr); } }
.band-fill { background: var(--band); }
.kv { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 0.4rem 1rem; margin: 0; }
.kv dt { color: var(--ink2); opacity: 0.75; }
.kv dd { margin: 0; min-width: 0; overflow-wrap: anywhere; }
@media (max-width: 860px) { .kv { grid-template-columns: minmax(0, 1fr); } .kv dt { margin-top: 0.4rem; } }
