Typography
Comb sets type by job, not by size. Pick the role that matches what the text is for and you get its size, line height, weight and family together.
Typefaces
Comb uses two faces, and each has a job. Using only these two keeps the console calm and lets the serif mark the few places that matter.
Billing queue
Instrument Serif, regular only
Page titles, empty-state lines and the readout figure. Never bold, never below 20px.
Assign to me
Poppins, 400 to 700
Every control, label, sentence and number. Medium is the default inside components.
Text styles and tokens
Each example is set with its token, and the value column is read back from your browser: size and line height in px, then weight and family. If a token changes, this table changes with it.
| Example | Token | Value | Usage |
|---|---|---|---|
| Requests waiting on you | Heading XL--comb-font-heading-xl | Reading | Reserved for the largest page title. |
| Billing queue | Heading L--comb-font-heading-l | Reading | Every page title, and empty-state lines. |
| Export stops at the March report | Heading M--comb-font-heading-m | Reading | Panel titles and an open request's title. |
| Notifications | Heading S--comb-font-heading-s | Reading | Section and plate titles. |
| Assignee | Heading XS--comb-font-heading-xs | Reading | Card titles and side-panel section headings. |
| Open the report and choose Export. KiBee keeps your place. | Body L--comb-font-body-l | Reading | Long reading: help articles and descriptions. |
| Assigned to you by the Billing rule | Body M--comb-font-body-m | Reading | The default inside components. |
| Updated 12 min ago | Body S--comb-font-body-s | Reading | Helper text, timestamps, fine print. The 12px floor. |
| 1,284 | Metric L--comb-font-metric-l | Reading | Single-value tiles and totals. |
| 312 | Metric M--comb-font-metric-m | Reading | Secondary tiles. |
| 48 | Metric S--comb-font-metric-s | Reading | Inline totals. |
| 92% | Readout--comb-font-readout | Reading | Stat values in the serif readout look, tabular. |
| KB-1042 | Code--comb-font-code | Reading | Identifiers only: request keys, API key previews. |
Using typography
Write the role shorthand first, then any longhand that changes it. The shorthand resets numeric variants, so tabular figures go after it. When a rule only needs a size, take the size and leading tokens together.
.queue-count {
font: var(--comb-font-body-s);
font-weight: var(--weight-medium);
font-variant-numeric: tabular-nums;
}
.kb-btn--sm {
font-size: var(--comb-font-body-s-size);
line-height: var(--comb-font-body-s-leading);
}Typography rules
These come from the typography and shape decisions in the Comb learnings. Shipped rules are enforced in the console today; planned ones have tokens but not yet every call site.
TY1Product type is a set of roles: heading XL to XS, body L, M and S, metric L, M and S, and code. Each is one font shorthand token with weight, size, a fixed line height and family. The console uses roles; the older text scale stays for the landing page.
ShippedTY2Line heights are fixed values on the 4px grid (14/20, 12/16, 16/24, 20/24, 24/28, 28/32), never ratios.
ShippedTY3Instrument Serif is for page titles and empty-state lines only, heading L and up. Every other heading is Poppins. Metrics keep the serif readout look at metric L size with tabular numerals.
ShippedTY4Medium is the default weight in components and next to icons; semibold for headings and buttons; bold only for metrics. Never 800.
Applies nowTY512px is the floor. No 10 or 11px text; fine print uses body S.
ShippedTY6Numbers in badges, counts, tables, metrics and SLA timers use tabular figures, so counts do not jitter when they update.
ShippedTY7Radius follows the role of the shape: 2px badges and checkboxes, 4px lozenges and tags, 6px buttons and inputs, 8px cards and menus, 12px modals and tables, full for avatars and pills.
PlannedTY8One focus ring: 2px, drawn 2px outside the element, following its corners, from one shared rule.
ShippedTY9Selected states, such as an active tab or a chosen row, use a 2px indicator paired with the selected colour, never colour alone.
Applies nowTY10A request's title in the detail pane is an object title: heading M, clamped to three lines, with the full text in a tooltip. Customer-written text is never set in the display face.
ShippedTY11List rows: title in body M medium, two lines at most; a meta line of key, channel and age in body S subtle with tabular numbers; one chip row. The chosen row gets a tint and a 2px indicator, not a shadow card.
ShippedTY12No uppercase text transforms in the Desk, key caps excepted. Author labels are sentence case, body S semibold, subtle.
ShippedTY13Side-panel hierarchy: section heading in heading XS subtle ink, field label in body S, value in body M. A value is never larger or heavier than its section heading.
ShippedTY14Gold fill appears once per view, on the main action. Other header actions are ghost buttons, and a status shows once.
Shipped
Do and don't
Billing queue
Hi, my export has stopped at March again
Assignee
Assignee