/* Charte CHRONOS (CHARTE_CHRONOS_REFERENCE.md) : couleurs de la charte (§ 1.1) et palette étendue dérivée (§ 1.2 à 1.5),
   typographies Max avec la chaîne de substitution (§ 2.3), chiffres des tableaux en Aptos ou Calibri alignés (§ 5.3, option B). */
:root{--bleu-900:#050C21;--bleu-800:#0B1841;--bleu-700:#16275D;--bleu-600:#273B7A;--bleu-500:#3D5396;--bleu-400:#5E72B0;--bleu-300:#909CC1;--bleu-200:#BEC4D7;--bleu-100:#DEE1EA;--bleu-50:#F3F4F7;
  --creme:#F2F0D8;--gris-100:#F6F6F2;--gris-200:#E7E7E1;--gris-300:#D4D4CC;--gris-400:#B4B4AA;--gris-500:#8E8E84;--gris-600:#6B6B62;
  --terre-700:#7A492C;--terre-500:#B56320;--terre-300:#E0C6A1;--positif:#2C6D55;--attention:#B56320;--alerte:#8C2C39;
  --police-titre:"Max-Bold","Max Bold","Aptos","Calibri",system-ui,sans-serif;--police-sstitre:"Max-Book","Max Book","Aptos","Calibri",system-ui,sans-serif;
  --police-corps:"Max-Light","Max Light","Aptos Light","Aptos","Calibri Light","Calibri",system-ui,sans-serif;--police-chiffres:"Aptos","Calibri",system-ui,sans-serif;
  --h-entete:56px;
  --nuit:var(--bleu-800);--nuit-2:var(--bleu-700);--accent:var(--bleu-800);--accent-fonce:var(--bleu-600);--accent-pale:var(--bleu-100);--fond:var(--gris-100);--carte:#fff;
  --texte:var(--bleu-800);--gris:var(--gris-600);--gris-clair:var(--gris-500);--ligne:var(--gris-200);--survol:var(--bleu-50);--vert:var(--positif);--rouge:var(--alerte);--orange:var(--terre-700);--bleu:var(--bleu-600);
  --rayon:6px;--ombre:0 1px 2px rgba(11,24,65,.05)}
*{box-sizing:border-box}html,body{margin:0;height:100%}[hidden]{display:none!important}
body{font:14px/1.5 var(--police-corps);color:var(--texte);background:var(--fond);-webkit-font-smoothing:antialiased}
h1,h2,h3,.carte>h2,.barre-page h1,.modale-boite header h2{font-family:var(--police-titre)}
.kpi .val,td.num,th.num,.periode,input.b-saisie,.zc-lettrage input,.graphe text,.infobulle b,tfoot td{font-family:var(--police-chiffres);font-variant-numeric:tabular-nums lining-nums}
a{color:inherit;text-decoration:none}button{font:inherit}
#app{display:grid;grid-template-columns:232px 1fr;grid-template-rows:var(--h-entete) 1fr;min-height:100vh}
#entete{grid-column:1/3;display:flex;align-items:center;gap:12px;padding:0 14px 0 6px;background:var(--bleu-800);color:var(--creme);position:sticky;top:0;z-index:30}
/* logo secondaire, détouré crème sur le bleu de la charte (§ 3.3 et 3.7) : SVG, la zone de protection est dans le cadre du fichier */
.marque{display:flex;align-items:center;height:100%}.marque img{height:44px;width:auto;display:block}
.espace{flex:1}
#recherche{width:min(420px,40vw);background:var(--bleu-700);border:1px solid var(--bleu-600);color:var(--creme);border-radius:6px;padding:7px 10px;font-size:13px;font-family:inherit}
#recherche::placeholder{color:var(--bleu-300)}
.avatar{width:30px;height:30px;border-radius:50%;background:var(--creme);color:var(--bleu-800)!important;display:grid;place-items:center;font-size:11px;font-weight:700;font-family:var(--police-titre)}
#nav{background:var(--carte);border-right:1px solid var(--ligne);padding:10px 8px 30px;overflow-y:auto;position:sticky;top:var(--h-entete);height:calc(100vh - var(--h-entete))}
#nav a{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:6px;color:var(--texte);font-size:13.5px;margin:1px 0}
#nav a:hover{background:var(--survol)}#nav a.actif{background:var(--bleu-100);color:var(--bleu-800);font-weight:600;box-shadow:inset 3px 0 0 var(--bleu-800)}
#nav a .ic{width:18px;text-align:center;opacity:.75}
.nav-titre{font-size:11.5px;color:var(--gris);margin:14px 10px 4px;display:flex;align-items:center;gap:6px;text-transform:uppercase;letter-spacing:.5px;font-family:var(--police-sstitre)}
.nav-titre::before{content:"";width:6px;height:1px;background:var(--terre-500)}
.nav-retour{font-weight:700;font-size:14px!important;border-bottom:1px solid var(--ligne);border-radius:0!important;margin-bottom:6px!important;padding-bottom:10px!important}
#contenu{padding:0 0 40px;min-width:0}
.barre-page{display:flex;align-items:center;gap:10px;padding:12px 20px;background:var(--carte);border-bottom:1px solid var(--ligne);position:sticky;top:var(--h-entete);z-index:20}
.barre-page h1{font-size:18px;margin:0;font-weight:700;color:var(--bleu-800)}.barre-page .fil{color:var(--gris);font-size:13px}
.page{padding:16px 20px}
.bouton{border:1px solid var(--gris-300);background:#fff;color:var(--bleu-800);padding:6px 12px;border-radius:6px;font-size:13px;cursor:pointer;font-weight:500;white-space:nowrap;font-family:var(--police-sstitre)}
.bouton:hover{background:var(--bleu-50);border-color:var(--bleu-200)}.bouton.primaire{background:var(--bleu-800);border-color:var(--bleu-800);color:var(--creme)}.bouton.primaire:hover{background:var(--bleu-700)}
.bouton.petit{padding:3px 8px;font-size:12px}.bouton.danger{color:var(--alerte);border-color:#E3C5CA}.bouton:disabled{opacity:.5;cursor:default}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin-bottom:14px}
.kpi{background:var(--carte);border:1px solid var(--ligne);border-top:3px solid var(--bleu-800);border-radius:var(--rayon);padding:12px 14px;box-shadow:var(--ombre)}
.kpi .lib{color:var(--gris);font-size:12px;font-family:var(--police-sstitre)}.kpi .val{font-size:19px;font-weight:600;margin-top:4px;color:var(--bleu-800)}
.kpi .sous{color:var(--gris);font-size:12px;float:right;margin-top:-20px}
.kpi.alerte{border-top-color:var(--alerte)}.kpi.alerte .val{color:var(--alerte)}.kpi.ok{border-top-color:var(--positif)}.kpi.ok .val{color:var(--positif)}
.carte{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon);box-shadow:var(--ombre);margin-bottom:14px}
.carte>h2{font-size:14.5px;margin:0;padding:12px 14px;border-bottom:1px solid var(--ligne);display:flex;align-items:center;gap:8px;font-weight:700;color:var(--bleu-800)}
.carte .corps{padding:12px 14px}
.grille2{display:grid;grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:14px}
.outils{display:flex;gap:8px;align-items:center;padding:10px 12px;border-bottom:1px solid var(--ligne);flex-wrap:wrap}
.outils input[type=search],.outils select,.outils input[type=date],.outils input[type=number]{border:1px solid var(--gris-300);border-radius:6px;padding:5px 8px;font-size:13px;background:#fff;color:var(--bleu-800);font-family:inherit}
.outils input[type=search]{flex:1;min-width:180px;background:var(--fond)}
.compte{color:var(--gris);font-size:12px;padding:8px 12px}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:8px 12px;border-bottom:1px solid var(--ligne);vertical-align:middle;white-space:nowrap}
th{color:var(--gris-600);font-weight:600;font-size:12px;cursor:pointer;user-select:none;background:var(--bleu-50);font-family:var(--police-sstitre)}
th.trie::after{content:" ↓";color:var(--terre-500)}th.trie.inv::after{content:" ↑"}
td.num,th.num{text-align:right}
:where(tbody tr:nth-child(even)) td{background:#FBFBF8}  /* lignes alternées (§ 7.3), sans écraser les états de ligne */
td.long{white-space:normal;min-width:220px}
tr.cliquable{cursor:pointer}tr.cliquable:hover td{background:var(--survol)}
tfoot td{font-weight:700;background:var(--bleu-100);color:var(--bleu-800)}
.tableau{overflow-x:auto}
.vide{padding:30px;text-align:center;color:var(--gris)}
/* statuts (§ 1.4) : positif, attention (terre), alerte ; toujours accompagnés de leur libellé */
.pastille{display:inline-block;padding:1px 8px;border-radius:4px;font-size:11.5px;font-weight:600;background:var(--gris-200);color:var(--gris-600)}
.pastille.vert{background:#E2EEE8;color:var(--positif)}.pastille.rouge{background:#F3E2E5;color:var(--alerte)}.pastille.orange{background:#F5E9DC;color:var(--terre-700)}.pastille.bleu{background:var(--bleu-100);color:var(--bleu-700)}
.periode{display:inline-block;background:var(--bleu-50);color:var(--bleu-700);border:1px solid var(--bleu-100);border-radius:4px;padding:0 6px;font-size:12px}
.muted{color:var(--gris)}.rouge{color:var(--rouge)}.vert{color:var(--vert)}.gras{font-weight:600}
.onglets{display:flex;gap:2px;border-bottom:1px solid var(--ligne);padding:0 12px}
.onglets a,.onglets button{border:0;background:none;padding:9px 12px;color:var(--gris);border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;font-size:13px}
.onglets .actif{color:var(--bleu-800);border-color:var(--terre-500);font-weight:600}
dl.fiche{display:grid;grid-template-columns:180px 1fr;gap:6px 14px;margin:0;font-size:13px}dl.fiche dt{color:var(--gris)}dl.fiche dd{margin:0}
.graphe{position:relative;width:100%}
.graphe svg{display:block;overflow:hidden}
.graphe text{font-size:11px;fill:var(--gris);font-variant-numeric:tabular-nums}
.graphe .grille{stroke:var(--gris-200);stroke-width:1}.graphe .axe{stroke:var(--gris-500);stroke-width:1}
.graphe .anneau{stroke:#fff;stroke-width:2}
.graphe .cible{fill:transparent;cursor:crosshair}.graphe .repere{fill:rgba(11,24,65,.05)}
.infobulle{position:absolute;z-index:5;pointer-events:none;background:#fff;border:1px solid var(--ligne);border-radius:8px;box-shadow:0 8px 24px rgba(16,24,40,.12);padding:8px 10px;font-size:12px;min-width:150px;white-space:nowrap}
.infobulle .titre{color:var(--gris);margin-bottom:4px}
.infobulle .rang{display:flex;align-items:center;gap:8px;line-height:1.7}.infobulle .rang i{width:12px;height:2px;border-radius:1px}
.infobulle .rang b{font-variant-numeric:tabular-nums;color:var(--texte)}.infobulle .rang span{color:var(--gris)}
.infobulle .info{border-top:1px solid var(--ligne);margin-top:5px;padding-top:5px;color:var(--texte)}
.legende{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--gris);padding:0 14px 10px}.legende i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}.legende i.cle-ligne{height:2px;width:14px;vertical-align:3px}
.carte-geo{width:100%;height:260px;border:0;display:block;border-radius:0 0 var(--rayon) var(--rayon)}
.fil-actu{list-style:none;margin:0;padding:0}.fil-actu li{padding:8px 14px;border-bottom:1px solid var(--ligne);display:flex;gap:10px}.fil-actu li:last-child{border:0}
.barre{height:6px;background:var(--gris-200);border-radius:3px;overflow:hidden;min-width:60px}.barre i{display:block;height:100%;background:var(--bleu-500)}
#voile{position:fixed;inset:0;background:rgba(11,24,65,.45);z-index:40}
#modale{position:fixed;inset:0;z-index:50;display:flex;align-items:flex-start;justify-content:center;padding:40px 12px;overflow-y:auto}
.modale-boite{background:#fff;border-radius:10px;max-width:780px;width:100%;box-shadow:0 20px 60px rgba(0,0,0,.3)}
.modale-boite.large{max-width:1100px}
.modale-boite header{display:flex;align-items:center;padding:14px 18px;border-bottom:1px solid var(--ligne)}.modale-boite header h2{margin:0;font-size:15px;flex:1}
.modale-boite .corps{padding:14px 18px}.modale-boite footer{display:flex;gap:8px;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--ligne)}
.modale-boite footer .gauche{margin-right:auto}
.formulaire{display:grid;grid-template-columns:repeat(2,1fr);gap:10px 14px}
.formulaire label{display:block;font-size:12px;color:var(--gris)}.formulaire label.plein{grid-column:1/-1}
.formulaire input,.formulaire select,.formulaire textarea{display:block;width:100%;margin-top:3px;font-size:13.5px;padding:7px 9px;border:1px solid var(--gris-300);border-radius:6px;background:#fff;color:var(--texte);font-family:inherit}
.formulaire select[multiple]{height:160px}.formulaire textarea{min-height:70px}
.formulaire label.case{display:flex;align-items:center;gap:8px;margin-top:18px}.formulaire label.case input{width:auto;margin:0}
.formulaire input:focus,.formulaire select:focus,.formulaire textarea:focus{outline:2px solid var(--accent-pale);border-color:var(--accent)}
#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:var(--bleu-800);color:var(--creme);padding:10px 16px;border-radius:8px;z-index:60;font-size:13px;box-shadow:0 8px 30px rgba(0,0,0,.25)}
.ligne-actions{display:flex;gap:6px;justify-content:flex-end}
@media (max-width:860px){#app{grid-template-columns:1fr}#nav{display:none;position:fixed;top:var(--h-entete);left:0;width:260px;z-index:35;box-shadow:0 10px 30px rgba(0,0,0,.2)}#nav.ouvert{display:block}#menu{display:inline-block!important}#recherche{display:none}.formulaire{grid-template-columns:1fr}.grille2{grid-template-columns:1fr}dl.fiche{grid-template-columns:1fr}}
#menu{display:none;background:none;border:0;color:var(--creme);font-size:18px;cursor:pointer}
@media print{#entete,#nav,.outils,.barre-page .bouton{display:none!important}#app{display:block}}
a.lien{color:var(--accent-fonce);font-weight:500}a.lien:hover{text-decoration:underline}
#toast.erreur{background:var(--alerte)}
fieldset.cases{border:1px solid var(--gris-300);border-radius:6px;padding:6px 10px;display:flex;flex-wrap:wrap;gap:4px 16px;grid-column:1/-1;margin:0}
fieldset.cases legend{font-size:12px;color:var(--gris);padding:0 4px}fieldset.cases label.case{margin:0}
th.case,td.case{width:28px;padding-right:0}
.boutons{display:flex;gap:8px;flex-wrap:wrap}
.zone-onglet{padding-top:14px}
.ligne-totale td{font-weight:700;background:var(--bleu-100)}
.niveau-1 td:first-child{padding-left:28px;color:var(--gris)}

/* zone A — patrimoine, détentions, paramètres */
.za-graph{padding:12px 14px 2px}
.za-occ{display:inline-flex;align-items:center;gap:8px;justify-content:flex-end}.za-occ .barre{width:60px}
.za-date{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gris)}
.za-date input{border:1px solid var(--ligne);border-radius:6px;padding:4px 8px;font-size:13px;color:var(--texte)}
.za-kpis-carte{padding:12px 14px 0;margin-bottom:0;grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}
.za-kpis-carte .kpi{box-shadow:none;padding:8px 10px}.za-kpis-carte .kpi .val{font-size:15px}
.fil-actu .za-jdate{width:78px;flex:none;font-variant-numeric:tabular-nums}
.za-petit{font-size:12px;white-space:normal}
.za-entete{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-2px 0 6px;font-size:14px}
.za-onglets{margin:0 0 14px;padding:0;overflow-x:auto}.za-onglets a{white-space:nowrap}
.za-section{font-size:14px;font-weight:600;margin:18px 0 10px}
.za-sous-titre{font-size:12px;color:var(--gris);padding:10px 14px 0;text-transform:uppercase;letter-spacing:.4px}
tr.za-ancien td{color:var(--gris-clair)}tr.za-ancien td a.lien{color:var(--gris)}
.za-org{overflow-x:auto;padding:14px}
.za-org svg{display:block;margin:0 auto;font-family:inherit}
.za-arete{fill:none;stroke:var(--bleu-300);stroke-width:1.5}
.za-pct rect{fill:#fff;stroke:var(--bleu-300)}.za-pct text{font-size:10.5px;font-weight:600;fill:var(--texte)}
.za-noeud rect{stroke-width:1.2}.za-noeud text.nom{font-size:12px;font-weight:600;fill:var(--texte)}.za-noeud text.type{font-size:10px;fill:var(--gris)}
.za-noeud:hover rect{stroke-width:2.4}
.za-noeud.physique rect{fill:var(--creme);stroke:var(--gris-400)}
.za-noeud.morale rect{fill:var(--bleu-100);stroke:var(--bleu-400)}
.za-noeud.actif rect{fill:#F5EBDD;stroke:var(--terre-300)}
.za-legende-org i.physique{background:var(--creme);border:1px solid var(--gris-400)}.za-legende-org i.morale{background:var(--bleu-100);border:1px solid var(--bleu-400)}.za-legende-org i.actif{background:#F5EBDD;border:1px solid var(--terre-300)}
.za-grille>*{min-width:0}
/* zone B — fiche actif */
.b-entete{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:-4px 0 12px;font-size:13px}
.b-entete .b-onglet{font-weight:600;font-size:15px}
.b-barre{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:12px;font-size:13px}
.b-barre input[type=date]{border:1px solid var(--ligne);border-radius:6px;padding:5px 8px;font-size:13px;background:#fff;margin-left:6px}
.b-bandeau{background:#F7EFE4;border:1px solid var(--terre-300);color:var(--terre-700);border-radius:var(--rayon);padding:10px 14px;margin-bottom:14px;font-size:13px}
.b-bandeau.gris{background:var(--gris-100);border-color:var(--ligne);color:var(--gris)}
.b-jauge{display:inline-flex;align-items:center;gap:8px}.b-jauge .barre{width:70px}.b-jauge span{font-variant-numeric:tabular-nums;font-size:12px}
.b-mini .compte{display:none}
.b-kpis .kpi .sous{float:none;margin-top:2px}
.b-description{white-space:pre-wrap;font-size:13px}
.b-chevron{display:inline-block;color:var(--gris);transition:transform .15s}tr.b-ouvert .b-chevron{transform:rotate(90deg)}
tr.b-ouvert td{background:var(--survol)}tr.b-detail>td{background:var(--bleu-50);padding:8px 14px 12px 36px;white-space:normal}
.b-deplie>.muted{margin-bottom:6px;font-size:12px}
.b-mini-table{width:auto;min-width:420px;background:#fff;border:1px solid var(--ligne);border-radius:6px}
.b-mini-table th,.b-mini-table td{padding:5px 10px;cursor:default}
.b-codes{display:inline-block;white-space:normal;max-width:360px;font-size:12px;color:var(--gris)}
tr.b-pale td{color:var(--gris)}
.b-liste-numeros{columns:3;padding-left:18px;margin:6px 0}
table.b-arbre td{padding:6px 12px}table.b-arbre .ligne-totale td{background:var(--bleu-100)}
table.b-arbre .b-niv1 td{font-weight:600;background:var(--bleu-50)}table.b-arbre .b-niv1 td:first-child{padding-left:26px}
table.b-arbre .b-niv2 td:first-child{padding-left:44px}
input.b-saisie{width:110px;text-align:right;border:1px solid var(--gris-300);border-radius:5px;padding:3px 6px;font:inherit;font-variant-numeric:tabular-nums;background:#fff}
input.b-saisie:focus{outline:2px solid var(--accent-pale);border-color:var(--accent)}
.b-defile{max-height:55vh;overflow:auto}
.b-phasage{display:flex;gap:18px;flex-wrap:wrap;align-items:center;font-size:13px;border-bottom:1px solid var(--ligne)}
.b-dataroom{display:grid;grid-template-columns:300px 1fr;gap:14px;align-items:start}
.b-dataroom>*,.b-grille>*{min-width:0}
.b-arbre-docs{list-style:none;margin:0;padding:6px}
.b-arbre-docs li{display:flex;justify-content:space-between;gap:8px;padding:6px 8px;border-radius:6px;cursor:pointer;font-size:13px}
.b-arbre-docs li:hover{background:var(--survol)}.b-arbre-docs li.actif{background:var(--accent-pale);color:var(--accent-fonce);font-weight:600}
.b-arbre-docs li.b-sous{padding-left:24px;font-size:12.5px;color:var(--gris)}.b-arbre-docs li b{font-weight:500;color:var(--gris-clair)}
.b-televerser{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.b-televerser select,.b-televerser input{border:1px solid var(--ligne);border-radius:6px;padding:5px 8px;font-size:13px;background:#fff;max-width:260px}
.b-pipeline{display:grid;grid-template-columns:repeat(5,minmax(170px,1fr));gap:10px;padding:12px;overflow-x:auto}
.b-colonne{background:var(--fond);border-radius:var(--rayon);padding:8px;min-height:90px}
.b-colonne-titre{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.b-fiche{background:#fff;border:1px solid var(--ligne);border-radius:6px;padding:8px;margin-bottom:6px;display:flex;flex-direction:column;gap:2px;font-size:12.5px;cursor:pointer}
.b-fiche:hover{border-color:var(--accent)}.b-etape{color:var(--accent-fonce)}.b-vide-col{text-align:center;padding:10px}
.b-stack{margin-bottom:14px}.b-stack-titre{font-weight:600;font-size:13px;margin-bottom:6px}
.b-etage{display:flex;gap:8px;align-items:stretch;margin-bottom:4px}
.b-niv{width:46px;flex:none;font-size:12px;color:var(--gris);display:flex;align-items:center;justify-content:flex-end}
.b-blocs{flex:1;display:flex;gap:3px;flex-wrap:wrap}
.b-bloc{min-width:52px;border-radius:4px;padding:4px 6px;font-size:11px;line-height:1.25;cursor:pointer;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;display:flex;flex-direction:column}
.b-bloc span{overflow:hidden;text-overflow:ellipsis;opacity:.85}
.b-bloc.occupe{background:var(--bleu-800);color:var(--creme)}.b-bloc.vacant{background:var(--terre-300);color:var(--terre-700)}
.b-bloc.b-dev,.b-dev-pastille{background:repeating-linear-gradient(135deg,var(--bleu-100) 0 6px,var(--bleu-200) 6px 12px);color:var(--bleu-800)}.b-bloc:hover{filter:brightness(.92)}
@media (max-width:860px){.b-dataroom{grid-template-columns:1fr}.b-pipeline{grid-template-columns:repeat(5,170px)}}
/* fin zone B */
/* zone C */
.zc-vues{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon);padding:0 8px}
.zc-vues a{display:inline-block}
.zc-entete{display:flex;flex-wrap:wrap;gap:10px 30px;padding:12px 14px;align-items:flex-start}
.zc-entete>div{display:flex;flex-direction:column;gap:3px;font-size:13px;min-width:0}
.zc-entete .lib{font-size:11.5px;color:var(--gris)}
.zc-entete select,.zc-filtres select,.carte>h2 select{border:1px solid var(--ligne);border-radius:6px;padding:3px 6px;font-size:12.5px;background:#fff;font-weight:400}
.zc-filtres{margin-bottom:14px}.zc-filtres .outils{border-bottom:0}
.zc-sep{width:1px;height:22px;background:var(--ligne);margin:0 2px}
.zc-orange{color:var(--orange)}
.zc-etapes{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap}
.zc-etapes span{padding:6px 14px;border-radius:16px;background:var(--gris-200);color:var(--gris);font-size:12.5px;font-weight:600}
.zc-etapes span.actif{background:var(--accent);color:#fff}.zc-etapes span.fait{background:var(--accent-pale);color:var(--accent-fonce)}
.zc-pied{display:flex;gap:8px;justify-content:flex-end;align-items:center;padding:12px 14px;border-top:1px solid var(--ligne)}
div.zc-pied{border:0;padding:0 0 14px}
.zc-fleche{width:20px;color:var(--gris)}
tr.zc-detail>td{background:var(--bleu-50);padding:4px 12px 12px}
table.zc-sous{background:#fff;border:1px solid var(--ligne);font-size:12px}table.zc-sous th,table.zc-sous td{padding:4px 10px}
.zc-sec{display:flex;align-items:center;gap:8px;margin:18px 0 8px;font-size:13.5px}
.zc-lettrage{max-height:340px;overflow:auto;border:1px solid var(--ligne);border-radius:6px}
.zc-lettrage td,.zc-lettrage th{padding:6px 10px}
.zc-lettrage input{width:120px;text-align:right;border:1px solid var(--gris-300);border-radius:6px;padding:4px 6px;font-size:13px}
.zc-recap .kpis{margin:12px 0 0}.zc-recap{margin-top:12px}
.zc-imprimable{display:none}
@media print{
  body.zc-imp .barre-page,body.zc-imp .page>*:not(.zc-imprimable){display:none!important}
  body.zc-imp .zc-imprimable{display:block;font-size:12px;color:#000}
  body.zc-imp #contenu{padding:0}body.zc-imp .page{padding:0}
}
.zc-imp-tete{display:flex;justify-content:space-between;gap:40px;margin-bottom:28px}
.zc-imp-dest{border:1px solid #ccc;border-radius:6px;padding:10px 14px;min-width:260px}
.zc-imp-nom{font-weight:700;font-size:14px;margin-bottom:4px}
.zc-imprimable h1{font-size:20px;margin:0 0 14px}
.zc-imprimable dl.fiche{margin-bottom:18px}
.zc-imp-lignes th,.zc-imp-lignes td{border-bottom:1px solid #ddd;padding:6px 8px;background:none;color:#000}
.zc-imp-totaux{width:320px;margin:14px 0 0 auto}.zc-imp-totaux td{padding:4px 8px;border:0}.zc-imp-totaux tr.gras td{border-top:1px solid #000}

/* zone D */
.zd-vues{background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon);margin-bottom:14px;padding:0 8px}
.zd-filtres .outils{border-bottom:0}
label.zd-f{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--gris);white-space:nowrap}
label.zd-f select,label.zd-f input,.zd-filtres select{border:1px solid var(--ligne);border-radius:6px;padding:5px 8px;font-size:13px;background:#fff;color:var(--texte);max-width:240px}
label.zd-f input[type=number]{width:84px}
.zd-barre{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
tr.zd-alerte td{background:#FBF1F2}
tr.zd-passe td{color:var(--gris)}
.zd-cov{display:inline-flex;gap:4px;flex-wrap:wrap}
.zd-statut-crg{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 14px}
table.zd-calc td{padding:8px 14px}table.zd-calc tr.total td{font-weight:700;background:var(--accent-pale);border-top:2px solid var(--accent);border-bottom:0}
.zd-cf th:first-child,.zd-cf td:first-child{position:sticky;left:0;z-index:1;background:var(--carte);min-width:230px}
.zd-cf thead th:first-child,.zd-cf tr.ligne-totale td:first-child{background:var(--bleu-50)}
.zd-cf tr.zd-n0{cursor:pointer}.zd-cf .zd-pli{color:var(--gris);font-size:11px}
.zd-etapes{display:flex;gap:6px;padding:12px 18px 0}
.zd-etapes span{padding:4px 12px;border-radius:999px;font-size:12px;color:var(--gris);background:var(--fond)}
.zd-etapes span.actif{background:var(--accent-pale);color:var(--accent-fonce);font-weight:600}
.zd-avec-bouton{display:flex;gap:6px;align-items:center}.zd-avec-bouton select{flex:1}.zd-avec-bouton .bouton{margin-top:3px}
table.zd-lignes td{padding:4px 5px}
table.zd-lignes input:not([type=checkbox]),table.zd-lignes select{width:100%;min-width:90px;padding:5px 6px;border:1px solid var(--gris-300);border-radius:5px;font-size:12.5px;background:#fff;color:var(--texte)}
table.zd-lignes input[data-k=libelle]{min-width:190px}table.zd-lignes input.num{text-align:right;min-width:100px}
.zd-mandats{margin-top:14px;max-height:380px;overflow:auto;border:1px solid var(--ligne);border-radius:6px}.zd-mandats:empty{display:none}
@media print{.zd-filtres,.zd-vues,.zd-barre .bouton,.ligne-actions{display:none!important}}
.modale-boite footer.zd-pied{flex-wrap:wrap}
/* import de données */
.zone-depot{display:block;border:2px dashed var(--gris-300);border-radius:var(--rayon);padding:22px;text-align:center;cursor:pointer;margin-bottom:12px;background:var(--fond)}
.zone-depot.survol,.zone-depot:hover{border-color:var(--accent);background:var(--accent-pale)}
.bandeau{padding:10px 14px;border-radius:var(--rayon);margin-bottom:14px;border:1px solid var(--ligne);background:#fff}
.bandeau.succes{background:#E2EEE8;border-color:#C3DCCF;color:var(--positif)}.bandeau.attention{background:#F7EFE4;border-color:var(--terre-300);color:var(--terre-700)}
tr.ligne-erreur td{background:#FBF1F2}
.petit-texte{font-size:12px}
.actions{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0;align-items:center}
.grille2>*{min-width:0}
/* fin import */
/* connexion */
#connexion{position:fixed;inset:0;z-index:70;background:var(--bleu-800);display:grid;place-items:center;padding:16px}
#connexion form{width:min(360px,100%);padding:26px;display:grid;gap:12px}
#connexion label{font-size:12px;color:var(--gris);display:grid;gap:4px}
#connexion input{font-size:15px;padding:9px 10px;border:1px solid var(--gris-300);border-radius:6px;font-family:inherit}
#connexion .bouton{padding:10px}
/* logo principal, bleu sur fond blanc (§ 3.3) ; 220 px de large, au-dessus du minimum de 170 px en SVG (§ 3.5) */
.marque-connexion{display:flex;justify-content:center;margin:0 0 8px}.marque-connexion img{width:220px;height:auto}
button.avatar{border:0;cursor:pointer}
/* fin connexion */

/* recette zone C */
.zc-vues,.zc-page .onglets{overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}
.zc-vues a,.zc-page .onglets>*{flex:none;white-space:nowrap}
.zc-k4{grid-template-columns:repeat(4,minmax(0,1fr))}
.zc-mensuel td:first-child,.zc-mensuel th:first-child{position:sticky;left:0;z-index:1;background:var(--carte)}
.zc-mensuel th:first-child,.zc-mensuel tfoot td:first-child{background:var(--bleu-50)}
@media (max-width:860px){
  .zc-barre{flex-wrap:wrap;position:static;padding:10px 14px;row-gap:8px}
  .zc-barre h1{flex:1 1 0;min-width:0;overflow-wrap:anywhere}
  .zc-barre>span[style]{display:none}
  .zc-barre .boutons{flex:1 1 100%;gap:6px}
  .zc-page{padding:12px}
  .zc-page .kpis,.zc-recap .kpis,.zc-k4{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .zc-page .kpi,.zc-recap .kpi{padding:10px 12px;min-width:0}
  .zc-page .kpi .val,.zc-recap .kpi .val{font-size:16px;overflow-wrap:anywhere}
  .zc-page .kpi .sous,.zc-recap .kpi .sous{float:none;margin-top:2px}
  .zc-entete{gap:10px 20px}
  .zc-filtres .outils>select,.zc-filtres .outils>input[type=date]{flex:1 1 140px;min-width:0;max-width:100%}
  .zc-filtres .zc-sep{display:none}
  .zc-page .outils>select{flex:1 1 140px;min-width:0;max-width:100%}
}
@media (max-width:640px){
  .zc-lettrage thead{display:none}
  .zc-lettrage table,.zc-lettrage tbody{display:block}
  .zc-lettrage tr{display:grid;grid-template-columns:1fr auto;gap:4px 10px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--ligne)}
  .zc-lettrage td{border:0;padding:0;white-space:normal}
  .zc-lettrage td.num{text-align:left}
  .zc-lettrage td.long{grid-column:1/-1;min-width:0;color:var(--gris);font-size:12px}
  .zc-lettrage td[data-lib]::before{content:attr(data-lib) " · ";color:var(--gris);font-size:11.5px}
  .zc-lettrage input{width:100%}
}
/* fin recette zone C */
/* recette zone A */
.za-onglets{overflow-y:hidden}
.za-courbe{display:block;max-width:100%}
.za-courbe text{font-size:11px;fill:var(--gris);font-variant-numeric:tabular-nums}
.za-courbe .grille{stroke:var(--gris-200)}
.barre-page:has(.za-date){flex-wrap:wrap;row-gap:6px}
.za-occ .barre{width:48px;min-width:48px}.za-grille th,.za-grille td{padding-left:9px;padding-right:9px}
.za-nowrap{white-space:nowrap}.za-grille .carte>h2{flex-wrap:wrap;row-gap:4px}
@media (max-width:600px){
  .za-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .za-kpis .kpi{padding:9px 10px;min-width:0}.za-kpis .kpi .val{font-size:16px;overflow-wrap:anywhere}
  .za-kpis .kpi .sous{float:none;margin-top:2px}
}
/* fin recette zone A */
/* recette zone D */
.zd-onglets,.zd-vues{overflow-x:auto;overflow-y:hidden}.zd-onglets button{white-space:nowrap}
.zd-vues a{white-space:nowrap}
table.zd-calc td:first-child{white-space:normal}
.zd-kpis-crg{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}
.zd-kpi-texte{font-size:14px;white-space:normal}
.zd-hyp{margin:0;padding:8px 14px;font-size:12.5px;border-bottom:1px solid var(--ligne)}
tr.zd-futur td{color:var(--gris-clair)}
@media (max-width:640px){
  .zd-page .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .zd-page .kpi{padding:10px 12px;min-width:0}.zd-page .kpi .val{font-size:16px;overflow-wrap:anywhere}
  .zd-page .kpi .sous{float:none;margin-top:2px}
  .zd-filtres .outils{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .zd-filtres .outils>span:empty{display:none}
  .zd-filtres label.zd-f{flex-direction:column;align-items:stretch;gap:2px;white-space:normal;min-width:0}
  .zd-filtres label.zd-f select,.zd-filtres label.zd-f input,.zd-filtres .outils>select{max-width:none;width:100%;min-width:0}
  .zd-filtres .zd-multi{display:flex;align-items:flex-end;min-width:0}.zd-filtres .zd-multi details.multi,.zd-filtres .zd-multi summary{width:100%;max-width:none}
  .zd-filtres .outils>.bouton{align-self:end}
  .zd-cf th:first-child,.zd-cf td:first-child{min-width:150px;max-width:170px;white-space:normal}
  .zd-statut-crg>span[style]{display:none}
  table.zd-lignes thead{display:none}
  table.zd-lignes,table.zd-lignes tbody,table.zd-lignes tfoot{display:block}
  table.zd-lignes tr{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 10px;padding:10px 0;border-bottom:1px solid var(--ligne)}
  table.zd-lignes td{display:block;border:0;padding:0;white-space:normal;text-align:left}
  table.zd-lignes td[data-l]::before{content:attr(data-l);display:block;font-size:11px;color:var(--gris);margin-bottom:2px}
  table.zd-lignes td:first-child{grid-column:1/-1}
  table.zd-lignes td:empty,table.zd-lignes tfoot td[colspan]{display:none}
  table.zd-lignes input:not([type=checkbox]),table.zd-lignes select,table.zd-lignes input[data-k=libelle],table.zd-lignes input.num{min-width:0}
  .modale-boite footer.zd-pied .gauche{margin-right:0;flex-basis:100%}
}
/* fin recette zone D */
/* recette zone B */
@media (min-width:1360px){.b-kpis{grid-template-columns:repeat(var(--b-n),minmax(0,1fr))}}
.b-zone .carte>h2{flex-wrap:wrap;row-gap:6px}
table.b-arbre th,table.b-arbre td{padding:6px 8px}
table.b-arbre td:first-child{white-space:normal;min-width:220px}
table.b-arbre input.b-saisie{width:92px}
.b-bloc.b-parking{flex:0 0 62px;min-width:0}
@media (max-width:860px){
  #contenu:has(.b-entete) .barre-page{flex-wrap:wrap;position:static;row-gap:8px}
  .b-kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .b-kpis .kpi{padding:10px 12px}.b-kpis .kpi .val{font-size:16px}
  .b-jauge .barre{width:44px;min-width:44px}
  table.b-arbre td:first-child{min-width:180px}
}
/* fin recette zone B */
/* recette : règles communes à toutes les zones */
.page:empty::before{content:"Chargement…";display:block;padding:48px 0;text-align:center;color:var(--gris)}
.onglets{overflow-x:auto;scrollbar-width:thin}.onglets button,.onglets a{white-space:nowrap}
@media (max-width:860px){
  .barre-page{flex-wrap:wrap;row-gap:8px;position:static}.barre-page h1{flex:1 1 auto;min-width:0}.barre-page .boutons{flex-wrap:wrap}
  .page{padding:12px}
}
@media (max-width:560px){
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.kpi{padding:10px}.kpi .val{font-size:16px}
  .outils{gap:6px}.outils input[type=search]{min-width:0;flex-basis:100%}
}
.kpi .sous{float:none;margin-top:3px}  /* sous-titre sous la valeur : plus de chevauchement sur les tuiles étroites */
/* fin recette commune */
.za-attributs [data-attr]{cursor:pointer}.za-attributs dd[data-attr]:hover,.za-attributs dt[data-attr]:hover{color:var(--accent)}
/* comptes utilisateurs */
#moi{font-size:13px;color:var(--creme);white-space:nowrap}#moi .muted{color:var(--bleu-300)}
@media (max-width:860px){#moi{display:none}}
/* lecture seule : les boutons d'ajout, de modification et de suppression ne sont pas proposés (le serveur les refuse de toute façon) */
/* écran en lecture seule (droits) : boutons de création et de modification masqués, fiches en consultation */
body.lecture-seule [data-ajout],body.lecture-seule [data-suppr],body.lecture-seule [data-act="modifier"],body.lecture-seule [data-act="supprimer"],body.lecture-seule [data-act="surfaces"],
body.lecture-seule .barre-page .boutons button,body.lecture-seule [data-ajout-v],body.lecture-seule [data-ajout-val],body.lecture-seule [data-statut-sel],
body.lecture-seule [data-relancer],body.lecture-seule [data-aligner],body.lecture-seule .consultation [data-ok]{display:none!important}
.za-mdp{font-size:18px;padding:8px 12px;background:var(--fond,#f4f6f8);border-radius:6px;user-select:all;display:inline-block;margin:6px 0}
.formulaire p.plein{grid-column:1/-1;margin:0}  /* texte d'introduction de demander() */
/* fin comptes utilisateurs */
.b-surf{display:inline-block;white-space:nowrap;margin:1px 6px 1px 0}.b-surf.annexe{color:var(--muted)}

/* documents texte et Markdown */
.md-corps{max-height:70vh;overflow:auto}.md-brut{white-space:pre-wrap;font:13px/1.5 ui-monospace,Menlo,monospace;margin:0}
.md-rendu{font-size:14px;line-height:1.55}.md-rendu h2,.md-rendu h3,.md-rendu h4{margin:14px 0 6px}.md-rendu h2{font-size:18px}.md-rendu h3{font-size:16px}.md-rendu h4{font-size:14px}
.md-rendu p,.md-rendu ul,.md-rendu ol{margin:6px 0}.md-rendu ul,.md-rendu ol{padding-left:22px}.md-rendu blockquote{margin:8px 0;padding:4px 12px;border-left:3px solid var(--accent);color:var(--muted)}
.md-rendu pre{background:var(--fond,#f4f6f8);padding:10px;border-radius:6px;overflow:auto;font-size:12.5px}.md-rendu code{background:var(--fond,#f4f6f8);padding:1px 4px;border-radius:4px;font-size:12.5px}
.md-rendu .tableau{margin:8px 0}.md-rendu hr{border:0;border-top:1px solid var(--bordure,#e3e7ec);margin:12px 0}
.za-depot{display:flex;flex-direction:column;gap:10px}.za-zone-depot{display:flex;flex-direction:column;gap:4px;align-items:center;padding:22px 12px;border:2px dashed var(--bordure,#cfd6de);border-radius:8px;cursor:pointer;text-align:center}
.za-zone-depot:hover,.za-zone-depot.survol{border-color:var(--accent);background:var(--accent-pale)}.za-depot button{align-self:flex-start}

/* charte : interlignage 1,6 pour le texte courant (§ 2.4, web) ; liens en bleu 600 */
.md-rendu,.b-description,.corps>p{line-height:1.6}
a.lien{color:var(--bleu-600)}
.legende{color:var(--gris-600)}
.sources{font-size:11.5px;color:var(--gris-600);padding:0 14px 10px}

/* choix multiples à cases à cocher */
details.multi{position:relative;display:inline-block}
details.multi>summary{list-style:none;cursor:pointer;border:1px solid var(--gris-300);border-radius:6px;padding:5px 26px 5px 9px;font-size:13px;background:#fff;color:var(--bleu-800);white-space:nowrap;max-width:320px;overflow:hidden;text-overflow:ellipsis;position:relative}
details.multi>summary::-webkit-details-marker{display:none}
details.multi>summary::after{content:"▾";position:absolute;right:9px;top:5px;color:var(--gris-600)}
details.multi[open]>summary{border-color:var(--bleu-600)}
.multi-liste{position:absolute;z-index:25;top:calc(100% + 4px);left:0;min-width:220px;max-height:340px;overflow:auto;background:#fff;border:1px solid var(--gris-300);border-radius:8px;box-shadow:0 10px 30px rgba(11,24,65,.15);padding:8px;display:flex;flex-direction:column;gap:2px}
.multi-liste label{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:4px;font-size:13px;cursor:pointer;white-space:nowrap}
.multi-liste label:hover{background:var(--bleu-50)}
.multi-raccourcis{display:flex;gap:10px;padding:0 6px 6px;border-bottom:1px solid var(--gris-200);margin-bottom:4px}
.multi-raccourcis button{border:0;background:none;color:var(--bleu-600);cursor:pointer;font-size:12px;padding:0}
.multi-liste .bouton{margin-top:6px;align-self:flex-end}
/* tuiles avec répartition par périmètre */
.kpi .rep{display:grid;grid-template-columns:10px auto 1fr auto;gap:2px 6px;align-items:center;margin-top:8px;padding-top:6px;border-top:1px solid var(--gris-200);font-size:11.5px;color:var(--gris-600)}
.kpi .rep b{font-family:var(--police-chiffres);font-variant-numeric:tabular-nums;font-weight:600;color:var(--bleu-800);text-align:right}
.kpi .rep .pt,.pt-per{width:9px;height:9px;border-radius:2px;display:inline-block}
.kpi .rep .part{text-align:right;min-width:42px;font-family:var(--police-chiffres);font-variant-numeric:tabular-nums}
.kpis.za-rep{grid-template-columns:repeat(auto-fill,minmax(205px,1fr))}
.za-pole dl.fiche{grid-template-columns:200px 1fr}

.alerte-texte { color: var(--alerte); font-weight: 600; }
.multi-liste [data-cherche]{border:1px solid var(--gris-300);border-radius:6px;padding:5px 8px;font-size:13px;margin-bottom:6px;font-family:inherit;color:var(--bleu-800)}
.multi-cases{display:flex;flex-direction:column;gap:2px;max-height:260px;overflow:auto}
.multi-cases label[hidden]{display:none}
.zd-multi{display:inline-flex;align-items:center}

/* droits par écran : niveaux, écarts d'un compte par rapport à son rôle */
.sel-droit{border:1px solid var(--gris-300);border-radius:6px;padding:3px 6px;font-size:12.5px;font-family:inherit}
.niveau-aucun{background:var(--gris-100);color:var(--gris-600)}
.niveau-lecture{background:var(--bleu-50);color:var(--bleu-700)}
.niveau-ecriture{background:#E4EFEA;color:var(--positif)}
.etiquette-droit{display:inline-block;border-radius:6px;padding:3px 8px;font-size:12.5px}
.table-droits td,.table-droits th{white-space:normal}
.table-droits .groupe-droits td{background:var(--bleu-50);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px;color:var(--gris-600)}
.matrice-droits th{min-width:120px;vertical-align:top}
.matrice-droits td.modifie{box-shadow:inset 0 0 0 2px var(--terre-500)}
tr.droit-ajoute td{background:#E4EFEA}tr.droit-ajoute [data-etat]{color:var(--positif);font-weight:600}
tr.droit-retire td{background:#F3E3E5}tr.droit-retire [data-etat]{color:var(--alerte);font-weight:600}
.droit-ajoute-ex{background:#E4EFEA;color:var(--positif);border-radius:4px;padding:1px 6px;font-weight:600}
.droit-retire-ex{background:#F3E3E5;color:var(--alerte);border-radius:4px;padding:1px 6px;font-weight:600}
.droit-ecart{color:var(--terre-700);font-weight:600}
.zc-avis{margin:6px 0 2px;padding:8px 10px;border-left:3px solid var(--terre-500);background:var(--gris-100);font-size:12.5px}

/* congés : types, calendrier d'équipe (deux demi-journées par case) */
.cg-type{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.cg-type::before{content:"";width:10px;height:10px;border-radius:3px;background:var(--c)}
.cg-titre{min-width:170px;text-align:center;text-transform:capitalize}
.cg-mode{display:inline-flex;border:1px solid var(--gris-300);border-radius:6px;overflow:hidden}.cg-mode a{padding:5px 10px;font-size:13px;color:var(--bleu-800)}
.cg-mode a.actif{background:var(--bleu-800);color:var(--creme)}
.cg-grille-boite{overflow:auto;max-height:calc(100vh - 260px)}
table.cg-grille{border-collapse:separate;border-spacing:0;font-size:11.5px;width:auto}
.cg-grille th,.cg-grille td{padding:0;border-bottom:1px solid var(--gris-200);border-right:1px solid var(--gris-200);text-align:center;min-width:22px;height:24px}
.cg-grille thead th{position:sticky;top:0;z-index:2;background:var(--bleu-50);font-weight:600;line-height:1.15;padding:3px 0}
.cg-grille .cg-nom{position:sticky;left:0;z-index:1;background:#fff;text-align:left;padding:0 10px;min-width:170px;max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cg-grille thead .cg-nom{z-index:3;background:var(--bleu-50)}
.cg-grille td.cg-moi{font-weight:700}
.cg-grille tr.cg-groupe td{position:sticky;left:0;background:var(--bleu-50);text-align:left;padding:3px 10px;font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--gris-600)}
.cg-grille td[data-j]{position:relative}
.cg-grille td[data-j]>span{position:absolute;top:2px;bottom:2px;width:calc(50% - 1px)}
.cg-grille td[data-j]>span:first-child{left:1px;border-radius:3px 0 0 3px}.cg-grille td[data-j]>span:last-child{right:1px;border-radius:0 3px 3px 0}
.cg-abs{background:var(--c)}
.cg-attente{background:repeating-linear-gradient(135deg,var(--c) 0 3px,transparent 3px 6px);opacity:.9}
.cg-tt{background:var(--bleu-200)}
.cg-grille .cg-we,.cg-grille th.cg-we{background:var(--gris-200)}
.cg-grille .cg-ferie,.cg-grille th.cg-ferie{background:var(--terre-300)}
.cg-grille th.cg-auj{box-shadow:inset 0 -3px 0 var(--terre-500)}
.cg-grille td.cg-clic{cursor:pointer}.cg-grille td.cg-clic:hover{background:var(--bleu-50)}
.cg-legende{display:flex;flex-wrap:wrap;gap:14px;align-items:center;font-size:12.5px}
.cg-l{display:inline-block;width:14px;height:12px;border-radius:3px;vertical-align:middle;margin-right:-8px}
.cg-l.cg-ferie{background:var(--terre-300)}
.cg-jours{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.cg-simulation p{margin:4px 0}
.plus-lignes{display:flex;gap:8px;justify-content:center;padding:10px}

/* Prévisionnel de trésorerie travaux (vues-tresorerie.js) : charte § 7 de la spécification.
   En-têtes crème sur bleu nuit, lots alternés blanc / gris clair, zone de saisie bleu pâle, totaux sur bleu 100,
   champs à compléter (phase budget) en terre 300. « – » gris : mois non arrêté ; « 0 » : mois arrêté sans facture. */
.tt-onglets{margin:-4px 0 14px;background:var(--carte);border:1px solid var(--ligne);border-radius:var(--rayon)}
.tt-periode{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--gris)}
.tt-periode input{border:1px solid var(--gris-300);border-radius:6px;padding:4px 6px;font:inherit;color:var(--bleu-800);background:#fff}
.tt-avert{border-left:3px solid var(--attention)}.tt-avert .corps{padding:10px 14px}
.tt-entete-op{display:grid;gap:4px;padding:12px 14px}
.tt-grille-boite{overflow:auto;max-height:calc(100vh - 190px)}
.tt-grille{border-collapse:separate;border-spacing:0;font-size:12.5px;width:max-content;min-width:100%}
.tt-grille th,.tt-grille td{padding:4px 8px;border-bottom:1px solid var(--ligne);white-space:nowrap;text-align:left;vertical-align:middle}
.tt-grille td.num,.tt-grille th.num{text-align:right;font-family:var(--police-chiffres);font-variant-numeric:tabular-nums lining-nums}
.tt-grille thead th{position:sticky;top:0;z-index:3;background:var(--bleu-800);color:var(--creme);font-family:var(--police-sstitre);font-weight:500;border-bottom:0}
.tt-grille thead th.tt-auj{box-shadow:inset 0 -3px 0 var(--terre-500)}
.tt-grille .tt-col-lot,.tt-grille .tt-col-lib{position:sticky;left:0;z-index:2;min-width:200px;max-width:260px;white-space:normal;box-shadow:inset -1px 0 0 var(--ligne)}
.tt-grille thead .tt-col-lot,.tt-grille thead .tt-col-lib{z-index:4;background:var(--bleu-800)}
.tt-grille tbody td,.tt-grille tbody th{background:#fff}
.tt-grille tbody.tt-impair td,.tt-grille tbody.tt-impair th{background:var(--gris-100)}
.tt-lot th.tt-col-lot{cursor:pointer;font-weight:400}.tt-lot th.tt-col-lot:hover b{text-decoration:underline}
.tt-lot tr:first-child td,.tt-lot tr:first-child th{border-bottom:0}
.tt-col-ligne{color:var(--gris);font-size:11.5px}
.tt-dec td{color:var(--gris-600)}
.tt-grille tbody.tt-cat th{background:var(--creme);color:var(--bleu-800);font-family:var(--police-titre);font-size:13px}
.tt-cat-lib{position:sticky;left:8px;display:inline-block}
.tt-grille tr.tt-titre th{background:var(--gris-200);color:var(--bleu-800);font-size:11.5px;text-transform:uppercase;letter-spacing:.4px}
.tt-grille tbody.tt-soustotal td,.tt-grille tbody.tt-soustotal th,.tt-grille tr.tt-soustotal td,.tt-grille tr.tt-soustotal th{background:var(--bleu-100);font-weight:600}
.tt-grille tbody.tt-total-op td,.tt-grille tbody.tt-total-op th,.tt-grille tr.tt-total-ligne td,.tt-grille tr.tt-total-ligne th{background:var(--bleu-100);font-weight:700;border-top:2px solid var(--bleu-800)}
.tt-grille td.tt-total{font-weight:600}
.tt-grille td.tt-saisie{padding:2px 3px}
.tt-saisie input{width:84px;border:1px solid transparent;border-radius:4px;background:var(--bleu-50);padding:3px 5px;text-align:right;font:inherit;font-family:var(--police-chiffres);color:var(--bleu-800)}
.tt-saisie input:hover{border-color:var(--bleu-200)}.tt-saisie input:focus{outline:0;border-color:var(--bleu-500);background:#fff}
.tt-saisie input::placeholder{color:var(--gris-400)}
.tt-saisie input.tt-proj::placeholder{color:var(--bleu-300);font-style:italic}
.tt-saisie input.tt-zero,td.tt-zero{font-weight:700}
.tt-saisie-lect{background:var(--bleu-50)!important}
.tt-vide{color:var(--gris-400)}
.tt-a-completer{background:var(--terre-300)!important}
.pastille.tt-budget{background:var(--terre-300);color:var(--terre-700)}
.tt-attention{color:var(--attention);font-weight:700}
.tt-alerte{color:var(--alerte);font-weight:700;background:#F3E2E5!important}
.tt-legende{display:inline-flex;gap:10px;flex-wrap:wrap;font-size:12px}
.tt-legende span{padding:1px 6px;border-radius:4px}
.tt-ex-saisie{background:var(--bleu-50);color:var(--bleu-800)}.tt-ex-zero{background:var(--bleu-50);color:var(--bleu-800);font-weight:700}
.tt-ex-vide{color:var(--gris-400)}.tt-ex-proj{color:var(--bleu-300);font-style:italic}
.tt-synthese td.num{min-width:72px}
.tt-compact .tt-det{display:none}
