/* tema.css — identitatea vizuală a PRODUSULUI: tema LUMINOASĂ DMA (`F1-02`), peste `VI-F`.
 * Fundal deschis, carduri aerisite, colțuri rotunjite, butoane cu stări vizibile — pe paleta și
 * fonturile site-ului datamanagementandanalytics.ro (măsurate de Cowork, 01.10.2026).
 *
 * DE CE UN FIȘIER SEPARAT, și nu valori schimbate în `style.css` (neschimbat de la `VI-F`):
 * `style.css` e al AMONTELUI și e atins des — orice valoare schimbată acolo ar conflicta la fiecare
 * preluare. Fișierul ăsta nu există în amonte, deci nu poate conflicta NICIODATĂ, iar `style.css`
 * rămâne byte-identic — verificat mecanic de `tests/test_vi_f_tema.py::test_ac1_*`.
 *
 * FĂRĂ `!important`, nicăieri. Încărcat DUPĂ `style.css`, bate la specificitate egală. Unde nu se
 * poate suprascrie fără `!important`, regula e într-un `style="..."` din șablon: alea sunt listate
 * în raportul F1-02, nereparate aici (felia nu atinge șabloanele).
 *
 * CE NU SE ATINGE: verdele de succes, roșul de eroare, chihlimbarul de avertisment. Nu sunt
 * identitate, sunt SEMNAL — fixate de `test_ac4_*`. Roșul butoanelor de pericol e același roșu de
 * semnal din `style.css` (`#b91c1c`, al lui `.menu-item-danger`), nu o nuanță nouă.
 *
 * O CULOARE = O LINIE: toate valorile stau în `:root` de mai jos; regulile folosesc doar `var()`.
 *
 * CONTRAST — măsurat, nu ales cu ochiul. Fiecare pereche text/fundal (și fiecare element non-text
 * care poartă o stare) e DECLARATĂ mai jos, pe un rând `@contrast <nume> <text> <fundal> <prag>`;
 * `tests/test_f102_contrast_tema.py` le citește din fișierul ăsta, rezolvă `var()` din `:root`,
 * calculează raportul WCAG și cere ca fiecare culoare folosită în `color:`/`background:` să
 * apară într-o pereche declarată. Pragurile: 4.5 text normal, 3 text mare și non-text (AA).
 * Valorile măsurate sunt în comentariul de la capătul rândului și în raportul F1-02.
 *
 *   @contrast text-pe-pagina             --dma-text          --dma-bg            4.5  (15.10)
 *   @contrast text-pe-card               --dma-text          --dma-surface       4.5  (16.21)
 *   @contrast text-stins-pe-pagina       --dma-muted         --dma-bg            4.5  (5.76)
 *   @contrast text-stins-pe-card         --dma-muted         --dma-surface       4.5  (6.19)
 *   @contrast antet-tabel                --dma-muted         --dma-bg            4.5  (5.76)
 *   @contrast rand-tabel-hover           --dma-text          --dma-row-hover     4.5  (15.47)
 *   @contrast meniu-inactiv              --dma-text          --dma-surface       4.5  (16.21)
 *   @contrast meniu-hover                --dma-text          --dma-hover         4.5  (14.51)
 *   @contrast meniu-activ                --dma-accent        --dma-accent-soft   4.5  (5.09)
 *   @contrast meniu-activ-indicator      --dma-accent        --dma-accent-soft   3    (5.09)
 *   @contrast meniu-activ-indicator-bara --dma-accent        --dma-surface       3    (5.79)
 *   @contrast marca                      --dma-text          --dma-surface       4.5  (16.21)
 *   @contrast iconita-de-marca           --dma-accent        --dma-surface       3    (5.79)
 *   @contrast logo-text                  --dma-accent        --dma-surface       4.5  (5.79)
 *   @contrast legatura-pe-card           --dma-accent        --dma-surface       4.5  (5.79)
 *   @contrast legatura-pe-pagina         --dma-accent        --dma-bg            4.5  (5.39)
 *   @contrast legatura-hover             --dma-accent-hover  --dma-surface       4.5  (7.35)
 *   @contrast legatura-hover-pe-pagina   --dma-accent-hover  --dma-bg            4.5  (6.84)
 *   @contrast buton-principal            --dma-on-accent     --dma-accent        4.5  (5.79)
 *   @contrast buton-principal-hover      --dma-on-accent     --dma-accent-hover  4.5  (7.35)
 *   @contrast buton-principal-apasat     --dma-on-accent     --dma-accent-press  4.5  (9.22)
 *   @contrast inel-de-focus-pe-card      --dma-accent        --dma-surface       3    (5.79)
 *   @contrast inel-de-focus-pe-pagina    --dma-accent        --dma-bg            3    (5.39)
 *   @contrast buton-secundar             --dma-accent        --dma-surface       4.5  (5.79)
 *   @contrast buton-secundar-hover       --dma-accent        --dma-accent-soft   4.5  (5.09)
 *   @contrast buton-secundar-contur      --dma-accent        --dma-surface       3    (5.79)
 *   @contrast buton-neutru               --dma-text          --dma-surface       4.5  (16.21)
 *   @contrast buton-neutru-hover         --dma-text          --dma-hover         4.5  (14.51)
 *   @contrast buton-pericol              --dma-danger        --dma-surface       4.5  (6.47)
 *   @contrast buton-pericol-hover        --dma-danger        --dma-danger-soft   4.5  (5.91)
 *   @contrast pastila-de-status          --dma-accent        --dma-accent-soft   4.5  (5.09)
 *   @contrast paginare                   --dma-accent        --dma-accent-soft   4.5  (5.09)
 *   @contrast paginare-curenta           --dma-on-accent     --dma-accent        4.5  (5.79)
 *   @contrast antet-calendar             --dma-text          --dma-accent-soft   4.5  (14.24)
 *   @contrast chenar-camp                --dma-field-border  --dma-surface       3    (3.45)
 *   @contrast chenar-camp-pe-pagina      --dma-field-border  --dma-bg            3    (3.21)
 *   @contrast chenar-camp-focus          --dma-accent        --dma-surface       3    (5.79)
 *   @contrast comutator-limba            --dma-text          --dma-surface       4.5  (16.21)
 *   @contrast comutator-limba-activ      --dma-on-accent     --dma-accent        4.5  (5.79)
 *   @contrast avatar                     --dma-accent        --dma-accent-soft   3    (5.09)
 *
 * MOD ÎNTUNECAT: NU e în felia asta, deliberat. Condiția din cerere era „doar dacă încape fără
 * stiluri inline noi"; nu încape: șabloanele au zeci de `style="color:#475569|#64748b|#94a3b8"`
 * (etichete, indicii, subtitluri) care, pe bleumarinul `#0B2237`, ar cădea la 2.13 / 3.40 — sub
 * AA, fără ca vreo regulă de aici să le poată bate (inline > foaie). Lista, în raportul F1-02.
 */

/* ── 0. Fonturile: IBM Plex, GĂZDUITE LOCAL (fără CDN: confidențialitate + funcționare offline) ─
   Fișierele sunt cele „complete" din pachetele oficiale `@ibm/plex-sans` 1.1.0 și
   `@ibm/plex-serif` 2.0.0 (npm), neschimbate; licența SIL OFL 1.1 e alături, în
   `static/fonts/OFL.txt`. „Complete", nu subseturile împărțite pe `unicode-range`: românescul
   are nevoie de ă (subsetul Latin3) ȘI de ș/ț (Latin2), iar un singur fișier per greutate e mai
   simplu de ținut corect decât trei subseturi care se suprapun.
   `?v=` = versiunea pachetului de fonturi: `/static/` se servește `immutable` pe un an (CS-N106),
   deci un font actualizat trebuie să aibă altă adresă. */
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400;font-display:swap;src:url("fonts/IBMPlexSans-Regular.woff2?v=1.1.0") format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/IBMPlexSans-SemiBold.woff2?v=1.1.0") format("woff2")}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:700;font-display:swap;src:url("fonts/IBMPlexSans-Bold.woff2?v=1.1.0") format("woff2")}
@font-face{font-family:"IBM Plex Serif";font-style:normal;font-weight:600;font-display:swap;src:url("fonts/IBMPlexSerif-SemiBold.woff2?v=2.0.0") format("woff2")}

/* ── 1. Variabilele: SINGURUL loc cu valori de culoare ─────────────────────────────────────── */
:root{
  /* identitatea DMA, măsurată pe site */
  --dma-navy:#0E2233;
  --dma-navy-deep:#0B2237;
  --dma-blue:#0A6AA6;
  --dma-sky:#4FC3F7;
  --dma-teal:#5EEAD4;
  --dma-steel:#B9CBD8;
  --dma-line:#DEE5EB;
  --dma-mist:#F5F7F9;
  --dma-slate:#4B6478;
  /* rolurile — regulile folosesc DOAR astea */
  --dma-bg:var(--dma-mist);
  --dma-surface:#FFFFFF;
  --dma-text:var(--dma-navy);
  --dma-muted:var(--dma-slate);
  --dma-border:var(--dma-line);
  --dma-accent:var(--dma-blue);
  --dma-accent-hover:#085A8D;      /* derivat: albastrul principal, mai închis (7.35 cu alb) */
  --dma-accent-press:#074B76;      /* derivat: starea apăsată (9.22 cu alb) */
  --dma-accent-soft:#E6F2FA;       /* pastila meniului activ, pastilele de status */
  --dma-on-accent:#FFFFFF;
  --dma-hover:#EEF3F7;             /* hover discret pe meniu și pe butoanele neutre */
  --dma-row-hover:#F7FAFC;         /* hover pe rând de tabel */
  /* chenarul CÂMPURILOR: `#B9CBD8` ar da 1.67 pe alb — sub cei 3:1 ceruți unui element non-text
     care îți arată UNDE e câmpul. `#768DA0` e cel mai deschis gri-albăstrui care ține 3:1 și
     pe fundalul paginii (3.21), nu doar pe card (3.45). */
  --dma-field-border:#768DA0;
  --dma-danger:#b91c1c;            /* roșul de semnal existent (`.menu-item-danger`), nu unul nou */
  --dma-danger-soft:#fef2f2;       /* fundalul existent al pericolului la hover (`style.css`) */
  --dma-shadow:0 1px 2px rgba(14,34,51,.05),0 4px 14px rgba(14,34,51,.06);
  --dma-shadow-lift:0 6px 16px rgba(10,106,166,.22);
  --dma-ring:0 0 0 3px rgba(10,106,166,.25);
  --dma-radius-card:12px;
  --dma-radius-btn:10px;
  --dma-font-sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --dma-font-serif:"IBM Plex Serif",Georgia,"Times New Roman",serif;
  --dma-tranzitie:150ms ease;
}

/* ── 2. Pagina și tipografia ──────────────────────────────────────────────────────────────── */
body{font-family:var(--dma-font-sans);background:var(--dma-bg);color:var(--dma-text)}
header h1,.auth-card h1,.auth-card h2{font-family:var(--dma-font-serif);font-weight:600;letter-spacing:-.01em;color:var(--dma-text)}
header p{color:var(--dma-muted)}
h2,h3{color:var(--dma-text)}
/* Legăturile SIMPLE (fără clasă). Cu clasă înseamnă că `style.css` le-a dat deja un rol — buton de
   rând verde, export, paginare — iar un `a:hover` general le-ar fi înălbăstrit textul alb. */
a:not([class]){color:var(--dma-accent)}
a:not([class]):hover{color:var(--dma-accent-hover)}

/* ── 3. Bara laterală, luminoasă ──────────────────────────────────────────────────────────── */
.sidebar{background:var(--dma-surface);color:var(--dma-text);border-right:1px solid var(--dma-border)}
.brand-icon{color:var(--dma-accent)}
/* F0-01 — logo TEXT (`config.APP_LOGO_TEXT`), până la un fișier de logo. Pe bara închisă era
   `#ccfbf1`; pe bara ALBĂ ar fi dat 1.1 — invizibil. Text și chenar pe accent (5.79 pe alb, AA). */
.brand-logo{color:var(--dma-accent);border:1.5px solid currentColor;border-radius:6px;padding:2px 6px;font-weight:800;font-size:13px;letter-spacing:.08em}
.brand-text{font-family:var(--dma-font-serif);font-weight:600;color:var(--dma-text)}
.brand-text small{font-family:var(--dma-font-sans)}
.brand-text small,.user-details small,.nav-group-toggle{color:var(--dma-muted)}
.nav-group-toggle:hover{color:var(--dma-text)}
nav a,.logout{color:var(--dma-text);transition:background-color var(--dma-tranzitie),color var(--dma-tranzitie)}
nav a:hover{background:var(--dma-hover);color:var(--dma-text)}
/* Meniul activ: „pastilă" pe albastru foarte deschis + indicator lateral. Indicatorul e cel care
   poartă starea (5.09 față de pastilă, 5.79 față de bară) — pastila singură (1.1 față de alb) n-ar
   ajunge ca semnal non-text. */
nav a.active{position:relative;background:var(--dma-accent-soft);color:var(--dma-accent);font-weight:600}
nav a.active::before{content:"";position:absolute;left:4px;top:9px;bottom:9px;width:3px;border-radius:3px;background:var(--dma-accent)}
.sidebar-bottom{border-top-color:var(--dma-border)}
.user-details strong{color:var(--dma-text)}
.user-avatar{background:var(--dma-accent-soft);color:var(--dma-accent)}
.lang-switch a{color:var(--dma-text);border-color:var(--dma-field-border);transition:background-color var(--dma-tranzitie)}
.lang-switch a:hover{background:var(--dma-hover)}
.lang-switch a.active{background:var(--dma-accent);color:var(--dma-on-accent);border-color:var(--dma-accent)}

/* ── 4. Suprafețe: carduri, panouri, ferestre ─────────────────────────────────────────────── */
.card,.panel{background:var(--dma-surface);border:1px solid var(--dma-border);border-radius:var(--dma-radius-card);box-shadow:var(--dma-shadow)}
.card span{color:var(--dma-muted)}
.card strong{color:var(--dma-text)}
/* Cardurile tabloului de bord sunt legături: se ridică discret la hover, ca butoanele. */
a.card{transition:box-shadow var(--dma-tranzitie),transform var(--dma-tranzitie),border-color var(--dma-tranzitie)}
a.card:hover{transform:translateY(-1px);border-color:var(--dma-steel);box-shadow:var(--dma-shadow-lift)}
.auth-card{border:1px solid var(--dma-border);border-radius:var(--dma-radius-card);box-shadow:var(--dma-shadow)}
.modal-box{border-radius:var(--dma-radius-card)}
.actions-menu{border-color:var(--dma-border);border-radius:var(--dma-radius-card)}

/* ── 5. Tabele: antet discret, rânduri aerisite, hover pe rând ────────────────────────────── */
th,td{padding:13px 14px;border-bottom-color:var(--dma-border)}
th{color:var(--dma-muted);font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.04em}
thead th{background:var(--dma-bg);box-shadow:inset 0 -1px 0 var(--dma-border)}
tbody tr{transition:background-color var(--dma-tranzitie)}
tbody tr:hover{background:var(--dma-row-hover)}
.lot-rezumat,th.sortabil a:hover,th.sortat{color:var(--dma-accent)}
/* Textele mici și stinse din `style.css` (`#64748b`, `#94a3b8`) dau 4.43 și 2.39 pe fundalul
   paginii — sub AA. Trec pe griul-text DMA, măsurat (5.76 pe pagină, 6.19 pe card). */
.pagination .info,.pagination .page-filtrat,th.sortabil .sort-cheie{color:var(--dma-muted)}

/* ── 6. Câmpuri ───────────────────────────────────────────────────────────────────────────── */
input,select,textarea,.search-input{border-color:var(--dma-field-border);border-radius:var(--dma-radius-btn);color:var(--dma-text)}
textarea{padding:12px;border:1px solid var(--dma-field-border);background:var(--dma-surface);font-family:inherit;font-size:inherit}
input:focus,select:focus,textarea:focus,.search-input:focus{outline:none;border-color:var(--dma-accent);box-shadow:var(--dma-ring)}

/* ── 7. Butoane ───────────────────────────────────────────────────────────────────────────── */
/* PRINCIPAL = orice `<button>` fără clasă proprie (cum le scriu șabloanele), plus clasele care
   chiar înseamnă „principal". Butoanele cu identitate proprie în `style.css` (meniu, kebab,
   fereastra de confirmare, filtre) își păstrează rolul — de aceea ridicarea și umbra se pun pe
   lista explicită, nu pe `button:hover`, care ar fi atins și titlurile de grup din meniu. */
button{background:var(--dma-accent);color:var(--dma-on-accent);border-radius:var(--dma-radius-btn);font-family:inherit;font-weight:600;transition:background-color var(--dma-tranzitie),box-shadow var(--dma-tranzitie),transform var(--dma-tranzitie),color var(--dma-tranzitie)}
:is(button:not([class]),.btn-primary,.btn-principal,.filter-btn):hover{background:var(--dma-accent-hover);transform:translateY(-1px);box-shadow:var(--dma-shadow-lift)}
:is(button:not([class]),.btn-primary,.btn-principal,.filter-btn):active{background:var(--dma-accent-press);transform:translateY(0);box-shadow:inset 0 1px 2px rgba(14,34,51,.25)}
.btn-principal{box-shadow:0 4px 12px rgba(10,106,166,.2)}
button:focus-visible,.btn-link:focus-visible{outline:2px solid var(--dma-accent);outline-offset:2px}
.link-btn:focus-visible,.btn-row-neutral:focus-visible,.kebab-btn:focus-visible{outline-color:var(--dma-accent)}
button:disabled{opacity:.55;cursor:not-allowed;transform:none;box-shadow:none}

/* SECUNDAR, „ghost": contur + text albastru. Butoanele secundare ale unui ecran de listă (căutare,
   filtre) și legăturile-buton (`.btn-link`: calendar, filtre salvate). */
.search-form button,.status-toolbar button,.rinv-filtru button,.btn-link,.cal-btn{background:var(--dma-surface);color:var(--dma-accent);border:1px solid var(--dma-accent);border-radius:var(--dma-radius-btn);font-weight:600}
.btn-link{display:inline-block;padding:8px 14px;text-decoration:none;cursor:pointer;font-size:14px}
.search-form button:hover,.status-toolbar button:hover,.rinv-filtru button:hover,.btn-link:hover,.cal-btn:hover{background:var(--dma-accent-soft);color:var(--dma-accent)}
.cal-today{background:var(--dma-accent);color:var(--dma-on-accent)}

/* NEUTRU: acțiunile de rând (CS-N105) și anularea din fereastra de confirmare. */
.btn-row-neutral,.kebab-btn,.modal-cancel{background:var(--dma-surface);color:var(--dma-text);border:1px solid var(--dma-field-border);border-radius:var(--dma-radius-btn)}
.btn-row-neutral:hover,.kebab-btn:hover,.modal-cancel:hover,.link-btn:hover{background:var(--dma-hover)}

/* PERICOL: rămâne roșu — același roșu de semnal ca `.menu-item-danger`. `.btn-danger` nu avea
   regulă nicăieri, deci „Șterge"/„Revocă" moșteneau accentul și arătau ca acțiunea principală. */
.btn-danger{background:var(--dma-surface);color:var(--dma-danger);border:1px solid var(--dma-danger)}
.btn-danger:hover{background:var(--dma-danger-soft)}

/* ── 8. Pastile, paginare, calendar ───────────────────────────────────────────────────────── */
/* `.badge` e pastila NEUTRĂ de status. Variantele cu înțeles (VIP, segment forțat) își pun culoarea
   INLINE și rămân neatinse. `.activity-icon.reservation` e recolorată deliberat (decizie VI-F):
   e o categorie de activitate, nu un semnal. */
.badge,.activity-icon.reservation,.pagination a{background:var(--dma-accent-soft);color:var(--dma-accent)}
.badge{font-weight:600}
.pagination a:hover,.pagination .current,.pagination a.active{background:var(--dma-accent);color:var(--dma-on-accent)}
.cal-header{background:var(--dma-accent-soft);color:var(--dma-text)}
.cal-day{background:var(--dma-surface);border-color:var(--dma-border)}
.cal-day.today{border-color:var(--dma-accent);background:var(--dma-accent-soft)}

/* ── 9. Ecranele de INTRARE (login, prima configurare) ────────────────────────────────────── */
/* Comutatorul de limbă de pe cartonașul de intrare: culoarea vine dintr-o regulă de clasă (VI-F
   a scos stilurile inline din `login.html`/`setup.html` exact ca să se poată teme de aici). */
.auth-card .lang-switch a{color:var(--dma-accent);border-color:var(--dma-field-border)}
.auth-card .lang-switch a.active{background:var(--dma-accent);color:var(--dma-on-accent);border-color:var(--dma-accent)}

/* ── 10. Ecran îngust: bara laterală devine bară de sus ───────────────────────────────────── */
@media(max-width:768px){
  .sidebar{border-right:0;border-bottom:1px solid var(--dma-border)}
}
