/* Feuille engendree par design/atelier/construire.py --css : ne pas editer ; editer maquette-m01.src.html et atelier.py. */
@font-face { font-family: "Avenir"; src: url("/design/polices/Avenir-Roman.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Avenir"; src: url("/design/polices/Avenir-Medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }
@font-face { font-family: "Avenir"; src: url("/design/polices/Avenir-Heavy.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Avenir"; src: url("/design/polices/Avenir-Black.woff2") format("woff2"); font-weight: 800; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("/design/polices/IBMPlexMono-Medium.woff2") format("woff2"); font-weight: 500; font-display: swap; }

/* ═══════════════════════════════════════════════════════════════════════
   Le Portail v4, maquette M01, tableau de bord dirigeant.
   Direction : un vrai portail d'entreprise. Navigation horizontale de
   portail groupe, en-tete de page structure, indicateurs composes en
   bandeau a filets, tableaux, panneaux a en-tete, coins presque droits,
   pas d'ombre. Couleurs et typographies de la charte Ingeline.
   Donnees d'illustration.
   ═══════════════════════════════════════════════════════════════════════ */

:root {
  --navy: #1a2039; --navy-80: #232a48; --navy-60: #39415f; --navy-40: #6b7288; --navy-20: #a5abbb; --navy-10: #eef1f8;
  --vert: #77b57a; --vert-fond: #e9f4ea; --vert-encre: #2f6b35;
  --g05: #fafbfb; --g10: #f4f6f7; --g20: #e9edef; --g30: #d9dfe3; --g40: #bcc6cc; --g50: #94a1a8; --g60: #5f6d75; --g70: #55636a; --g80: #3b474d; --g90: #263034;
  --ambre: #d9962a; --ambre-encre: #7d5310; --ambre-fond: #fbf1df;
  --rouge: #c94a4a; --rouge-encre: #8a2b2b; --rouge-fond: #fbe9e9;
  --bleu: #4f6fae; --bleu-encre: #3f5f9c; --bleu-fond: #e8eef8;
  --sarcelle: #2e8b86;
  --voix: "Avenir", "Avenir Next", "Segoe UI", system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, Menlo, monospace;
  --r: 3px;
}
* { box-sizing: border-box; }
small { font-size: 11px; }
body { margin: 0; background: var(--g20); color: var(--navy); font: 400 14px/1.5 var(--voix); -webkit-font-smoothing: antialiased; }
a { color: inherit; text-decoration: none; }
button { font: inherit; }
svg.i { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; flex: none; }

.cadre { max-width: 1480px; margin: 0 auto; padding: 0 20px; }
.portail { background: var(--g10); border: 1px solid var(--g30); }

/* ── barre globale, navy ─────────────────────────────────────────────── */
.globale { height: 56px; background: var(--navy); color: #fff; display: flex; align-items: center; gap: 24px; padding: 0 32px; }
.globale .marque { display: flex; align-items: center; gap: 12px; padding-right: 24px; border-right: 1px solid var(--navy-60); height: 32px; }
.globale .marque svg { width: 30px; height: 30px; }
.globale .marque b { font-size: 16px; font-weight: 700; letter-spacing: -.01em; }
.globale .marque span { font-size: 12px; color: var(--navy-20); margin-left: 8px; font-weight: 400; }
.globale .cherche { flex: 1; max-width: 520px; display: flex; align-items: center; gap: 10px; height: 36px; padding: 0 12px; background: var(--navy-80); border: 1px solid var(--navy-60); border-radius: var(--r); color: var(--navy-20); font-size: 13px; white-space: nowrap; overflow: hidden; }
.globale .cherche kbd { margin-left: auto; font: 500 11px var(--mono); color: var(--navy-20); border: 1px solid var(--navy-60); border-radius: 3px; padding: 0 5px; }
.globale .droite { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.globale .perim { display: flex; align-items: center; gap: 8px; height: 36px; padding: 0 12px; border: 1px solid var(--navy-60); border-radius: var(--r); font-size: 13px; font-weight: 500; }
.globale .perim small { color: var(--navy-20); font-weight: 400; }
.globale .ico { width: 36px; height: 36px; display: grid; place-items: center; border-radius: var(--r); position: relative; color: var(--navy-10); }
.globale .ico .pt { position: absolute; top: 7px; right: 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--vert); }
.globale .qui { display: flex; align-items: center; gap: 10px; padding-left: 16px; margin-left: 8px; border-left: 1px solid var(--navy-60); height: 32px; font-size: 13px; }
.globale .qui .av { width: 30px; height: 30px; border-radius: 50%; background: var(--vert); color: var(--navy); display: grid; place-items: center; font-weight: 800; font-size: 12px; }
.globale .qui b { display: block; font-weight: 600; line-height: 1.1; }
.globale .qui span { font-size: 11px; color: var(--navy-20); }

/* ── navigation principale, onglets de familles ───────────────────────── */
.nav { height: 48px; background: #fff; border-bottom: 1px solid var(--g30); display: flex; align-items: stretch; padding: 0 32px; gap: 4px; }
.nav a { display: flex; align-items: center; gap: 8px; padding: 0 16px; font-size: 14px; font-weight: 500; color: var(--g70); border-bottom: 3px solid transparent; margin-bottom: -1px; }
.nav a svg.i { width: 16px; height: 16px; }
.nav a:hover { color: var(--navy); }
.nav a[aria-current] { color: var(--navy); font-weight: 700; border-bottom-color: var(--vert); }
.nav .fin { margin-left: auto; display: flex; align-items: center; gap: 16px; font-size: 13px; color: var(--g60); }
.nav .fin i { width: 8px; height: 8px; border-radius: 50%; background: var(--vert); display: inline-block; margin-right: 6px; }

/* ── en-tete de page ─────────────────────────────────────────────────── */
.entete { background: #fff; border-bottom: 1px solid var(--g30); padding: 20px 32px 0; }
.ariane { font-size: 12px; color: var(--g60); display: flex; gap: 8px; align-items: center; }
.ariane b { color: var(--navy); font-weight: 500; }
.entete__ligne { display: flex; align-items: flex-end; justify-content: space-between; gap: 24px; padding: 8px 0 18px; min-height: 90px; }
.entete h1 { margin: 0; font-size: 26px; font-weight: 800; letter-spacing: -.02em; line-height: 1.15; }
.entete .sous { margin: 6px 0 0; color: var(--g60); font-size: 14px; }
.entete .sous b { color: var(--navy); font-weight: 600; }
.actions { display: flex; align-items: center; gap: 8px; }
.btn { white-space: nowrap; height: 36px; padding: 0 14px; border-radius: var(--r); border: 1px solid var(--g40); background: #fff; color: var(--navy); font-weight: 600; font-size: 13px; display: inline-flex; align-items: center; gap: 8px; cursor: pointer; }
.btn svg.i { width: 15px; height: 15px; }
.btn--primaire { background: var(--navy); border-color: var(--navy); color: #fff; }
.btn--petit { height: 28px; padding: 0 10px; font-size: 12px; }
.sousnav { display: flex; align-items: center; gap: 28px; border-top: 1px solid var(--g20); min-height: 49px; }
.sousnav a { display: inline-flex; align-items: center; height: 48px; font-size: 13px; font-weight: 500; color: var(--g60); border-bottom: 2px solid transparent; margin-bottom: -1px; }
.sousnav a[aria-current] { color: var(--navy); font-weight: 700; border-bottom-color: var(--navy); }
.sousnav .periode { margin-left: auto; display: flex; align-items: center; gap: 8px; padding: 0; height: 48px; }
.seg { display: inline-flex; align-items: stretch; height: 32px; border: 1px solid var(--g40); border-radius: var(--r); overflow: hidden; }
.seg span { display: inline-flex; align-items: center; padding: 0 12px; font-size: 13px; font-weight: 500; color: var(--g60); border-right: 1px solid var(--g40); }
.seg span:last-child { border-right: none; }
.seg span[data-actif] { background: var(--navy); color: #fff; }
.plage { display: inline-flex; align-items: center; border: 1px solid var(--g40); border-radius: var(--r); height: 32px; }
.plage button { width: 32px; height: 100%; border: none; background: none; color: var(--g60); cursor: pointer; }
.plage b { padding: 0 12px; font-weight: 600; font-size: 13px; border-inline: 1px solid var(--g40); height: 100%; display: flex; align-items: center; gap: 8px; }
.plage b small { font-weight: 400; color: var(--g60); }
.plage .auj { padding: 0 12px; font-size: 13px; font-weight: 600; color: var(--vert-encre); }

/* ── le corps ─────────────────────────────────────────────────────────── */
.corps { padding: 24px 32px 32px; display: flex; flex-direction: column; gap: 20px; }
.eyebrow { display: flex; align-items: center; gap: 10px; font-size: 11px; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--g60); }
.eyebrow .pts { display: inline-flex; align-items: center; gap: 3px; }
.eyebrow .pts i { display: block; border-radius: 50%; background: var(--navy-40); }
.eyebrow .pts { color: var(--navy-40); } .eyebrow .pts svg { display: block; }

/* le bandeau d'indicateurs : un panneau, quatre cellules, des filets */
.panneau { background: #fff; border: 1px solid var(--g30); border-radius: var(--r); }
.indicateurs { display: grid; grid-template-columns: repeat(4, 1fr); }
.ind { padding: 20px 24px 18px; border-right: 1px solid var(--g20); display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.ind:last-child { border-right: none; }
.ind__lib { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--g60); display: flex; justify-content: space-between; align-items: center; }
.ind__lib a { font-size: 12px; letter-spacing: 0; text-transform: none; font-weight: 600; color: var(--navy); }
.ind__val { display: flex; align-items: baseline; gap: 10px; margin-top: 6px; }
.ind__val b { font-size: 38px; font-weight: 800; letter-spacing: -.025em; line-height: 1; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ind__val span { font-size: 14px; color: var(--g60); font-weight: 500; }
.ind__delta { font-size: 13px; font-weight: 600; display: flex; align-items: center; gap: 6px; }
.ind__delta.haut { color: var(--vert-encre); } .ind__delta.bas { color: var(--rouge-encre); } .ind__delta.att { color: var(--ambre-encre); }
.ind__delta small { color: var(--g60); font-weight: 400; }
.ind__ctx { font-size: 13px; color: var(--g60); }
.spark { display: block; width: 100%; height: 30px; margin-top: 8px; }
.spark polyline { fill: none; stroke: var(--navy); stroke-width: 1.6; stroke-linejoin: round; }
.spark polygon { fill: var(--g10); }
.spark circle { fill: var(--vert); stroke: #fff; stroke-width: 2; }
.ind__sec { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--g20); font-size: 12px; color: var(--g60); }
.ind__sec b { display: block; font-size: 15px; font-weight: 700; color: var(--navy); font-variant-numeric: tabular-nums; }

/* les panneaux a en-tete */
.grille { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.col { display: flex; flex-direction: column; gap: 20px; }
.pan__tete { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 20px; border-bottom: 1px solid var(--g20); }
.pan__tete h2 { margin: 0; font-size: 15px; font-weight: 700; }
.pan__tete p { margin: 2px 0 0; font-size: 12px; color: var(--g60); }
.pan__tete .droite { display: flex; align-items: center; gap: 8px; }
.pan__corps { padding: 16px 20px 20px; }

/* graphique */
.leg { display: flex; gap: 18px; font-size: 12px; color: var(--g60); margin-bottom: 14px; }
.leg i { display: inline-block; width: 12px; height: 12px; border-radius: 2px; background: var(--navy); vertical-align: -2px; margin-right: 6px; }
.leg i[data-p] { background: repeating-linear-gradient(135deg, var(--navy-40) 0 2px, #fff 2px 5px); border: 1px solid var(--navy-40); }
.leg i[data-s] { background: var(--vert); }
.leg i[data-o] { background: none; border-top: 2px dashed var(--g50); height: 0; vertical-align: 3px; }
.gz { display: grid; grid-template-columns: 30px 1fr; gap: 8px; }
.gy { display: flex; flex-direction: column; justify-content: space-between; height: 190px; font-size: 11px; color: var(--g60); text-align: right; font-variant-numeric: tabular-nums; }
.gb { position: relative; height: 190px; display: grid; grid-template-columns: repeat(17, 1fr); gap: 6px; align-items: end; border-bottom: 1px solid var(--g30); background: repeating-linear-gradient(to top, var(--g20) 0 1px, transparent 1px 47.5px); }
.gb .bande { position: absolute; top: -6px; bottom: -26px; left: calc(8 * (100% + 6px) / 17 - 4px); width: calc((100% - 96px) / 17 + 8px); background: var(--vert-fond); z-index: 0; }
.gb .cible { position: absolute; left: 0; right: 0; top: 9%; border-top: 2px dashed var(--g50); z-index: 0; }
.gb .cible span { position: absolute; right: 0; top: -20px; font-size: 11px; font-weight: 600; color: var(--g70); background: #fff; padding: 0 6px; }
.gb i { display: block; background: var(--navy); z-index: 1; position: relative; }
.gb i[data-p] { background: repeating-linear-gradient(135deg, var(--navy-40) 0 2px, #fff 2px 5px); border: 1px solid var(--navy-40); border-bottom: none; }
.gb i[data-s] { background: var(--vert); }
.gb i[data-s]::after { content: attr(data-val); position: absolute; top: -20px; left: 50%; transform: translateX(-50%); font-size: 12px; font-weight: 700; color: var(--navy); }
.gx { grid-column: 2; display: grid; grid-template-columns: repeat(17, 1fr); gap: 6px; font-size: 11px; color: var(--g60); text-align: center; margin-top: 6px; }
.gx b { color: var(--navy); font-weight: 700; }
.lecture { margin-top: 16px; display: grid; grid-template-columns: 1fr 1fr 1fr; border-top: 1px solid var(--g20); }
.lecture div { padding: 14px 16px 0; border-right: 1px solid var(--g20); }
.lecture div:first-child { padding-left: 0; } .lecture div:last-child { border-right: none; }
.lecture span { display: block; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--g60); }
.lecture b { display: block; font-size: 20px; font-weight: 800; margin-top: 4px; font-variant-numeric: tabular-nums; }
.lecture small { display: block; font-size: 12px; color: var(--g60); margin-top: 2px; }

/* tableaux */
table { width: 100%; border-collapse: collapse; font-size: 13px; }
th { text-align: left; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--g60); padding: 10px 20px; border-bottom: 1px solid var(--g30); background: var(--g05); white-space: nowrap; }
td { padding: 12px 20px; border-bottom: 1px solid var(--g20); vertical-align: middle; }
tr:last-child td { border-bottom: none; }
td b { font-weight: 600; }
td.nom { white-space: nowrap; }
td .sous { display: block; font-size: 12px; color: var(--g60); margin-top: 1px; }
td.n { text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; white-space: nowrap; }
th.n { text-align: right; }
.etat { display: inline-flex; align-items: center; gap: 7px; font-weight: 600; font-size: 12px; white-space: nowrap; }
.etat::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: currentColor; }
.etat.ok { color: var(--vert-encre); } .etat.att { color: var(--ambre-encre); } .etat.ko { color: var(--rouge-encre); } .etat.neutre { color: var(--g60); }
.grav { display: inline-block; width: 4px; height: 28px; border-radius: 2px; vertical-align: middle; }
.grav.ko { background: var(--rouge); } .grav.att { background: var(--ambre); } .grav.info { background: var(--bleu); }
.jauge { height: 8px; background: var(--g20); border-radius: 2px; overflow: hidden; min-width: 90px; }
.jauge i { display: block; height: 100%; background: var(--navy); }
.jauge i.ok { background: var(--vert); }
.lien { font-size: 13px; font-weight: 600; color: var(--navy); }

/* CRA */
.cra { display: grid; grid-template-columns: 130px 1fr; gap: 20px; align-items: center; }
.cra__n b { font-size: 32px; font-weight: 800; letter-spacing: -.02em; display: block; line-height: 1; font-variant-numeric: tabular-nums; }
.cra__n span { font-size: 13px; color: var(--g60); }
.cra__barre { height: 12px; display: flex; overflow: hidden; border-radius: 2px; background: var(--g20); }
.cra__barre i { display: block; height: 100%; }
.cra__etats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 10px; font-size: 12px; color: var(--g60); white-space: nowrap; }
.cra__etats b { display: block; font-size: 15px; font-weight: 700; color: var(--navy); }
.cra__etats i { display: inline-block; width: 8px; height: 8px; border-radius: 2px; margin-right: 6px; }

/* echeances */
.ech { display: grid; grid-template-columns: 44px 1fr auto; gap: 14px; align-items: center; padding: 12px 20px; border-bottom: 1px solid var(--g20); }
.ech:last-child { border-bottom: none; }
.ech .d { width: 44px; text-align: center; border: 1px solid var(--g30); border-radius: var(--r); padding: 4px 0; line-height: 1.1; }
.ech .d b { display: block; font-size: 16px; font-weight: 800; }
.ech .d span { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--g60); }
.ech .t b { display: block; font-weight: 600; }
.ech .t span { font-size: 12px; color: var(--g60); }
.ech .j { font-size: 12px; font-weight: 600; color: var(--g70); white-space: nowrap; }
.ech .j.att { color: var(--ambre-encre); }

/* pied de portail */
.pied { background: #fff; border-top: 1px solid var(--g30); padding: 18px 32px; display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: var(--g60); }
.pied .marques { display: flex; align-items: center; gap: 28px; font-weight: 700; letter-spacing: .04em; color: var(--g70); }
.pied .marques span { display: flex; align-items: center; gap: 8px; }
.pied .marques i { width: 10px; height: 10px; border-radius: 50%; border: 2px solid var(--navy); display: inline-block; }
.pied .liens { display: flex; gap: 20px; }

/* finitions : survols, focus, icones, badges, logotypes */
.nav a, .sousnav a, .lien, .btn, .ind__lib a { transition: color .15s, background .15s, border-color .15s; }
.lien:hover, .ind__lib a:hover { text-decoration: underline; text-underline-offset: 3px; }
.btn:hover { border-color: var(--navy); }
.btn--primaire:hover { background: var(--navy-80); }
.btn:focus-visible, .lien:focus-visible, .nav a:focus-visible { outline: 2px solid var(--vert); outline-offset: 2px; }
tbody tr:hover td { background: var(--g05); }
.ind:hover { background: var(--g05); }
.globale .ico:hover { background: var(--navy-80); }
.globale .ico .badge { position: absolute; top: 4px; right: 4px; min-width: 17px; height: 17px; padding: 0 4px; border-radius: 9px; background: var(--vert); color: var(--navy); font-size: 11px; font-weight: 800; display: grid; place-items: center; }
.ind__lib .lib { display: flex; align-items: center; gap: 8px; }
.ind__lib .lib svg { color: var(--g50); }
.pan__tete .titre { display: flex; align-items: center; gap: 10px; }
.pan__tete .titre svg { color: var(--g50); flex: none; }
.pan__tete .titre > div { min-width: 0; }
.sousnav .cpt { margin-left: 6px; font-size: 11px; font-weight: 700; padding: 1px 6px; border-radius: 8px; background: var(--g20); color: var(--g70); }
.plage b svg { color: var(--g60); }
.tico { width: 30px; height: 30px; border-radius: var(--r); background: var(--g10); color: var(--g70); display: grid; place-items: center; }
.tico.ko { background: var(--rouge-fond); color: var(--rouge-encre); }
.tico.att { background: var(--ambre-fond); color: var(--ambre-encre); }
.tico.info { background: var(--bleu-fond); color: var(--bleu); }
.av-t { width: 28px; height: 28px; border-radius: 50%; background: var(--navy-10); color: var(--navy); display: inline-grid; place-items: center; font-weight: 700; font-size: 11px; margin-right: 10px; vertical-align: middle; }
.ech .t b { display: flex; align-items: center; gap: 8px; }
.ech .t b svg { color: var(--g50); }
.def { display: flex; gap: 10px; align-items: flex-start; }
.def svg { flex: none; color: var(--navy); margin-top: 2px; }
.lien.ext { display: inline-flex; align-items: center; gap: 5px; }
.lien.ext svg { color: var(--g50); }
.pied { padding: 16px 32px; }
.pied .version { display: flex; align-items: center; gap: 10px; color: var(--g60); }
.pied .version svg { width: 18px; height: 18px; }
.pied .liens a:hover { color: var(--navy); text-decoration: underline; }

/* ecran 2 : le panneau de detail */
.voile { position: absolute; inset: 0; background: rgba(26,32,57,.32); }
.tiroir { position: absolute; top: 0; right: 0; bottom: 0; width: 560px; background: #fff; border-left: 1px solid var(--g30); display: flex; flex-direction: column; }
.tiroir__tete { padding: 20px 24px 16px; border-bottom: 1px solid var(--g20); }
.tiroir__tete .eyebrow { margin-bottom: 8px; }
.tiroir__tete h2 { margin: 0; font-size: 22px; font-weight: 800; letter-spacing: -.02em; }
.tiroir__tete p { margin: 6px 0 0; font-size: 13px; color: var(--g60); }
.fermer { position: absolute; top: 14px; right: 16px; width: 32px; height: 32px; border: 1px solid var(--g40); border-radius: var(--r); background: #fff; display: grid; place-items: center; }
.def { margin: 16px 24px 0; padding: 12px 14px; background: var(--g10); border-left: 3px solid var(--navy); font-size: 13px; color: var(--g70); }
.def b { color: var(--navy); font-weight: 600; }
.filtres { display: flex; gap: 6px; padding: 14px 24px 0; }
.filtre { padding: 5px 10px; border: 1px solid var(--g40); border-radius: var(--r); font-size: 12px; font-weight: 600; color: var(--g70); background: #fff; }
.filtre[data-actif] { background: var(--navy); border-color: var(--navy); color: #fff; }
.tiroir table { margin-top: 14px; }
.tiroir th, .tiroir td { padding-left: 24px; padding-right: 24px; }
.tiroir__pied { margin-top: auto; padding: 14px 24px; border-top: 1px solid var(--g20); display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--g60); }
.tiroir__pied .btn { margin-left: auto; }
.tiroir__pied .btn + .btn { margin-left: 0; }


/* composants des ecrans suivants */
.eyebrow .pts { color: var(--navy-40); }
.eyebrow .pts svg { display: block; }
/* annuaire compact : photo carree, nom, poste, marque ou entite */
.annuaire { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); }
.pers { display: flex; align-items: center; gap: 12px; padding: 10px 16px; border-bottom: 1px solid var(--g20); border-right: 1px solid var(--g20); min-width: 0; }
.annuaire .pers:nth-child(3n) { border-right: none; }
.pers:hover { background: var(--g05); }
.pers .ph { width: 40px; height: 40px; border-radius: var(--r); background: var(--navy-10); color: var(--navy); display: grid; place-items: center; font-weight: 800; font-size: 12px; flex: none; }
.pers .ph.photo { background: var(--navy-60); color: #fff; }
.pers .id { min-width: 0; flex: 1; }
.pers .id b { display: block; font-weight: 700; font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pers .id span { display: block; font-size: 12px; color: var(--g60); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pers .id .ent { color: var(--g70); font-weight: 500; }
.pers .agir { display: flex; gap: 4px; opacity: 0; transition: opacity .15s; }
.pers:hover .agir { opacity: 1; }
.pers .agir a { width: 28px; height: 28px; border: 1px solid var(--g30); border-radius: var(--r); display: grid; place-items: center; color: var(--g70); background: #fff; }
.volet .pan__tete { padding: 12px 16px; }
.volet .pan__tete .droite { gap: 6px; }

.panneau { overflow: hidden; }
.filtres-l .cherche { display: flex; align-items: center; gap: 8px; padding: 0 12px; border-radius: var(--r); font-size: 13px; white-space: nowrap; flex: 1; }
td.nom { white-space: nowrap; }
td .lien.ext { white-space: nowrap; }
.grille3 { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 20px; align-items: start; }
.grille2 { display: grid; grid-template-columns: repeat(2, minmax(0,1fr)); gap: 20px; align-items: start; }
.grille-large { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 20px; align-items: start; }
.filtres-l { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.filtres-l .lib { font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--g60); margin-right: 4px; }
.filtre { padding: 5px 10px; border: 1px solid var(--g40); border-radius: var(--r); font-size: 12px; font-weight: 600; color: var(--g70); background: #fff; white-space: nowrap; }
.filtre[data-actif] { background: var(--navy); border-color: var(--navy); color: #fff; }
.champ { display: flex; flex-direction: column; gap: 6px; font-size: 12px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--g60); }
.champ input, .champ select, .champ textarea { font: 400 14px var(--voix); color: var(--navy); height: 36px; padding: 0 10px; border: 1px solid var(--g40); border-radius: var(--r); background: #fff; text-transform: none; letter-spacing: 0; }
.champ textarea { height: auto; padding: 8px 10px; }
.champ input[readonly] { background: var(--g10); color: var(--g70); }
.champs { display: grid; gap: 14px; }
.champs.c2 { grid-template-columns: 1fr 1fr; } .champs.c3 { grid-template-columns: 1fr 1fr 1fr; } .champs.c4 { grid-template-columns: repeat(4, 1fr); }
.somme { display: flex; justify-content: space-between; align-items: baseline; gap: 8px 16px; padding: 9px 0; border-bottom: 1px solid var(--g20); font-size: 13px; }
.somme > span { min-width: 0; }
.somme > b { white-space: nowrap; }
/* une somme dont la valeur est une phrase, pas un chiffre : la valeur revient à la ligne, alignée à droite, et ne passe jamais sur son libellé */
.somme--texte > span:first-child { flex: none; max-width: 40%; }
.somme--texte > b { white-space: normal; text-align: right; min-width: 0; }
.somme b { font-weight: 700; font-variant-numeric: tabular-nums; }
.somme.total { border-bottom: none; border-top: 2px solid var(--navy); margin-top: 6px; padding-top: 12px; font-size: 15px; }
.somme.total b { font-size: 22px; font-weight: 800; }
.note { font-size: 12px; color: var(--g60); line-height: 1.5; }
.note b { color: var(--navy); font-weight: 600; }
.avis { display: flex; gap: 10px; align-items: flex-start; padding: 10px 12px; border-radius: var(--r); font-size: 13px; }
.avis svg { flex: none; margin-top: 1px; }
.avis.att { background: var(--ambre-fond); color: var(--ambre-encre); }
.avis.info { background: var(--bleu-fond); color: var(--navy); }
.avis.ok { background: var(--vert-fond); color: var(--vert-encre); }
.avis.ko { background: var(--rouge-fond); color: var(--rouge-encre); }
.vide { padding: 36px 24px; text-align: center; color: var(--g60); font-size: 13px; }
.vide b { display: block; color: var(--navy); font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.pastille { display: inline-block; padding: 2px 8px; border-radius: var(--r); font-size: 11px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; background: var(--g20); color: var(--g70); white-space: nowrap; }
.pastille.ok { background: var(--vert-fond); color: var(--vert-encre); } .pastille.att { background: var(--ambre-fond); color: var(--ambre-encre); } .pastille.ko { background: var(--rouge-fond); color: var(--rouge-encre); } .pastille.navy { background: var(--navy); color: #fff; } .pastille.bleu { background: var(--bleu-fond); color: var(--bleu-encre); }
.fmt { display: inline-grid; place-items: center; width: 32px; height: 32px; border-radius: var(--r); font-size: 11px; font-weight: 800; letter-spacing: .04em; color: #fff; }
.fmt.pdf { background: #b7362f; } .fmt.doc { background: #2b579a; } .fmt.xls { background: #217346; } .fmt.ppt { background: #c8481f; } .fmt.lien { background: var(--g60); }
.personne { display: flex; gap: 12px; align-items: center; }
.personne .av { width: 40px; height: 40px; border-radius: 50%; background: var(--navy-10); color: var(--navy); display: grid; place-items: center; font-weight: 800; font-size: 13px; flex: none; }
.personne .av.photo { background: var(--navy-60); color: #fff; }
.personne b { display: block; font-weight: 700; }
.personne span { display: block; font-size: 12px; color: var(--g60); }
.tuiles { display: grid; grid-template-columns: repeat(4, minmax(0,1fr)); gap: 14px; }
.tuile { background: #fff; border: 1px solid var(--g30); border-radius: var(--r); padding: 16px; display: flex; flex-direction: column; gap: 10px; }
.tuile .contact { display: flex; gap: 6px; margin-top: 4px; }
.tuile .contact a { display: inline-flex; align-items: center; gap: 5px; height: 28px; padding: 0 10px; border: 1px solid var(--g30); border-radius: var(--r); font-size: 12px; font-weight: 600; }
.cal { display: grid; grid-template-columns: repeat(7, 1fr); border-top: 1px solid var(--g20); border-left: 1px solid var(--g20); }
.cal .jf { padding: 8px; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--g60); border-right: 1px solid var(--g20); border-bottom: 1px solid var(--g20); background: var(--g05); }
.cal .j { min-height: 78px; padding: 6px 8px; border-right: 1px solid var(--g20); border-bottom: 1px solid var(--g20); font-size: 12px; }
.cal .j b { display: block; font-size: 12px; color: var(--g60); margin-bottom: 4px; }
.cal .j.hors { background: var(--g05); } .cal .j.hors b { color: var(--g60); }
.cal .j.auj b { color: var(--vert-encre); font-weight: 800; }
.cal .ev { display: block; padding: 3px 6px; margin-bottom: 3px; border-radius: 2px; font-size: 11px; font-weight: 600; line-height: 1.3; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; border-left: 3px solid var(--navy); background: var(--navy-10); color: var(--navy); }
.cal .ev.paie { border-color: var(--ambre); background: var(--ambre-fond); color: var(--ambre-encre); }
.cal .ev.groupe { border-color: var(--vert); background: var(--vert-fond); color: var(--vert-encre); }
.cal .ev.mission { border-color: var(--rouge); background: var(--rouge-fond); color: var(--rouge-encre); }
.etapes { display: flex; align-items: center; gap: 0; margin: 4px 0 18px; }
.etapes div { flex: 1; display: flex; align-items: center; gap: 10px; font-size: 13px; font-weight: 600; color: var(--g60); }
.etapes div i { width: 26px; height: 26px; border-radius: 50%; border: 2px solid var(--g40); display: grid; place-items: center; font-size: 12px; font-style: normal; font-weight: 800; }
.etapes div[data-fait] { color: var(--navy); } .etapes div[data-fait] i { background: var(--navy); border-color: var(--navy); color: #fff; }
.etapes div[data-cours] { color: var(--navy); } .etapes div[data-cours] i { border-color: var(--vert); color: var(--vert-encre); }
.etapes div::after { content: ""; flex: 1; height: 2px; background: var(--g30); margin: 0 12px; }
.etapes div:last-child::after { display: none; }
.hist { position: relative; padding-left: 24px; }
.hist::before { content: ""; position: absolute; left: 7px; top: 8px; bottom: 8px; width: 2px; background: var(--g20); }
.hist .h { position: relative; padding: 8px 0 14px; font-size: 13px; }
.hist .h::before { content: ""; position: absolute; left: -21px; top: 12px; width: 10px; height: 10px; border-radius: 50%; background: #fff; border: 2px solid var(--navy); }
.hist .h b { display: block; font-weight: 600; }
.hist .h span { display: block; font-size: 12px; color: var(--g60); }
.chiffres { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0; border: 1px solid var(--g30); border-radius: var(--r); background: #fff; }
.chiffres div { padding: 14px 18px; border-right: 1px solid var(--g20); }
.chiffres div:last-child { border-right: none; }
.chiffres span { display: block; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--g60); }
.chiffres b { display: block; font-size: 24px; font-weight: 800; margin-top: 4px; font-variant-numeric: tabular-nums; }
.chiffres small { display: block; font-size: 12px; color: var(--g60); margin-top: 2px; }
.article { padding: 18px 20px; border-bottom: 1px solid var(--g20); display: grid; grid-template-columns: 1fr auto; gap: 16px; }
.article:last-child { border-bottom: none; }
.article h3 { margin: 0 0 4px; font-size: 16px; font-weight: 700; }
.article p { margin: 0; font-size: 13px; color: var(--g70); }
.article .meta { font-size: 12px; color: var(--g60); margin-top: 8px; }
.article.une { padding: 24px 20px; background: var(--navy-10); }
.article.une h3 { font-size: 20px; }
.calc-res { background: var(--navy); color: #fff; border-radius: var(--r); padding: 18px 20px; }
.calc-res .somme { border-color: var(--navy-60); color: var(--navy-10); }
.calc-res .somme.total { border-top-color: var(--vert); color: #fff; }
.calc-res .somme.total b { color: var(--vert); }
.bareme { font-size: 12px; color: var(--g60); padding: 10px 12px; background: var(--g10); border-radius: var(--r); display: flex; gap: 10px; align-items: flex-start; }
.bareme b { color: var(--navy); font-weight: 600; }
.corps .eyebrow + .panneau, .corps .eyebrow + .grille2, .corps .eyebrow + .grille3, .corps .eyebrow + .tuiles, .corps .eyebrow + .chiffres { margin-top: -8px; }
