Typography

Three typefaces, one job each. Bricolage Grotesque for display — it has personality. Onest for body — it disappears and lets content breathe. JetBrains Mono for amounts and metadata — it aligns numbers and signals precision. Sentence case everywhere. No exceptions.

Import

All three families are served from Google Fonts. A single import handles all weights and optical sizes. Add it in <head> before any CSS, with preconnect hints so the font negotiation starts immediately.

<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,400;12..96,500;12..96,600;12..96,700&family=Onest:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">

Type families

Display — --font-display
Bricolage Grotesque
'Bricolage Grotesque', 'Onest', system-ui, -apple-system, sans-serif
Settle up already.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Used for headlines, section titles, card titles, and large numerals. Has optical size axis — tighter at large sizes, more open at small. Fallback to Onest keeps the warmth if the font fails to load.
Body — --font-body
Onest
'Onest', system-ui, sans-serif
Kabir owes you ₹850 for the Farzi Cafe dinner. Priya still hasn't settled her half of the Goa Airbnb. Rohan, as always, paid on time. The balance is ₹2,400.
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Every UI label, description, and body copy. Chosen because it's neutral enough to disappear — your eye goes to the content, not the letterform. Fallback is system-ui so it never breaks on font failure.
Mono — --font-mono
JetBrains Mono
'JetBrains Mono', ui-monospace, monospace
EXPENSE · 14 MAY · 7 PEOPLE
₹1,050.00
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz 0123456789
Eyebrows, timestamps, amount labels, category tags, and all numeric data. Tabular-nums is mandatory on amounts — columns must align. The ligatures and distinct zero help distinguish financial data at a glance.

Type scale

Nine levels from display-xl to mono-sm. The display levels use optical sizing and negative tracking — they get tighter as they grow, which is how type looks intentional at large sizes. Body levels track at 0 — don't add letter-spacing to body copy.

Settld
display-xl
clamp(48px, 7vw, 88px)
weight 600
leading 0.95
tracking −0.035em
Hero headline
Settle up already.
display-lg
clamp(36px, 5vw, 64px)
weight 600
leading 0.95
tracking −0.03em
Section headline
Goa trip expenses
display-md
clamp(24px, 3vw, 36px)
weight 600
leading 1.05
tracking −0.025em
Card headline, modal title
Farzi Cafe dinner
display-sm
20px
weight 600
leading 1.15
tracking −0.02em
Sub-headline, list section title
Kabir owes you ₹850 from the Farzi Cafe dinner last Friday.
body-lg
17px
weight 400
leading 1.5
tracking 0
Primary body copy
Split equally between 6 people, paid by Priya on 14 May.
body-md
15px
weight 400
leading 1.5
tracking 0
Secondary body, descriptions
Added 2 days ago · 3 payments pending
body-sm
13px
weight 400
leading 1.45
tracking 0
Captions, helper text
Expense · 7 People · ₹350 each
mono-md
12px
weight 500
leading 1.4
tracking +0.08em
Labels, amounts, meta
14 May 2025 · 09:42
mono-sm
10px
weight 500
leading 1.4
tracking +0.1em
Eyebrows, timestamps

Token reference

TokenFamilySizeWeightLine heightTracking
display-xlBricolageclamp(48px–88px)6000.95−0.035em
display-lgBricolageclamp(36px–64px)6000.95−0.03em
display-mdBricolageclamp(24px–36px)6001.05−0.025em
display-smBricolage20px6001.15−0.02em
body-lgOnest17px4001.50
body-mdOnest15px4001.50
body-smOnest13px4001.450
mono-mdJetBrains Mono12px5001.4+0.08em
mono-smJetBrains Mono10px5001.4+0.1em

Responsive behavior

The three display levels use CSS clamp() to scale fluidly between breakpoints. The minimum is safe on a 375px phone, the maximum is comfortable on a 1440px desktop. The fluid range is 5–7vw, which lets the type feel native to the viewport width without breakpoint jumps.

Body and mono levels are fixed — they don't scale. At 15px and below, clamp-based scaling would make text too small to read comfortably on mobile without triggering iOS text size bumps.

LevelMobile (375px)Fluid rangeDesktop (1440px)
display-xl48px7vw88px
display-lg36px5vw64px
display-md24px3vw36px
display-smFixed at 20px
Body & monoFixed — no scaling

Amount formatting

Rupee amounts are the most important numbers in Settld. They get special treatment: JetBrains Mono with font-variant-numeric: tabular-nums so columns align in ledgers, a non-breaking ₹ prefix so it never orphans onto the next line, and commas at the Indian grouping standard (lakhs, crores — not the Western millions format).

Small ₹40 — the ₹40 chai that always counts
Medium ₹1,050 — dinner for the group
Large ₹24,500 — the Goa Airbnb split
Teal (owed to you) +₹850
Coral (you owe) −₹350
/* Amount formatting rules */
font-family: var(--font-mono);
font-variant-numeric: tabular-nums;  /* columns align */
font-feature-settings: "tnum";        /* tabular nums fallback */

/* Direction color */
/* owed to you → --teal, you owe → --coral, neutral → --ink */

/* Indian grouping: use Intl.NumberFormat */
// new Intl.NumberFormat('en-IN', { maximumFractionDigits: 0 }).format(24500)
// → "24,500" (not "24.5K" — never abbreviate amounts in Settld)

Formatting rules

Sentence case everywhere. Headlines, button labels, nav items, section titles — all sentence case. "Add expense" not "Add Expense." This is non-negotiable. The only exception is proper nouns (UPI, GPay, Swiggy, PhonePe, Settld itself).

No tracking on body copy. Letter-spacing on 15–17px body text makes it look like a logo, not content. The 0 tracking on body-lg/md/sm is correct — leave it.

Negative tracking on display. Display type at large sizes needs tight tracking to look intentional. Bricolage Grotesque at 88px with default tracking looks loose. The −0.035em closing holds everything together.

Mono for numbers, always. Amounts, counts, percentages, dates, and codes use --font-mono. Never render financial numbers in Onest — they're not tabular and they'll drift in ledgers.

Usage

Do Use sentence case for everything. Verb-led button labels. Negative letter-spacing on display type. Mono with tabular-nums on amounts. Onest for all body copy and UI labels.
Don't Don't use Title Case headlines. Don't add tracking to body copy. Don't use Bricolage Grotesque below 20px — it's too characterful and crowds small sizes.
Do Use font-weight 600 for display and 400 for body. Bold (700) is available but reserved for heavy emphasis in context — not as a default heading weight.
Don't Don't abbreviate amounts (₹24K, ₹1.5L). Always show the full numeral. The product is about transparency — abbreviations hide the real number.