Typography
Sistem cu 3 fonturi și 11 niveluri (T60–T12) plus speciale. Inter pentru UI și headings, Fraunces italic exclusiv pentru accent T-em și T-actor, Source Serif 4 exclusiv pentru body editorial blog (T20).
Clasele scurte .t60–.t12 sunt sursa de adevăr. Alias-urile vechi (.t-display, .t-h1, etc.) coexistă pentru compatibilitate dar mapează exact pe scala T.
Markup canonic · components/foundation-typography.json
Hero titlu
Section heading
Body baseline 14px.
12 480 LeiFonturi & roluri
UI, headings, toate elementele de interfață. Fontul de bază — nu se înlocuiește.
Exclusiv: accent italic T-em în headings + numele agenților AI (T-actor).
Exclusiv pe T20 — body text articole blog. Niciodată în UI.
Heading-uri — Inter 700, tracking negativ
clamp(36→60px) · line 1.10
tracking -0.04em
Hero landing
Contabilitate pe pilot automat.
clamp(32→48px) · line 1.08
tracking -0.03em
Capitol landing
+ Greeting Dublin
Salut, Eduard. Totul e ok azi.
clamp(28→40px) · line 1.15
tracking -0.03em
Titlu pagină internă
Cum alegi codul CAEN potrivit când îți deschizi SRL-ul.
clamp(24→32px) · line 1.19
tracking -0.02em
Subtitlu secțiune
landing / blog
Codul principal vs. codurile secundare
clamp(22→28px) · line 1.21
tracking -0.02em
Titlu card mare,
titlu modal
Plan activ · Documente în așteptare
Editorial & body
line 30px · tracking -0.01em
Lead editorial (prim paragraf blog sau descriere mare landing)
Codurile CAEN sunt acele patru cifre care decid, mai mult decât crezi, ce poate să factureze firma ta.
weight 400 · line 32px
EXCLUSIV body blog. Niciodată în UI.
Vestea bună: nu trebuie să devii expert. Trebuie să înțelegi ce e un cod principal, cum funcționează cele secundare și de ce e bună ideea să adaugi mai multe încă din prima.
line 24px · tracking -0.01em
Subhead card, titlu subsecțiune UI.
EXCLUSIV heading.
Detalii factură
UI & interface
line 24px
Texte de bază,
descrieri în carduri
Alina M. · pregătit pentru declarație. Trage o poză sau un PDF pentru factură nouă.
line 20px
Tabel, input, buton,
link, list-item
line 16px · +0.10em uppercase
Label KPI, cap tabel.
NU pe touch targets.
Cifre financiare — toate cu tabular-nums
line 1 · tracking -0.04em
tabular-nums
KPI principale (dashboard)
line 1 · tracking -0.02em
tabular-nums
Cifre secundare în carduri
line 1
Sufix după Tn40 („Lei")
line 1
Sufix după Tn28
line 1 · tabular-nums
Cifre mici inline:
timestamps, %, coduri
Încasare la 14:23 — creștere de +2.4% față de luna trecută. CUI: RO12345678.
Speciale
line 1 · +0.06em uppercase
Badge micro:
tip document, status
line 1 · tracking -0.01em
color: pink
Numele agenților AI în
ticker și listă De Făcut
line 1
Coduri tehnice (non-financiare)
DON'T
- Niciodată gradient pe text.
- Niciodată pink pe text body. Pink = fills, borders, accents. Excepție:
.t-actorși T-em pe headings. - Niciun token deprecat:
--c-graphite,--c-bg,--c-bg-deep,--c-paper,--c-night. Folosește tokens canonice.
T-em — accent editorial în T60/T48/T40
Pe 1–3 cuvinte per heading, cuvintele cu încărcătură emoțională sau temporală se scriu în Fraunces italic 700, culoare --c-pink. Letter-spacing identic cu heading-ul (Fraunces italic are tracking natural strâns — nu se reduce suplimentar).
Salut, Eduard. Totul e ok azi.
Contabilitate pe pilot automat, ținută de oameni reali.
3 facturi de decis.
Facturi de noiembrie.
Salut, Eduard. Totul e ok azi.
Tot heading-ul în italic — t-em e accent, nu corp.
Aprobă D394 înainte de depunere
Italic în UI / list-item — doar headings.
387.420 Lei
Italic pe cifre financiare — niciodată.
T-actor — ✓ corect vs ✗ greșit
Mihai a clasificat 37 documente. Vox monitorizează.
Mihai a clasificat 37 documente. Vox monitorizează.
Fraunces — caracterul iconic al UI-ului Bono
Fraunces apare exclusiv prin 2 clase din bono-ds.css. Niciodată inline font-family: 'Fraunces'. Niciodată altundeva.
| Clasă | Specificații | Folosire | Exemplu |
|---|---|---|---|
.t-em |
italic 700 color pink letter-spacing inherit |
Accent emoțional / temporal pe heading. Exclusiv .t60 / .t48 / .t40. Max 3 cuvinte per heading. |
Salut, Eduard.<em class="t-em"> |
.t-actor |
italic 500 13px / color pink tracking -0.01em |
Numele agenților AI (Iris, Vox, Mihai, Alina). NU pe weight 400 — italic subțire dispare pe non-Retina. |
Vox a clasificat 37 documente. <span class="t-actor"> |
De ce o singură convenție
Fraunces e caracterul iconic al brandului — pink + italic, în 2 contexte, atât. Orice altă utilizare îl diluează.
Înainte aveam font-family: 'Fraunces' inline în zeci de locuri, fiecare cu weight ales după memoria autorului. Rezultat: T-em cu 500 unde trebuia 700, T-actor cu 400 unde dispărea pe non-Retina, Fraunces pe contexte sub T40 unde nu trebuia să apară deloc.
Clasele .t-em și .t-actor elimină alegerea: e imposibil să greșești greutatea sau să folosești pe context greșit. Pre-push: grep -rn "font-family:.*Fraunces" *.html | grep -v "t-em\|t-actor" trebuie să fie gol.
Scala mobilă
T60–T28 și Tn40/Tn28 se reduc via clamp(). T24–T18 se reduc sub breakpoint-ul unic al DS-ului, @media (max-width: 1023.98px) (banda mobile). T16–T12 și toate specialele rămân identice.
| Clasă | Desktop | Mobil | Line mobil | Metodă |
|---|---|---|---|---|
| T60 | 60px | 36px | 40px (1.11) | clamp |
| T48 | 48px | 32px | 36px (1.13) | clamp |
| T40 | 40px | 28px | 32px (1.14) | clamp |
| T32 | 32px | 24px | 28px (1.17) | clamp |
| T28 | 28px | 22px | 26px (1.18) | clamp |
| T24 | 24px | 20px | 26px (1.30) | breakpoint |
| T20 | 20px | 18px | 30px (1.67) | breakpoint |
| T18 | 18px | 16px | 22px (1.38) | breakpoint |
| T16 | 16px | 16px | 24px | — |
| T14 | 14px | 14px | 20px | — |
| T12 | 12px | 12px | 16px | — |
| Tn40 | 40px | 28px | 1 | clamp |
| Tn28 | 28px | 22px | 1 | clamp |
Notă T20 mobil: line-height 30px (1.67) în loc de 28px — serif la 18px necesită mai mult spațiu pentru lectură lungă pe mobil.
Letter-spacing — tabel referință
Tracking negativ obligatoriu pe orice text peste 24px. Fără el, textul bold arată „desfăcut" și generic.
| Size | Tracking |
|---|---|
| ≥ 48px | -0.04em |
| 32–47px | -0.03em |
| 20–31px | -0.02em |
| 16–19px | -0.01em |
| ≤ 14px | 0 |
| Eyebrow ≤ 12px | +0.10em |
| Badge ≤ 10px | +0.06em |
11 reguli de utilizare
- Tracking negativ obligatoriu pe orice text peste 24px.
- Source Serif 4 exclusiv pe T20 (body blog) — niciodată în UI.
- Fraunces exclusiv pe T-em și T-actor — niciodată altundeva.
- tabular-nums obligatoriu pe toate cifrele financiare și T-num-inline.
- T-em — maxim 3 cuvinte per heading, exclusiv T60/T48/T40, culoare pink, weight 700.
- T-em letter-spacing — identic cu heading-ul de bază, nu se reduce suplimentar.
- T12 eyebrow — exclusiv label static, nu pe touch targets interactive.
- T-actor weight 500 — nu 400, italic subțire la 13px dispare pe non-Retina.
- Tn40 și Tn28 ambele weight 700 — diferența de size e suficientă pentru ierarhie.
- Nu folosim zecimale în dimensiuni de font (13.5px, 14.5px etc.).
- T60.tight — exclusiv pentru titluri single-line garantate, nu ca default.
Changelog v1.0 → v1.1
- T60 line-height: 1.07 → 1.10 (default), +
.t60.tightpentru single-line - T-actor weight: 400 → 500
- Tn28 weight: 600 → 700
- T-em weight: 600 → 700
- T-em letter-spacing: eliminat -0.005em suplimentar
- T20 mobil line-height: 28px → 30px
- Adăugat T-num-inline (14px / 500 / tabular-nums)
- Adăugat notă T12 — nu pe touch targets
- Adăugat notă T18 — exclusiv heading, nu emfază de paragraf