/* =============================================================================
   THEME BRIDGE — mapează componentele Bootstrap 5 pe design tokens (navy)
   Se încarcă DUPĂ Bootstrap + design-tokens.css, ÎNAINTE de main.css.
   Scop: brand navy #134a6d aplicat pe componentele native (butoane, focus, tab-uri),
   fără a rescrie markup-ul existent.
   ============================================================================= */

/* ---- Buton primar → navy brand (regula de aur #1) ---- */
.btn-primary {
	background: var(--c-primary);
	border-color: var(--c-primary);
	color: #fff;
	font-weight: 600;
	border-radius: var(--r-btn);
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active {
	background: var(--c-primary);
	border-color: var(--c-primary);
	color: #fff;
	filter: brightness(1.12);
	box-shadow: none;
}

.btn-outline-primary {
	color: var(--c-primary);
	border-color: var(--c-primary);
	border-radius: var(--r-btn);
}
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active {
	background: var(--c-primary);
	border-color: var(--c-primary);
	color: #fff;
}

/* Radius consistent pe butoanele mici Bootstrap */
.btn { border-radius: var(--r-btn); }

/* ---- Focus navy pe form controls (Bootstrap default e albastru) ---- */
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
	border-color: var(--c-primary);
	box-shadow: var(--focus-ring);
}
.form-check-input:checked {
	background-color: var(--c-primary);
	border-color: var(--c-primary);
}

/* ---- Link-uri brand (doar cele explicit .text-primary / link-primary) ---- */
.text-primary { color: var(--c-primary) !important; }
.link-primary { color: var(--c-primary) !important; }
.link-primary:hover { color: var(--c-primary-hover) !important; }

/* ---- Select2 (single) aliniat la form-control-sm + brand navy (global) ---- */
.select2-container--default .select2-selection--single {
	height: calc(1.5em + .5rem + 2px);
	border: 1px solid var(--c-border-2);
	border-radius: var(--r-btn);
}
.select2-container--default .select2-selection--single .select2-selection__rendered {
	line-height: calc(1.5em + .5rem);
	color: var(--c-body);
	padding-left: .6rem;
}
.select2-container--default .select2-selection--single .select2-selection__arrow {
	height: calc(1.5em + .5rem);
}
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
	border-color: var(--c-primary);
	box-shadow: var(--focus-ring);
}
.select2-container--default .select2-results__option--highlighted[aria-selected] {
	background: var(--c-primary);
}
.select2-dropdown { border-color: var(--c-border-2); }

/* ---- Header modal standard navy (§7.7) — deja folosit ca .modal-general-header ---- */
.modal-general-header {
	background: var(--c-primary) !important;
	color: #fff !important;
	padding: 15px 24px;
}
.modal-general-header .modal-title { font-weight: 700; }
.modal-general-header .btn-close { filter: invert(1) grayscale(1) brightness(1.8); opacity: .9; }

/* ---- Variant modal foarte lat (workspace cu tab-uri) ---- */
.ui-modal .modal-dialog.ui-modal--xl { max-width: 92vw; }

/* ---- Variant modal full workspace (95% viewport, inaltime mare) ---- */
.ui-modal .modal-dialog.ui-modal--full { max-width: 95vw; height: 92vh; margin-top: 4vh; margin-bottom: 4vh; }
/* header + body + footer pe coloana flex: cu inaltime fixa (calc(100% - 62px)) corpul nu lasa
   loc footer-ului si acesta iesea in afara modalului. */
.ui-modal .modal-dialog.ui-modal--full .modal-content { height: 100%; display: flex; flex-direction: column; }
.ui-modal .modal-dialog.ui-modal--full .modal-header,
.ui-modal .modal-dialog.ui-modal--full .modal-footer { flex: 0 0 auto; }
/* Corpul e SINGURUL container cu scroll din modal:
   - `height:0` + `flex-grow` → ia exact spatiul ramas intre header si footer. Cu baza `auto`
     corpul creste dupa continut, depaseste .modal-content (care are overflow:hidden) si e taiat:
     bara de scroll apare, dar nu mai are unde derula.
   - `max-height:none` anuleaza plafonul de 80vh din design-tokens (modalul full are 92vh). */
.ui-modal .modal-dialog.ui-modal--full .modal-body {
	flex: 1 1 auto;
	height: 0;
	min-height: 0;
	max-height: none;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--c-surface-alt);
}

/* „Creată de / data / ora" stă în subsolul modalului (`.modal-footer` din
   templates/request/modal_details_request.html.twig), cu `.profile-e__added` —
   acelasi tipar ca subsolul modalului punctului de lucru. Vechea bandă de subsol,
   scoasă în 17 aug 2026, avea 0.12rem padding și text de 0.7rem pe albastru, deci
   era practic invizibilă; nu o reintroduce în forma aceea. */

/* Bara de rezumat intervenție (info-panel enterprise) */
.req-summary {
	background: var(--c-surface);
	border: 1px solid var(--c-border);
	border-radius: var(--r-card);
	box-shadow: var(--sh-card);
	padding: .85rem 1.1rem;
	margin-bottom: 1rem;
}
.req-summary__meta { display: flex; flex-wrap: wrap; gap: .35rem 1.6rem; align-items: center; }
.req-summary__item { display: inline-flex; align-items: center; gap: .45rem; color: var(--c-body); font-size: .9rem; }
.req-summary__item i { color: var(--c-primary); width: 1.1em; text-align: center; }
.req-summary__item strong { color: var(--c-heading); font-weight: 600; }
.req-summary__addr { margin-top: .5rem; color: var(--c-muted); font-size: .85rem; display: inline-flex; align-items: center; gap: .45rem; }
.req-summary__addr i { color: var(--c-primary); }
.req-summary__schedule { color: var(--c-body); font-size: .85rem; display: inline-flex; align-items: center; gap: .4rem; }
.req-summary__schedule i { color: var(--c-primary); }

/* Tab-uri workspace (peste .nav-tabs standard) — rezista override-ului vechi din main.css */
.ui-modal--full .nav-tabs { border-bottom: 1px solid var(--c-divider); gap: .1rem; }
.ui-modal--full .nav-tabs .nav-link {
	background: transparent !important;
	border: none !important;
	border-bottom: 2px solid transparent !important;
	border-radius: 0 !important;
	color: var(--c-muted) !important;
	font-weight: 600;
	font-size: .85rem;
	padding: .6rem 1rem !important;
}
.ui-modal--full .nav-tabs .nav-link:hover { color: var(--c-primary) !important; background: var(--c-surface-alt) !important; }
.ui-modal--full .nav-tabs .nav-link.active {
	color: var(--c-primary) !important;
	background: transparent !important;
	border-bottom: 2px solid var(--c-primary) !important;
}
.ui-modal--full .nav-tabs .nav-link.active:after { display: none !important; } /* elimina triunghiul vechi */
/* Conținutul tab-ului stă într-un panou propriu (chenar), ca să se vadă clar unde începe și unde
   se termină informația tab-ului curent, separat de bara de tab-uri și de fundalul modalului. */
.ui-modal--full .tab-content {
	background: var(--c-surface);
	border: 1px solid var(--c-border);
	border-radius: var(--r-card);
	box-shadow: var(--sh-card);
	padding: 1.1rem 1.15rem .35rem;
	margin-top: .85rem;
	/* panoul creste cat e continutul; scroll-ul il face corpul modalului */
	height: auto;
}
.ui-modal--full .tab-content > .tab-pane { height: auto !important; }
/* `.auto-scroll-y` (main.css) impune height:calc(100% - 1px)!important + scroll intern, legat de
   inaltimea fixa de dinainte. Cu panoul crescut dupa continut, scroll-ul intern ar taia continutul
   in interiorul chenarului — il dezactivam aici. */
.ui-modal--full .tab-content .auto-scroll-y {
	padding: 0 .25rem;
	height: auto !important;
	overflow-y: visible;
}
/* În interiorul panoului alb, secțiunile nu mai au nevoie de umbră proprie */
.ui-modal--full .tab-content .sec { box-shadow: none; }
/* Carduri de secțiune elevate + aerisite în workspace */
.ui-modal--full .sec { box-shadow: var(--sh-card); border-color: var(--c-border); }
.ui-modal--full .sec { margin-bottom: 1rem; }
.ui-modal--full .sec__head { background: var(--c-surface-alt); border-bottom: 1px solid var(--c-divider); }
.ui-modal--full .sec__body { padding: 1rem 1.1rem; }
/* Sub-titluri (Echipe/Lucratori) mai clare */
.ui-modal--full .sec__body > .field__label { color: var(--c-heading); font-weight: 700; letter-spacing: .01em; margin-bottom: .35rem; }

/* =============================================================================
   TABELE ENTERPRISE — global, pentru toate tabelele din .card-e / DataTables
   ============================================================================= */
.card-e table.table {
	margin-bottom: 0;
	color: var(--c-body);
	border-color: var(--c-row-line);
	--bs-table-bg: transparent;
}
/* `:not(.tbl-e)` — tabelele care declară explicit componenta `.tbl-e` din design system
   își aduc singure stilul de celulă (antet tentat, alte padding-uri). Regula de aici e
   mai specifică decât `.tbl-e thead th` și, fiind încărcată după design-tokens.css,
   i-ar suprascrie fundalul; excluderea o lasă doar pe tabelele vechi. */
.card-e table.table:not(.tbl-e) thead th {
	text-transform: uppercase;
	letter-spacing: .03em;
	font-size: .72rem;
	font-weight: 600;
	color: var(--c-muted);
	background: transparent;
	border-bottom: 2px solid var(--c-divider);
	border-top: none;
	padding: .55rem .6rem;
	vertical-align: middle;
	white-space: nowrap;
}
.card-e table.table:not(.tbl-e) tbody td {
	border-top: none;
	border-bottom: 1px solid var(--c-row-line);
	color: var(--c-body);
	vertical-align: middle;
	padding: .5rem .6rem;
	font-size: .84rem;
}
.card-e table.table tbody tr:last-child td { border-bottom: none; }
/* hover subtil (nativ + clasa .highlight adaugata de JS) */
.card-e table.table tbody tr:hover td,
.card-e table.table tbody tr.highlight td { background-color: var(--c-surface-alt) !important; }
/* coduri / numere aliniate */
.card-e table.table td.text-end, .card-e table.table th.text-end { text-align: right; }

/* ---- Iconuri de acțiune în rânduri de tabel: aspect curat, enterprise ----
   Transformă butoanele mici moștenite (btn-outline-*) în icon-acțiuni discrete. */
.card-e table td .btn.btn-sm:not(.toggle):not(.dropdown-toggle),
.card-e table td .btn.btn-xs:not(.toggle):not(.dropdown-toggle),
.card-e table td .btn.btn-md:not(.toggle):not(.dropdown-toggle) {
	border: none !important;
	background: transparent !important;
	box-shadow: none !important;
	padding: .18rem .4rem;
	color: var(--c-muted);
	line-height: 1;
}
.card-e table td .btn.btn-outline-info:not(.toggle):hover,
.card-e table td .btn.btn-outline-primary:not(.toggle):hover,
.card-e table td .btn.btn-outline-secondary:not(.toggle):hover,
.card-e table td .btn.btn-outline-success:not(.toggle):hover,
.card-e table td .btn.btn-info:not(.toggle):hover {
	color: var(--c-primary) !important;
	background: transparent !important;
}
.card-e table td .btn.btn-outline-danger:not(.toggle):hover,
.card-e table td .btn.btn-danger:not(.toggle):hover {
	color: var(--c-err-fg) !important;
	background: transparent !important;
}
.card-e table td .act { font-size: .9rem; }

/* =============================================================================
   CONTROALELE DataTables (paginare / „afișează N" / info / processing) — GLOBAL
   Se aplică tuturor listelor din aplicație, indiferent de modul.

   ⚠️ Markup-ul real, produs de `renderer: "bootstrap"` din datatables-slim.js:
       <div class="dataTables_paginate paging_full_numbers">
         <ul class="pagination">
           <li class="paginate_button page-item first disabled"><a class="page-link">«</a></li>
           <li class="paginate_button page-item active"><a class="page-link">1</a></li>
           ...
   Deci butonul PICTAT e `a.page-link`, iar pagina curentă e `li.page-item.active`.
   Regulile vechi ținteau `.paginate_button.current` — o clasă pe care acest renderer
   NU o generează niciodată (el pune `active`), așa că erau cod mort: paginarea rămânea
   pe albastrul implicit din Bootstrap 4 (basic.min.css). De aceea totul e rescris aici
   pe `.page-link` / `.page-item.active`.

   Specificitate: BS4 definește `.page-item.active .page-link` = (0,2,0) și se încarcă
   ÎNAINTEA acestui fișier. Selectorii de mai jos pornesc din `.dataTables_wrapper`,
   deci ajung la (0,3,0) și câștigă fără `!important`.
   ============================================================================= */
.dataTables_wrapper { padding-top: .25rem; }

/* ---- Paginarea: butoane pătrate, discrete, cu pagina curentă în accent ---- */
.dataTables_wrapper .dataTables_paginate { display: flex; justify-content: flex-end; }
.dataTables_wrapper .dataTables_paginate .pagination {
	display: flex;
	align-items: center;
	gap: .25rem;
	margin: 0;
	padding: 0;
	flex-wrap: wrap;
}
.dataTables_wrapper .dataTables_paginate .page-item { margin: 0; }
.dataTables_wrapper .dataTables_paginate .page-link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 32px;
	height: 32px;
	padding: 0 .5rem;
	/* Bootstrap 4 pune `margin-left:-1px` pe `.page-link`, ca butoanele să-și
	   suprapună chenarele într-un bloc unit. Aici sunt butoane separate, cu `gap`,
	   deci suprapunerea ar decala tot rândul cu câte 1px de buton. */
	margin: 0;
	border: 1px solid var(--c-border-2);
	border-radius: 8px;
	background: var(--c-surface);
	color: var(--c-muted-2);
	font-size: .78rem;
	font-weight: 600;
	font-variant-numeric: tabular-nums;
	line-height: 1;
	text-decoration: none;
	box-shadow: none;
	transition: border-color .12s, color .12s, background .12s;
}
.dataTables_wrapper .dataTables_paginate .page-link:hover {
	border-color: var(--c-primary);
	color: var(--c-primary);
	background: var(--c-primary-soft);
}
.dataTables_wrapper .dataTables_paginate .page-link:focus-visible {
	border-color: var(--c-primary);
	box-shadow: var(--focus-ring);
	outline: none;
}
/* Pagina curentă */
.dataTables_wrapper .dataTables_paginate .page-item.active .page-link,
.dataTables_wrapper .dataTables_paginate .page-item.active .page-link:hover,
.dataTables_wrapper .dataTables_paginate .page-item.active .page-link:focus {
	background: var(--c-primary);
	border-color: var(--c-primary);
	color: #fff;
}
/* Butoane indisponibile (prima/anterioara pe pagina 1 etc.) — prezente, dar stinse:
   dispariția lor ar face bara să „sară" la fiecare schimbare de pagină. */
.dataTables_wrapper .dataTables_paginate .page-item.disabled .page-link {
	background: var(--c-surface-alt);
	border-color: var(--c-border-2);
	color: var(--c-muted-3);
	opacity: .65;
	pointer-events: none;
}
/* Săgețile « ‹ › » — puțin mai discrete decât cifrele */
.dataTables_wrapper .dataTables_paginate .page-item.first .page-link,
.dataTables_wrapper .dataTables_paginate .page-item.previous .page-link,
.dataTables_wrapper .dataTables_paginate .page-item.next .page-link,
.dataTables_wrapper .dataTables_paginate .page-item.last .page-link {
	font-size: .9rem;
	color: var(--c-muted-3);
}
.dataTables_wrapper .dataTables_paginate .page-item.first .page-link:hover,
.dataTables_wrapper .dataTables_paginate .page-item.previous .page-link:hover,
.dataTables_wrapper .dataTables_paginate .page-item.next .page-link:hover,
.dataTables_wrapper .dataTables_paginate .page-item.last .page-link:hover { color: var(--c-primary); }
/* Notă: elipsa („…") NU poate fi stilizată separat. Renderer-ul îi pune exact aceleași
   clase ca unui buton indisponibil (`paginate_button page-item disabled`, vezi
   `case "ellipsis"` din datatables-slim.js) și nu adaugă nici `.ellipsis`, nici alt
   marcaj. Rămâne deci în aceeași formă stinsă ca restul butoanelor dezactivate —
   consecvent vizual. Orice regulă `:not([aria-controls])` ar fi cod mort: renderer-ul
   pune `aria-controls` pe TOATE ancorele, inclusiv pe elipsă. */

/* ---- Bara de jos pe ecrane mici ----
   Pragul de 767px e cel al DataTables: `datatables.min.css` centrează acolo, prin
   `text-align`, length/filter/info/paginate. Cum info-ul și paginarea sunt aici
   containere flex, `text-align` nu le mai mișcă — le centrăm explicit, la ACELAȘI
   prag, ca bara să nu se rupă în două stiluri între 576 și 767px. */
@media (max-width: 767.98px) {
	.dataTables_wrapper .dataTables_paginate { justify-content: center; }
	.dataTables_wrapper .dataTables_info { justify-content: center; }
	.dataTables_wrapper .dataTables_length label { justify-content: center; width: 100%; }
}
@media (max-width: 575.98px) {
	/* Pe telefon prima/ultima sunt redundante lângă anterioara/următoarea */
	.dataTables_wrapper .dataTables_paginate .page-item.first,
	.dataTables_wrapper .dataTables_paginate .page-item.last { display: none; }
}

/* ---- Overlay-ul „Se încarcă ...". DataTables îi pune clasa `card` (sProcessing),
        deci fără regula asta moștenește cardul Bootstrap, alb și fără contur. ---- */
.dataTables_wrapper .dataTables_processing {
	border: 1px solid var(--c-border-2);
	border-radius: var(--r-btn);
	background: var(--c-surface);
	box-shadow: var(--sh-card);
	color: var(--c-muted);
	font-size: .78rem;
	font-weight: 600;
	padding: .5rem .9rem;
	width: auto;
	min-width: 140px;
	margin-left: -70px;
}

/* Modalul „Detalii intervenție" → tab-ul Servicii. Select2 initializat cat timp tab-ul e ascuns
   primeste latime 0. Regula exista si in pages/request/index.css, dar acela se incarca DOAR pe
   /request — iar modalul apare si pe /client/view si /team/view. Aici e global. */
#client_request_services .select2-container { width: 100% !important; min-width: 0; }

.dataTables_wrapper .dataTables_filter input {
	border: 1px solid var(--c-border-2);
	border-radius: var(--r-btn);
	padding: .2rem .45rem;
}
/* Selectul „Afișează N înregistrări".
   DataTables îl randează ca <select class="form-select form-select-sm">, iar Bootstrap desenează
   săgeata ca BACKGROUND-IMAGE la `right .75rem`, rezervându-i loc prin `padding-right: 2.25rem`.
   Un `padding: .2rem .45rem` uniform ștergea acel spațiu, iar săgeata cădea peste cifră — de aici
   selectul „prea îngust", cu textul tăiat. Păstrăm spațiul din dreapta. */
.dataTables_wrapper .dataTables_length select {
	border: 1px solid var(--c-border-2);
	border-radius: var(--r-btn);
	padding: .2rem 1.9rem .2rem .55rem;
	min-width: 4.75rem;
	width: auto;
	background-position: right .6rem center;
	/* Aceeași înălțime ca butoanele de paginare — bara de jos citește ca un singur rând. */
	height: 32px;
}
.dataTables_wrapper .dataTables_length select:focus,
.dataTables_wrapper .dataTables_filter input:focus {
	border-color: var(--c-primary);
	box-shadow: var(--focus-ring);
	outline: none;
}
.dataTables_wrapper .dataTables_info,
.dataTables_wrapper .dataTables_length label,
.dataTables_wrapper .dataTables_paginate,
.dataTables_wrapper .dataTables_filter label {
	color: var(--c-muted);
	font-size: .8rem;
}
/* „Afișare 1–12 din 488" — cifre tabulare, ca linia să nu se lățească la paginare.
   `padding-top: 0` anulează cel implicit din DataTables (.85em), care lăsa info-ul
   mai jos decât paginarea de lângă el. */
.dataTables_wrapper .dataTables_info {
	display: flex;
	align-items: center;
	min-height: 32px;
	padding-top: 0;
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.dataTables_wrapper .dataTables_length label {
	display: inline-flex;
	align-items: center;
	gap: .45rem;
	margin: 0;
	min-height: 32px;
	font-weight: 600;
}
