/*
 * Fleet — strat vizual local conform standardului AMO Soft Grid aprobat.
 * Păstrează DOM-ul și comportamentul modulelor existente; toate suprascrierile
 * sunt concentrate aici ca tema să poată fi verificată și ajustată fără cod
 * duplicat în monolitul dashboard.html.
 */

:root {
  --bg: #f7f5f0;
  --bg2: #f1eee7;
  --bg3: #fffdf8;
  --card: #ffffff;
  --panel2: #fffdf8;
  --border: #ded9cf;
  --border2: #c9c2b7;
  --text: #1a1814;
  --text2: #57524a;
  --text3: #6b6459;
  --accent: #0f4c4a;
  --accent2: #14605d;
  --green: #2e6a4f;
  --yellow: #7a4f00;
  --red: #b3261e;
  --purple: #695778;
  --gray: #e7e4de;
  --radius: 14px;
  --font: 'Manrope', sans-serif;
  --heading-font: 'Sora', sans-serif;
  --mono: 'JetBrains Mono', monospace;
  --fleet-sidebar: #102e2d;
  --fleet-sidebar-border: #294442;
  --fleet-sidebar-text: #dfe7e0;
  --fleet-sidebar-muted: #b4c3bc;
  --fleet-sidebar-hover: #1b3c3a;
  --fleet-sidebar-active: #234744;
  --fleet-champagne: #d8c6a1;
  --fleet-bronze: #b08a45;
  --fleet-shadow: 0 14px 38px rgba(39, 34, 26, 0.07);
}

html {
  background: var(--bg);
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--font);
}

h1,
h2,
h3,
h4,
h5,
h6,
.nav-logo,
.module-title-wrap,
.card-title,
.section-title {
  font-family: var(--heading-font);
  letter-spacing: -0.025em;
}

.navbar {
  height: 72px;
  padding: 0 30px;
  background: rgba(255, 255, 255, 0.96);
  border-bottom: 1px solid var(--border);
  box-shadow: 0 4px 18px rgba(39, 34, 26, 0.035);
  backdrop-filter: blur(18px);
}

.nav-logo {
  color: var(--text);
  font-size: 14px;
}

.nav-logo:hover {
  color: var(--accent);
}

.module-switcher-card {
  background: var(--fleet-sidebar);
  border-color: var(--fleet-sidebar-border);
  box-shadow: 0 20px 50px rgba(16, 46, 45, 0.16);
}

.module-switcher-card::before {
  background: var(--fleet-champagne);
}

.module-switcher-head {
  border-bottom-color: var(--fleet-sidebar-border);
}

.module-switcher-head h2 {
  color: #fffdf8;
}

.module-switcher-head p {
  color: var(--fleet-sidebar-muted);
}

.module-switch-card {
  color: var(--fleet-sidebar-text);
}

.module-switch-card:hover {
  color: #ffffff;
  background: var(--fleet-sidebar-hover);
  border-color: var(--fleet-sidebar-border);
  box-shadow: none;
  transform: none;
}

.module-switch-card.active {
  color: #ffffff;
  background: var(--fleet-sidebar-active);
  border-color: #64776a;
  box-shadow: inset 3px 0 0 var(--fleet-champagne);
}

.module-switch-icon {
  color: var(--fleet-champagne);
  filter: saturate(0.5);
}

.module-header {
  min-height: 70px;
  margin-bottom: 22px;
  padding: 2px 2px 18px;
  border-bottom: 1px solid var(--border);
}

.module-title-wrap h2 {
  margin-bottom: 7px;
  color: var(--text);
  font-size: clamp(24px, 2vw, 31px);
  font-weight: 650;
}

.module-title-wrap p {
  max-width: 850px;
  color: var(--text2);
  font-size: 13px;
  line-height: 1.65;
}

.section {
  padding-top: 22px;
}

/* Pe telefon, bara de submodule trebuie să deruleze în interiorul ei. Fără
   acest container local, lățimea totală a taburilor mărea documentul (486 px
   la un viewport de 390 px) și întreaga aplicație se mișca stânga-dreapta. */
.fleet-module-view {
  min-width: 0;
  max-width: 100%;
}

.tabs {
  max-width: 100%;
  overflow-x: auto;
  overscroll-behavior-inline: contain;
  scrollbar-width: thin;
  -webkit-overflow-scrolling: touch;
}

.tabs .tab {
  flex: 0 0 auto;
  white-space: nowrap;
}

.card,
.stat-card,
.manager-filter-card,
.vacation-filter-card,
.manager-truck-card,
.vacation-blocks-panel,
.vacation-calendar-panel,
.login-box {
  background: var(--card);
  border-color: var(--border);
  box-shadow: var(--fleet-shadow);
  backdrop-filter: none;
}

.card,
.manager-filter-card,
.vacation-filter-card {
  border-radius: 16px;
}

.card-head {
  border-bottom-color: var(--border);
  background: #fcfbf8;
}

.card-title,
.section-title {
  color: var(--text);
}

.section-sub,
.stat-label {
  color: var(--text3);
}

.stat-card {
  position: relative;
  overflow: hidden;
  padding: 19px 20px;
}

.stat-card::after {
  position: absolute;
  inset: auto 18px 0;
  height: 2px;
  background: var(--fleet-bronze);
  opacity: 0.45;
  content: '';
}

.stat-card:hover {
  border-color: var(--border2);
}

.stat-value {
  color: var(--accent);
  font-family: var(--heading-font);
}

table {
  color: var(--text);
  background: var(--card);
}

th {
  color: var(--text3);
  background: #f6f3ed;
  border-bottom-color: var(--border);
}

td {
  color: var(--text2);
  border-bottom-color: #ece8e0;
}

tr:hover td {
  background: #f8f6f1;
}

input,
select,
textarea,
.form-input,
.date-input,
.td-search-input,
.td-company-chip,
.manager-filter-chip,
.vacation-filter-chip {
  color: var(--text);
  background-color: var(--bg3);
  border-color: var(--border2);
}

input::placeholder,
textarea::placeholder {
  color: #8a8379;
  opacity: 1;
}

/* Căutarea trebuie să fie imediat recognoscibilă în fiecare modul Fleet.
 * `!important` este necesar pentru cele două inputuri manager care păstrează
 * încă stiluri inline din tema Original; stylesheet-ul acesta este încărcat
 * numai în Soft Grid, deci Original nu este modificat. */
input[type='search'] {
  min-height: 42px;
  color: var(--text) !important;
  background: #fffdf8 !important;
  border: 2px solid var(--accent) !important;
  box-shadow: 0 0 0 3px #e7efee, 0 6px 16px rgba(15, 76, 74, 0.08) !important;
}

input[type='search']::placeholder {
  color: var(--text2);
  opacity: 1;
}

input[type='search']:hover {
  border-color: var(--accent2) !important;
}

input[type='search']:focus {
  border-color: var(--accent2) !important;
  box-shadow: 0 0 0 4px rgba(15, 76, 74, 0.16), 0 8px 20px rgba(15, 76, 74, 0.1) !important;
}

input:focus,
select:focus,
textarea:focus,
.form-input:focus,
.date-input:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px rgba(15, 76, 74, 0.1);
  outline: none;
}

input[type='date'] {
  color-scheme: light;
}

input[type='date']::-webkit-calendar-picker-indicator {
  background-image: none;
  filter: none;
  opacity: 0.65;
}

.module-refresh-btn,
.btn,
.btn-secondary,
.manager-filter-chip,
.vacation-filter-chip,
.td-company-chip,
.tab,
.hc-cal-nav {
  color: var(--text2);
  background: #ffffff;
  border-color: var(--border2);
  box-shadow: none;
}

.module-refresh-btn:hover,
.btn-secondary:hover,
.manager-filter-chip:hover,
.vacation-filter-chip:hover,
.td-company-chip:hover,
.tab:hover,
.hc-cal-nav:hover {
  color: var(--accent);
  background: var(--bg2);
  border-color: var(--accent);
}

.btn-primary,
.manager-filter-chip.active,
.vacation-filter-chip.active,
.td-company-chip.active,
.tab.active {
  color: #fffdf8;
  background: var(--accent);
  border-color: var(--accent);
  box-shadow: none;
}

.btn-primary:hover {
  color: #ffffff;
  background: var(--accent2);
  border-color: var(--accent2);
  opacity: 1;
  transform: none;
}

.td-mode-segment {
  background: var(--bg2);
  border-color: var(--border);
}

.td-mode-chip {
  color: var(--text2);
}

.td-mode-chip:hover {
  color: var(--accent);
  background: #ffffff;
}

.td-mode-chip.active {
  color: #fffdf8;
  background: var(--accent);
  box-shadow: none;
}

.td-summary-item,
.va-pill {
  color: var(--text);
  background: var(--card);
  border-color: var(--border);
}

.td-summary-value {
  color: var(--accent);
}

button:disabled,
.btn:disabled,
.module-refresh-btn:disabled {
  color: #645f57;
  background: #e7e4de;
  border-color: #d5d0c7;
  opacity: 1;
}

.plate-chip,
.td-status-pill,
.badge {
  color: var(--accent);
  background: #e7efee;
  border-color: rgba(15, 76, 74, 0.2);
}

.plate-chip:hover {
  color: #ffffff;
  background: var(--accent);
  box-shadow: none;
}

.chip-driving,
.good {
  color: var(--green);
  background: rgba(46, 106, 79, 0.1);
}

.chip-work,
.warning {
  color: var(--yellow);
  background: rgba(122, 79, 0, 0.1);
}

.chip-rest {
  color: var(--accent);
  background: #e7efee;
}

.chip-nodriver {
  color: var(--text3);
  background: var(--gray);
}

.chip-nocard,
.expired {
  color: var(--red);
  background: rgba(179, 38, 30, 0.09);
}

/* Fleet Manager: codurile vizibile nu mai moștenesc albastrul din Original. */
.manager-code-box {
  background: var(--bg2);
  border-color: var(--fleet-champagne);
}

.manager-code-box .manager-pin-label {
  color: var(--text2);
}

.manager-code-box .manager-pin-value {
  color: var(--accent);
}

.manager-code-box .manager-pin-value.empty {
  color: var(--text3);
}

.manager-truck-company {
  color: var(--text);
  font-weight: 700;
}

/* Caducitățile urgente trebuie reperate dintr-o privire în ambele manager-e.
 * Clasa este deja calculată din aceleași praguri de business; aici schimbăm
 * exclusiv contrastul vizual al rândului și adăugăm un al doilea semnal, iconul. */
.manager-meta-list .manager-meta-row {
  box-sizing: border-box;
  margin-inline: -8px;
  padding: 8px;
  border: 1px solid transparent;
  border-bottom-color: rgba(15, 76, 74, 0.12);
  border-left: 4px solid transparent;
  border-radius: 10px;
}

.manager-meta-row:has(.manager-meta-value.expired) {
  background: #fdecea;
  border: 1px solid rgba(179, 38, 30, 0.28);
  border-left: 4px solid var(--red);
}

.manager-meta-row:has(.manager-meta-value.warning) {
  background: #fff5df;
  border: 1px solid rgba(176, 138, 69, 0.38);
  border-left: 4px solid var(--fleet-bronze);
}

.manager-meta-list .manager-meta-value {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 7px;
  border: 1px solid transparent;
  border-radius: 999px;
}

.manager-meta-value.expired,
.manager-meta-value.warning {
  background: rgba(255, 255, 255, 0.72);
}

/* O dată sănătoasă este informație neutră, nu alertă: rămâne lizibilă direct
 * pe card, fără markerul verde moștenit de la stilul generic `.good`. */
.manager-meta-value.good {
  padding: 3px 7px;
  background: transparent;
  border: 1px solid transparent;
  box-shadow: none;
}

/* Driver Manager are unsprezece rânduri de metadate per card. Paddingul
 * generos util în cardurile de camion se acumula aici cu peste 200 px.
 * Păstrăm aceeași box geometry pentru toate stările, dar la densitatea
 * apropiată de Original; Fleet Manager rămâne neatins. */
#fleet-drivers-grid .manager-truck-card {
  padding: 18px;
  gap: 12px;
}

#fleet-drivers-grid .manager-meta-list .manager-meta-row {
  padding: 4px 8px;
}

#fleet-drivers-grid .manager-meta-list .manager-meta-value {
  padding: 1px 5px;
}

/* La fecha médica incluye también su caducidad calculada. En el ancho fijo
 * del card, reservamos el espacio con tipografía compacta solo para esta fila,
 * sin reducir el resto de datos del conductor. */
#fleet-drivers-grid .manager-meta-row[title^='Click para programar visita médica'] {
  gap: 4px;
}

#fleet-drivers-grid .manager-meta-row[title^='Click para programar visita médica'] .manager-meta-label {
  flex-shrink: 0;
  font-size: 12px;
  white-space: nowrap;
}

#fleet-drivers-grid .manager-meta-row[title^='Click para programar visita médica'] .manager-meta-value {
  min-width: 0;
  font-size: 11px;
  letter-spacing: -0.02em;
  white-space: nowrap;
}

#fleet-drivers-grid .manager-vacations-btn-wrap {
  margin-top: 4px;
}

.manager-meta-value.expired {
  color: var(--red);
  border: 1px solid rgba(179, 38, 30, 0.32);
}

.manager-meta-value.warning {
  color: var(--yellow);
  border: 1px solid rgba(122, 79, 0, 0.3);
}

.manager-meta-value.expired::before {
  content: '⚠';
}

.manager-meta-value.warning::before {
  content: '◷';
}

.manager-meta-value.expired span,
.manager-meta-value.warning span {
  color: inherit !important;
  opacity: 0.82 !important;
}

/* Driver Manager: starea și acțiunea de absență folosesc numai semantica
 * verde/petrol/champagne a paletei Soft Grid. Selectorul complet bate regula
 * injectată la runtime de driver_vacations_list_modal.js. */
.manager-driver .manager-meta-value.ok {
  padding: 3px 8px;
  color: var(--green);
  background: rgba(46, 106, 79, 0.1);
  border: 1px solid rgba(46, 106, 79, 0.2);
  border-radius: 999px;
}

.manager-driver .manager-meta-value.warn {
  padding: 3px 8px;
  color: var(--yellow);
  background: rgba(122, 79, 0, 0.1);
  border: 1px solid rgba(122, 79, 0, 0.22);
  border-radius: 999px;
}

.manager-truck-card .manager-vacations-btn.manager-medical-leave-btn {
  color: var(--accent);
  background: var(--bg2);
  border-color: var(--fleet-champagne);
}

.manager-truck-card .manager-vacations-btn.manager-medical-leave-btn:hover {
  color: #fffdf8;
  background: var(--accent);
  border-color: var(--accent);
}

/* Vacaciones: culorile inline per firmă aparțin temei Original. În Soft Grid
 * numele și marcajele sunt unificate pe petrol + champagne. */
.vacation-drivers-card .vacation-blocked-title,
.vacation-calendar-day-names > div {
  color: var(--accent) !important;
}

.vacation-drivers-group-title {
  color: var(--text) !important;
  border-left-color: var(--fleet-champagne) !important;
}

.vacation-calendar-day.occupied {
  background: #e7efee;
  border-color: rgba(15, 76, 74, 0.32);
}

.gps-link,
.manager-link,
a:not(.nav-logo) {
  color: var(--accent);
}

.modal-overlay {
  background: rgba(26, 24, 20, 0.55);
}

.modal-box,
.manager-modal,
.td-modal {
  color: var(--text);
  background: var(--card);
  border-color: var(--border2);
  box-shadow: 0 26px 70px rgba(26, 24, 20, 0.2);
}

.empty-state {
  color: var(--text3);
}

.spinner-ring {
  border-color: rgba(15, 76, 74, 0.13);
  border-top-color: var(--accent);
}

::-webkit-scrollbar-thumb {
  background: #bcb5aa;
}

#login-gate {
  background:
    radial-gradient(circle at 50% 34%, rgba(15, 76, 74, 0.08), transparent 29%),
    var(--bg);
}

.login-box {
  border-radius: 18px;
}

.login-box h2 {
  color: var(--text);
  font-family: var(--heading-font);
  font-size: 22px;
}

.login-box p,
.form-label {
  color: var(--text2);
}

.login-error {
  color: var(--red);
}

/* 2026-09-21 — rapoarte Fleet care păstrau culori dark/purple inline.
 * `!important` este limitat la stylesheet-ul Soft Grid și este necesar
 * pentru a suprascrie stilurile inline păstrate de tema Original. */
.ca-card {
  background: var(--card);
  border-color: var(--border);
}

.ca-item {
  color: var(--text) !important;
  background: var(--bg3) !important;
  border-color: var(--border) !important;
}

.ca-item:hover {
  background: var(--bg2) !important;
  border-color: var(--accent) !important;
}

.ca-item.ca-item-active,
.ca-item-active {
  color: var(--accent) !important;
  background: #e7efee !important;
  border-color: var(--accent) !important;
  box-shadow: inset 3px 0 0 var(--fleet-champagne);
}

.ca-item-date {
  color: var(--text) !important;
}

.ca-item-meta,
.ca-item-plates {
  color: var(--text2) !important;
}

.nh-company-chip {
  color: var(--text2) !important;
  background: var(--bg3) !important;
  border-color: var(--border2) !important;
}

.nh-company-chip.is-selected {
  color: #fffdf8 !important;
  background: var(--accent) !important;
  border-color: var(--accent) !important;
}

.nh-filter-status {
  color: var(--text3) !important;
}

.nh-summary-card {
  color: var(--text) !important;
  background: var(--card) !important;
  border: 1px solid var(--border) !important;
  box-shadow: 0 6px 18px rgba(39, 34, 26, 0.045);
}

.nh-summary-card--drive,
.nh-summary-card--source {
  border-left: 3px solid var(--green) !important;
}

.nh-summary-card--work {
  border-left: 3px solid var(--fleet-bronze) !important;
}

.nh-summary-card--total,
.nh-summary-card--drivers {
  border-left: 3px solid var(--accent) !important;
}

.nh-summary-label,
.nh-summary-diagnostic {
  color: var(--text2) !important;
}

.nh-summary-value {
  color: var(--accent) !important;
}

.nh-summary-card--drive .nh-summary-value,
.nh-summary-card--source .nh-summary-value {
  color: var(--green) !important;
}

.nh-summary-card--work .nh-summary-value {
  color: var(--yellow) !important;
}

#nh-table {
  color: var(--text);
  background: var(--card);
}

#nh-table th,
.nh-sticky-head,
.nh-total-head {
  color: #fffdf8 !important;
  background: var(--fleet-sidebar) !important;
  border-color: var(--fleet-sidebar-border) !important;
}

#nh-table thead th:not(.nh-sticky-head):not(.nh-total-head) {
  color: var(--text2) !important;
  background: #f1eee7 !important;
  border-color: var(--border) !important;
}

.nh-company-row td {
  color: #fffdf8 !important;
  background: var(--accent) !important;
  border-top-color: var(--fleet-champagne) !important;
}

.nh-driver-cell {
  color: var(--text) !important;
  background: #fffdf8 !important;
  border-color: var(--border) !important;
}

.nh-driver-cell div,
.nh-driver-cell span {
  color: var(--text2) !important;
}

.nh-type-cell {
  color: var(--text2) !important;
  background: #f7f5f0 !important;
  border-color: var(--border) !important;
}

.nh-type-cell--drive {
  color: var(--green) !important;
}

.nh-type-cell--work {
  color: var(--yellow) !important;
}

.nh-type-cell--total {
  color: var(--accent) !important;
  font-weight: 700;
}

.nh-day-cell {
  color: var(--text) !important;
  background: #ffffff !important;
  border-color: #ece8e0 !important;
}

.nh-day-cell.is-total {
  color: var(--accent) !important;
  background: #e7efee !important;
}

.nh-total-cell {
  color: #fffdf8 !important;
  background: var(--accent) !important;
  border-left-color: var(--fleet-champagne) !important;
  border-bottom-color: var(--fleet-sidebar-border) !important;
}

.nh-total-cell--work {
  color: var(--text) !important;
  background: #e8dcc3 !important;
}

.nh-total-cell--master {
  background: var(--fleet-sidebar) !important;
}

@media (max-width: 680px) {
  .navbar {
    height: 62px;
    padding: 0 14px;
  }

  .module-header {
    min-height: 0;
    margin-bottom: 12px;
  }
}
