/* GestLoc — variantes modernes G90 a G96 (BANC) : base COMMUNE (jetons G63 : --gl-*). Desactivee par defaut : chargee seulement quand la variante du module est demandee (?billing=G90, ?maintenance=G91, ?incidents=G92, ?partners=G93, ?pricing=G94, ?lld=G95, ?reports=G96 ; retour =off), par la classe html.gl-mod posee par le chargeur.
   Habillage seulement : memes elements, champs, actions et scripts ; AUCUN montant, calcul, regle de disponibilite, de tarification ou de facturation n'est modifie. Les regles propres a un module sont dans gl-mod-<module>.css. */
/* GestLoc — module CONTRATS, variante moderne G87 (BANC). Désactivée par défaut : chargée uniquement quand ?contracts=G87 (cookie g87_contracts) ; retour ?contracts=off.
   RÈGLE : tout est scopé sous `html.gl-mod` ET sous le contenu de la page (`.main-container`) ou les fenêtres (`.modal`) : barre de navigation, pied de page, gabarits de contrat (PDF, impression, aperçu),
   page publique de signature et autres pages inchangés. Jetons --gl-* et composants de gl-ds.css (G63) ; aucun deuxième Design System.
   Habillage seulement : mêmes éléments, mêmes champs, mêmes actions, mêmes scripts ; AUCUNE clause, aucun montant, aucune date, aucun libellé contractuel n'est modifié. */

html.gl-mod body { background: var(--gl-bg, #F8FAFC); }
html.gl-mod body :where(a, button, [role="button"], input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--gl-focus, #1A3B5D); outline-offset: 2px; }
html.gl-mod .main-container { font-family: var(--gl-font); color: var(--gl-text, #334155); max-width: var(--gl-w-fleet, 1440px); }

/* ── en-tête de page : le gabarit force un dégradé en ligne ───────── */
html.gl-mod .hero-section { background: var(--gl-surface, #fff) !important; background-image: none !important; color: var(--gl-ink, #0F172A) !important; border: 1px solid var(--gl-line, #E2E8F0); border-left: 4px solid var(--gl-nuit, #1A3B5D); border-radius: var(--gl-r3, 12px); box-shadow: none !important; padding: 16px 20px !important; }
html.gl-mod .hero-section::before, html.gl-mod .hero-section::after { display: none !important; }
html.gl-mod .hero-section :where(.hero-title, .hero-title i, h1) { color: var(--gl-ink, #0F172A) !important; -webkit-text-fill-color: var(--gl-ink, #0F172A); text-shadow: none !important; font-size: var(--gl-fs-24, 24px) !important; font-weight: 600 !important; }
html.gl-mod .hero-section :where(.hero-subtitle, .hero-text > div, .hero-text > p, .hero-text span) { color: var(--gl-muted, #5B6B80) !important; opacity: 1 !important; text-shadow: none !important; font-size: var(--gl-fs-13, 13px) !important; }
html.gl-mod .hero-section :where(.fas, .far, .fa):not(.btn *) { color: var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .hero-section :where(.btn-corporate-light, .btn-light) { background: var(--gl-nuit, #1A3B5D) !important; color: #fff !important; border: 1px solid var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .hero-section :where(.btn-corporate-light, .btn-light) :where(.fas, .far) { color: #fff !important; }

/* ── cartes de synthèse (départs / retours) : dégradés en ligne remplacés par des cartes sobres, mêmes libellés et mêmes valeurs ── */
html.gl-mod .main-container .card[style*="linear-gradient"] { background: var(--gl-surface, #fff) !important; background-image: none !important; color: var(--gl-text, #334155) !important; border: 1px solid var(--gl-line, #E2E8F0) !important; border-left: 4px solid var(--gl-nuit, #1A3B5D) !important; border-radius: var(--gl-r3, 12px); box-shadow: none !important; }
html.gl-mod .main-container .card[style*="linear-gradient"] :where(*) { color: var(--gl-text, #334155) !important; text-shadow: none !important; }
html.gl-mod .main-container .card[style*="linear-gradient"] :where(.fs-1, .fs-2, .display-6, h2, h3, .h2, .h3, strong, .fw-bold) { color: var(--gl-ink, #0F172A) !important; }
html.gl-mod .main-container .card[style*="linear-gradient"] :where(.fas, .far, i) { color: var(--gl-nuit, #1A3B5D) !important; opacity: .85 !important; }
html.gl-mod .main-container .card[style*="linear-gradient"] :where(.text-warning, .fa-exclamation-triangle) { color: var(--gl-warn, #92400E) !important; }
html.gl-mod .main-container .card { border-radius: var(--gl-r3, 12px); }
html.gl-mod .main-container .card.shadow-sm { box-shadow: none !important; border: 1px solid var(--gl-line, #E2E8F0) !important; }
html.gl-mod .main-container .card-header.bg-white { background: var(--gl-surface-2, #F1F5F9) !important; border-bottom: 1px solid var(--gl-line, #E2E8F0); color: var(--gl-ink, #0F172A); font-weight: 600; }

/* ── colonnes « Départs à effectuer » / « Retours à effectuer » : en-têtes sobres (le texte et les compteurs restent) ── */

/* ── fenêtre « client » et formulaires de la page : mêmes jetons ─── */
html.gl-mod .modal .client-form-section, html.gl-mod .modal .document-section { border-color: var(--gl-line, #E2E8F0); }
html.gl-mod .modal .document-section .section-header { color: var(--gl-ink, #0F172A); font-weight: 600; }
html.gl-mod .modal .upload-zone { border: 2px dashed var(--gl-line-strong, #8492A6); border-radius: var(--gl-r2, 8px); background: var(--gl-bg, #F8FAFC); }
html.gl-mod .main-container .table-responsive[tabindex] { outline-offset: 2px; }


html.gl-mod body { background: var(--gl-bg, #F8FAFC); }
html.gl-mod body :where(a, button, [role="button"], input, select, textarea, summary, [tabindex]):focus-visible { outline: 3px solid var(--gl-focus, #1A3B5D); outline-offset: 2px; box-shadow: 0 0 0 5px #fff; border-radius: 6px; }

/* ── page : largeur et rythme ─────────────────────────────────────── */
html.gl-mod .main-container { font-family: var(--gl-font); color: var(--gl-text, #334155); }

/* ── en-tête de page (remplace les bandeaux dégradés) ─────────────── */
html.gl-mod .main-container .hero-section { background: var(--gl-surface, #fff); background-image: none; color: var(--gl-ink, #0F172A); border: 1px solid var(--gl-line, #E2E8F0); border-left: 4px solid var(--gl-nuit, #1A3B5D); border-radius: var(--gl-r3, 12px); box-shadow: var(--gl-shadow-1); padding: 20px 24px; margin-bottom: var(--gl-s5, 24px); }
html.gl-mod .main-container .hero-section :where(.hero-title, h1, h2) { color: var(--gl-ink, #0F172A) !important; -webkit-text-fill-color: var(--gl-ink, #0F172A); font-size: var(--gl-fs-24, 24px); font-weight: 600; letter-spacing: -.01em; line-height: 1.25; margin: 0; text-shadow: none; }
html.gl-mod .main-container .hero-section :where(.fas, .fa, .far, .fab):not(.btn *) { color: var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .main-container .hero-section .hero-content { display: flex; align-items: center; justify-content: space-between; gap: var(--gl-s3, 12px); flex-wrap: wrap; }
html.gl-mod .main-container .hero-section .btn { min-height: 36px; }
html.gl-mod .main-container .hero-section :where(.btn-light, .btn-corporate-light, .btn-outline-light) { background: var(--gl-surface, #fff); color: var(--gl-nuit, #1A3B5D); border: 1px solid var(--gl-line-strong, #8492A6); }
html.gl-mod .main-container .hero-section :where(.btn-light, .btn-corporate-light, .btn-outline-light):hover { background: var(--gl-nuit-50, #E6EDF5); color: var(--gl-nuit-900, #0F2239); }
html.gl-mod .main-container .hero-section :where(.btn-primary, .btn-success) { background: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); color: #fff; }

/* ── indicateurs (cartes de synthèse) ─────────────────────────────── */
html.gl-mod .main-container :where(.stats-card, .stat-card) { background: var(--gl-surface, #fff) !important; background-image: none !important; color: var(--gl-text, #334155) !important; border: 1px solid var(--gl-line, #E2E8F0) !important; border-top: 3px solid var(--gl-nuit, #1A3B5D) !important; border-radius: var(--gl-r3, 12px); box-shadow: var(--gl-shadow-1) !important; }
html.gl-mod .main-container :where(.stats-card, .stat-card) :where(.fas, .fa, .far, i) { color: var(--gl-nuit, #1A3B5D) !important; opacity: .85; }

/* ── cartes et sections ───────────────────────────────────────────── */
html.gl-mod .main-container .card { background: var(--gl-surface, #fff); border: 1px solid var(--gl-line, #E2E8F0); border-radius: var(--gl-r3, 12px); box-shadow: var(--gl-shadow-1); }
html.gl-mod .main-container .card-header { background: var(--gl-surface-2, #F1F5F9) !important; background-image: none !important; color: var(--gl-ink, #0F172A) !important; border-bottom: 1px solid var(--gl-line, #E2E8F0); border-radius: var(--gl-r3, 12px) var(--gl-r3, 12px) 0 0; font-weight: 600; padding: 12px 20px; }
html.gl-mod .main-container .card-header :where(h1, h2, h3, h4, h5, h6, .card-title) { color: var(--gl-ink, #0F172A) !important; font-size: var(--gl-fs-16, 16px); font-weight: 600; margin: 0; }
html.gl-mod .main-container .card-header :where(.text-white, .text-light) { color: var(--gl-ink, #0F172A) !important; }
html.gl-mod .main-container .card-body { padding: 20px; }
html.gl-mod .main-container :where(.text-muted, .form-text, small.text-muted) { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod .main-container .text-primary { color: var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .main-container .text-success { color: var(--gl-ok, #166534) !important; }
html.gl-mod .main-container .text-danger { color: var(--gl-bad, #991B1B) !important; }
html.gl-mod .main-container .text-warning { color: var(--gl-warn, #92400E) !important; }
html.gl-mod .main-container .text-info { color: var(--gl-info, #1E40AF) !important; }
html.gl-mod .main-container .text-secondary { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod .main-container .status-item > span { color: var(--gl-ok, #166534) !important; }
html.gl-mod .main-container .text-white-50 { color: var(--gl-muted, #5B6B80) !important; }

/* ── tableaux ─────────────────────────────────────────────────────── */
html.gl-mod .main-container .table { --bs-table-bg: transparent; color: var(--gl-text, #334155); font-size: var(--gl-fs-13, 13px); margin-bottom: 0; }
html.gl-mod .main-container .table > thead > tr > th, html.gl-mod .main-container table.dataTable thead th { background: var(--gl-surface-2, #F1F5F9); color: var(--gl-ink, #0F172A); font-size: var(--gl-fs-12, 12px); font-weight: 700; text-transform: uppercase; letter-spacing: .04em; border-bottom: 1px solid var(--gl-line, #E2E8F0); white-space: nowrap; vertical-align: middle; }
html.gl-mod .main-container .table > tbody > tr > td { border-color: var(--gl-line, #E2E8F0); vertical-align: middle; }
html.gl-mod .main-container .table-hover > tbody > tr:hover > * { background: var(--gl-nuit-50, #E6EDF5); color: var(--gl-ink, #0F172A); }
html.gl-mod .main-container .table-responsive { border: 1px solid var(--gl-line, #E2E8F0); border-radius: var(--gl-r2, 8px); background: var(--gl-surface, #fff); }
html.gl-mod .main-container .table-responsive:focus-visible { outline: 3px solid var(--gl-focus, #1A3B5D); outline-offset: 2px; }
html.gl-mod .main-container .table code, html.gl-mod .main-container td code { color: var(--gl-ink, #0F172A); background: var(--gl-surface-2, #F1F5F9); border-radius: 4px; padding: 1px 6px; }

/* ── boutons ──────────────────────────────────────────────────────── */
html.gl-mod .main-container .btn, html.gl-mod .modal .btn { border-radius: var(--gl-r2, 8px); font-weight: 600; font-size: var(--gl-fs-13, 13px); min-height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
html.gl-mod .main-container .btn-sm, html.gl-mod .modal .btn-sm { min-height: 32px; font-size: var(--gl-fs-12, 12px); padding-inline: 10px; }
html.gl-mod :is(.main-container, .modal) :where(.btn-primary, .corporate-btn-primary) { background: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); color: #fff; background-image: none; }
html.gl-mod :is(.main-container, .modal) :where(.btn-primary, .corporate-btn-primary):hover { background: var(--gl-nuit-900, #0F2239); border-color: var(--gl-nuit-900, #0F2239); color: #fff; }
html.gl-mod :is(.main-container, .modal) .btn-success { background: var(--gl-ok, #166534); border-color: var(--gl-ok, #166534); color: #fff; }
html.gl-mod :is(.main-container, .modal) .btn-danger { background: var(--gl-bad, #991B1B); border-color: var(--gl-bad, #991B1B); color: #fff; }
html.gl-mod :is(.main-container, .modal) .btn-warning { background: var(--gl-warn-bg, #FEF3C7); border-color: #B45309; color: var(--gl-warn, #92400E); }
html.gl-mod :is(.main-container, .modal) .btn-info { background: var(--gl-info-bg, #DBEAFE); border-color: var(--gl-info, #1E40AF); color: var(--gl-info, #1E40AF); }
html.gl-mod :is(.main-container, .modal) .btn-secondary { background: var(--gl-surface, #fff); border-color: var(--gl-line-strong, #8492A6); color: var(--gl-ink, #0F172A); }
html.gl-mod :is(.main-container, .modal) .btn-outline-primary { color: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-primary:hover { background: var(--gl-nuit-50, #E6EDF5); color: var(--gl-nuit-900, #0F2239); }
html.gl-mod :is(.main-container, .modal) .btn-outline-secondary { color: var(--gl-text, #334155); border-color: var(--gl-line-strong, #8492A6); background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-secondary:hover { background: var(--gl-surface-2, #F1F5F9); color: var(--gl-ink, #0F172A); }
html.gl-mod :is(.main-container, .modal) .btn-outline-success { color: var(--gl-ok, #166534); border-color: var(--gl-ok, #166534); background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-success:hover { background: var(--gl-ok-bg, #DCFCE7); color: var(--gl-ok, #166534); }
html.gl-mod :is(.main-container, .modal) .btn-outline-danger { color: var(--gl-bad, #991B1B); border-color: #B91C1C; background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-danger:hover { background: var(--gl-bad-bg, #FEE2E2); color: var(--gl-bad, #991B1B); }
html.gl-mod :is(.main-container, .modal) .btn-outline-warning { color: var(--gl-warn, #92400E); border-color: #B45309; background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-warning:hover { background: var(--gl-warn-bg, #FEF3C7); color: var(--gl-warn, #92400E); }
html.gl-mod :is(.main-container, .modal) .btn-outline-info { color: var(--gl-info, #1E40AF); border-color: var(--gl-info, #1E40AF); background: var(--gl-surface, #fff); }
html.gl-mod :is(.main-container, .modal) .btn-outline-info:hover { background: var(--gl-info-bg, #DBEAFE); color: var(--gl-info, #1E40AF); }
html.gl-mod :is(.main-container, .modal) :where(.btn[disabled], .btn.disabled) { background: var(--gl-surface-2, #F1F5F9); border-color: var(--gl-line, #E2E8F0); color: #64748B; opacity: 1; }
html.gl-mod :is(.main-container, .modal) :where(.btn-light, .btn-corporate-light) { background: var(--gl-surface, #fff); color: var(--gl-nuit, #1A3B5D); border: 1px solid var(--gl-line-strong, #8492A6); }

/* classes « corporate » de l'origine : mêmes rôles que les boutons G63 (contrastes vérifiés) */
html.gl-mod :is(.main-container, .modal) :where(.btn-corporate-success, .corporate-btn-success) { background: var(--gl-ok, #166534); border-color: var(--gl-ok, #166534); color: #fff; background-image: none; }
html.gl-mod :is(.main-container, .modal) :where(.btn-corporate-danger, .corporate-btn-danger) { background: var(--gl-bad, #991B1B); border-color: var(--gl-bad, #991B1B); color: #fff; background-image: none; }
html.gl-mod :is(.main-container, .modal) :where(.btn-corporate-warning, .corporate-btn-warning) { background: var(--gl-warn-bg, #FEF3C7); border-color: #B45309; color: var(--gl-warn, #92400E); background-image: none; }
html.gl-mod :is(.main-container, .modal) :where(.btn-corporate-secondary, .corporate-btn-secondary, .btn-corporate-outline) { background: var(--gl-surface, #fff); border: 1px solid var(--gl-line-strong, #8492A6); color: var(--gl-ink, #0F172A); background-image: none; }
html.gl-mod :is(.main-container, .modal) :where(.btn-corporate-success, .btn-corporate-danger, .btn-corporate-warning, .btn-corporate-secondary, .btn-corporate-outline, .corporate-btn-secondary):hover { filter: brightness(.94); }

/* ── pastilles d'état ─────────────────────────────────────────────── */
html.gl-mod :is(.main-container, .modal) .badge { border-radius: var(--gl-pill, 999px); font-size: var(--gl-fs-12, 12px); font-weight: 600; padding: 3px 9px; line-height: 1.3; background: var(--gl-surface-2, #F1F5F9) !important; color: var(--gl-text, #334155) !important; border: 1px solid var(--gl-line, #E2E8F0); }
html.gl-mod :is(.main-container, .modal) .badge:is(.bg-success, .badge-success, .text-bg-success) { background: var(--gl-ok-bg, #DCFCE7) !important; color: var(--gl-ok, #166534) !important; border-color: transparent; }
html.gl-mod :is(.main-container, .modal) .badge:is(.bg-danger, .badge-danger, .text-bg-danger) { background: var(--gl-bad-bg, #FEE2E2) !important; color: var(--gl-bad, #991B1B) !important; border-color: transparent; }
html.gl-mod :is(.main-container, .modal) .badge:is(.bg-warning, .badge-warning, .text-bg-warning) { background: var(--gl-warn-bg, #FEF3C7) !important; color: var(--gl-warn, #92400E) !important; border-color: transparent; }
html.gl-mod :is(.main-container, .modal) .badge:is(.bg-info, .badge-info, .text-bg-info, .bg-primary, .text-bg-primary) { background: var(--gl-info-bg, #DBEAFE) !important; color: var(--gl-info, #1E40AF) !important; border-color: transparent; }
html.gl-mod :is(.main-container, .modal) .badge:is(.bg-dark, .text-bg-dark) { background: var(--gl-nuit, #1A3B5D) !important; color: #fff !important; border-color: transparent; }

/* ── formulaires ──────────────────────────────────────────────────── */
html.gl-mod :is(.main-container, .modal) :where(.form-control, .form-select) { min-height: 40px; border: 1px solid var(--gl-line-strong, #8492A6); border-radius: var(--gl-r2, 8px); color: var(--gl-ink, #0F172A); background-color: #fff; font-size: var(--gl-fs-14, 14px); }
html.gl-mod :is(.main-container, .modal) :where(.form-control, .form-select):focus { border-color: var(--gl-nuit, #1A3B5D); box-shadow: 0 0 0 3px rgba(26, 59, 93, .18); }
html.gl-mod :is(.main-container, .modal) :where(.form-control, .form-select):disabled, html.gl-mod :is(.main-container, .modal) .form-control[readonly] { background: var(--gl-surface-2, #F1F5F9); color: #475569; }
html.gl-mod :is(.main-container, .modal) .form-control::placeholder { color: #64748B; opacity: 1; }
html.gl-mod :is(.main-container, .modal) .form-label { font-size: var(--gl-fs-13, 13px); font-weight: 600; color: var(--gl-ink, #0F172A); }
html.gl-mod :is(.main-container, .modal) :where(.form-control.is-invalid, .form-select.is-invalid) { border-color: var(--gl-bad, #991B1B); }
html.gl-mod :is(.main-container, .modal) .invalid-feedback { color: var(--gl-bad, #991B1B); font-weight: 600; font-size: var(--gl-fs-12, 12px); }
html.gl-mod :is(.main-container, .modal) .form-check-input { border-color: var(--gl-line-strong, #8492A6); }
html.gl-mod :is(.main-container, .modal) .form-check-input:checked { background-color: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); }
html.gl-mod :is(.main-container, .modal) .form-check-label { color: var(--gl-text, #334155); }
html.gl-mod :is(.main-container, .modal) .input-group-text { background: var(--gl-surface-2, #F1F5F9); border-color: var(--gl-line-strong, #8492A6); color: var(--gl-text, #334155); }

html.gl-mod .main-container .dataTables_wrapper .dataTables_length select { padding-right: 2rem; min-width: 76px; }
html.gl-mod .main-container .dataTables_wrapper :where(.dataTables_filter, .dataTables_length, .dataTables_info) { color: var(--gl-text, #334155); font-size: var(--gl-fs-13, 13px); }

/* ── fenêtres ─────────────────────────────────────────────────────── */
html.gl-mod .modal .modal-content { border: 0; border-radius: var(--gl-r4, 14px); box-shadow: var(--gl-shadow-modal); overflow: hidden; }
html.gl-mod .modal .modal-header { background: var(--gl-surface, #fff) !important; background-image: none !important; color: var(--gl-ink, #0F172A) !important; border-bottom: 1px solid var(--gl-line, #E2E8F0); padding: 16px 20px; }
html.gl-mod .modal .modal-header :where(.modal-title, h1, h2, h3, h4, h5, h6) { color: var(--gl-ink, #0F172A) !important; font-size: var(--gl-fs-18, 18px); font-weight: 600; }
html.gl-mod .modal .modal-header .btn-close, html.gl-mod .modal .modal-header .btn-close-white { filter: none; opacity: .7; }
html.gl-mod .modal .modal-header :where(.fas, .fa, .far) { color: var(--gl-nuit, #1A3B5D); }
html.gl-mod .modal .modal-body { color: var(--gl-text, #334155); padding: 20px; }
html.gl-mod .modal .modal-footer { background: var(--gl-bg, #F8FAFC); border-top: 1px solid var(--gl-line, #E2E8F0); padding: 12px 20px; gap: 8px; }
html.gl-mod .modal :where(.text-muted, .form-text) { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod .modal :where(.text-danger) { color: var(--gl-bad, #991B1B) !important; }

/* ── alertes, onglets, pagination ─────────────────────────────────── */
html.gl-mod .main-container .alert { border-radius: var(--gl-r2, 8px); border-width: 1px; font-size: var(--gl-fs-14, 14px); }
html.gl-mod .main-container .alert-success { background: var(--gl-ok-bg, #DCFCE7); color: var(--gl-ok, #166534); border-color: #86EFAC; }
html.gl-mod .main-container .alert-danger { background: var(--gl-bad-bg, #FEE2E2); color: var(--gl-bad, #991B1B); border-color: #FCA5A5; }
html.gl-mod .main-container .alert-warning { background: var(--gl-warn-bg, #FEF3C7); color: var(--gl-warn, #92400E); border-color: #FCD34D; }
html.gl-mod .main-container .alert-info { background: var(--gl-info-bg, #DBEAFE); color: var(--gl-info, #1E40AF); border-color: #93C5FD; }
html.gl-mod .main-container .nav-tabs { border-bottom: 1px solid var(--gl-line, #E2E8F0); gap: 4px; }
html.gl-mod .main-container .nav-tabs .nav-link { color: var(--gl-text, #334155); font-weight: 600; font-size: var(--gl-fs-13, 13px); border: 0; border-bottom: 3px solid transparent; border-radius: 0; }
html.gl-mod .main-container .nav-tabs .nav-link:hover { color: var(--gl-nuit, #1A3B5D); background: var(--gl-nuit-50, #E6EDF5); }
html.gl-mod .main-container .nav-tabs .nav-link.active { color: var(--gl-nuit, #1A3B5D); background: transparent; border-bottom-color: var(--gl-nuit, #1A3B5D); }
html.gl-mod .main-container .nav-pills .nav-link { color: var(--gl-text, #334155); font-weight: 600; border-radius: var(--gl-r2, 8px); }
html.gl-mod .main-container .nav-pills .nav-link.active { background: var(--gl-nuit, #1A3B5D); color: #fff; }
html.gl-mod .main-container .page-link { color: var(--gl-nuit, #1A3B5D); border-color: var(--gl-line-strong, #8492A6); min-width: 36px; text-align: center; }
html.gl-mod .main-container .page-item.active .page-link { background: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); color: #fff; }
html.gl-mod .main-container .page-item.disabled .page-link { color: #64748B; }
html.gl-mod .main-container .progress { background: var(--gl-surface-2, #F1F5F9); border-radius: var(--gl-pill, 999px); }
html.gl-mod .main-container .progress-bar { background-color: var(--gl-nuit, #1A3B5D); }
html.gl-mod .main-container .list-group-item { border-color: var(--gl-line, #E2E8F0); }

/* cartes de synthèse Bootstrap colorées (vue globale du super-administrateur) : même rendu neutre que les cartes de statistiques, texte lisible */
html.gl-mod .main-container .card:is(.bg-primary, .bg-success, .bg-info, .bg-warning, .bg-danger, .bg-dark, .bg-secondary) { background: var(--gl-surface, #fff) !important; color: var(--gl-text, #334155) !important; border: 1px solid var(--gl-line, #E2E8F0) !important; border-top: 3px solid var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .main-container .card:is(.bg-primary, .bg-success, .bg-info, .bg-warning, .bg-danger, .bg-dark, .bg-secondary) :where(.text-white, .text-white-50, .small, .h4, h4, h5, h6, p, i, .fas) { color: var(--gl-ink, #0F172A) !important; opacity: 1; }
html.gl-mod .main-container .card:is(.bg-primary, .bg-success, .bg-info, .bg-warning, .bg-danger, .bg-dark, .bg-secondary) :where(.small, small) { color: var(--gl-muted, #5B6B80) !important; }

html.gl-mod .main-container a:not(.btn):not([class*="btn-"]):not(.nav-link):not(.page-link):not(.dropdown-item):not(.list-group-item) { color: var(--gl-nuit, #1A3B5D); }
html.gl-mod .main-container a:not(.btn):not([class*="btn-"]):not(.nav-link):not(.page-link):not(.dropdown-item):not(.list-group-item):hover { color: var(--gl-nuit-900, #0F2239); }
html.gl-mod .main-container .text-muted, html.gl-mod .main-container .form-text { color: #475569 !important; }

html.gl-mod .main-container .mobile-topbar-brand, html.gl-mod .main-container .mobile-topbar-brand span { color: var(--gl-nuit, #1A3B5D) !important; }

/* ── aides G87 (ajoutées par gl-admin-78.js) ──────────────────────── */

/* ── mobile ───────────────────────────────────────────────────────── */
@media (max-width: 767.98px) {
  html.gl-mod .main-container { padding-inline: 12px; }
  html.gl-mod .main-container .hero-section { padding: 16px; }
  html.gl-mod .main-container .hero-section :where(.hero-title, h1) { font-size: var(--gl-fs-20, 20px); }
  html.gl-mod .main-container .btn { min-height: 44px; }
  html.gl-mod .main-container .btn-sm { min-height: 40px; min-width: 40px; }
  html.gl-mod .main-container .card-body { padding: 14px; }
  html.gl-mod .main-container .table-responsive { -webkit-overflow-scrolling: touch; }
  html.gl-mod .modal .modal-dialog { margin: 8px; }
  html.gl-mod .modal .modal-footer .btn { flex: 1 1 auto; }
}
@media (prefers-reduced-motion: reduce) { html.gl-mod * { animation-duration: .001ms !important; transition: none !important; } }

/* ── G87 : composants propres au module Véhicules (contrastes ≥ 4,5:1, jetons G63) ──────────────── */
html.gl-mod .main-container :where(.badge-success, .vehicle-badge.badge-success, .badge-available) { background-color: #047857 !important; color: #fff !important; }
html.gl-mod .main-container .badge.badge-success:not(.vehicle-badge) { background-color: #E6F4EA !important; color: #14532D !important; }

/* ── G87 : en-tête de la liste (le gabarit force un dégradé en ligne avec !important) ─────────────── */

/* ── G87 : onglets de la fenêtre « Détails » (bleu Bootstrap 0d6efd sur fond clair : 4,3:1) ─────── */
html.gl-mod .modal :where(.nav-tabs, .nav-pills) .nav-link { color: var(--gl-nuit, #1A3B5D); }
html.gl-mod .modal :where(.nav-tabs, .nav-pills) .nav-link.active { color: var(--gl-nuit, #1A3B5D); font-weight: 600; }

/* ── G87 : en-tête mobile de la liste (même traitement que l'en-tête de bureau : fond de surface G63, bandeau Nuit) ───────────── */

/* ── G87 : libellés des indicateurs de la fiche (gris 899197 sur blanc : 3,4:1) ──────────────────── */
/* ── G87 : les conteneurs de graphiques (Chart.js, redimensionnés en cours de chargement) ne doivent jamais devenir des régions défilantes ─── */

/* ── cockpit départs / retours : pastilles et boutons d'action (contrastes ≥ 4,5:1, mêmes libellés, mêmes couleurs de sens) ── */
/* widget de mesure de performance du banc (pied de page) : contrastes AA */

/* ══════════════════════════════════════════════════════════════════════════
   G88 — fenêtres du module Contrats (génération, restitution, états des lieux, audit kilométrique, prolongation, correction, annulation,
   caméra, annotation des dégâts) : mêmes jetons G63. Habillage seulement : mêmes champs, mêmes actions, mêmes scripts, mêmes libellés ;
   aucun gabarit de contrat, aucune clause, aucun montant n'est touché.
   ══════════════════════════════════════════════════════════════════════════ */
html.gl-mod .modal-content { border: 1px solid var(--gl-line, #E2E8F0); border-radius: var(--gl-r4, 16px); box-shadow: var(--gl-shadow-3, 0 24px 48px rgba(15,34,57,.22)); color: var(--gl-text, #334155); font-family: var(--gl-font); overflow: hidden; }
html.gl-mod .modal-header { background: var(--gl-surface-2, #F1F5F9) !important; background-image: none !important; color: var(--gl-ink, #0F172A) !important; border-bottom: 1px solid var(--gl-line, #E2E8F0); padding: 14px 20px; }
html.gl-mod .modal-header :where(.modal-title, h1, h2, h3, h4, h5, h6) { color: var(--gl-ink, #0F172A) !important; font-size: var(--gl-fs-18, 18px); font-weight: 600; text-shadow: none; }
html.gl-mod .modal-header :where(.fas, .far, .fa, i):not(.btn-close) { color: var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod .modal-header :where(.text-white, .text-dark, .bg-success, .bg-warning, .bg-danger, .bg-primary, .bg-info) { color: var(--gl-ink, #0F172A) !important; }
html.gl-mod .modal-header.bg-success, html.gl-mod .modal-header.bg-warning, html.gl-mod .modal-header.bg-danger, html.gl-mod .modal-header.bg-primary, html.gl-mod .modal-header.bg-info { background: var(--gl-surface-2, #F1F5F9) !important; border-left: 4px solid var(--gl-nuit, #1A3B5D); }
html.gl-mod .modal-header.bg-danger { border-left-color: var(--gl-danger, #B91C1C); }
html.gl-mod .modal-header .btn-close, html.gl-mod .modal-header .btn-close-white { filter: none; opacity: .75; }
html.gl-mod .modal-header .btn-close:hover { opacity: 1; }
html.gl-mod .modal-body { padding: 18px 20px; }
html.gl-mod .modal-footer { background: var(--gl-surface, #fff); border-top: 1px solid var(--gl-line, #E2E8F0); padding: 12px 20px; gap: 8px; }
html.gl-mod .modal :where(.form-label, label) { color: var(--gl-ink, #0F172A); font-size: var(--gl-fs-13, 13px); font-weight: 600; }
html.gl-mod .modal :where(.form-control, .form-select) { border: 1px solid var(--gl-line-strong, #8492A6); border-radius: var(--gl-r2, 8px); color: var(--gl-ink, #0F172A); min-height: 38px; }
html.gl-mod .modal :where(.form-control, .form-select):focus { border-color: var(--gl-nuit, #1A3B5D); box-shadow: 0 0 0 3px rgba(26,59,93,.18); }
html.gl-mod .modal :where(.form-control[readonly], .form-control:disabled, .form-select:disabled) { background: var(--gl-surface-2, #F1F5F9); color: var(--gl-text, #334155); }
html.gl-mod .modal :where(.text-muted, .form-text, small.text-muted) { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod .modal :where(.btn-primary, .btn-success) { background: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); color: #fff; }
html.gl-mod .modal :where(.btn-primary, .btn-success):hover { background: var(--gl-nuit-900, #0F2239); border-color: var(--gl-nuit-900, #0F2239); color: #fff; }
html.gl-mod .modal :where(.btn-outline-secondary, .btn-secondary, .btn-light) { color: var(--gl-nuit, #1A3B5D); border-color: var(--gl-line-strong, #8492A6); background: var(--gl-surface, #fff); }
html.gl-mod .modal .btn-danger { background: var(--gl-danger, #B91C1C); border-color: var(--gl-danger, #B91C1C); color: #fff; }
html.gl-mod .modal :where(.btn-warning) { background: #FDE68A; border-color: #B45309; color: #3F2A04; }
html.gl-mod .modal :where(.btn-sm) { min-height: 32px; }
html.gl-mod .modal :where(.alert-info) { background: var(--gl-info-bg, #E6F0FA); border-color: #9CC3E6; color: #0B3A63; }
html.gl-mod .modal :where(.alert-warning) { background: var(--gl-warn-bg, #FEF3C7); border-color: #E3B341; color: #5A3A00; }
html.gl-mod .modal :where(.alert-danger) { background: var(--gl-danger-bg, #FDE8E8); border-color: #E39B9B; color: #7A1010; }
html.gl-mod .modal :where(.alert-success) { background: var(--gl-ok-bg, #E6F4EA); border-color: #8CC59A; color: #14532D; }
/* onglets des fenêtres (restitution : contrôle, dégâts, paiement…) — contraste suffisant en état inactif et actif */
html.gl-mod .modal .nav-tabs { border-bottom: 1px solid var(--gl-line, #E2E8F0); }
html.gl-mod .modal .nav-tabs .nav-link { color: var(--gl-text, #334155); border: 1px solid transparent; border-radius: var(--gl-r2, 8px) var(--gl-r2, 8px) 0 0; font-weight: 500; }
html.gl-mod .modal .nav-tabs .nav-link:hover { color: var(--gl-ink, #0F172A); background: var(--gl-surface-2, #F1F5F9); }
html.gl-mod .modal .nav-tabs .nav-link.active { color: var(--gl-nuit, #1A3B5D) !important; background: var(--gl-surface, #fff); border-color: var(--gl-line, #E2E8F0) var(--gl-line, #E2E8F0) var(--gl-surface, #fff); font-weight: 600; }
html.gl-mod .modal .nav-tabs .nav-link :where(.fas, .far, .fa, i) { color: inherit !important; }
html.gl-mod .modal .nav-tabs .nav-link.active :where(.text-warning, .text-danger, .text-success) { color: inherit !important; }
html.gl-mod .modal .badge.bg-warning { background: #FDE68A !important; color: #3F2A04 !important; }
/* pavés de signature (fenêtre de génération, restitution) : cadre visible, hauteur tactile confortable */
html.gl-mod .modal :where(canvas.signature-pad, .signature-pad canvas, [id*="signature"] canvas, [id*="Signature"] canvas) { border: 2px dashed var(--gl-line-strong, #8492A6); border-radius: var(--gl-r2, 8px); background: var(--gl-surface, #fff); touch-action: none; max-width: 100%; }
/* petits écrans : fenêtres plein écran lisibles, aucune largeur fixe en pixels ne déborde */
@media (max-width: 575.98px) {
  html.gl-mod .modal-dialog { margin: 0; max-width: 100%; min-height: 100%; }
  html.gl-mod .modal-content { border-radius: 0; min-height: 100vh; }
  html.gl-mod .modal-footer { position: sticky; bottom: 0; flex-wrap: wrap; }
  html.gl-mod .modal-footer .btn { flex: 1 1 auto; }
  html.gl-mod .modal :where(.row) { --bs-gutter-x: .75rem; }
  html.gl-mod .modal :where(table) { width: 100%; table-layout: fixed; overflow-wrap: anywhere; }
}
@media (prefers-reduced-motion: reduce) { html.gl-mod .modal.fade .modal-dialog { transition: none; } }

/* ── G88 : onglet « Conditions générales de location » (?route=company_settings) — uniquement le panneau #contracts, le reste de la page est inchangé ── */

/* G91 : bouton « info » des fenêtres (texte blanc sur fond clair imposé par la page) : fond sobre contrasté */
html.gl-mod .modal :where(.btn-info) { background: var(--gl-nuit, #1A3B5D) !important; border-color: var(--gl-nuit, #1A3B5D) !important; color: #fff !important; }

/* G92 : composants communs aux écrans de suivi (boutons « info », libellés vides, filtres mobiles) */
html.gl-mod .btn-corporate-info { background: var(--gl-nuit, #1A3B5D); border-color: var(--gl-nuit, #1A3B5D); color: #fff; }
html.gl-mod .btn-corporate-info:hover { background: var(--gl-nuit-900, #0F2239); color: #fff; }
html.gl-mod .mobile-empty-text { color: var(--gl-muted, #5B6B80) !important; }

/* G96 : contrastes des composants communs (liens « primaire », libellés secondaires, barres de progression, badges sombres, états vides mobiles, onglets mobiles) — habillage seulement */
html.gl-mod .text-primary { color: var(--gl-nuit, #1A3B5D) !important; }
html.gl-mod :where(.text-secondary, .text-black-50) { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod .card :where(small, .small) { color: var(--gl-muted, #5B6B80); }
html.gl-mod .progress-bar.bg-info { background-color: #0E7490 !important; color: #fff !important; }
html.gl-mod .badge.bg-dark { background-color: var(--gl-nuit, #1A3B5D) !important; color: #fff !important; }
html.gl-mod [class*="-empty"] :where(p, span, small) { color: var(--gl-muted, #5B6B80) !important; }
html.gl-mod :where(.mobile-tab-btn) { color: #374151; background: #F3F4F6; border: 1px solid #D1D5DB; font-weight: 500; }
html.gl-mod :where(.mobile-tab-btn.active) { background: var(--gl-nuit, #1A3B5D) !important; color: #fff !important; border-color: var(--gl-nuit, #1A3B5D); font-weight: 600; }
html.gl-mod .card :where(small, .small) { color: #475569; }
html.gl-mod small:not([class*="text-"]) { color: #475569; }
html.gl-mod .badge.bg-success { background-color: #DCFCE7 !important; color: #14532D !important; }
html.gl-mod :where(.text-uppercase.small, .opacity-75) { color: #475569; opacity: 1 !important; }
html.gl-mod label > :where(.fas, .far, .fa) { color: #475569; }
html.gl-mod .ca-item-value.total { color: #4338CA; }
