Skip to content

SPA: retire tracked all-caps labels outside the nav group dividers #652

Description

@mforce

Part of the SPA look-and-feel pass (design review 2026-09-02). Sibling slices: numeric typesetting, elevation hierarchy, table layout, dashboard rework, empty states, visual identity.

Problem

Seven rules in web/src/styles.css set text-transform: uppercase with tracked letter-spacing: table.data th, .badge, .stat-label, .nav-group-label, .eyebrow, .step-n, .more-group-label. Table headers at 0.68rem caps muted are the hardest text on the screen to read, and the app is used on a phone in a hen house. Caps-everywhere is also the commonest tell of a templated UI; it stops meaning anything when it is on every label.

Proposal

Keep caps only where they mark real structure — the sidebar / More-sheet group dividers (.nav-group-label, .more-group-label). Everything else goes sentence case:

  • table.data th: ~0.8rem, sentence case, weight 600, --ink rather than --muted, letter-spacing: 0.
  • .badge: sentence case, ~0.78rem, keep the tinted pill and weight.
  • .stat-label: sentence case under the figure, ~0.85rem, --muted.
  • .step-n ("Step 1"): sentence case, keep the pill.
  • .eyebrow: audit its call sites; drop the class where it labels content that does not need a label, sentence case elsewhere.

Acceptance

  • Only the two nav group-divider rules keep text-transform: uppercase — pinned by a styles unit test.
  • Badges, table headers, stat labels, step pills render sentence case in en / es / tl (translations are already sentence case; verify nothing relied on CSS to capitalise).
  • Contrast: table headers on --surface clear 4.5:1 in light and night.
  • tools/simulation/ui/ specs that match badge text by exact case still pass (Playwright getByText is case-sensitive by default — read the callers, Daily entry: require grading to reconcile sellable eggs before submit #394).
  • Screenshots before/after in the PR.

Siblings: #650 #651 #653 #654 #655 #656 #657

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions