Skip to main content

Typography

HASH Sans for everyday reading and interaction, HASH Mono for technical text, and HASH Serif for occasional editorial emphasis. Text styles combine size, line height, and letter spacing.

Apply a text style

Every size, line height, and letter spacing is one token. Set it with textStyle and the three come together.

example.tsx
<p className={css({ textStyle: "sm", color: "fg.body" })}>Entity type saved.</p>

Typeface

Use HASH Sans (KH Teka) for fonts.display and fonts.body, and HASH Mono (KH Teka Mono) for fonts.mono. HASH Serif (KH Giga) has an extremely limited role in marketing and sales material.

HASH Sans (KH Teka)

Our default for headings, interface text, and body copy.

View Typeface for HASH Sans (KH Teka)
HASH Serif (KH Giga)

Occasional quotes and editorial callouts in marketing and sales material.

View Typeface for HASH Serif (KH Giga)
HASH Mono (KH Teka Mono)

Code, commands, token names, and identifiers.

View Typeface for HASH Mono (KH Teka Mono)

Choosing a typeface

  • HASH Sans is the default for page titles, headings, body copy, navigation, labels, and actions across our products and communications.
  • Serif is for selected direct quotes from people, customer testimonials, and short editorial callouts in case studies, presentations, or campaign material. Keep these passages brief and generously sized. Set attribution, supporting copy, and interface controls in HASH Sans. Reserve Serif for a deliberate editorial exception rather than a general product text style.
  • Mono is for code, commands, token names, and identifiers where exact characters matter. Use HASH Sans with tabular figures for numeric columns.

KH Giga is selected explicitly in the layouts that use it. The shared fonts.display, fonts.body, and fonts.mono tokens retain their existing families.

Google Docs exception

Use Geist in Google Docs

Google Docs is a documented exception to our usual typeface rules. When creating or editing documents in Google Docs, use:

  • Geist Sans in place of HASH Sans for headings, body copy, labels, and quotations.
  • Geist Mono in place of HASH Mono for code, commands, and identifiers.

Keep the same hierarchy, spacing, and readability guidelines. Use paragraph styles for consistent headings and body text. This substitution applies to Google Docs; use our ordinary brand typefaces in other design work.

Font stacks

The HASH font stacks include fallbacks for when a typeface is unavailable. Copy a stack where a token cannot be used.

TokenStackCopy
fonts.display"KH Teka", ui-sans-serif, system-ui, sans-serif
fonts.body"KH Teka", ui-sans-serif, system-ui, sans-serif
fonts.mono"KH Teka Mono", ui-monospace, monospace

Scale

4xl36/46.8
3xl30/39
2xl24/33.6
xl20/28
lg18/27
base16/24
sm14/22.4
xs12/19.2
  • 4xlPage titles on marketing pages
  • 3xlPage titles
  • 2xlSection titles
  • xlDialog and drawer titles
  • lgLead paragraphs
  • baseLong-form reading
  • smDefault interface text
  • xsSecondary text, captions, table metadata

Style

A style is a step of the scale with a job, a family, and a weight. Product titles use HASH Sans at medium with tight tracking; interface text and prose use HASH Sans; code uses HASH Mono. The occasional use of HASH Serif in marketing and sales material sits outside these product text styles.

RoleStyleFamilyWeightUse
Display title4xlKH Teka500Page titles on marketing pages
Page title3xlKH Teka500Page titles
Section title2xlKH Teka500Section titles
Dialog titlexlKH Teka500Dialog and drawer titles
LeadlgKH Teka400Lead paragraphs
BodybaseKH Teka400Long-form reading
InterfacesmKH Teka400Default interface text and labels; buttons at 500
CaptionxsKH Teka400Secondary text, captions, table metadata
CodesmKH Teka Mono400Code, commands, token names, and IDs
  • Use sentence case for headings, labels, and actions.
  • Use tabular figures for numbers in columns.
  • Mono is for code and identifiers, rather than dates, counts, or names.
  • Links and rows change color on hover. Keep another visible cue, such as a link icon, where needed.

Type color

Choose type color for legibility first. Keep running text neutral; hierarchy comes from size, weight, and position. Color marks links, the primary action, and status. See Colors for the palettes.

Entity types describe the shape of the data they hold.

Do use a neutral color for running text, fg.body.

A pink sentence for no reason.

Avoid a palette color on text that is not a link or a status. Color is not decoration.
Use fg.link for links, with the icon in the same color.
Download the report
Use neutral text and an icon for a secondary action. Only the primary action takes the brand color.

Unable to save. Check your connection and try again.

Use the status palettes for alerts and validation, status.error.fg.body here.
textStyle: "sm"
Use color in code only to highlight a token or a value; the rest of the snippet stays fg.body.
UseTokenExampleRule
Titlesfg.headingEntity type saved.Page and section titles.
Running textfg.bodyEntity type saved.Copy, labels, values. The default for everything people read.
Secondary textfg.mutedEntity type saved.Secondary text. Check contrast at the intended size; use fg.body for small text if this falls below 4.5:1.
Placeholdersfg.subtleEntity type saved.Large secondary text only when contrast is at least 3:1. Use fg.body for small hints and placeholders; they still need 4.5:1.
Linksfg.linkEntity type saved.Links and nothing else. A blue word is a promise that it is clickable.
On a solid fillfg.onSolidEntity type saved.Text on bg.solid. Never a literal white.
Statusstatus.*.fg.bodyinfoerrorwarningsuccessColored text appears in alerts, badges, and validation, from the status palettes.
  • Do not tint running text with a palette. A colored paragraph reads as an alert.
  • Disabled text uses its disabled state token, rather than opacity.
  • Code is fg.body in KH Teka Mono. Syntax color belongs to code blocks only.

Weights

Three weight tokens. KH Teka has no separate 600 weight in the site's font set, so semibold renders as Medium.

TokenValueKH TekaUse
fontWeights.normal400Entities link to typesBody and interface text, captions, code.
fontWeights.medium500Entities link to typesButtons, labels, and headings.
fontWeights.semibold600Entities link to typesEmphasis, rendered in KH Teka Medium.

Leading

Six line-height tokens. Each text style also supports tight (0.9×) and loose (1.1×) leading. Use tight in dense tables; loose for long reading.

TokenValueUse
lineHeights.none1Single-line labels and badges
lineHeights.tight1.25Display titles
lineHeights.snug1.375Headings
lineHeights.normal1.5Interface and body text
lineHeights.relaxed1.625Long-form reading
lineHeights.loose2Spaced lists and legal text

License

KH Teka and KH Teka Mono are commercial typefaces. HASH has an unlimited license for any medium and any number of users and devices, including embedded mobile and desktop applications, print, and the web. No third party is granted rights to use them.

See HASH Sans, HASH Serif, and HASH Mono for usage guidance, character sets, OpenType features, language support, and the relevant licensing notices.

Last updated on 2026-10-31

Was this page helpful?

On this page

Privacy