/* Copyright (c) 2026, Netbee. AGPL-3.0-only.
 *
 * Tema Netbee (felia „tema Netbee”, macheta ACAD-UI-010, deciziile lui Victor din 7 oct. 2026).
 * Un singur loc pentru toate ecranele: interfața LMS (legată din frontend/index.html, patch 0014, prin
 * `css_tema_netbee()`), Desk (`app_include_css`) și paginile web Frappe, inclusiv login (`web_include_css`).
 *
 * Redefinește doar variabilele CSS ale temei frappe-ui (aceleași nume și în Desk), cu specificitate mai mare decât
 * `:root` / `[data-theme=dark]` ale frappe-ui, deci nu depinde de ordinea de încărcare. Nuanța și saturația (h, c din
 * oklch) rămân cele din frappe-ui; se schimbă doar luminozitatea, cât să treacă WCAG AA (text 4,5:1, contururi 3:1)
 * pe fundalurile deschise pe care apar. Calculul: dovezi/TEMA/propunere_culori.py; inventarul:
 * specificatii/lucru/TEMA_NETBEE_INVENTAR_2026-10-07.md.
 *
 * Construirea imaginii pică dacă una dintre variabilele de mai jos nu mai există în pachetul LMS (infra/Containerfile,
 * `verifica_tema.py`): la un upgrade frappe-ui care redenumește tokenurile, fișierul trebuie actualizat.
 */

/* ---------- tema luminoasă ---------- */
html:root {
	/* text secundar: 4,17 → 5,33 pe alb; 3,57 → 4,55 pe gri-3 */
	--ink-gray-5: oklch(0.529 0 0);
	/* pictograme, dezactivat: 2,57 → 3,03 pe gri-2 (prag 3:1) */
	--ink-gray-4: oklch(0.641 0 0);
	/* sume negative, erori: 4,46 → 5,31 pe alb; 3,79 → 4,51 pe roșu-2 */
	--ink-red-6: oklch(0.554 0.208 26.283);
	/* insigna portocalie (amber): 3,55 → 4,84 */
	--ink-amber-8: oklch(0.537 0.136 63.758);
	/* insigna albastră: 4,18 → 4,76 */
	--ink-blue-8: oklch(0.529 0.168 252.355);
	/* insigna verde: 4,54 → 4,86; 4,48 → 4,80 pe gri-2 */
	--ink-green-8: oklch(0.515 0.122 156.15);
	/* butoane albastre subtile, linkuri: 3,00 → 4,77 pe albastru-2 */
	--ink-blue-6: oklch(0.526 0.186 251.565);
	--ink-blue-link: oklch(0.526 0.186 251.565);
	/* inelul de focus: 1,56 → 4,61 pe alb; stă la 2 px de element (vezi mai jos) */
	--focus-outline-default: 2px solid #757575;
	--focus-default: 0 0 0 2px #757575;
	--focus-outline-red: 2px solid #b41d1d;
	--focus-red: 0 0 0 2px #b41d1d;
	--focus-outline-blue: 2px solid #006bc8;
	--focus-blue: 0 0 0 2px #006bc8;
	--focus-outline-green: 2px solid #097b49;
	--focus-green: 0 0 0 2px #097b49;
	--focus-outline-amber: 2px solid #a35800;
	--focus-amber: 0 0 0 2px #a35800;
	--focus-outline-violet: 2px solid #4f3da1;
	--focus-violet: 0 0 0 2px #4f3da1;
	/* culoarea inelelor făcute cu `ring` (box-shadow), vezi mai jos */
	--netbee-inel: #757575;
}

/* ---------- tema închisă (după blocul luminos: aceeași specificitate, câștigă ordinea) ---------- */
html[data-theme="dark"] {
	/* textul secundar avea aceeași valoare ca gray-4: 4,18 → 6,06 pe bază; 3,39 → 4,92 pe gri-2 */
	--ink-gray-5: oklch(0.672 0 0);
	/* rămâne mai deschis decât gray-5 (ierarhia); 4,12 → 4,54 pe gri-3 */
	--ink-gray-6: oklch(0.708 0 0);
	--ink-gray-4: oklch(0.58 0 0);
	/* 3,34 → 6,89 pe bază; 2,34 → 4,81 pe roșu-2 */
	--ink-red-6: oklch(0.734 0.175 25.075);
	--ink-amber-8: oklch(0.763 0.137 69.783);
	--ink-blue-8: oklch(0.777 0.112 244.656);
	--ink-green-8: oklch(0.766 0.089 162.244);
	/* 3,23 → 5,20 pe albastru-2; linkul 2,82 → 4,54 pe gri-2 */
	--ink-blue-6: oklch(0.706 0.143 248.605);
	--ink-blue-link: oklch(0.652 0.154 253.819);
	/* 1,65 → 5,5 pe bază; ≥ 3:1 și pe gri închis selectat (#424242) și pe butoanele albe */
	--focus-outline-default: 2px solid #8e8e8e;
	--focus-default: 0 0 0 2px #8e8e8e;
	--focus-outline-red: 2px solid #ff7575;
	--focus-red: 0 0 0 2px #ff7575;
	--focus-outline-blue: 2px solid #76bef9;
	--focus-blue: 0 0 0 2px #76bef9;
	--focus-outline-green: 2px solid #7dc5a2;
	--focus-green: 0 0 0 2px #7dc5a2;
	--focus-outline-amber: 2px solid #e9a143;
	--focus-amber: 0 0 0 2px #e9a143;
	--focus-outline-violet: 2px solid #baa8f5;
	--focus-violet: 0 0 0 2px #baa8f5;
	/* #8e8e8e: ≥ 3:1 pe tot ce apare pe tema închisă: bază #171717 (5,5), gri selectat din meniul Desk #424242 (3,06)
	 * și butoanele pline albe (3,09), deci merge și desenat spre interior */
	--netbee-inel: #8e8e8e;
}

/* Inelul de focus stă pe fundalul paginii, nu lipit de buton (altfel, pe butonul plin, inelul gri n-ar avea contrast cu
 * butonul). Specificitatea (0,2,1) trece peste `.focus-visible\:focus-ring-*:focus-visible` ale frappe-ui (0,2,0). */
html:root :focus-visible {
	outline-offset: 2px;
}

/* Orice element focusat de la tastatură are un inel vizibil: frappe-ui și Desk folosesc pe multe elemente
 * `outline-none` + un `ring`/`box-shadow` gri deschis (1,2–2,8:1) sau doar o schimbare de chenar. Culoarea vine din
 * --netbee-inel; elementele cu inel colorat frappe-ui (`focus-ring-red/blue/green`) își păstrează culoarea (mai închisă,
 * vezi variabilele de mai sus). */
html:root :focus-visible {
	outline-style: solid !important;
	outline-width: 2px !important;
}
html:root :focus-visible:not([class*="focus-ring-"]) {
	outline-color: var(--netbee-inel) !important;
}
/* câmpurile de text: inelul lipit de chenar (altfel, la fiecare clic într-un câmp, apare un al doilea contur depărtat) */
html:root :is(input:not([type="checkbox"]):not([type="radio"]), textarea, select, [contenteditable="true"]):focus-visible {
	outline-offset: 0;
}

/* În containerele care taie ce iese din ele (rândurile din tabelul și lista de vânzări/facturi, filele, meniul lateral,
 * listele cu derulare), inelul se desenează spre interior, ca să nu fie tăiat. */
html:root
	:is(
		[role="tab"],
		[role="row"],
		[role="option"],
		[role="menuitem"],
		tr,
		li,
		header *,
		.overflow-hidden > *,
		.body-sidebar-top *,
		.ellipsis,
		.ellipsis *,
		.navbar-breadcrumbs *
	):not([role="switch"]):not([type="checkbox"]):not([type="radio"]):focus-visible {
	outline-offset: -2px;
}

/* Inelele de focus făcute cu `ring` (box-shadow) pe gri deschis: legăturile din meniul lateral, „Sari la conținutul
 * principal”, câmpurile (`focus:ring-outline-gray-3` ≈ 1,6:1). Doar culoarea inelului se schimbă, nu și chenarele. */
html:root :is(
		.focus-visible\:ring-outline-gray-3:focus-visible,
		.focus\:ring-outline-gray-3:focus-visible,
		.focus\:ring-outline-elevation-2:focus-visible,
		.focus-within\:ring-outline-gray-3:focus-within,
		.focus-within\:ring-outline-gray-2:focus-within
	) {
	--tw-ring-color: var(--netbee-inel);
}

/* Textul ajutător din câmpuri (decizia #4): la 4,5:1, ca textul secundar. Specificitatea (0,1,3) trece peste
 * `.placeholder-ink-gray-4::placeholder` (0,1,1) și peste regulile Desk. */
html:root :is(input, textarea)::placeholder {
	color: var(--ink-gray-5);
	opacity: 1;
}

/* Separatorul „/” din firimiturile frappe-ui (`<span aria-hidden="true" class="text-ink-gray-4">/</span>`, 3,36:1):
 * decorativ, dar e text, deci la gri-ul secundar */
html:root span.text-ink-gray-4[aria-hidden="true"] {
	color: var(--ink-gray-5);
}

/* Câmpurile „simple” din ecranele Netbee (`<input>`, `<select>` fără clasă de fundal) primesc fundalul și culoarea din
 * pluginul @tailwindcss/forms: fundal alb fix, text moștenit. Pe tema închisă textul moștenit e deschis, deci ilizibil
 * (1:1 în Vânzări, Facturi, Implicare). Le dăm fundalul și textul temei; câmpurile frappe-ui (au `bg-*`) rămân neatinse.
 * Domeniul e pagina LMS întreagă (`html:has(#app)`), nu doar `#app`: dialogurile și foile de jos frappe-ui sunt mutate
 * (teleport) direct în `body`, în afara `#app` (ex. „Găsit în SmartBill”, „Corectat manual”). Desk-ul și paginile web
 * n-au `#app`, deci rămân neatinse. */
html:root:has(#app)
	:is(
		input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
		select,
		textarea
	):not([class*="bg-"]) {
	background-color: var(--surface-base);
	color: var(--ink-gray-8);
}

/* ---------- Desk: variabilele vechi Frappe (nu există în interfața LMS, deci acolo nu au efect) ---------- */
html:root {
	/* `--text-light`, capul tabelelor din formulare, `.text-secondary`: #7c7c7c (4,17) → #6b6b6b (5,33) */
	--gray-600: #6b6b6b;
	/* inițialele din avatar: aceeași nuanță, mai închisă (1,76–4,19 → ≥ 4,53) */
	--blue-avatar-color: var(--blue-700);
	--orange-avatar-color: var(--orange-700);
	--pink-avatar-color: var(--pink-700);
	--purple-avatar-color: var(--purple-600);
	--red-avatar-color: var(--red-600);
	--yellow-avatar-color: var(--yellow-800);
}
html[data-theme="dark"] {
	/* pe tema închisă, aceleași reguli folosesc --gray-600 ca text pe gri închis: 2,81 → ≥ 4,5 */
	--gray-600: #969696;
	--blue-avatar-bg: var(--blue-700);
	--blue-avatar-color: var(--blue-50);
	--orange-avatar-bg: var(--orange-700);
	--orange-avatar-color: var(--orange-50);
	--pink-avatar-bg: var(--pink-700);
	--pink-avatar-color: var(--pink-50);
	--purple-avatar-bg: var(--purple-600);
	--purple-avatar-color: var(--purple-50);
	--red-avatar-bg: var(--red-600);
	--red-avatar-color: var(--red-50);
	--yellow-avatar-bg: var(--yellow-800);
	--yellow-avatar-color: var(--yellow-50);
	--green-avatar-bg: var(--green-800);
	--green-avatar-color: var(--green-50);
	--dark-green-avatar-bg: var(--green-800);
	--dark-green-avatar-color: var(--green-50);
}
html[data-theme="dark"] .grid-heading-row {
	/* capul tabelelor din formulare pe gri închis (#383838): 3,96 → ≥ 4,5 */
	color: var(--ink-gray-7);
}
/* firimiturile Desk: separatorul „/” e desenat cu ::before în `--ink-gray-4` */
html:root .navbar-breadcrumbs a::before {
	color: var(--ink-gray-5);
}
/* antetul meniului lateral Desk: când spațiul de lucru n-are iconiță (ex. „Learning” al LMS), Frappe desenează inițiala
 * pe gri („L”); acolo apare semnul Netbee */
html:root .sidebar-header .header-logo:has(.desktop-alphabet) {
	background: url("/assets/netbee_academy/images/netbee-learning.svg") center / contain no-repeat;
}
html:root .sidebar-header .header-logo:has(.desktop-alphabet) > .icon-container {
	visibility: hidden;
}
/* `.text-secondary` (Bootstrap, #7c7c7c cu !important): e-mailul din meniul utilizatorului etc. */
html:root .text-secondary {
	color: var(--ink-gray-5) !important;
}
/* scurtătura „⌘+K” din meniul lateral Desk (`--ink-gray-4`, text: 3,17 → ≥ 4,5) */
html:root .keyboard-shortcut {
	color: var(--ink-gray-5);
}
/* textul de ajutor de sub câmpuri și „No rows” (`.text-extra-muted`, #999999, 2,68–2,85) */
html:root .text-extra-muted {
	color: var(--ink-gray-5) !important;
}
/* pagina 404 web (frappe/www/404.html): „Înapoi acasă” e `.text-muted` (#7c7c7c cu !important, 3,93:1 pe #f8f8f8);
 * cu textul secundar al temei trece de 4,5:1 (re-review-ul temei, 7 oct. 2026) */
html:root .error-page .text-muted {
	color: var(--ink-gray-5) !important;
}
