Token
Sample
Specs
Notes
--fs-xs
Caption · 12px
12px · 500 · uppercase · letter-spacing 0.08em
Floor for labels, eyebrows, captions. Never body text. Always uppercase + medium weight at this size.
--fs-sm
Caption · 0.875rem (12–13px) regular
0.875rem · 400
Metadata, file dates, sizes, button labels. AA at --text-secondary.
--fs-base
Body copy · 1rem (14–15px) regular, app default
1rem · 400
Default body weight. Equals the root size, matching app.put.io's fontSize 1.
--fs-md
Subheading · 1.125rem (~16px) medium
1.125rem · 500
Subheadings, dense UI emphasis. Mobile body minimum is 16px (prevents iOS auto-zoom on inputs).
--fs-lg
Heading · 1.5rem (21–22.5px) medium
1.5rem · 500
Section headings. At 21px and weight 500 this remains normal text under WCAG; use 4.5:1. Large text starts at 24px regular or 18.7px bold.
TV minimum
10-foot reading · 24px+
24px · 500 floor
10-foot UX: nothing below 24px on a TV surface (see TV foundations).