/* ROMAXIMMO : feuille de style. Vert encre et citron, cartes sans filet, navigation horizontale, panneaux latéraux. */
@font-face{font-family:"Figtree";src:url(/polices/figtree.woff2) format("woff2");font-weight:300 900;font-display:swap}
@font-face{font-family:"Bricolage";src:url(/polices/bricolage.woff2) format("woff2");font-weight:200 800;font-display:swap}
:root{
  /* les anciens noms de variables restent utilisés par les écrans : ils portent la nouvelle échelle */
  --bleu-900:#0A1714;--bleu-800:#10231E;--bleu-700:#1B3A32;--bleu-600:#0B6B57;--bleu-500:#0B8068;--bleu-400:#3FA48E;--bleu-300:#9CC9BD;--bleu-200:#C9E2DB;--bleu-100:#E3F1ED;--bleu-50:#F1F7F4;
  --creme:#F6FBEF;--citron:#D8F45A;--gris-100:#F4F6F3;--gris-200:#E6EAE5;--gris-300:#D3DAD4;--gris-400:#B9C2BC;--gris-500:#8C9992;--gris-600:#5B6B64;
  --terre-700:#8A4F10;--terre-500:#D2771C;--terre-300:#F3D5AE;--positif:#0B8068;--attention:#D2771C;--alerte:#C8324A;
  --police-titre:"Bricolage","Figtree",system-ui,sans-serif;--police-sstitre:"Figtree",system-ui,sans-serif;--police-corps:"Figtree",system-ui,sans-serif;--police-chiffres:"Figtree",system-ui,sans-serif;
  --h-entete:124px;
  --nuit:var(--bleu-800);--nuit-2:var(--bleu-700);--accent:var(--bleu-800);--accent-fonce:var(--bleu-600);--accent-pale:var(--bleu-100);--fond:#EEF2EC;--carte:#FFFFFF;
  --texte:var(--bleu-800);--gris:var(--gris-600);--gris-clair:var(--gris-500);--ligne:#EDF0EC;--survol:var(--bleu-50);--vert:var(--positif);--rouge:var(--alerte);--orange:var(--attention);
  --rayon:18px;--ombre:0 1px 2px rgba(16,35,30,.04),0 8px 28px rgba(16,35,30,.05)}
*{box-sizing:border-box}html,body{margin:0;height:100%}[hidden]{display:none!important}
body{font:14.5px/1.55 var(--police-corps);color:var(--texte);background:var(--fond);-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1}
h1,h2,h3{font-family:var(--police-titre);letter-spacing:-.015em}
a{color:inherit;text-decoration:none}button{font:inherit}
.kpi .val,td.num,th.num,.periode,tfoot td,.graphe text,.infobulle b{font-variant-numeric:tabular-nums}
#app{min-height:100vh}
/* barre haute : logo, modules en pastilles, recherche */
#entete{display:flex;align-items:center;gap:22px;height:72px;padding:0 28px;position:sticky;top:0;z-index:30;background:rgba(238,242,236,.92);backdrop-filter:blur(10px)}
.logo{display:flex;align-items:center;gap:10px;font:800 19px/1 var(--police-titre);letter-spacing:.02em;color:var(--bleu-800);flex:none}.logo img{width:34px;height:34px;display:block}
#modules{display:flex;gap:2px;margin:0 auto;padding:4px;background:#fff;border-radius:999px;box-shadow:var(--ombre);overflow-x:auto;scrollbar-width:none}
#modules a{padding:8px 16px;border-radius:999px;font-weight:600;font-size:14px;color:var(--gris-600);white-space:nowrap;transition:background .15s,color .15s}
#modules a:hover{color:var(--bleu-800);background:var(--bleu-50)}#modules a.actif{background:var(--bleu-800);color:var(--citron)}
#ouvrir-palette{display:flex;align-items:center;gap:22px;flex:none;background:#fff;border:0;border-radius:999px;padding:9px 10px 9px 16px;color:var(--gris-600);cursor:pointer;box-shadow:var(--ombre)}
kbd{font:600 11px var(--police-corps);background:var(--gris-100);border-radius:6px;padding:2px 6px;color:var(--gris-600)}
.avatar{width:40px;height:40px;flex:none;border-radius:50%;background:var(--citron);color:var(--bleu-800)!important;display:grid;place-items:center;font-size:13px;font-weight:800;border:0;cursor:pointer}
/* écrans du module : onglets soulignés */
#nav{display:flex;align-items:center;gap:6px;height:52px;padding:0 28px;position:sticky;top:72px;z-index:29;background:rgba(238,242,236,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--gris-200)}
#nav>a,#nav summary{padding:8px 12px;font-weight:500;font-size:14px;color:var(--gris-600);white-space:nowrap;cursor:pointer;border-radius:10px;list-style:none}
#nav summary::-webkit-details-marker{display:none}#nav summary::after{content:" ▾";font-size:10px}
#nav>a:hover,#nav summary:hover{color:var(--bleu-800);background:rgba(255,255,255,.7)}
#nav>a.actif,#nav .deroulant.actif>summary{color:var(--bleu-800);font-weight:700;background:#fff;box-shadow:var(--ombre)}
#nav .nav-retour{font-weight:700;color:var(--bleu-600);margin-right:8px}
.deroulant{position:relative}.deroulant>div{position:absolute;top:calc(100% + 8px);left:0;min-width:230px;background:#fff;border-radius:14px;padding:6px;box-shadow:0 18px 50px rgba(16,35,30,.18);display:grid;z-index:40}
.deroulant>div a{padding:8px 12px;border-radius:9px;font-size:14px;white-space:nowrap}.deroulant>div a:hover{background:var(--bleu-50)}.deroulant>div a.actif{background:var(--bleu-100);font-weight:700}
#contenu{padding:0 0 60px;min-width:0;max-width:1640px;margin:0 auto}
.barre-page{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:26px 28px 6px;background:none;border:0;position:static}
.barre-page h1{font:700 34px/1.1 var(--police-titre);margin:0;color:var(--bleu-800)}.barre-page .fil{color:var(--gris);font-size:14px;padding-bottom:5px}.barre-page .fil+.muted{padding-bottom:5px}
.page{padding:16px 28px}
.espace{flex:1}
/* boutons en pilule */
.bouton{border:0;background:#fff;color:var(--bleu-800);padding:8px 16px;border-radius:999px;font-size:13.5px;cursor:pointer;font-weight:600;box-shadow:inset 0 0 0 1px var(--gris-300);transition:background .15s,transform .05s;display:inline-flex;align-items:center;gap:6px}
.bouton:hover{background:var(--bleu-50)}.bouton:active{transform:translateY(1px)}.bouton.primaire{background:var(--bleu-800);box-shadow:none;color:var(--citron)}.bouton.primaire:hover{background:var(--bleu-700)}
.bouton.petit{padding:4px 11px;font-size:12.5px}.bouton.danger{color:var(--alerte);box-shadow:inset 0 0 0 1px #EFC6CD}.bouton:disabled{opacity:.5;cursor:default}
/* indicateurs : grands chiffres, sans filet */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px;margin-bottom:18px}
.kpi{background:var(--carte);border:0;border-radius:var(--rayon);padding:18px 20px;box-shadow:var(--ombre)}
.kpi .lib{color:var(--gris);font-size:13px;font-weight:500}.kpi .val{font:700 27px/1.15 var(--police-titre);margin-top:6px;color:var(--bleu-800);letter-spacing:-.01em}
.kpi .val a{color:inherit}.kpi .sous{color:var(--gris);font-size:12.5px;margin-top:4px;float:none}
.kpi.alerte .val{color:var(--alerte)}.kpi.ok .val{color:var(--positif)}
.carte{background:var(--carte);border:0;border-radius:var(--rayon);box-shadow:var(--ombre);margin-bottom:18px;overflow:clip}
.carte>h2{font:700 17px/1.3 var(--police-titre);margin:0;padding:18px 20px 8px;border:0;display:flex;align-items:center;gap:8px;color:var(--bleu-800)}
.carte .corps{padding:12px 20px 18px}
.grille2{display:grid;grid-template-columns:repeat(auto-fit,minmax(440px,1fr));gap:18px}
.outils{display:flex;gap:8px;align-items:center;padding:10px 20px;border:0;flex-wrap:wrap}
.outils input[type=search],.outils select,.outils input[type=date],.outils input[type=number]{border:0;background:var(--gris-100);border-radius:999px;padding:8px 14px;font-size:13.5px;color:var(--texte)}
.outils input[type=search]{flex:1;min-width:200px}
.compte{color:var(--gris);font-size:12.5px;padding:10px 20px}
table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.5px}
th,td{text-align:left;padding:11px 14px;border-bottom:1px solid var(--ligne);vertical-align:middle;white-space:nowrap}
th:first-child,td:first-child{padding-left:20px}th:last-child,td:last-child{padding-right:20px}
th{color:var(--gris-500);font-weight:600;font-size:12px;cursor:pointer;user-select:none;background:none;border-bottom:1px solid var(--gris-200)}
th.trie{color:var(--bleu-800)}th.trie::after{content:" ↓";color:var(--bleu-500)}th.trie.inv::after{content:" ↑"}
td.num,th.num{text-align:right}
td.long{white-space:normal;min-width:220px}
tr.cliquable{cursor:pointer}tr.cliquable:hover td{background:var(--bleu-50)}
tfoot td{font-weight:700;background:none;color:var(--bleu-800);border-top:2px solid var(--bleu-800);border-bottom:0}
.tableau{overflow-x:auto}
.vide{padding:34px;text-align:center;color:var(--gris)}
.pastille{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--gris-100);color:var(--gris-600)}
.pastille.vert{background:#DDF3EC;color:#08654F}.pastille.rouge{background:#FBE3E7;color:var(--alerte)}.pastille.orange{background:#FCEBD6;color:var(--terre-700)}
.periode{display:inline-block;background:var(--gris-100);color:var(--gris-600);border-radius:999px;padding:0 8px;font-size:12px}
.muted{color:var(--gris)}.rouge{color:var(--rouge)}.vert{color:var(--vert)}.gras{font-weight:600}
.onglets{display:flex;gap:4px;border:0;padding:4px;background:#E3E8E2;border-radius:999px;width:fit-content;max-width:100%;overflow-x:auto;scrollbar-width:none}
.onglets a,.onglets button{border:0;background:none;padding:7px 15px;color:var(--gris-600);border-radius:999px;margin:0;cursor:pointer;white-space:nowrap;font-weight:500;font-size:13.5px}
.onglets .actif{background:#fff;color:var(--bleu-800);font-weight:700;box-shadow:0 1px 3px rgba(16,35,30,.12)}
dl.fiche{display:grid;grid-template-columns:190px 1fr;gap:8px 16px;margin:0;font-size:14px}dl.fiche dt{color:var(--gris)}dl.fiche dd{margin:0;font-weight:500}
.graphe{position:relative;width:100%}.graphe svg{display:block;overflow:hidden}
.graphe text{font-size:11.5px;fill:var(--gris-500)}
.graphe .grille{stroke:var(--gris-200);stroke-width:1;stroke-dasharray:2 4}.graphe .axe{stroke:var(--gris-300);stroke-width:1}
.graphe .anneau{stroke:#fff;stroke-width:2}.graphe .cible{fill:transparent;cursor:crosshair}.graphe .repere{fill:rgba(16,35,30,.05)}
.infobulle{position:absolute;z-index:5;pointer-events:none;background:var(--bleu-800);color:#fff;border-radius:12px;box-shadow:0 12px 34px rgba(16,35,30,.3);padding:10px 12px;font-size:12.5px;min-width:150px}
.infobulle .titre{color:var(--bleu-300);margin-bottom:4px}.infobulle .rang{display:flex;align-items:center;gap:8px;line-height:1.7}.infobulle .rang i{width:12px;height:3px;border-radius:2px}
.infobulle .rang b{color:#fff;margin-left:auto}.infobulle .rang span{color:var(--bleu-200)}.infobulle .info{border-top:1px solid var(--bleu-700);margin-top:5px;padding-top:5px;color:#fff}
.legende{display:flex;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--gris);padding:0 20px 14px}.legende i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px}
.carte-geo{width:100%;height:280px;border:0;display:block}
.fil-actu{list-style:none;margin:0;padding:0 6px 8px}.fil-actu li{padding:10px 14px;border-bottom:1px solid var(--ligne);display:flex;gap:10px}.fil-actu li:last-child{border:0}
.barre{height:7px;background:var(--gris-200);border-radius:99px;overflow:hidden;min-width:60px}.barre i{display:block;height:100%;background:var(--bleu-500);border-radius:99px}
/* formulaires et fiches : panneau latéral plutôt que fenêtre centrale */
#voile{position:fixed;inset:0;background:rgba(10,23,20,.38);backdrop-filter:blur(3px);z-index:40}
#modale{position:fixed;inset:0;z-index:50;display:flex;justify-content:flex-end;padding:0;pointer-events:none}
.modale-boite{pointer-events:auto;background:#fff;border-radius:24px 0 0 24px;max-width:640px;width:100%;height:100%;display:flex;flex-direction:column;box-shadow:-24px 0 70px rgba(10,23,20,.22);animation:panneau .2s ease-out}
.modale-boite>form,.modale-boite>.corps{flex:1;overflow-y:auto;min-height:0}
@keyframes panneau{from{transform:translateX(40px);opacity:.4}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.modale-boite{animation:none}}
.modale-boite.large{max-width:1100px}
.modale-boite header{display:flex;align-items:center;padding:22px 26px 12px;border:0}.modale-boite header h2{margin:0;font:700 22px/1.2 var(--police-titre);flex:1}
.modale-boite .corps{padding:10px 26px 22px}.modale-boite footer{display:flex;gap:8px;justify-content:flex-end;padding:14px 26px;border-top:1px solid var(--ligne)}
.modale-boite footer .gauche{margin-right:auto}
.formulaire{display:grid;grid-template-columns:repeat(2,1fr);gap:14px 16px;align-content:start}
.formulaire label{display:block;font-size:12.5px;font-weight:600;color:var(--gris-600)}.formulaire label.plein{grid-column:1/-1}
.formulaire input,.formulaire select,.formulaire textarea{display:block;width:100%;margin-top:5px;font-size:14px;font-family:inherit;padding:10px 12px;border:1.5px solid transparent;background:var(--gris-100);border-radius:12px;color:var(--texte)}
.formulaire select[multiple]{height:160px}.formulaire textarea{min-height:80px}
.formulaire label.case{display:flex;align-items:center;gap:8px;margin-top:20px}.formulaire label.case input{width:auto;margin:0}
.formulaire input:focus,.formulaire select:focus,.formulaire textarea:focus{outline:0;border-color:var(--bleu-500);background:#fff}
#toast{position:fixed;bottom:24px;right:24px;background:var(--bleu-800);color:var(--citron);padding:12px 18px;border-radius:14px;font-weight:600;z-index:80;box-shadow:0 12px 34px rgba(16,35,30,.3)}
.ligne-actions{display:flex;gap:6px;justify-content:flex-end}
a.lien{color:var(--bleu-600);font-weight:600}a.lien:hover{text-decoration:underline}
#toast.erreur{background:var(--alerte);color:#fff}
fieldset.cases{border:0;background:var(--gris-100);border-radius:12px;padding:10px 14px;display:flex;flex-wrap:wrap;gap:4px 16px;grid-column:1/-1;margin:0}
fieldset.cases legend{font-size:12.5px;font-weight:600;color:var(--gris-600);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:16px}
.ligne-totale td{font-weight:700;background:var(--bleu-50)}
.niveau-1 td:first-child{padding-left:34px;color:var(--gris)}
/* palette de commandes */
#palette{position:fixed;inset:0;z-index:90;background:rgba(10,23,20,.42);backdrop-filter:blur(4px);display:flex;justify-content:center;align-items:flex-start;padding:12vh 16px 16px}
.pl-boite{background:#fff;border-radius:20px;width:min(640px,100%);overflow:hidden;box-shadow:0 30px 90px rgba(10,23,20,.35)}
.pl-boite input{width:100%;border:0;outline:0;padding:20px 24px;font:500 18px var(--police-corps);color:var(--texte);border-bottom:1px solid var(--ligne)}
.pl-liste{max-height:48vh;overflow-y:auto;padding:8px}.pl-liste a{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border-radius:11px}
.pl-liste a.actif{background:var(--bleu-800);color:#fff}.pl-liste small{color:var(--gris-500);font-size:12px}.pl-liste a.actif small{color:var(--citron)}
.pl-boite footer{padding:10px 18px;color:var(--gris-500);font-size:12px;border-top:1px solid var(--ligne);display:flex;gap:8px;align-items:center}
@media (max-width:1100px){#entete{flex-wrap:wrap;height:auto;padding:10px 16px;gap:10px;position:static}#modules{order:5;width:100%;margin:0}#ouvrir-palette{margin-left:auto}#ouvrir-palette span{display:none}
  #nav{top:0;padding:0 16px;overflow-x:auto;scrollbar-width:none}.barre-page{padding:18px 16px 4px}.barre-page h1{font-size:26px}.page{padding:14px 16px}.grille2{grid-template-columns:1fr}.formulaire{grid-template-columns:1fr}.modale-boite{border-radius:0}
  .deroulant>div{position:fixed;top:auto;left:16px}:root{--h-entete:52px}}
@media print{#entete,#nav,.outils,.barre-page .bouton{display:none!important}}

/* 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:#fff;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}
.cx-gauche{background:var(--bleu-800);color:#fff;padding:48px 56px;display:flex;flex-direction:column;justify-content:space-between;gap:32px}
.logo-clair{color:#fff}.cx-gauche h1{font:700 clamp(34px,4.2vw,62px)/1.04 var(--police-titre);margin:0;color:var(--citron);max-width:13em}
.cx-gauche ul{list-style:none;margin:0;padding:0;display:grid;gap:10px;color:var(--bleu-200);font-size:16px}.cx-gauche li::before{content:"→ ";color:var(--citron)}
#connexion form{align-self:center;justify-self:center;width:min(380px,calc(100% - 40px));display:grid;gap:14px}
#connexion h2{font:700 30px var(--police-titre);margin:0 0 6px}
#connexion label{font-size:13px;font-weight:600;color:var(--gris-600);display:grid;gap:5px}
#connexion input{font-size:15px;padding:12px 14px;border:1.5px solid transparent;background:var(--gris-100);border-radius:12px;font-family:inherit}
#connexion input:focus{outline:0;border-color:var(--bleu-500);background:#fff}
#connexion .bouton{padding:13px;justify-content:center;font-size:15px}
@media (max-width:800px){#connexion{grid-template-columns:1fr;grid-template-rows:auto 1fr}.cx-gauche{padding:26px 22px}.cx-gauche ul{display:none}}
/* 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}

/* tableau de bord : trois grands chiffres, quatre ratios, cinq indicateurs de suivi */
.kpis.za-rep{grid-template-columns:repeat(60,minmax(0,1fr));gap:14px}
.kpis.za-rep>.kpi{grid-column:span 12}
.kpis.za-rep>.kpi:nth-child(-n+7){grid-column:span 15}
.kpis.za-rep>.kpi:nth-child(-n+3){grid-column:span 20;padding:24px 26px}
.kpis.za-rep>.kpi:nth-child(-n+3) .val{font-size:44px}
.kpis.za-rep>.kpi:first-child{background:var(--bleu-800);color:#fff}
.kpis.za-rep>.kpi:first-child .val{color:var(--citron)}.kpis.za-rep>.kpi:first-child .lib,.kpis.za-rep>.kpi:first-child .sous{color:var(--bleu-300)}
.kpis.za-rep>.kpi:first-child .rep{border-color:var(--bleu-700);color:var(--bleu-200)}.kpis.za-rep>.kpi:first-child .rep b{color:#fff}.kpis.za-rep>.kpi:first-child .rep .part{color:var(--bleu-300)}
.kpi .rep{grid-template-columns:10px minmax(0,1fr) auto auto;gap:5px 8px;margin-top:12px;padding-top:10px;border-top:1px solid var(--ligne);font-size:12.5px}
.kpi .rep>span:not(.pt):not(.part){white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kpi .rep b{white-space:nowrap}
.kpi .rep .pt,.pt-per{width:10px;height:10px;border-radius:50%}
.kpi .rep .part{min-width:34px}
.kpi .val{white-space:nowrap}
.kpis.za-rep>.kpi:nth-child(n+8) .val{font-size:23px}
@media (max-width:1100px){.kpis.za-rep>.kpi,.kpis.za-rep>.kpi:nth-child(-n+7),.kpis.za-rep>.kpi:nth-child(-n+3){grid-column:span 30}.kpis.za-rep>.kpi:nth-child(-n+3) .val{font-size:30px}}
@media (max-width:640px){.kpis.za-rep>.kpi,.kpis.za-rep>.kpi:nth-child(-n+7),.kpis.za-rep>.kpi:nth-child(-n+3){grid-column:1/-1}}
.za-filtre-per .zd-multi>button,.zd-multi>button,.za-date input{border-radius:999px}
/* calendrier d'équipe : toute la largeur, cases arrondies */
table.cg-grille{width:100%}.cg-grille th,.cg-grille td{border-right:0;border-bottom:1px solid var(--ligne);height:30px}.cg-grille thead th{background:#fff;color:var(--gris-500)}.cg-grille thead .cg-nom{background:#fff}
.cg-grille tr.cg-groupe td{background:var(--gris-100)}.cg-grille .cg-we,.cg-grille th.cg-we{background:var(--gris-100)}.cg-grille .cg-ferie,.cg-grille th.cg-ferie{background:#FBF0DE}
.cg-grille td[data-j]>span{top:4px;bottom:4px}.cg-grille td[data-j]>span:first-child{border-radius:7px 0 0 7px}.cg-grille td[data-j]>span:last-child{border-radius:0 7px 7px 0}
.cg-grille th.cg-auj{box-shadow:inset 0 -3px 0 var(--bleu-500);color:var(--bleu-800)}.cg-mode{border:0;background:#E3E8E2;border-radius:999px;padding:3px}.cg-mode a{border-radius:999px;padding:5px 13px}.cg-mode a.actif{color:var(--citron)}
