/* ==========================================================================
   UTILITIES · TEXT — single-purpose typographic trumps. The system's three
   voices, on demand: serif speaks, grotesque labels, mono counts. Plus the
   small-caps furniture, the figure modes, alignment and emphasis helpers.
   ========================================================================== */

/* — Family trumps — */
.u-serif     { font-family: var(--font-reading) !important; }
.u-grotesque { font-family: var(--font-furniture) !important; }
.u-mono      { font-family: var(--font-data) !important; }

/* — The small-caps furniture: uppercase + tracking (robust everywhere) — */
.u-caps {
  font-family: var(--font-furniture) !important;
  text-transform: uppercase !important;
  letter-spacing: var(--tracking-caps) !important;
  font-weight: var(--weight-semibold) !important;
}
.u-caps-wide { letter-spacing: var(--tracking-caps-wide) !important; }

/* True OpenType small-caps, where the font supplies them */
.u-small-caps {
  font-variant-caps: all-small-caps !important;
  font-feature-settings: var(--feat-smallcaps) !important;
  letter-spacing: var(--tracking-wide) !important;
}

/* — Figures: mono numerals, tabular vs oldstyle — */
.u-tabular {
  font-variant-numeric: tabular-nums lining-nums !important;
  font-feature-settings: var(--feat-tabular) !important;
}
.u-oldstyle {
  font-variant-numeric: oldstyle-nums proportional-nums !important;
  font-feature-settings: var(--feat-oldstyle) !important;
}

/* — Size & colour trumps — */
.u-text-2xs { font-size: var(--text-2xs) !important; }
.u-text-xs  { font-size: var(--text-xs) !important; }
.u-text-sm  { font-size: var(--text-sm) !important; }
.u-muted     { color: var(--text-muted) !important; }
.u-secondary { color: var(--text-secondary) !important; }
.u-accent    { color: var(--accent) !important; }

/* — Alignment & wrap — */
.u-text-left   { text-align: left !important; }
.u-text-center { text-align: center !important; }
.u-text-right  { text-align: right !important; }
.u-nowrap      { white-space: nowrap !important; }
.u-balance     { text-wrap: balance !important; }
