/* ---------------------------------------------------------------------------
   Feuille de style propre à l'application, en complément de Bootstrap 5.3.

   Contrainte hors ligne (ADR-S) : aucune @import, aucune url(http...), aucune police
   distante. Les polices d'écran sont celles du système ; DejaVuSans, sous
   /static/fonts/, est réservée à la génération PDF (ADR-Q).
   --------------------------------------------------------------------------- */

:root {
    --gescarb-bleu: #0b4a6f;
    --gescarb-bleu-clair: #e7f1f7;
}

.gescarb-entete {
    background-color: var(--gescarb-bleu);
    color: #fff;
}

.gescarb-logo {
    height: 44px;
}

.gescarb-organisme {
    font-size: 1.05rem;
    font-weight: 600;
    letter-spacing: .02em;
}

.gescarb-application {
    font-size: .85rem;
    opacity: .85;
}

.gescarb-pied {
    background-color: var(--gescarb-bleu-clair);
}

/*
 * Version livrée, au pied de chaque écran. Chiffres à chasse fixe : ce numéro n'est pas lu, il
 * est relevé et recopié au registre des mises à jour (EXPLOITATION §4), et deux versions
 * voisines — 1.3.0 et 1.3.1 — doivent se distinguer d'un coup d'oeil.
 */
.gescarb-version {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

/*
 * Entrée de menu correspondant à l'écran affiché. Bootstrap ne distingue `.nav-link.active` que
 * par une nuance de gris dans une barre claire — insuffisant pour situer l'utilisateur dans un
 * menu de onze entrées. Le repère est donc porté par un trait, non par la seule couleur.
 */
.navbar-nav .nav-link.active {
    font-weight: 600;
    color: var(--gescarb-bleu);
    box-shadow: inset 0 -3px 0 0 var(--gescarb-bleu);
}

.dropdown-item.active,
.dropdown-item:active {
    background-color: var(--gescarb-bleu);
}

/*
 * Champ obligatoire — marqué par un bord, non par une astérisque posée sur chaque libellé.
 *
 * Quarante-quatre champs le sont, sur treize gabarits : une astérisque oubliée sur le
 * quarante-cinquième ne se verrait jamais, alors que la règle ci-dessous ne peut pas dériver.
 * Elle suit l'attribut `required` lui-même, qui porte déjà l'information aux technologies
 * d'assistance (aria-required implicite) — le repère visuel s'adresse donc à l'œil seul.
 *
 * Un bord, et non une couleur de fond : le signalement ne repose jamais sur la seule couleur.
 * Un champ désactivé en est exclu — la mention « obligatoire » sur un champ qu'on ne peut pas
 * remplir se lit comme une impasse.
 */
.form-control:required:not(:disabled),
.form-select:required:not(:disabled) {
    border-left: 3px solid var(--gescarb-bleu);
}

/* Valeurs numériques des écrans de saisie et des états : lecture en colonne */
.gescarb-nombre {
    font-variant-numeric: tabular-nums;
    text-align: right;
}

/*
 * Marquage « à vérifier » des bons (cas A3, A4 et MSG-21), porté par la ligne entière.
 *
 * Par les variables de Bootstrap 5.3, et non par un `background-color` : `.table` peint chaque
 * cellule avec var(--bs-table-bg) puis pose un box-shadow interne pour le rayage et le survol,
 * qui recouvriraient le fond de la ligne. Déclarées ici sur le <tr>, les trois variables sont
 * héritées par ses cellules et reprises par les règles de Bootstrap — le survol continue donc de
 * répondre, en plus foncé.
 */
.gescarb-a-verifier {
    --bs-table-bg: #fff3cd;
    --bs-table-striped-bg: #f4e7c2;
    --bs-table-hover-bg: #f0e1b4;
}

/*
 * Cadre de la courbe E-02. Chart.js en « maintainAspectRatio: false » prend la hauteur de son
 * parent : sans ce cadre à hauteur fixe, il la prendrait de la carte, elle-même dimensionnée par
 * son contenu, et le canevas grandirait à chaque redimensionnement sans jamais se stabiliser.
 */
.gescarb-cadre-courbe {
    position: relative;
    height: 280px;
}
