Foundations · Typography

Typefaces

Each family in detail — what it's for, how it's loaded, and the OpenType features the product depends on. Tabular figures, slashed zero, and fractions all earn their place when the surface is full of money.

Documentedby Derek Fidler

Founders Grotesk X Condensed

A condensed grotesque from Klim Type Foundry. We license Bold (700) only and use it as a brand asset — never a UI face. The condensed proportions read as architectural at large sizes; the same proportions read as cramped at body sizes, which is why we restrict it to display.

ABCDEFGHIJKLM

NOPQRSTUVWXYZ

0123456789 .,!?

Klim Type Foundry · Licensed for Flatpay use · Bold weight only · 100 + 200 character set

Always

ALL CAPS. Bold (700). Tight leading (leading-[0.92]). One H1 per page, never used for H2 or smaller.

Inter Tight

A variable-weight neo-grotesque (100–900) from Rasmus Andersson, optimized for screens. Slightly tighter than Inter, with metrics that hold up at small sizes. The default for everything on screen that isn't a brand H1: H2/H3, body, page H1s in product UI, navigation, labels — and every numeric surface, with tabular-nums slashed-zero applied where money or IDs sit in a column.

The quick brown fox

jumps over the lazy dog.

Light 300Regular 400Medium 500Semibold 600Bold 700

Variable font · OFL · Italic available · Tabular figures, fractions, ligatures available via OpenType features

Martian Mono

A variable-axis monospace (weight + width) from Evil Martians. Reserved for print: customer receipts that print at the till, end-of-day reports, settlement statements, anything that leaves the screen on paper. The tabular grid and disambiguated glyphs (l/I/1, O/0) earn their place when a merchant is reconciling a stack of slips by hand.

Receipt · 80 mm thermal

Café Lucky Garden

Bredgade 12, 1260 København K

CID 39442221

Terminal T-04 · Mon 03 May 2026 14:22

Flat white × 262,00 krSourdough toast48,00 krService 10%11,00 kr
Total121,00 kr

End-of-day report

Sales14.832,00Refunds-285,00Tips1.456,50Cash2.310,00Card13.693,50Net total16.003,50

Variable font · OFL · Slashed zero · l/I/1 disambiguated · tabular by default

Print only — never in UI

Martian Mono lives on paper, not on screen. Don't use it for code blocks, tokens, paths, repo references, transaction IDs, or amounts in product UI — set those in Inter Tight with tabular-nums slashed-zero applied. The single exception: when the UI is previewing a printed document — a receipt preview before a reprint, a PDF report viewer — the preview should match the printed output, including the typeface.

OpenType features

OpenType features are font-level switches that change how characters render without changing the underlying text. The product depends on a few specifically: tabular figures and slashed zero for any column of money on screen (Inter Tight), tabular figures and fractions for printed receipts (Martian Mono), and standard ligatures for prose (Inter Tight).

Tabular figures

The most important feature for a payments product. Forces every digit to occupy the same width so columns of numbers stack cleanly and update without jitter.

Tabular (use this)

1123481,890

Proportional

1123481,890

css

/* Apply to every on-screen metric in Inter Tight. Martian Mono ships these on
   by default, but Martian Mono only renders on print — see above. */
.tabular {
  font-variant-numeric: tabular-nums slashed-zero;
}

/* Or in Tailwind */
<p className="font-sans tabular-nums slashed-zero">2.055,00 kr</p>

Slashed zero

Disambiguates 0 from O in transaction IDs, account numbers, and any alphanumeric code. Always paired with tabular figures.

Slashed

CID O0440 2200

Default

CID O0440 2200

Fractions

For split bills, partial payments, and shared receipts. Inter Tight ships ready-made fractions for common values; arbitrary fractions can be set with the frac feature.

Split 1/3 with 2/4 covered · 1/2 deposit · 3/4 paid

Renders the fractions as proper composed glyphs rather than oversized digits with a slash.

Ligatures

Standard ligatures (liga) ship on by default. We do not use discretionary ligatures (dlig) — they look ornamental and break tabular alignment.

Affiliate flight office — fluid type

ff, fi, fl, ffi, and ffl render as composed glyphs.

How fonts load

All three families ship as local files via next/font/local. Founders Grotesk and Inter Tight preload — they paint the moment the page renders. Martian Mono stays unpreloaded because the only screen surfaces that need it are print-document previews, which load on demand.

apps/portal/app/fonts.ts

import localFont from "next/font/local";

export const founders = localFont({
  src: [{ path: "./fonts/FoundersGroteskX-Condensed-Bold.otf", weight: "700", style: "normal" }],
  variable: "--font-display",
  display: "swap",
  preload: true,
});

export const interTight = localFont({
  src: [
    { path: "./fonts/InterTight-VariableFont_wght.ttf", weight: "100 900", style: "normal" },
    { path: "./fonts/InterTight-Italic-VariableFont_wght.ttf", weight: "100 900", style: "italic" },
  ],
  variable: "--font-sans",
  display: "swap",
  preload: true,
});

export const martianMono = localFont({
  src: [{ path: "./fonts/MartianMono-VariableFont_wdth,wght.ttf", weight: "100 900", style: "normal" }],
  variable: "--font-mono",
  display: "swap",
  preload: false,
});