Design system · v1.0.0 · 15 oct 2026

Baza comună a proiectelor BGN

Structura și mecanica componentelor vin din Edge-33, culorile și fonturile din calificata.ro, iar ierarhia textului din Notion. Totul stă într-un singur fișier: bgn-33.css.

Din Edge-33

Cum e construită o componentă: numele claselor, variantele, mărimile, stările, ținta de atins pe telefon.

Din calificata.ro

Albastrul, neutrele reci, colțurile rotunde, sistemul plat. Inter, Fraunces drept și JetBrains Mono.

Din Notion

Puține mărimi de text, diferența o fac grosimea și cele trei nuanțe. Tema de noapte, liste dense, pagini de citit.

Cum îl folosești într-un proiect
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Fraunces:opsz,wght@9..144,400..700&family=JetBrains+Mono:wght@400;500;600&display=swap">
<link rel="stylesheet" href="bgn-33.css">       <!-- o singură copie, în rădăcina proiectului -->
<link rel="stylesheet" href="brand.css">        <!-- opțional: doar culoarea principală a proiectului -->

Culori

Paleta calificata. Fiecare culoare are un rol, iar valorile se schimbă singure în tema de noapte. Codurile de mai jos se citesc din pagină, deci arată tema curentă.

Culoarea principală — singurul strat pe care un proiect îl schimbă
Suprafețe
Text — trei nuanțe, ca la Notion
Borduri
Stări — fill pentru puncte și iconițe, text pentru ce se citește
Etichete de categorie (paleta Notion) — pentru proiecte și tipuri, nu pentru stări
PersonalArhivăContabilitateSOLORobincalificatamini-meIdeiUrgent
.tag.gray · .brown · .orange · .yellow · .green · .blue · .purple · .pink · .red

Tipografie

Trei fonturi, fiecare cu un singur rol. O singură scară, iar numele clasei e mărimea în pixeli. Site-urile folosesc treptele mari, aplicațiile se opresc la 28.

Aa
Inter

Tot textul: titluri, paragrafe, butoane. 400 · 500 · 600 · 700.

Aa
Fraunces, drept

Doar pe 1–4 cuvinte dintr-un titlu, prin <em>. Niciodată înclinat.

0,9
JetBrains Mono

Cifre: sume, ore, coduri, ID-uri. Cifrele au aceeași lățime, deci se aliniază în coloane.

Scara
.t6060 · 700 · titlul hero
Semnezi în două minute
.t4848 · 700 · secțiune de site
Cum funcționează
.t3636 · 700
Prețuri simple
.t2828 · 700 · titlul paginii în aplicație
Documentele mele
.t2424 · 700 · titlu de formular
Creează un cont
.t2020 · 600 · secțiune în aplicație
Semnate luna asta
.t1818 · 400 · fog · deschidere
Încarci documentul, îți verifici identitatea și semnezi.
.t1616 · 600 · titlu de card
Contract de închiriere
.t1515 · 400 · text de bază
Documentul semnat are aceeași valoare juridică cu unul semnat de mână.
.t14 · .t1314 și 13 · text dens
Tabele, liste, formulare. Și textul de sub ele.
.t12 · .t1112,5 și 11,5 · fog · meta
Încărcat azi, 14:32 · PDF · 240 KB
Ierarhia, ca la Notion: grosime și nuanță, nu mărime

Contract de prestări servicii

Trimis spre semnare către Ana Ionescu și încă două persoane.

Expiră pe 22 oct 2026 dacă nu semnează toți.

ID REQ-2026-0412

.t-strong (600, ink) · text (400, ink) · .t-fog (secundar) · .t-mist (terțiar, nu pentru text de citit)
Regula Fraunces
Cel mai simplu mod de a semna cu semnătură calificată

Corect: drept, grosimea titlului, +2px, culoarea principală.

Cel mai simplu mod de a semna cu semnătură calificată

Greșit: înclinat (stilul Edge, nu al nostru).

Cifre
1.250,00lei
.num.lg — sume mari
5,00lei
.num
REQ-2026-0412
.mono — coduri, ID-uri
14:32
ore
Format românesc: 1.250,00 lei · 9 oct 2026, 14:32
Eticheta de deasupra titlului
Pasul 2 din 3

Formă și spațiu

Colțuri rotunde, niciodată drepte pe ce se apasă. Sistemul e plat: separarea o fac bordurile fine și fundalul, nu umbrele.

Colțuri
--r-xs 4
checkbox
--r-sm 6
iconiță
--r-md 10
input, rând
--r-lg 16
card
--r-xl 24
card mare, modal
--r-pill
buton, badge
Spațiere — 4 · 8 · 12 · 16 · 24 · 32 · 40 · 64 · 96
--sp-1
--sp-2
--sp-3
--sp-4
--sp-6
--sp-8
--sp-10
--sp-16
--sp-24
Umbre — una singură
Plat

Implicit, peste tot.

.card.lifted

Doar cardul principal dintr-un hero (de exemplu, încărcarea documentului pe landing).

Iconițe

Lucide, contur, SVG pus direct în pagină, cu class="ic". Culoarea vine din text, mărimea din clasă. Fișierele sunt în assets/icons/. Fără emoji și fără simboluri ca ✓ sau ✕ în interfață.

.ic.sm 14
.ic 16
.ic.lg 20
.ic.xl 24
.ic-box

Butoane

.btn plus o variantă și, dacă e cazul, o mărime. Un singur buton principal pe ecran: acțiunea pe care o așteptăm de la om.

Variante
.primary · .secondary · .outline · .ghost · .danger · .danger.outline · .link
Mărimi, iconițe, stări
.lg 48 · implicit 40 · .sm 32 · .xs 26 · .icon-only · .full · .icon-btn (acțiune pe rând de listă). Pe telefon, butoanele cresc la 44px.

Formulare

Eticheta deasupra, explicația dedesubt. Eroarea apare lângă câmp, în cuvinte simple, și spune ce să facă omul.

Îți trimitem documentul semnat aici.
Numărul are 10 cifre. Verifică-l, te rog.
Codul primit prin SMS
Notificări pe email
Mod compact
.field · .label · .input (.lg, .error, :disabled) · .select · textarea.input · .hint · .error-msg · .otp · .check-item · .radio-item (.card) · .switch

Etichete

Patru feluri, fiecare cu rolul lui. Badge-ul are fundal propriu, deci nu se pune în interiorul unui card (fără cutii în cutii); acolo se folosește starea, care e doar text cu punct.

CiornăNouSemnatExpiră curândRespinssm
.badge — stare scurtă, de sine stătătoare
SemnatÎn semnareAșteaptă plataEșuatCiornă
.status — starea într-un rând de listă sau de tabel
1 document · 5 lei3 semnatari
.chip — context scurt
.pill — filtru pornit / oprit (apasă)

Carduri și suprafețe

Albe, cu bordură fină și colțuri de 16. În aplicație stau pe fundalul gri deschis, pe site pe alb.

.card
Suprafața de bază
Activ

Padding 24, colț 16, bordură --c-rule.

.card.tonal

Grupare discretă, fără bordură. Pe alb e gri deschis.

Sumar plată
Semnătură calificată × 15,00 lei
TVA inclus0,80 lei
Total5,00 lei
.inset · .sum-row(.total)
Pasul 1 din 3

Creează un cont

Durează un minut.

sau
.card.xl — formular de sine stătător (cont, plată)

Liste și tabele

Rânduri dense, separate de linii fine, ca la Notion. Metadatele sunt text simplu pe un rând, nu bule colorate.

Listă
Contract de închiriere — Str. Lipscani 12
Ana Ionescu·2 pagini·azi, 14:32
Semnat
Împuternicire ONRC
2 din 3 au semnat·expiră mâine
În semnare
Declarație pe propria răspundere
încărcat ieri
Ciornă
.card.flush › .list › .list-row (.main .title .meta-line · .status · .actions)
Tabel
DocumentDataStareSumă
Contract de închiriere9 oct 2026, 14:32Semnat5,00 lei
Împuternicire ONRC8 oct 2026, 10:05În semnare15,00 lei
Act adițional nr. 32 oct 2026, 09:12Eșuat0,00 lei
.tbl · .name · .date · .num · .right — antet pe --c-inset, sume aliniate la dreapta, mono

Feedback

Alerta rămâne până se rezolvă cauza. Mesajul de colț (toast) dispare singur, deci se folosește doar când omul nu trebuie să facă nimic. O eroare nu e aproape niciodată toast.

Documentul are 2 pagini
Semnătura se pune pe ultima pagină.
Prima semnătură e gratuită. După aceea, 5 lei pe document.
Document semnat
Ți-am trimis copia pe email.
Buletinul expiră în 12 zile. După aceea nu mai poți semna până nu îl reînnoiești.
Plata n-a trecut
Banca a refuzat cardul. Încearcă alt card sau scrie-ne.
.alert.neutral · .accent · .success · .warn · .error
.toast-stack › .toast(.success)
Se încarcă documentul64%
.spinner
Notă în text, fără ton de stare. Bună pentru explicații în pagini de citit.
.callout
Nimic aici încă
Încarcă primul document și îl semnezi în două minute.
.skel — încărcare · .empty — gol, scris ca îndemn

Modal și foaie de jos

Modalul cere o decizie înainte de a continua. Pe telefon, același rol îl are foaia de jos (vezi secțiunea Mobil).

.scrim › .modal (.modal-title .modal-text .modal-actions .modal-close)

Încărcare de fișiere

Zona de încărcare, din calificata, și rândul fiecărui fișier adăugat.

contract-inchiriere.pdf
2 pagini · 240 KB
anexa-1.pdf
.upload-zone (.drag) · .file-row

Carcasa aplicației

Meniu lateral alb de 240px și conținutul pe fundalul gri deschis. Sub 1024px meniul dispare, iar navigarea trece în bara de jos. Pagina pe care o citești acum e chiar carcasa asta.

Documente

24 de documente, 6 așteaptă semnături.

Contract de închiriere
azi, 14:32
Semnat
Împuternicire ONRC
2 din 3 au semnat
În semnare
.app-shell › .sidebar (.brand .nav-label .nav-item .side-user) + .app-main › .page-head (.p-sub .p-actions)

Mobil

Sub 640px textul de bază crește la 16px (iOS nu mai face zoom pe câmpuri), tot ce se apasă are cel puțin 44px, iar nimic nu stă sub notch sau sub bara de jos.

Sincronizat

De validat

Afirmațiile din profilul tău, pe rând.

Progres4 din 20
Decizii·3 dovezi

Prefer să vadă clientul un prototip înainte de orice plan tehnic.

„Al doilea livrabil e prototipul pe care îl atinge."

Profil

Lucrează pe telefon, între alte lucruri.
validat·5 dovezi
Vrea întâi esența, apoi contextul.
2 dovezi
Ce e greșit?
.m-shell · .m-top · .m-title · .m-sub · .m-body · .tabbar › .tab-item · .scrim + .sheet (.sheet-grip .sheet-title) · .vcard · .pitem · .netstat

Site

Pentru landing și prezentare: bară de navigare, secțiuni cu ritm de 96px, o secțiune închisă pentru subsol sau pentru banda de încredere.

Semnătură electronică calificată

Cel mai simplu mod de a semna un document

Încarci documentul, îți verifici identitatea și semnezi. Doar 5 lei pe document, fără abonament.

Valoare juridică deplină

Art. 25(2), Regulamentul (UE) nr. 910/2014 — eIDAS

Începe acum
.site-nav (.inner .brand .links .right) · .container · .sec (.tonal) · .sec-head · .sec-dark

Document

O pagină de citit, în ritmul Notion: coloană de 680px, text de 16px cu spațiu între rânduri.

Cum semnezi un contract

Trei pași, cam două minute. Ai nevoie de buletin și de telefon.

Înainte să începi

Semnătura calificată are aceeași valoare juridică cu cea de mână. O emite un furnizor autorizat, după ce îți verifică identitatea prin video.

Dacă documentul are mai mulți semnatari, fiecare primește linkul lui pe email.

Pașii

  1. Încarci documentul în format PDF.
  2. Îți verifici identitatea cu buletinul.
  3. Semnezi cu codul primit prin SMS.
„Încarci documentul și semnezi." Atât.

Versiunea nouă a textului: plata se face la final înainte de semnare.

.doc (h1 h2 h3 p ul ol blockquote .lead) · .callout · .diff-ins · .diff-del

Modele din proiecte

Componente născute într-un proiect și păstrate aici, ca să nu se reinventeze. Dacă un model apare în al doilea proiect, devine componentă.

Trimite oferta pentru proiectul nou
calificata·30m·depășit 21 aug
Verifică facturile din septembrie
Personal·15m
.task-card — Robin

bgn-33 v1.0.0 · sursa: bgn-33.css · reguli și istoric: cheatsheet.md · repo bgn3375/bgn-33-ds