Typography
The pairing
Display
Aa
Bangel Regular
Licensed. OSS fallback: Nunito.
Body
Aa
Helvetica Neue
Licensed. OSS fallback: Inter.
Rule of thumb: all headlines and titles → Bangel. All body, supporting text, captions, UI → Helvetica Neue.
Because Bangel is light in weight at large sizes, establish a distinct size difference between headlines and body — at least 2× the body size for display.
Hierarchy
| Role | Face | Weight / size guidance |
|---|---|---|
| Main Headline | Bangel Regular | 900 / clamp(48px, 7vw, 96px); line-height 0.98; tracking -0.025em |
| Subheadline | Helvetica Neue Regular | 400 / clamp(20px, 1.6vw, 24px); line-height 1.4 |
| Secondary headline | Helvetica Neue Light | 300 / clamp(28px, 3vw, 40px); line-height 1.15 |
| Body | Helvetica Neue Regular | 400 / 16–17px / line-height 1.55 |
| Long-form body | Helvetica Neue Thin | 200 / 14–15px / muted color |
| Eyebrow / kicker | Helvetica Neue Regular | 700 / 12px / tracking 0.18em / uppercase / Tiger Flame |
Loading the fonts
In production, license + self-host Bangel Regular and Helvetica Neue. For the portal and the hifi mockup we load the OSS fallbacks from Google Fonts:
<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=Nunito:wght@400;600;700;800;900&family=Inter:wght@300;400;500;600;700&display=swap"
rel="stylesheet"
/>:root {
--orp-font-display: 'Bangel Regular', 'Nunito', system-ui, sans-serif;
--orp-font-body: 'Helvetica Neue', 'Inter', system-ui, sans-serif;
}