# TYPOGRAPHY_GUIDE.md

## 1. Type roles (three voices, strict casting)

| Role | Direction | Character | Used for |
|---|---|---|---|
| **Display / headings** | Modern grotesque with slight technical edge — *Space Grotesk-class* (alternatives in that register: General Sans, Hanken Grotesk) | Confident, engineered, not cold | H1–H3, nav, buttons, stat numbers |
| **Body** | Highly-legible humanist/neo-grotesque — *Inter-class* (alternatives: Source Sans 3, Figtree) | Invisible, effortless at 16–18px | Paragraphs, lists, form fields |
| **Mono (identity voice)** | *JetBrains Mono-class* (alternatives: IBM Plex Mono, Commit Mono) | The "console seasoning" | Section labels, chips, captions, metadata, diagram labels, footer |

Exact typeface licensing/loading = Phase 2. Design intent: **two families max loaded + mono**, variable weights preferred, `ø æ å` coverage mandatory in all three (Norwegian body text is first-class, not fallback).

## 2. Scale (1.25 major-third, 16px base)

| Token | Size / line-height | Weight | Tracking | Use |
|---|---|---|---|---|
| `display` | 61/1.05 (desktop) · 40/1.1 (mobile) | 600 | −0.02em | Hero name only |
| `h1` | 49/1.1 · 34/1.15 | 600 | −0.015em | Page titles |
| `h2` | 39/1.15 · 28/1.2 | 600 | −0.01em | Section titles |
| `h3` | 31/1.2 · 24/1.25 | 550 | 0 | Card titles, case-study subsections |
| `h4` | 20/1.35 | 550 | 0 | Minor headings |
| `body-lg` | 18/1.6 | 400 | 0 | Hero summary, TL;DR, lead paragraphs |
| `body` | 16/1.65 | 400 | 0 | Default prose |
| `small` | 14/1.5 | 400 | 0 | Secondary info, form hints |
| `mono-label` | 12/1.4 | 500 | +0.08em, UPPERCASE | Section labels (`01 — PROSJEKTER`), chips |
| `mono-meta` | 13/1.5 | 400 | 0 | Captions, dates, file sizes |

**Rule: uppercase + letter-spacing lives only in `mono-label`.** (The old site letter-spaced everything; the CV letter-spaces headings into A T S soup. Reserve the effect and it becomes identity instead of noise.)

## 3. Rhythm & measure

- Prose measure 60–72ch; hero summary ≤ 55ch.
- Space *before* a heading ≈ 2× space after (sections cohere downward).
- Baseline rhythm on the 8pt grid — line-heights above are chosen to land on it at 16px base.
- Norwegian headline audit: NO strings run ~10–15% longer and compounds don't hyphenate freely (`systemadministrasjon`); every headline layout must be tested with the NO string at the mobile breakpoint. Wrapping rule: allow hyphenation in body NO text, never in headings — reword instead.

## 4. Typographic details (the seniority tells)

- Real dashes (– —), curly quotes per language convention (EN “ ” · NO « »), non-breaking spaces before units and inside `8+ yrs`.
- Numbers in stats use tabular lining figures (mono or `tnum`).
- Links in prose: accent-coloured underline (2px offset), full colour+underline — never colour-only (a11y).
- Code/tech names inline (C#, .NET) stay in body face — mono inline is reserved for actual paths/commands in case studies.
- Focus states use a 2px accent outline + 2px offset, same in both themes.
