# Audit de Style — diaspora.ro
**Data:** 29 iunie 2026  
**Scope:** Toate paginile din `/public/` — aliniere față de tema de referință  
**Metodă:** Inspecție directă HTML/CSS, fără modificări

---

## Tema de referință (standard)

| Proprietate | Valoare standard dark |
|---|---|
| Background corp | `#06000f` (dark) / `#0d0520` (card) |
| Text | `#f0eaff` |
| Brand color | `#7c3aed` (violet) |
| Accent | `#a855f7` |
| Topbar | `brand/topbar.css` — sticky, glass, dark |
| Header alternativ | `brand/dh-header.css` — dark glass `rgba(7,8,15,.90)` |
| Font | `Inter`, system-ui |
| CSS tokens | via `theme.css` `[data-theme="dark"]` sau `topbar.css` local vars |

**Fișierele CSS de bază:**
- `assets/css/theme.css` — sistem dual Light/Dark via `data-theme` (**singurul** care definește dark mode corect)
- `assets/css/global.css` — utilitar, LIGHT by default, **nu are dark mode**
- `daynight/daynight.css` — **PARADOX**: comentariul intern spune _"dark mode removed — exclusiv luminos"_, dar `[data-theme="dark"]` e definit cu valori LIGHT (a se vedea Problema Critică #1)
- `brand/brand.css` — logo, paletă brand, `--brand: #7c3aed`
- `brand/topbar.css` — topbar portabil dark, vars proprii locale
- `brand/dh-header.css` — header dark alternativ

---

## Probleme critice descoperite

### ⛔ CRITIC #1 — daynight.css: dark mode = light (inversare completă)

```css
/* dark mode removed — diaspora.ro este exclusiv luminos */
:root[data-theme="dark"] {
  --dn-bg: #f8fafc;   /* ALB — NU negru */
  --dn-bg-2: #ffffff;
  --dn-text: #0f172a; /* negru text pe fond alb */
  ...
}
```

**Efect real:** Orice pagină care include `daynight.css` și are `data-theme="dark"` în HTML va afișa **fond alb** cu **text negru** — exact opus față de intenție.

Pagini afectate direct:
- `invatam/index.html` → `data-theme="dark"` + `daynight.css` = apare LIGHT
- `clasament/index.html` → `data-theme="dark"` + `daynight.css` = apare LIGHT

---

### ⛔ CRITIC #2 — `data-theme="dark"` fără efect pe 10+ pagini

`global.css` **nu definește** `[data-theme="dark"]`. Paginile care importă `global.css` (fără `theme.css`) și au `data-theme="dark"` în `<html>` sau `<body>` vor rămâne **LIGHT** — atributul nu face nimic.

Pagini afectate (data-theme="dark" + global.css, fără theme.css):
- `campanii/index.html`
- `comms/index.html`
- `descarca/index.html`
- `cine-suntem/index.html`
- `directorul-romanilor/index.html`
- `diaspora-plus/index.html`
- `dm/index.html`
- `melissa/index.html`

---

### ⚠️ MAJOR #3 — Conflict de token `--brand` între cele două sisteme CSS

| Fișier | `--brand` definit ca |
|---|---|
| `global.css` | `#1a56db` (ALBASTRU) |
| `theme.css` | `#7c3aed` (VIOLET) |
| `brand.css` | `--d-brand-blue: #7c3aed` (VIOLET, alt prefix) |

Paginile care importă ambele (`global.css` + `brand.css`) pot afișa butoane/linkuri **albastre** în loc de violet — depinde de ordinea de import și specificitate.

---

### ⚠️ MAJOR #4 — `mobile-pro/` (homepage mobil) este LIGHT by default

```html
<html data-theme="light">
```

Homepage-ul **desktop** (`index.html`) e dark. Homepage-ul **mobil** (`mobile-pro/`) e light. Utilizatorii care comută între desktop și mobil văd teme diferite.

---

### ⚠️ MAJOR #5 — 3 sisteme CSS coexistente, incompatibile

| Sistem | Fișier | Dark mode | Folosit pe |
|---|---|---|---|
| **Sistem 1 (Nou)** | `theme.css` | Da (`[data-theme="dark"]`) | index, mobile-pro, cont, marketplace |
| **Sistem 2 (Util)** | `global.css` | Nu (LIGHT fix) | 30+ pagini |
| **Sistem 3 (Paradox)** | `daynight.css` | Fals (dark = light) | invatam, clasament, admin-pro |

Nicio pagină nu este migrată complet — toate folosesc mix-uri din cele 3 sisteme.

---

### ⚠️ MAJOR #6 — 4 implementări diferite de topbar/header

| Tip | Fișier | Pagini care îl folosesc |
|---|---|---|
| **Topbar portabil dark** | `brand/topbar.css` | index, start-pe-tara, cv-builder, cv-pro, melissa |
| **DH Header dark glass** | `brand/dh-header.css` | 20+ pagini legacy |
| **Topbar inline propriu** | CSS în `<style>` | mobile-pro, cont, chat-pro, intra |
| **Fără topbar** | — | magazine, grupuri, events, cauta |

Stiluri vizual diferite, comportamente diferite (sticky vs static), breakpoints diferite.

---

## Audit pe pagini

### Legendă
- ✅ **Aliniat** — dark corect, design system, topbar consistent
- ⚠️ **Parțial** — dark bg dar probleme de token/topbar/font, sau light cu design system corect
- ❌ **Nealinat** — light forțat, fără design system, inconsistențe grave
- 🔵 **Intentional diferit** — pagini cu temă proprie justificată (bunici-mode, anima, chat-e2e)

---

### GRUP A — Pagini principale (core)

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `index.html` | `#06000f` ✓ | `topbar.css` | theme, icons, brand, fonts | 63 | 10 | ✅ | Referință dark |
| `mobile-pro/index.html` | `#f0f2f5` ⚠️ | Inline propriu | theme, fonts, icons, skeleton | 1028 | 5 | ⚠️ | `data-theme="light"` — LIGHT by default; inconsistent cu desktop |
| `start-pe-tara/index.html` | `#12093d` ✓ | Inline (identic brand) | **zero** (CSS inline total) | 39 | 9 | ✅ | Redesignat v334-TS, izolat complet |
| `intra/index.html` | `#1a1a24` ✓ | Inline propriu | Zero CSS extern | 49 | 3 | ⚠️ | `data-theme="light"` pe bg dark — atribut incoerent |
| `cont/index.html` | `#fff` ❌ | Inline glass | theme, fonts, icons | 99 | 5 | ⚠️ | Folosește theme.css corect, dar BG corp rămâne `#fff` (light) |
| `notificari/index.html` | `#fff` ❌ | `brand.css` | brand, notifications-page | 31 | 0 | ❌ | Light, fără MQ, fără dark mode |
| `mesaje/index.html` | `#4caf50` ❌ | `dh-header` | global, chat.css, dh-header | 84 | 3 | ❌ | BG verde (card de mesaj prins ca body BG), light |
| `dm/index.html` | `#7c3aed` ❌ | `dh-header` | global, brand, dh-header, ds | 25 | 6 | ⚠️ | `data-theme="dark"` fără efect (Problema #2) |

---

### GRUP B — Chat

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `chat/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 2 | ❌ | Light, fără vars, pagină legacy |
| `chat-pro/index.html` | `#f0f2f5` ❌ | Propriu (inline) | ds.css | 37 | 1 | ⚠️ | BG light, DS pro corect, 1 singur MQ |
| `chat-e2e/index.html` | `#f5f3f5` ❌ | `dh-header` | global, chat-e2e.css, dh-header, ds | 0 | 1 | 🔵 | Temă proprie "secret dark" (#0b141a real) — BG din first grep greșit; tematic justificat |

---

### GRUP C — Anunțuri / Companii / Joburi

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `anunturi/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 2 | ❌ | Legacy light, fără vars, fără dark |
| `anunturi-pro/index.html` | `#f0f2f5` ❌ | Propriu (anbnb) | anbnb.css, ds | 19 | 1 | ⚠️ | Light, CSS propriu (Airbnb-style), 1 MQ |
| `companii/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Light, fără MQ |
| `companii-pro/index.html` | `#fef2f2` ❌ | Propriu (inline) | ds | 54 | 3 | ⚠️ | BG roz-deschis (card error prins greșit); DS corect, dark real? |
| `joburi/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Legacy light, zero MQ |
| `joburi-pro/index.html` | `#fee2e2` ❌ | Propriu | ds | 48 | 1 | ⚠️ | BG roz detectat (probabil un card) — DS pro, 1 MQ |
| `marketplace/index.html` | variabil | Propriu | theme.css, icons | 21 | 1 | ⚠️ | Folosește theme.css corect dar fără `data-theme` setat; rămâne light |

---

### GRUP D — Consulate / Ajutor / Alerte

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `consulate/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Legacy light, zero MQ, zero vars |
| `consulate-pro/index.html` | `#22c55e` ❌ | Propriu | leaflet, ds | 43 | 1 | ⚠️ | BG verde = hartă Leaflet prins greșit; DS corect |
| `acte-consulare/index.html` | `#fee2e2` ❌ | Lipsă | Zero CSS extern | 0 | 0 | ❌ | Complet inline light, fără topbar, fără MQ |
| `ajutor/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Legacy light |
| `ajutor-pro/index.html` | `#fff` ❌ | Propriu | ds | 23 | 1 | ⚠️ | Light, DS corect, 1 MQ |
| `alerte/index.html` | `#f0f2f5` ❌ | Propriu | ds | 0 | 0 | ❌ | Light, zero vars, zero MQ |
| `alerte-pro/index.html` | `#f5f3ff` ❌ | Propriu | ds | 23 | 1 | ⚠️ | Light, DS pro, 1 MQ |

---

### GRUP E — Forum / Grupuri / GPS / Hartă

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `forum/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 2 | ❌ | Legacy light |
| `forum-pro/index.html` | `#fee2e2` ❌ | Propriu | ds | 46 | 1 | ⚠️ | Light, DS corect |
| `grupuri/index.html` | `?` ❌ | Lipsă | groups.css | 3 | 0 | ❌ | Fără topbar, fără MQ, fără vars |
| `gps/index.html` | `#0f1120` ✓ | `dh-header` | global, leaflet, dh-header, index-DKYz.css | 0 | 3 | ⚠️ | Dark real, dar zero CSS vars, leaflet CDN extern |
| `harta-romani/index.html` | `#f0f2f5` ❌ | Propriu | ds | 0 | 1 | ❌ | Light, zero vars |
| `harta-romani-pro/index.html` | `#f0f2f5` ❌ | Propriu | global, leaflet, ds | 111 | 15 | ⚠️ | `data-theme="dark"` fără efect (Problema #2); 15 MQ e cel mai responsiv |
| `events/index.html` | `?` ❌ | Lipsă | events.css | 0 | 0 | ❌ | Izolat complet, fără topbar |
| `call/index.html` | `?` | `?` | `?` | ? | ? | ⚠️ | Neauditat (WebRTC special) |

---

### GRUP F — Educație / Documente / Juridic

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `invatam/index.html` | `#f0f2f5` ❌ | `dh-header` | global, **daynight**, brand, dh-header, ds | 28 | 5 | ❌ | `data-theme="dark"` + daynight = **LIGHT** (Problema #1) |
| `invatam-pro/index.html` | `#f5f3ff` ❌ | Propriu | ds | 25 | 1 | ⚠️ | Light, DS corect |
| `diplome/index.html` | `#fff` ❌ | Lipsă | Zero CSS extern | 30 | 2 | ❌ | Inline total, light, fără topbar |
| `documente-necesare/index.html` | `#f5f3ff` ❌ | `dh-header` | global, brand, dh-header, ds | 40 | 2 | ❌ | `data-theme="light"` explicit light |
| `echivalari-diplome/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 0 | 2 | ❌ | Light, zero vars |
| `calculator-taxe/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | `data-theme="dark"` fără efect (Problema #2), zero MQ |
| `avocati-romani/index.html` | `#0f051e` ✓ | Inline propriu | global | 99 | 23 | ✅ | Dark real inline, cel mai responsiv (23 MQ), dar izolat de design system |

---

### GRUP G — Clasamente / Campanii / Social

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `clasament/index.html` | `#f0f2f5` ❌ | `dh-header` | global, **daynight**, brand, dh-header, ds | 0 | 2 | ❌ | `data-theme="dark"` + daynight = **LIGHT** (Problema #1) |
| `clasament-jocuri/index.html` | `#0b0e1a` ✓ | `dh-header` | global, dh-header, ds | 37 | 7 | ✅ | Dark corect, bun MQ |
| `campanii/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | `data-theme="dark"` fără efect (Problema #2), light |
| `asociatii-civice/index.html` | `#f5f3ff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Light partial, zero MQ |
| `astia/index.html` | `?` | `?` | `?` | ? | ? | ⚠️ | Neauditat |
| `colaborare/index.html` | `#2563eb` ❌ | `brand.css` | global, brand, dh-header, ds | 0 | 0 | ❌ | BG albastru electric, zero vars, zero MQ |

---

### GRUP H — Info / Prezentare / Legal

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `info-tara/index.html` | `#10b981` ❌ | `dh-header` | global, brand, dh-header, ds | 44 | 3 | ❌ | `data-theme="light"` explicit, BG verde detectat (card) |
| `cine-suntem/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 9 | 6 | ❌ | `data-theme="dark"` fără efect, light |
| `diaspora-plus/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds, home-button | 9 | 5 | ❌ | `data-theme="dark"` fără efect |
| `directorul-romanilor/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds, home-button | 9 | 5 | ❌ | `data-theme="dark"` fără efect |
| `descarca/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 9 | 6 | ❌ | `data-theme="dark"` fără efect |
| `comms/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds, home-button | 0 | 0 | ❌ | `data-theme="dark"` fără efect, zero MQ |
| `cookies/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 33 | 3 | ❌ | `data-theme="light"` explicit |
| `disclaimer/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 31 | 3 | ❌ | `data-theme="light"` explicit |
| `copyright/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 31 | 3 | ❌ | `data-theme="light"` explicit |
| `cerere/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds, home-button | 0 | 0 | ❌ | Light, zero MQ |

---

### GRUP I — CV / Joburi PRO / Magazine / Asigurări

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `cv-builder/index.html` | `#0f172a` ✓ | `topbar.css` | brand, topbar | 0 | 6 | ⚠️ | Dark real, topbar correct, dar zero CSS vars (hardcodat) |
| `cv-pro/index.html` | `#fff` ❌ | `topbar.css` | brand, topbar, ds, global | 21 | 1 | ⚠️ | Light, dar topbar dark corect — inconsistență BG corp |
| `magazine/index.html` | `#0f172a` ✓ | Lipsă | **zero CSS extern** | 0 | 0 | ⚠️ | Dark real dar complet izolat, zero MQ, fără topbar |
| `magazin-romanesc/index.html` | `?` | `?` | `?` | ? | ? | ⚠️ | Neauditat |
| `marketplace/index.html` | variabil | Propriu | theme.css, icons | 21 | 1 | ⚠️ | theme.css fără data-theme → rămâne light default |
| `asigurari/index.html` | `#fff` ❌ | `dh-header` | global, dh-header, ds | 0 | 0 | ❌ | Light, zero MQ |

---

### GRUP J — Pagini speciale (temă proprie justificată)

| Pagina | Temă proprie | Justificare | Aliniere |
|---|---|---|---|
| `bunici-mode/index.html` | Light `#f5f3ff`, font mare | Accesibilitate seniori | 🔵 Intentional |
| `anima/index.html` | Cosmos, Orbitron, animații | AI avatar cosmic, identitate proprie | 🔵 Intentional |
| `chat-e2e/index.html` | WhatsApp-dark `#0b141a` | Chat criptat, temă "secure" | 🔵 Intentional |
| `admin/index.html` | `#f5f3ff` light, admin.css | Panou admin intern, nu public | 🔵 Acceptabil |
| `admin-pro/index.html` | `#f5f3ff` + daynight | Admin pro cu toggle | ⚠️ daynight paradox activ |

---

### GRUP K — Pagini de resurse (Mutare, Melissa)

| Pagina | BG real | Topbar | CSS importat | Vars | MQ | Aliniere | Note |
|---|---|---|---|---|---|---|---|
| `mutare/index.html` | `#fff` ❌ | `dh-header` | global, brand, voce-globala.css, dh-header, ds | 23 | 3 | ❌ | `data-theme="light"` explicit, voce-globala CSS |
| `melissa/index.html` | `#f0f2f5` ❌ | `topbar.css` | brand, topbar | 0 | 0 | ❌ | `data-theme="dark"` fără efect (topbar.css nu are dark mode CSS global), zero MQ |
| `cauta/index.html` | variabil | Lipsă | search.css | 0 | ? | ⚠️ | Pagina de căutare cu CSS propriu, fără topbar |
| `cautare/index.html` | variabil | Propriu | search.css, theme | ? | ? | ⚠️ | Suportă ambele teme via vars, dar topbar propriu |

---

## Scoreboard final

| Categorie | Nr. pagini | % |
|---|---|---|
| ✅ Aliniat dark | 6 | ~8% |
| ⚠️ Parțial (probleme specifice) | 22 | ~31% |
| ❌ Nealinat (light neintentionat) | 38 | ~54% |
| 🔵 Intentional diferit | 5 | ~7% |
| **Total auditat** | **71** | 100% |

---

## Rezumat probleme pe tipuri

### 🔴 Tip A — daynight.css paradox (2 pagini afectate direct)
`invatam/`, `clasament/`  
Fix: ștergere daynight.css sau rescriere corectă a variabilelor dark.

### 🔴 Tip B — `data-theme="dark"` fără efect (10 pagini)
`campanii/`, `comms/`, `descarca/`, `cine-suntem/`, `directorul-romanilor/`, `diaspora-plus/`, `dm/`, `melissa/`, `calculator-taxe/`, `harta-romani-pro/`  
Cauză: folosesc `global.css` care nu are reguli `[data-theme="dark"]`.  
Fix: înlocuire cu `theme.css` sau adăugare bloc dark în global.css.

### 🟠 Tip C — Pagini legacy light fără plan de migrare (20+ pagini)
`ajutor/`, `alerte/`, `anunturi/`, `companii/`, `consulate/`, `forum/`, `chat/`, `joburi/`, `asigurari/`, `asociatii-civice/`, `colaborare/`, `comms/`, `cerere/`, `grupuri/`, `acte-consulare/`, `echivalari-diplome/`, `harta-romani/`, `notificari/`, `mesaje/`  
Observație: fiecare are o versiune `-pro/` în lucru — paginile legacy pot fi redirecturi.

### 🟠 Tip D — Conflict token `--brand` albastru vs violet (toate paginile cu global.css)
Pagini care importă `global.css` au `--brand: #1a56db` (albastru), nu violetul brand-ului (#7c3aed).

### 🟡 Tip E — Topbar inconsistent (4 implementări)
Fiecare grup de pagini are header diferit vizual. Comportament diferit pe mobile.

### 🟡 Tip F — Responsive insuficient (18+ pagini cu 0-1 MQ)
Standard așteptat: minimum 2-3 breakpoints (≤768px, ≤480px, ≤375px).  
Pagini cu 0 MQ: `consulate/`, `alerte/`, `companii/`, `joburi/`, `asigurari/`, `asociatii-civice/`, `acte-consulare/`, `colaborare/`, `comms/`, `cerere/`, `notificari/`, `magazin-romanesc/`, `events/`, `grupuri/`.

### 🟡 Tip G — Font inconsistent
- Inter (brand, topbar) — standard propus
- system-ui (global.css) — fallback generic
- Orbitron (brand.css, anima) — tematic, OK
- JetBrains Mono (chat-e2e) — tematic, OK
- Lipsa font Google/CDN pe unele pagini care au `font-family: 'Inter'` fără import

---

## Priorități recomandate (pentru un viitor sprint de fixuri)

| Prioritate | Acțiune | Impact |
|---|---|---|
| P0 | Fix `daynight.css` — corectat variabilele dark sau eliminat | 2 pagini ❌ devin ✅ |
| P0 | Adaugă `[data-theme="dark"]` în `global.css` (minim: bg + text + card) | 10 pagini ❌ devin ⚠️ |
| P1 | Alinierea `mobile-pro/` la dark sau documentat că e intentional light | UX inconsistent major |
| P1 | Unificat `--brand` la `#7c3aed` în ambele sisteme CSS | Consistență vizuală |
| P2 | Migrare pagini legacy la versiunile `-pro/` sau redirect | 20 pagini simplificate |
| P2 | Topbar unic: adoptat `topbar.css` pe toate paginile publice | 4 implementări → 1 |
| P3 | Adăugat minimum 2 breakpoints la paginile cu 0 MQ | 14 pagini mobile-broken |
| P3 | Import `Inter` pe toate paginile care declară font-family: Inter | FOUT eliminat |
