/* ==========================================================================
   CAMC_PLATFORM — Design System central   (CHIC • CHOC • CHÈQUE)
   --------------------------------------------------------------------------
   Couche graphique unique et réutilisable. À charger APRÈS Bootstrap dans
   base.html. Aucun template ne doit redéfinir une couleur de marque en dur :
   il consomme les variables ci-dessous.

   CHIC   : simple, élégant, cohérent.
   CHOC   : l'information importante saute aux yeux.
   CHÈQUE : chaque élément fait gagner du temps, réduit un risque ou
            améliore une décision. « Beaucoup d'information tue l'information. »

   Charte :
     - blanc / gris très clair pour les fonds ;
     - bleu ciel / bleu CAMC / bleu soutenu pour actions, titres, navigation ;
     - VERT / ORANGE / ROUGE réservés EXCLUSIVEMENT aux statuts et à la
       sévérité — jamais décoratifs.
   ========================================================================== */

:root {
  /* ---- Fonds ---- */
  --camc-white:        #ffffff;
  --camc-bg:           #f4f6f9;   /* fond d'application, gris très clair */
  --camc-bg-alt:       #eef2f7;   /* zones alternées, entêtes discrètes */
  --camc-sky:          #eaf2fb;   /* bleu ciel — survols, sélection douce */
  --camc-sky-strong:   #d8e8fb;

  /* ---- Bleus de marque ---- */
  --camc-blue:         #1e6fd9;   /* bleu CAMC — actions primaires, liens */
  --camc-blue-hover:   #1a60bd;
  --camc-blue-deep:    #14477e;   /* bleu soutenu — titres, barres, nav active */
  --camc-blue-deep-2:  #0f3660;

  /* ---- Texte ---- */
  --camc-ink:          #1f2733;   /* texte principal (quasi noir bleuté) */
  --camc-ink-soft:     #47566b;   /* texte secondaire */
  --camc-ink-muted:    #6b7789;   /* légendes, méta */

  /* ---- Traits ---- */
  --camc-border:       #d9e0ea;   /* bordures de tableaux, cartes, champs */
  --camc-border-soft:  #e7ecf3;

  /* ---- Charte Accounting (décision Direction du 06/09/2026) ----
     ORDRE N.46 (11/09/2026, arbitrage Direction). Ces trois teintes étaient
     déjà la référence VALIDÉE et étaient écrites EN DUR sur les écrans, faute
     de jeton qui les porte : aucun jeton existant ne vaut ces valeurs
     (--camc-blue-deep = #14477e, --camc-sky = #eaf2fb). Elles reçoivent ici
     leur jeton sémantique, À VALEUR IDENTIQUE — le rendu ne change pas, c'est
     l'écriture en dur qui disparaît.

     AUCUN jeton existant n'est modifié : les valeurs ci-dessus servent
     ailleurs dans l'application et n'ont pas été auditées par cet ordre.
     Ce n'est pas une nouvelle palette : ce sont les couleurs déjà en service,
     nommées. */
  --camc-charte-titre:     #0C447C;   /* titres de section, texte sur zone claire */
  --camc-charte-zone:      #E6F1FB;   /* fond de zone / en-tête, bleu très clair */
  --camc-charte-selection: #85B7EB;   /* ligne sélectionnée, pleine largeur */

  /* ---- Statuts (sémantiques UNIQUEMENT) ---- */
  --camc-ok:           #1a9e5c;   --camc-ok-bg:    #e7f6ee;
  --camc-warn:         #d98200;   --camc-warn-bg:  #fdf1de;
  --camc-danger:       #d13b3b;   --camc-danger-bg:#fbe9e9;
  --camc-info:         var(--camc-blue);  --camc-info-bg: var(--camc-sky);

  /* ---- Typographie — STANDARD DIRECTION M-068 V1 (20/09/2026) --------------
     SOURCE UNIQUE DE VÉRITÉ. Un écran ne choisit plus une taille : il désigne
     un USAGE. Les valeurs ci-dessous sont celles arrêtées par la Direction ;
     elles ne se modifient pas sans nouvel arbitrage.

     PLANCHER ABSOLU : aucun texte fonctionnel affiché à l'écran ne descend
     sous --camc-fs-min (12 px).

     12–13 px (--camc-fs-min, --camc-fs-sm) est RÉSERVÉ aux informations
     réellement secondaires. Une donnée comptable, un montant, un libellé de
     saisie, une action, un champ, une colonne ou toute information nécessaire
     au travail quotidien ne s'y range JAMAIS pour gagner de la place : elle
     part de --camc-fs-ui (14 px), qui est le socle fonctionnel.

     L'impression n'est pas régie ici : HOLD M-068-PRINT.

     ---- PRINCIPE PERMANENT (Direction, 20/09/2026) ------------------------
     M-068 définit le standard typographique GÉNÉRAL de CAMC_PLATFORM.

     Une exception visuelle EXPLICITEMENT VALIDÉE par la Direction et
     DOCUMENTÉE prévaut sur la valeur générale correspondante. Elle ne doit
     pas être supprimée automatiquement lors d'une standardisation
     ultérieure : la ramener au standard « parce que le standard dit 14 px »
     serait défaire une décision, pas appliquer une règle.

     Quatre exceptions sont en vigueur au 20/09/2026. Elles ne se déduisent
     pas de ce fichier : elles sont inscrites, une par une et avec leur
     référence de décision, dans
         accounting/tests_camc_accounting_m068_garde_fou_01.py
     qui échoue AUSSI BIEN si l'une d'elles disparaît que si une taille
     arbitraire réapparaît. C'est le seul endroit qui fait foi.
     ------------------------------------------------------------------------ */
  --camc-font: "Segoe UI", "Inter", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;

  /* Échelle de base */
  --camc-fs-min:        12px;   /* plancher écran — information périphérique */
  --camc-fs-sm:         13px;   /* information secondaire */
  --camc-fs-ui:         14px;   /* SOCLE FONCTIONNEL — rien de fonctionnel dessous */
  --camc-fs-root:       15px;   /* texte courant */
  --camc-fs-lg:         17px;   /* texte courant renforcé */

  /* Usages métier — dérivés, pour que l'intention reste lisible dans les écrans */
  --camc-fs-table:      var(--camc-fs-ui);   /* données de tableau — cible 14 px */
  --camc-fs-table-head: var(--camc-fs-ui);   /* en-têtes de colonnes, en gras */
  --camc-fs-form:       var(--camc-fs-ui);   /* champs, libellés de saisie, boutons */
  --camc-fs-form-lg:    16px;                /* action de premier plan */
  --camc-fs-badge:      var(--camc-fs-ui);   /* pastille d'état : porte un STATUT */
  --camc-fs-nav:        15px;                /* navigation, niveau 1 */
  --camc-fs-nav-sub:    14px;                /* navigation, niveau 2 */
  --camc-fs-key:        18px;                /* totaux et chiffres clés, en gras */

  /* Titres */
  --camc-fs-h1:         24px;
  --camc-fs-h2:         20px;
  --camc-fs-h3:         17px;

  --camc-lh:            1.55;

  /* ---- Rythme ---- */
  --camc-sp-1: 4px;  --camc-sp-2: 8px;  --camc-sp-3: 12px;
  --camc-sp-4: 16px; --camc-sp-5: 24px; --camc-sp-6: 32px;

  --camc-radius:    10px;
  --camc-radius-sm: 6px;
  --camc-shadow:    0 1px 3px rgba(20, 40, 70, .08), 0 4px 14px rgba(20, 40, 70, .06);
  --camc-shadow-sm: 0 1px 2px rgba(20, 40, 70, .10);

  /* ---- Contrôles ---- */
  --camc-control-h:   38px;   /* hauteur confortable champs / boutons */
}

/* ==========================================================================
   1. BASE — lisibilité
   ========================================================================== */

body {
  font-family: var(--camc-font);
  font-size: var(--camc-fs-root);
  line-height: var(--camc-lh);
  color: var(--camc-ink);
  background: var(--camc-bg);
}

h1, .h1 { font-size: var(--camc-fs-h1); font-weight: 700; color: var(--camc-blue-deep); }
h2, .h2 { font-size: var(--camc-fs-h2); font-weight: 700; color: var(--camc-blue-deep); }
h3, .h3 { font-size: var(--camc-fs-h3); font-weight: 600; color: var(--camc-blue-deep); }

a { color: var(--camc-blue); }
a:hover { color: var(--camc-blue-hover); }

.text-muted { color: var(--camc-ink-muted) !important; }

/* M-068 — LE PLANCHER DEVIENT STRUCTUREL.
   Bootstrap dimensionne `.small` et `<small>` en `.875em`, c'est-a-dire
   RELATIVEMENT au parent. Un `.small` pose dans une zone deja reduite tombe
   donc sous le plancher sans que personne n'ait ecrit de petite valeur nulle
   part : mesure au rendu le 20/09/2026, `.pc-checks` a 13 px produisait un
   « (parametre seul) » a 11,375 px. Aucun controle de SOURCE ne pouvait le
   voir, puisqu'aucune source ne le dit.
   `max()` garde la reduction relative tant qu'elle reste au-dessus du
   plancher, et l'arrete net a 12 px. Une seule regle protege tous les
   `.small` du produit, present et a venir. */
.small, small { font-size: max(var(--camc-fs-min), .875em); }

/* Chiffres alignés partout (colonnes de montants stables) */
.camc-num, .num, td.num, .amount {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

/* ==========================================================================
   2. TABLEAUX — bordures horizontales ET verticales, montants centrés,
      en-têtes nets, hauteurs de lignes confortables.
      S'applique aux .table Bootstrap ET à la classe dédiée .camc-table.
   ========================================================================== */

.camc-table,
table.table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--camc-fs-table);
  color: var(--camc-ink);
  background: var(--camc-white);
}

.camc-table th, .camc-table td,
table.table > :not(caption) > * > * {
  border: 1px solid var(--camc-border);
  padding: 10px 14px;
  vertical-align: middle;
}

.camc-table thead th,
table.table thead th {
  background: var(--camc-blue-deep);
  color: #fff;
  /* M-068 : un en-tête de colonne nomme une donnée comptable — 14–15 px, gras. */
  font-size: var(--camc-fs-table-head);
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .04em;
  white-space: nowrap;
  border-color: var(--camc-blue-deep);
}

/* Montants : centrés dans la cellule (doctrine Direction) + tabulaires. */
.camc-table td.num, .camc-table th.num,
.camc-table td.montant, .camc-table th.montant {
  text-align: center;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

.camc-table tbody tr:nth-child(even) > * { background: var(--camc-bg-alt); }
/* DECISION DIRECTION DU 16/09/2026 - plus aucun survol de LIGNE de tableau
   dans CAMC. La regle qui colorait ici la ligne survolee est SUPPRIMEE, et
   non contre-peinte : il n'y a donc plus rien a neutraliser en aval. Les
   survols de liens, boutons, icones et menus restent entiers. */

.camc-table--compact th, .camc-table--compact td { padding: 6px 10px; }

/* ==========================================================================
   3. BOUTONS — confortables, hiérarchie claire
   ========================================================================== */

.btn {
  min-height: var(--camc-control-h);
  padding: 8px 16px;
  font-size: var(--camc-fs-form);
  border-radius: var(--camc-radius-sm);
  font-weight: 600;
}
/* M-068 : une action reste une action. `-sm` resserre la boîte (hauteur et
   marge intérieure), JAMAIS le texte : il tient le socle fonctionnel. */
.btn-sm { min-height: 32px; padding: 5px 11px; font-size: var(--camc-fs-form); }
.btn-lg { min-height: 46px; font-size: var(--camc-fs-form-lg); }

/* Action primaire = bleu CAMC */
.btn-primary, .btn-camc {
  background: var(--camc-blue);
  border-color: var(--camc-blue);
  color: #fff;
}
.btn-primary:hover, .btn-camc:hover, .btn-primary:focus, .btn-camc:focus {
  background: var(--camc-blue-hover);
  border-color: var(--camc-blue-hover);
  color: #fff;
}
.btn-outline-primary, .btn-outline-camc {
  color: var(--camc-blue);
  border-color: var(--camc-blue);
  background: #fff;
}
.btn-outline-primary:hover, .btn-outline-camc:hover {
  background: var(--camc-blue);
  color: #fff;
}
.btn-outline-secondary {
  color: var(--camc-ink-soft);
  border-color: var(--camc-border);
  background: #fff;
}
.btn-outline-secondary:hover {
  background: var(--camc-bg-alt);
  color: var(--camc-ink);
  border-color: var(--camc-ink-muted);
}

/* Boutons colorés = SEULEMENT quand ils portent un sens d'état / de sévérité */
.btn-success { background: var(--camc-ok); border-color: var(--camc-ok); }
.btn-warning { background: var(--camc-warn); border-color: var(--camc-warn); color: #fff; }
.btn-danger  { background: var(--camc-danger); border-color: var(--camc-danger); }

/* ==========================================================================
   4. CHAMPS — confortables
   ========================================================================== */

.form-control, .form-select {
  min-height: var(--camc-control-h);
  font-size: var(--camc-fs-form);
  border-radius: var(--camc-radius-sm);
  border: 1px solid var(--camc-border);
  color: var(--camc-ink);
}
.form-control:focus, .form-select:focus {
  border-color: var(--camc-blue);
  box-shadow: 0 0 0 3px rgba(30, 111, 217, .15);
}
/* M-068 : `-sm` resserre la boîte, pas le texte saisi — une valeur saisie se
   relit toute la journée. Le libellé de saisie est nommément fonctionnel. */
.form-control-sm, .form-select-sm { min-height: 32px; font-size: var(--camc-fs-form); }
.form-label { font-weight: 600; color: var(--camc-ink-soft); font-size: var(--camc-fs-form); margin-bottom: 4px; }

/* ==========================================================================
   5. CARTES
   ========================================================================== */

.card {
  border: 1px solid var(--camc-border);
  border-radius: var(--camc-radius);
  box-shadow: var(--camc-shadow);
  background: var(--camc-white);
}
.card-header {
  background: var(--camc-white);
  border-bottom: 1px solid var(--camc-border);
  color: var(--camc-blue-deep);
  font-weight: 600;
  padding: 12px 18px;
  border-radius: var(--camc-radius) var(--camc-radius) 0 0 !important;
}
.card-header h5, .card-header h6 { margin: 0; font-weight: 600; color: inherit; }

/* Carte « synthèse » : 3 à 5 infos max, détail au clic ailleurs */
.camc-panel {
  background: var(--camc-white);
  border: 1px solid var(--camc-border);
  border-radius: var(--camc-radius);
  box-shadow: var(--camc-shadow-sm);
  padding: var(--camc-sp-4);
}
.camc-panel > .camc-panel__title {
  /* Libellé de zone : il NOMME un contenu, il n'en porte aucun. Secondaire. */
  font-size: var(--camc-fs-sm); font-weight: 700; text-transform: uppercase;
  letter-spacing: .05em; color: var(--camc-ink-muted);
  margin: 0 0 var(--camc-sp-3);
}

/* ==========================================================================
   6. BADGES / STATUTS  (vert / orange / rouge = sémantique uniquement)
   ========================================================================== */

.camc-badge {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px; border-radius: 999px;
  /* M-068 : une pastille porte un STATUT (validé, en retard, rejeté) ou un
     compteur — information nécessaire au travail quotidien, donc fonctionnelle. */
  font-size: var(--camc-fs-badge); font-weight: 600; line-height: 1.4;
  border: 1px solid transparent; white-space: nowrap;
}
.camc-badge--ok     { background: var(--camc-ok-bg);     color: var(--camc-ok);     border-color: #bfe6cf; }
.camc-badge--warn   { background: var(--camc-warn-bg);   color: var(--camc-warn);   border-color: #f4dcae; }
.camc-badge--danger { background: var(--camc-danger-bg); color: var(--camc-danger); border-color: #f1c4c4; }
.camc-badge--info   { background: var(--camc-info-bg);   color: var(--camc-blue-deep); border-color: var(--camc-sky-strong); }
.camc-badge--muted  { background: var(--camc-bg-alt);    color: var(--camc-ink-muted); border-color: var(--camc-border); }

/* Pastille de sévérité (barre de dossiers cabinet) */
.camc-sev { display:inline-block; width:10px; height:10px; border-radius:50%; }
.camc-sev--ok     { background: var(--camc-ok); }
.camc-sev--warn   { background: var(--camc-warn); }
.camc-sev--danger { background: var(--camc-danger); }

/* Ré-alignement Bootstrap : les .badge bg-* gardent un sens d'état.
   M-068 : Bootstrap dimensionne .badge en `.75em`, donc relativement au parent
   — un badge posé dans un lien de navigation finissait sous le plancher. La
   taille est reprise ici sur le jeton, ce qui la rend absolue et centrale. */
.badge { font-size: var(--camc-fs-badge); }
.badge.bg-success { background: var(--camc-ok) !important; }
.badge.bg-warning { background: var(--camc-warn) !important; color:#fff !important; }
.badge.bg-danger  { background: var(--camc-danger) !important; }
.badge.bg-primary, .badge.bg-secondary { background: var(--camc-blue-deep) !important; }

/* ==========================================================================
   7. ÉTATS : chargement / vide / erreur  (CHOC : on comprend tout de suite)
   ========================================================================== */

.camc-state {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: var(--camc-sp-2);
  padding: var(--camc-sp-6) var(--camc-sp-4);
  color: var(--camc-ink-muted);
  background: var(--camc-white);
  border: 1px dashed var(--camc-border);
  border-radius: var(--camc-radius);
}
.camc-state__icon { font-size: 28px; /* M-068:exempt(glyphe — pictogramme d'état, ne porte aucun texte) */ opacity: .7; }
.camc-state__title { font-weight: 600; color: var(--camc-ink-soft); }
.camc-state--error { border-color: #f1c4c4; color: var(--camc-danger); background: var(--camc-danger-bg); }
.camc-state--error .camc-state__title { color: var(--camc-danger); }

.camc-loading::after {
  content: ""; display: inline-block; width: 16px; height: 16px;
  border: 2px solid var(--camc-border); border-top-color: var(--camc-blue);
  border-radius: 50%; animation: camc-spin .7s linear infinite; vertical-align: middle;
}
@keyframes camc-spin { to { transform: rotate(360deg); } }

/* ==========================================================================
   8. ALERTES — alignées sur la charte, sens conservé
   ========================================================================== */

.alert { border-radius: var(--camc-radius); border: 1px solid transparent; }
.alert-info, .alert-primary    { background: var(--camc-info-bg);   color: var(--camc-blue-deep); border-color: var(--camc-sky-strong); }
.alert-success                 { background: var(--camc-ok-bg);     color: #14663c; border-color: #bfe6cf; }
.alert-warning                 { background: var(--camc-warn-bg);   color: #8a5300; border-color: #f4dcae; }
.alert-danger                  { background: var(--camc-danger-bg); color: #9b2727; border-color: #f1c4c4; }
.alert-secondary               { background: var(--camc-bg-alt);    color: var(--camc-ink-soft); border-color: var(--camc-border); }

/* ==========================================================================
   9. UTILITAIRES CAMC
   ========================================================================== */

.camc-page-title { font-size: var(--camc-fs-h1); font-weight: 700; color: var(--camc-blue-deep); margin: 0 0 var(--camc-sp-4); }
.camc-section-label { font-size: var(--camc-fs-sm); font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--camc-ink-muted); margin: 0 0 var(--camc-sp-2); }

/* Totaux et chiffres clés — M-068 : 16–19 px, gras. À poser sur la VALEUR,
   jamais sur son libellé, qui relève de --camc-fs-sm. */
.camc-key { font-size: var(--camc-fs-key); font-weight: 700; font-variant-numeric: tabular-nums; }
.camc-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: var(--camc-sp-2); margin-bottom: var(--camc-sp-3); }
.camc-spacer { flex: 1 1 auto; }
