/* ==========================================================
   Gestion des dossiers — feuille de style (version 1.8)
   ========================================================== */
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/ibm-plex-sans-latin-400-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/ibm-plex-sans-latin-500-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Sans"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/ibm-plex-sans-latin-600-normal.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/ibm-plex-mono-latin-500-normal.woff2") format("woff2"); }

:root {
  --encre: #18212f;
  --encre-2: #4b5565;
  --discret: #6b7280;
  --fond: #f4f5f7;
  --carte: #ffffff;
  --trait: #e3e6eb;
  --trait-2: #edeff2;
  --champ-trait: #d5dae1;
  --nuit: #14213a;          /* menu latéral */
  --nuit-2: #24365a;
  --marine: #14213a;
  --marine-2: #1f4e8c;      /* couleur d'action */
  --action-2: #163a6b;
  --calc: #eef3fa;          /* valeurs calculées */
  --calc-trait: #c4d2e6;
  --ambre: #fffbf0;         /* information à compléter */
  --ambre-trait: #e2c67c;
  --ambre-txt: #7a4e00;
  --rouge-fonce: #fdecea;   /* échéance dépassée */
  --rouge-fonce-txt: #9b1c14;
  --rouge: #fdf5f4;
  --rouge-txt: #b42318;
  --rouge-trait: #f1c9c5;
  --orange: #fff4e5;        /* 15 jours ou moins */
  --orange-txt: #9a3d0a;
  --orange-vif: #c2410c;
  --jaune-vif: #d9a23a;     /* 30 jours ou moins */
  --vert: #e7f3ec;
  --vert-txt: #1e6b44;
  --gris: #f0f2f5;
  --rayon: 8px;
  --rayon-carte: 10px;
  --mono: "IBM Plex Mono", ui-monospace, Menlo, Consolas, monospace;
}

* { box-sizing: border-box; }
html { font-size: 14px; }
body {
  margin: 0; background: var(--fond); color: var(--encre);
  font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  line-height: 1.45;
}
a { color: var(--marine-2); text-decoration: none; }
a:hover { color: var(--action-2); text-decoration: underline; }
h1 { font-size: 1.75rem; margin: 0 0 1rem; font-weight: 600; letter-spacing: -.01em; }
h2 { font-size: 1.15rem; margin: 0 0 .75rem; font-weight: 600; }
h3 { font-weight: 600; }
code { font-family: var(--mono); font-size: .9em; background: var(--gris); padding: 1px 5px; border-radius: 4px; }
small { font-size: .86rem; }
.discret { color: var(--discret); font-weight: normal; }
.ref { font-family: var(--mono); font-weight: 500; font-size: .95em; white-space: nowrap; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.espace { flex: 1; }
.evitement { position: absolute; left: -999px; top: 0; z-index: 50; background: #fff; padding: .5rem 1rem; }
.evitement:focus { left: 1rem; top: 1rem; }
:focus-visible { outline: 3px solid rgba(31, 78, 140, .35); outline-offset: 1px; }
.ico { flex: none; }

/* ---------- Disposition : menu latéral + zone de travail ---------- */
.appli { display: flex; min-height: 100vh; }
.menu {
  flex: 0 0 240px; width: 240px; background: var(--nuit); color: #c3cddd;
  display: flex; flex-direction: column; gap: 18px; padding: 18px 12px 12px;
  position: sticky; top: 0; height: 100vh; overflow-y: auto; z-index: 20;
}
.menu-marque { display: flex; align-items: center; gap: 10px; padding: 4px 8px; color: #fff; }
.menu-marque:hover { text-decoration: none; color: #fff; }
.menu-mono {
  width: 34px; height: 34px; flex: none; border-radius: 8px; background: #f2f4f8; color: var(--nuit);
  display: flex; align-items: center; justify-content: center; font-weight: 600; font-size: 14px;
}
.menu-nom { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
.menu-nom strong { font-weight: 600; font-size: 14px; overflow-wrap: anywhere; }
.menu-nom small { font-size: 12px; color: #93a1b8; }
.menu-nav { display: flex; flex-direction: column; gap: 2px; }
.menu-groupe { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: #8392aa; padding: 14px 10px 6px; }
.menu-groupe:first-child { padding-top: 0; }
.menu-lien { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 7px; color: #c3cddd; }
.menu-lien:hover { background: rgba(255,255,255,.07); color: #fff; text-decoration: none; }
.menu-lien.actif { background: var(--nuit-2); color: #fff; font-weight: 500; }
.menu-lien.adm { font-size: 13px; color: #a9b5c8; padding-top: 6px; padding-bottom: 6px; }
.menu-lien.adm .ico { width: 16px; height: 16px; }
.menu-lib { flex: 1; min-width: 0; }
.menu-compte { background: #b42318; color: #fff; font-size: 11px; font-weight: 600; border-radius: 9px; padding: 1px 7px; font-variant-numeric: tabular-nums; }
.menu-pied { margin-top: auto; display: flex; align-items: center; gap: 4px; padding-top: 12px; border-top: 1px solid #2a3b5c; }
.menu-compte-u { flex: 1; min-width: 0; display: flex; align-items: center; gap: 10px; padding: 6px; border-radius: 7px; color: #fff; }
.menu-compte-u:hover, .menu-compte-u.actif { background: rgba(255,255,255,.07); text-decoration: none; color: #fff; }
.menu-compte-u .menu-lib { display: flex; flex-direction: column; line-height: 1.25; }
.menu-compte-u strong { font-weight: 500; font-size: 13px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.menu-compte-u small { font-size: 11.5px; color: #93a1b8; }
.menu-compte-u .avatar { background: #3b5b8f; color: #fff; }
.menu-pied form { margin: 0; }
.menu-sortie, .menu-replier { background: none; border: 0; color: #a9b5c8; cursor: pointer; padding: 8px; border-radius: 7px; display: flex; }
.menu-sortie:hover, .menu-replier:hover { background: rgba(255,255,255,.07); color: #fff; }
.menu-replier { align-self: flex-end; }
/* menu replié : icônes seules */
.menu-replie .menu { flex-basis: 64px; width: 64px; padding-left: 10px; padding-right: 10px; align-items: center; }
.menu-replie .menu-nom, .menu-replie .menu-lib, .menu-replie .menu-groupe { display: none; }
.menu-replie .menu-lien { justify-content: center; padding: 10px; position: relative; width: 44px; }
.menu-replie .menu-compte { position: absolute; top: 2px; right: 0; padding: 0 5px; font-size: 10px; }
.menu-replie .menu-nav { gap: 4px; align-items: center; }
.menu-replie .menu-pied { flex-direction: column; border-top: 0; }
.menu-replie .menu-replier { align-self: center; transform: rotate(180deg); }

.zone { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.haut { display: flex; align-items: center; gap: 12px; padding: 12px 28px; background: #fff; border-bottom: 1px solid var(--trait); position: sticky; top: 0; z-index: 15; }
.haut-menu { display: none; background: none; border: 0; padding: 6px; cursor: pointer; color: var(--encre); }
.recherche { flex: 1 1 320px; max-width: 560px; display: flex; align-items: center; gap: 10px; background: var(--fond); border: 1px solid var(--trait); border-radius: var(--rayon); padding: 0 10px 0 12px; color: var(--discret); margin: 0; }
.recherche:focus-within { border-color: var(--marine-2); background: #fff; box-shadow: 0 0 0 3px rgba(31,78,140,.15); }
.recherche input { flex: 1; min-width: 0; border: 0; background: transparent; padding: 9px 0; outline: none; font-size: 14px; }
.recherche input:focus { outline: none; }
.recherche kbd { font-family: var(--mono); font-size: 11px; border: 1px solid var(--champ-trait); border-radius: 4px; padding: 0 6px; background: #fff; color: var(--discret); }
main { width: 100%; max-width: 1360px; margin: 0 auto; padding: 26px 28px 40px; flex: 1; }
.sans-menu main { max-width: 1100px; }
.pied { text-align: center; color: var(--discret); font-size: .82rem; padding: 2rem 0 0; }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--champ-trait); background: #fff; color: var(--encre);
  padding: .5rem .95rem; border-radius: var(--rayon); font: inherit; font-size: .95rem; cursor: pointer; white-space: nowrap; line-height: 1.3;
}
.btn:hover { background: var(--gris); text-decoration: none; color: var(--encre); }
.btn.principal { background: var(--marine-2); color: #fff; border-color: var(--marine-2); font-weight: 500; }
.btn.principal:hover { background: var(--action-2); border-color: var(--action-2); color: #fff; }
.btn.discret { background: transparent; border-color: transparent; color: var(--encre-2); }
.btn.discret:hover { background: var(--gris); }
.btn.danger { color: var(--rouge-txt); border-color: var(--rouge-trait); }
.btn.danger:hover { background: var(--rouge); }
.btn.petit { padding: .22rem .6rem; font-size: .86rem; border-radius: 6px; }
.btn .ico { width: 16px; height: 16px; }
.lien { background: none; border: 0; color: var(--marine-2); cursor: pointer; font: inherit; padding: 0 .25rem; }
.lien:hover { text-decoration: underline; }
.lien.danger { color: var(--rouge-txt); }
form.inline { display: inline; }

/* ---------- Messages ---------- */
.flash { padding: .7rem 1rem; border-radius: var(--rayon); margin-bottom: 1rem; border: 1px solid; }
.flash-ok { background: var(--vert); border-color: #b7dcc5; color: var(--vert-txt); }
.flash-erreur { background: var(--rouge-fonce); border-color: var(--rouge-trait); color: var(--rouge-fonce-txt); }
.flash-info { background: var(--ambre); border-color: var(--ambre-trait); color: var(--ambre-txt); }
code.mdp { font-size: 1.15rem; background: #fff; padding: .15rem .5rem; user-select: all; }

/* ---------- Mise en page ---------- */
.titre-actions { display: flex; justify-content: space-between; align-items: center; gap: .75rem 1rem; flex-wrap: wrap; margin-bottom: 1rem; }
.titre-actions h1, .titre-actions h2 { margin-bottom: 0; }
.titre-actions > div { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.sous-titre { color: var(--discret); font-size: 1rem; font-weight: 400; margin-left: .35rem; letter-spacing: 0; }
.carte { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: 1.1rem 1.25rem; margin-bottom: 1.25rem; }
.carte.etroite { max-width: 560px; }
.grille2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.25rem; }
.grille3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 1.25rem; }
.defile { overflow-x: auto; }
.defile.hauteur { max-height: 340px; overflow-y: auto; }

/* ---------- Tuiles ---------- */
.tuiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; margin-bottom: 1.25rem; }
.tuile { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: 16px 18px; display: flex; flex-direction: column; color: var(--encre); gap: 2px; min-width: 0; }
a.tuile:hover { border-color: var(--marine-2); text-decoration: none; }
.tuile-n { font-size: 2.2rem; font-weight: 600; line-height: 1.15; font-variant-numeric: tabular-nums; }
.tuiles.petites .tuile-n { font-size: 1.3rem; }
.tuile small { color: var(--discret); }

/* ---------- Tableaux ---------- */
table { border-collapse: collapse; width: 100%; }
.liste th, .liste td { padding: .65rem .75rem; border-bottom: 1px solid var(--trait-2); text-align: left; vertical-align: top; font-size: .96rem; }
.liste thead th { background: #fafbfc; font-weight: 500; font-size: .86rem; color: var(--discret); white-space: nowrap; position: sticky; top: 0; border-bottom-color: var(--trait); }
.liste thead th a { color: inherit; }
.liste thead th a:hover { color: var(--encre); }
.liste tbody tr:hover > td { background-color: #f8f9fb; }
.liste tfoot td { font-weight: 600; border-top: 2px solid var(--trait); }
.liste td.vide { text-align: center; color: var(--discret); padding: 1.75rem; }
.liste th:first-child, .liste td:first-child { padding-left: 1rem; }
.liste th:last-child, .liste td:last-child { padding-right: 1rem; }
.simple th, .simple td { padding: .5rem .5rem; border-bottom: 1px solid var(--trait-2); text-align: left; vertical-align: top; font-size: .96rem; }
.simple th { font-weight: 400; color: var(--encre-2); width: 45%; }
.liste td.cli { min-width: 230px; }
.liste td.nw { white-space: nowrap; }
td.n, th.n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
td.m, th.m { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
.carte .liste { background: #fff; }
main > .defile, .tableau { background: #fff; border: 1px solid var(--trait); border-radius: var(--rayon-carte); }
.tableau { overflow: hidden; margin-bottom: 1.25rem; }
.tableau > .defile { border: 0; }
.tableau-outils { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; padding: 12px 16px; border-bottom: 1px solid var(--trait-2); }
.tableau-pied { display: flex; flex-wrap: wrap; gap: 6px 18px; align-items: center; padding: 10px 16px; font-size: .86rem; color: var(--encre-2); background: #fafbfc; border-top: 1px solid var(--trait-2); }

/* ---------- Alertes d'échéance : pastilles et repère discret en début de ligne ---------- */
tr.st-depasse > td:first-child { box-shadow: inset 3px 0 0 var(--rouge-txt); }
tr.st-urgent > td:first-child { box-shadow: inset 3px 0 0 var(--orange-vif); }
tr.st-proche > td:first-child { box-shadow: inset 3px 0 0 var(--jaune-vif); }
tr.st-clos > td { color: var(--discret); }
tr.st-regle > td:first-child { box-shadow: inset 3px 0 0 #2f7d57; }
tr.ambre > * { background: var(--ambre); }
td.a-completer { background: var(--ambre) !important; color: var(--ambre-txt); }
.pastille { display: inline-flex; align-items: center; gap: 5px; padding: 1px 9px; border-radius: 999px; font-size: .84rem; font-weight: 600; background: var(--gris); color: var(--encre-2); font-variant-numeric: tabular-nums; white-space: nowrap; border: 1px solid transparent; line-height: 1.5; }
.pastille::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; opacity: .9; }
.pastille:not([class*="st-"])::before { display: none; }
.pastille.st-depasse { background: var(--rouge-fonce); color: var(--rouge-fonce-txt); border-color: var(--rouge-trait); }
.pastille.st-urgent { background: var(--orange); color: var(--orange-txt); border-color: #f5cfa8; }
.pastille.st-proche { background: #fdf6e3; color: #7a5300; border-color: #ecd59a; }
.pastille.st-clos { background: var(--gris); color: var(--discret); }
.ambre-txt { color: var(--ambre-txt); font-weight: 500; }
.ok { color: var(--vert-txt); font-size: .88em; }
.urg { font-size: .76rem; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.urg-critique { color: var(--rouge-fonce-txt); }
.urg-haute { color: var(--orange-txt); }
.urg-normale, .urg-basse { color: var(--discret); }
.badge-manuel { display: inline-block; font-size: .7rem; background: #fdf1d6; color: var(--ambre-txt); border-radius: 3px; padding: 0 4px; cursor: help; font-weight: 600; }
.legende { font-size: .86rem; color: var(--encre-2); display: flex; gap: 6px 18px; flex-wrap: wrap; align-items: center; margin: .5rem 0 1rem; }
.legende span { display: inline-flex; align-items: center; gap: 6px; }
.legende span[class^="st-"]::before, .legende span.a-completer::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--trait); }
.legende .st-depasse::before { background: var(--rouge-txt); }
.legende .st-urgent::before { background: var(--orange-vif); }
.legende .st-proche::before { background: var(--jaune-vif); }
.legende .st-clos::before { background: #c9cfd8; }
.legende .st-regle::before { background: #2f7d57; }
.legende .a-completer::before { background: var(--ambre-trait); border-radius: 2px; }

/* ---------- Personnes (initiales) ---------- */
.avatar { width: 26px; height: 26px; flex: none; border-radius: 50%; background: #e8edf5; color: var(--marine-2); font-size: 11px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; letter-spacing: .02em; }
.personne { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.personne.vide { color: var(--discret); }
.personne.vide .avatar { background: var(--gris); color: var(--discret); }

/* ---------- Filtres et onglets ---------- */
.filtres { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; margin: .75rem 0 1rem; }
.filtres input[type=search] { min-width: 240px; flex: 1 1 240px; max-width: 380px; }
.onglets { display: flex; gap: 4px; border-bottom: 1px solid var(--trait); margin-bottom: 1rem; flex-wrap: wrap; }
.onglets a { padding: .6rem .9rem; border-bottom: 2px solid transparent; color: var(--encre-2); margin-bottom: -1px; }
.onglets a:hover { color: var(--encre); text-decoration: none; }
.onglets a.actif { border-bottom-color: var(--marine-2); color: var(--encre); font-weight: 600; }
.segments { display: inline-flex; background: var(--gris); border-radius: var(--rayon); padding: 3px; font-size: .93rem; flex-wrap: wrap; }
.segments a { padding: 5px 12px; border-radius: 6px; color: var(--encre-2); }
.segments a:hover { text-decoration: none; color: var(--encre); }
.segments a.actif { background: #fff; color: var(--encre); font-weight: 500; box-shadow: 0 1px 2px rgba(20, 33, 58, .12); }
.puces { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.puce { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--calc-trait); background: var(--calc); color: var(--marine-2); border-radius: 999px; padding: 2px 6px 2px 11px; font-size: .9rem; }
.puce a { color: inherit; font-size: 1.05rem; line-height: 1; padding: 0 4px; border-radius: 50%; }
.puce a:hover { background: rgba(31,78,140,.12); text-decoration: none; }

/* ---------- Formulaires ---------- */
input, select, textarea {
  font: inherit; font-size: .98rem; color: var(--encre); background: #fff;
  border: 1px solid var(--champ-trait); border-radius: 7px; padding: .5rem .65rem; max-width: 100%;
}
input:focus, select:focus, textarea:focus { outline: 3px solid rgba(31, 78, 140, .2); outline-offset: 0; border-color: var(--marine-2); }
input[type=checkbox], input[type=radio] { accent-color: var(--marine-2); }
input.court { width: 90px; }
input.moyen { width: 220px; }
textarea { width: 100%; resize: vertical; }
.fiche fieldset { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: 1.1rem 1.25rem 1.2rem; margin: 0 0 1rem; }
.fiche legend { font-weight: 600; padding: 0 .4rem; color: var(--encre); font-size: 1.05rem; }
.champs { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: .9rem 1.1rem; }
.champ { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.champ.large { grid-column: span 2; }
.champ label { font-size: .88rem; color: var(--encre-2); font-weight: 500; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.champ input, .champ select, .champ textarea { width: 100%; }
.champ.a-completer input, .champ.a-completer select { background: var(--ambre); border-color: var(--ambre-trait); }
.champ.a-completer label::after { content: "à compléter"; font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--ambre-txt); background: #fdf1d6; border-radius: 4px; padding: 0 5px; }
.champ.manuel input { background: #fffdf6; border-style: dashed; border-color: var(--ambre-trait); }
.champ.manuel label::after { content: "saisie manuelle"; font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--ambre-txt); background: #fdf1d6; border-radius: 4px; padding: 0 5px; }
.champ.calc label::after { content: "calculé"; font-size: .68rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--marine-2); background: var(--calc); border-radius: 4px; padding: 0 5px; }
.champ.calc .valeur { background: transparent; border: 0; border-bottom: 1px dashed var(--calc-trait); border-radius: 0; padding: .5rem 0; min-height: 2.35rem; font-size: .98rem; }
.champ.calc .vide { color: #9aa8b8; }
.champ .aide { color: var(--discret); font-size: .8rem; }
.champ .erreur { color: var(--rouge-txt); font-weight: 600; font-size: .85rem; }

/* ---------- Double authentification ---------- */
.etapes-2fa { padding-left: 1.2rem; display: flex; flex-direction: column; gap: .9rem; margin: 1rem 0; }
.qr { margin: .8rem 0 .4rem; }
.qr svg { display: block; max-width: 100%; height: auto; border: 1px solid var(--trait); border-radius: 6px; }
input.code-otp { font-size: 1.4rem; letter-spacing: .25em; text-align: center; font-variant-numeric: tabular-nums; max-width: 12rem; }
.codes-secours { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem 1rem; margin: 1rem 0; }
.codes-secours code { font-size: 1.05rem; letter-spacing: .05em; }
.petit-espace { margin-top: 1rem; }
.statut-2fa { font-size: .8rem; }
.vert-txt { color: var(--vert-txt); font-weight: 600; }

/* ---------- Fiche de suivi (version 1.2) ---------- */
.onglets-dossier { margin: 0 0 1rem; }
.onglets-dossier .pastille { margin-left: .25rem; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.espace { flex: 1; }

/* familles de types : couleur claire + texte foncé (lisibles aussi en noir et blanc grâce au libellé) */
.f-appel    { --f-fond: #eaf2fb; --f-txt: #2c5282; --f-trait: #c9dcf1; }
.f-reponse  { --f-fond: #fff1dc; --f-txt: #a15c07; --f-trait: #f3cf9a; }
.f-info     { --f-fond: #f1eafa; --f-txt: #5b2f91; --f-trait: #dccbf1; }
.f-proc     { --f-fond: #e2f3ef; --f-txt: #0f6b5c; --f-trait: #b8ddd4; }
.f-courrier { --f-fond: #eceef1; --f-txt: #4a5568; --f-trait: #d3d8de; }
.f-rdv      { --f-fond: #fbe9f1; --f-txt: #9d174d; --f-trait: #f2c4d8; }
.f-autre    { --f-fond: #eceef1; --f-txt: #4a5568; --f-trait: #d3d8de; }

.suivi-saisie { display: flex; flex-direction: column; gap: .8rem; }
.suivi-saisie h2 { margin: 0; }
.chips { border: 0; padding: 0; margin: 0; display: flex; gap: .45rem; flex-wrap: wrap; }
.chip { cursor: pointer; }
.chip input { position: absolute; opacity: 0; pointer-events: none; }
.chip span { display: inline-flex; align-items: center; gap: .4rem; padding: .4rem .85rem; border-radius: 20px; border: 1px solid var(--trait); background: #fff; color: var(--encre-2); font-size: .9rem; }
.chip:hover span { border-color: var(--f-trait); }
.chip input:checked + span { background: var(--f-fond); color: var(--f-txt); border: 2px solid var(--f-txt); font-weight: 600; padding: calc(.4rem - 1px) calc(.85rem - 1px); }
.chip input:focus-visible + span { outline: 2px solid #9cc1ea; outline-offset: 1px; }
.suivi-champs { display: grid; grid-template-columns: 190px 220px minmax(0, 1fr); gap: .8rem 1rem; }
.suivi-plus summary { cursor: pointer; color: var(--marine-2); font-size: .88rem; }
.suivi-plus textarea { margin-top: .4rem; }
.suivi-options { display: flex; gap: .6rem 1.1rem; flex-wrap: wrap; align-items: center; font-size: .9rem; color: var(--encre-2); }
.suivi-options label { display: inline-flex; align-items: center; gap: .35rem; }
.suivi-options input.manuel { background: #fffbea; border-style: dashed; border-color: #e9b949; }

.suivi-filtres { margin: 0 0 .9rem; font-size: .88rem; }
.suivi-filtres .filtre { padding: .2rem .7rem; border-radius: 12px; border: 1px solid var(--trait); background: #fff; color: var(--encre-2); }
.suivi-filtres .filtre:hover { text-decoration: none; border-color: var(--marine-2); }
.suivi-filtres .filtre.actif { background: var(--nuit); border-color: var(--nuit); color: #fff; }

.suivi-fil { list-style: none; margin: 0 0 1.25rem; padding: 0; background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon-carte); overflow: hidden; }
.suivi-fil.suivi-epingles { background: var(--ambre); border-color: #f1d98f; }
.suivi-mois { padding: .4rem 1.1rem; background: #f8f9fb; border-bottom: 1px solid var(--trait); font-size: .78rem; font-weight: 600; color: var(--encre-2); text-transform: uppercase; letter-spacing: .04em; }
.suivi-entree { display: grid; grid-template-columns: 82px 32px minmax(0, 1fr) minmax(170px, 230px); gap: .8rem; padding: .75rem 1.1rem; border-bottom: 1px solid var(--trait); align-items: start; }
.suivi-fil > .suivi-entree:last-child { border-bottom: 0; }
.suivi-entree:target { box-shadow: inset 4px 0 0 var(--marine-2); }
.suivi-date { font-size: .84rem; color: var(--encre-2); font-variant-numeric: tabular-nums; line-height: 1.3; }
.suivi-date small { color: var(--discret); }
.suivi-icone { width: 30px; height: 30px; border-radius: 50%; background: var(--f-fond); color: var(--f-txt); display: flex; align-items: center; justify-content: center; }
.suivi-corps { font-size: .93rem; min-width: 0; overflow-wrap: anywhere; }
.suivi-type { display: inline-block; font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--f-txt); margin-right: .3rem; }
.suivi-pin { color: var(--ambre-txt); vertical-align: -2px; }
.suivi-detail { margin: .25rem 0; color: var(--encre-2); }
.suivi-etat { display: flex; flex-direction: column; align-items: flex-end; gap: .3rem; text-align: right; font-size: .85rem; }
.suivi-echeance { display: inline-block; padding: .05rem .55rem; border-radius: 10px; font-weight: 600; background: var(--gris); color: var(--encre-2); }
.suivi-echeance.st-depasse { background: var(--rouge-fonce); color: var(--rouge-fonce-txt); border: 1px solid var(--rouge-trait); }
.suivi-echeance.st-urgent { background: var(--orange); color: var(--orange-txt); border: 1px solid #f5cfa8; }
.suivi-echeance.st-proche { background: var(--orange); color: var(--orange-txt); border: 1px solid #f3cf9a; }
.suivi-actions { display: flex; gap: .35rem; flex-wrap: wrap; justify-content: flex-end; font-size: .82rem; }
.suivi-actions .lien { font-size: .82rem; }
.suivi-entree.traite .suivi-corps strong { text-decoration: line-through; font-weight: 500; }
.suivi-entree.traite .suivi-corps, .suivi-entree.traite .suivi-date { color: var(--discret); }
.suivi-entree.traite .suivi-icone { background: var(--gris); color: var(--discret); }
.vide-suivi { text-align: center; padding: 1.5rem; }

@media (max-width: 820px) {
  .suivi-champs { grid-template-columns: 1fr; }
  .suivi-entree { grid-template-columns: 32px minmax(0, 1fr); }
  .suivi-date { grid-column: 1 / -1; }
  .suivi-etat { grid-column: 1 / -1; align-items: flex-start; text-align: left; }
  .suivi-actions { justify-content: flex-start; }
}
@media print {
  .suivi-saisie, .suivi-filtres, .suivi-actions, .onglets-dossier, .suivi-etat form { display: none !important; }
  .suivi-fil { border: 0; }
  .suivi-entree { break-inside: avoid; }
  .suivi-echeance, .suivi-icone, .suivi-fil.suivi-epingles { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ---------- Pièces dans Nextcloud (1.9) ---------- */
.fil-nc { font-size: .9rem; margin: -.25rem 0 1rem; overflow-wrap: anywhere; }
.depot { border: 1px dashed var(--calc-trait); background: var(--calc); border-radius: var(--rayon); padding: .8rem 1rem; margin-bottom: 1rem; display: flex; flex-direction: column; gap: .7rem; }
.depot-zone { display: flex; flex-direction: column; gap: .4rem; }
.depot-zone input[type=file], .suivi-joindre input[type=file], .depot-rapide input[type=file] { background: #fff; max-width: 100%; }
.depot .depot-objet { flex: 1 1 260px; }
.depot .depot-objet input { flex: 1; min-width: 0; }
.docs td { vertical-align: middle; }
.doc-nom { display: inline-flex; align-items: center; gap: .55rem; overflow-wrap: anywhere; }
.doc-ico { flex: none; min-width: 34px; height: 22px; padding: 0 4px; border-radius: 4px; background: var(--gris); color: var(--encre-2); font: 600 .66rem/22px var(--mono); text-align: center; }
.doc-ico.dossier { min-width: 22px; background: #fbe7b4; position: relative; }
.suivi-joindre { display: flex; flex-direction: column; gap: .3rem; font-size: .9rem; }
.suivi-pj { list-style: none; margin: .3rem 0; padding: 0; display: flex; flex-wrap: wrap; gap: .3rem .5rem; }
.suivi-pj li { background: var(--gris); border-radius: 6px; padding: .1rem .5rem; font-size: .86rem; }
.depot-rapide { display: flex; flex-direction: column; gap: .5rem; font-size: .88rem; }
.depot-rapide label { display: inline-flex; align-items: center; gap: .35rem; }

/* ---------- Facturation modifiable sur place (1.5) ---------- */
.champ.encaissement-champ .encaissement, .champ .encaissement { display: flex; gap: .35rem; }
.encaissement { display: inline-flex; gap: .3rem; align-items: center; }
.encaissement input[type="date"] { width: 9.5rem; }
.pieces td { vertical-align: middle; }
.pieces input, .pieces select { font-size: .86rem; padding: .25rem .4rem; }
.pieces input.court { width: 7.5rem; }
.pieces input.montant { width: 6.5rem; text-align: right; font-variant-numeric: tabular-nums; }
.pieces input[type="date"] { width: 8.6rem; }
.pieces tr.enregistrement { opacity: .55; }
.pieces tr.vient-de-changer > td { box-shadow: inset 0 0 0 9999px rgba(44, 82, 130, .08); transition: box-shadow 1s; }
.pieces .etat-piece small { color: var(--discret); }
.pieces .lien-fiche { font-size: .82rem; }
.message-piece { margin: .5rem 0; padding: .45rem .8rem; }
.champ.calc.h-ttc .valeur, .champ.calc.h-reste_a_facturer .valeur { border-width: 2px; }
.champ.calc.depassement .valeur { background: var(--rouge); border-color: #f0b4b4; color: var(--rouge-txt); font-weight: 600; }
.champ.calc.depassement label::after { content: " — facturé au-delà des honoraires"; color: var(--rouge-txt); }

/* ---------- Version 1.6 : alertes de régime (cadre « Délai de recours ») ---------- */
.rouge-txt { color: var(--rouge-txt); font-weight: 600; }
.alertes-regime { list-style: none; margin: .75rem 0 0; padding: 0; display: grid; gap: .4rem; font-size: .88rem; }
.alertes-regime li { padding: .45rem .7rem; border-radius: 6px; border-left: 4px solid; }
.alertes-regime .al-verifier { background: var(--ambre); border-color: #e0b84a; color: var(--ambre-txt); }
.alertes-regime .al-rouge { background: var(--rouge); border-color: var(--rouge-txt); color: var(--rouge-txt); }
.alertes-regime .al-info { background: #eef3fb; border-color: #8aa7d6; color: #22406f; }


/* ---------- Fiche client (1.3) : nature de la personne, délibération, interlocuteurs ---------- */
.fiche-client[data-nature=""] .seulement-physique, .fiche-client[data-nature=""] .seulement-morale,
.fiche-client[data-nature="physique"] .seulement-morale,
.fiche-client[data-nature="morale"] .seulement-physique { display: none; }
.statut-hab { display: inline-block; margin-left: .5rem; padding: .05rem .55rem; border-radius: 10px; font-size: .78rem; font-weight: 600; vertical-align: 1px; border: 1px solid transparent; }
.statut-hab.hab-vide { background: var(--gris); color: var(--discret); }
.statut-hab.hab-attente { background: var(--orange); color: var(--orange-txt); border-color: #f5cfa8; }
.statut-hab.hab-transmis { background: var(--calc); color: var(--marine-2); border-color: var(--calc-trait); }
.statut-hab.hab-verifie { background: var(--vert); color: var(--vert-txt); border-color: #b7dcc5; }
.cadre-habilitation { background: #fafbfd !important; }
.interlocuteurs { margin-top: 1.1rem; padding-top: .9rem; border-top: 1px dashed var(--trait); }
.interlocuteurs h3 { font-size: 1rem; margin: 0 0 .6rem; color: var(--encre); }
.ligne-contact { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1.2fr) minmax(0, .9fr) minmax(0, 1.3fr) 2rem; gap: .5rem .6rem; align-items: center; margin-bottom: .5rem; }
.ligne-contact input { width: 100%; }
.ligne-contact .erreur { grid-column: 1 / -1; color: var(--rouge-txt); font-weight: 600; font-size: .8rem; }
.ligne-contact [data-retirer-contact] { font-size: 1rem; justify-self: center; }
.entete-contacts span { font-size: .86rem; color: var(--encre-2); font-weight: 500; }
.entete-contacts { margin-bottom: .25rem; }
#liste-contacts:empty + .vide-contacts { margin: .2rem 0 .6rem; }
.vide-contacts { margin: .2rem 0 .6rem; font-size: .9rem; }
@media (max-width: 760px) {
  .entete-contacts { display: none; }
  .ligne-contact { grid-template-columns: minmax(0, 1fr) 2rem; padding: .6rem; border: 1px solid var(--trait); border-radius: var(--rayon); }
  .ligne-contact input { grid-column: 1; }
  .ligne-contact [data-retirer-contact] { grid-column: 2; grid-row: 1; }
}
.barre-enregistrer { position: sticky; bottom: 0; background: rgba(255,255,255,.96); padding: .7rem 1rem; display: flex; gap: .5rem; align-items: center; border: 1px solid var(--trait); border-radius: var(--rayon-carte); margin-bottom: 1.25rem; z-index: 5; box-shadow: 0 -4px 14px rgba(20,33,58,.06); }
.note-proc { margin-top: .9rem; font-size: .92rem; color: var(--encre-2); }
.note-proc summary { cursor: pointer; color: var(--marine-2); }
.bandeau { display: flex; gap: 1rem; flex-wrap: wrap; align-items: center; background: #fff; border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: .6rem 1rem; margin-bottom: 1rem; font-size: .94rem; }
.journal { list-style: none; padding: 0; margin: 0 0 1rem; font-size: .92rem; }
.journal li { padding: .4rem 0; border-bottom: 1px solid var(--trait-2); }

/* ---------- Graphiques en barres ---------- */
.barres { display: flex; flex-direction: column; gap: .45rem; margin-bottom: 1rem; }
.barre-ligne { display: grid; grid-template-columns: minmax(110px, 38%) 1fr auto; gap: .6rem; align-items: center; font-size: .9rem; }
.barre-lib { color: var(--encre-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.barre-piste { background: var(--gris); border-radius: 5px; height: 10px; overflow: hidden; }
.bar-fill { display: block; height: 100%; background: var(--marine-2); border-radius: 5px; }
.bar-fill.b-rouge { background: var(--rouge-txt); }
.bar-fill.b-orange { background: var(--orange-vif); }
.barre-val { font-variant-numeric: tabular-nums; min-width: 2.5rem; text-align: right; }

/* ---------- Listes (admin) ---------- */
.grille-listes { display: grid; grid-template-columns: 260px 1fr; gap: 1.25rem; align-items: start; }
.menu-listes { display: flex; flex-direction: column; background: #fff; border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: .4rem; }
.menu-listes a { padding: .45rem .65rem; border-radius: 6px; font-size: .94rem; color: var(--encre-2); }
.menu-listes a.actif { background: var(--calc); color: var(--marine-2); font-weight: 600; }
.actions-ligne { white-space: nowrap; text-align: right; }
.ligne-user { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; }

/* ---------- Installation (inchangée) ---------- */
.connexion { max-width: 420px; margin: 8vh auto 0; background: #fff; border: 1px solid var(--trait); border-radius: 12px; padding: 2rem; }
.connexion h1 { margin-bottom: .2rem; color: var(--encre); }
.connexion form { display: flex; flex-direction: column; gap: .9rem; margin-top: 1.25rem; }
.connexion .champ.large { grid-column: auto; }
.etapes { display: flex; gap: .5rem; padding: 0; list-style: none; counter-reset: e; font-size: .88rem; margin: 1rem 0; }
.etapes li { flex: 1; padding: .45rem .6rem; border-radius: 6px; background: var(--gris); color: var(--discret); counter-increment: e; }
.etapes li::before { content: counter(e) ". "; }
.etapes li.en-cours { background: var(--calc); color: var(--marine-2); font-weight: 600; }
.etapes li.fait { background: var(--vert); color: var(--vert-txt); }
pre.code { background: var(--gris); padding: 1rem; border-radius: 6px; overflow-x: auto; font-size: .82rem; }

/* ==========================================================
   Version 1.8 — tableau de bord
   ========================================================== */
.tdb-tete { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; margin-bottom: 1.25rem; }
.tdb-tete h1 { margin: 0; }
.tdb-tete .date-du-jour { color: var(--discret); font-size: 1rem; }
.tdb-tete .bascule { margin: 0 0 0 auto; }
.bascule { display: inline-flex; border: 1px solid var(--champ-trait); border-radius: var(--rayon); overflow: hidden; background: #fff; font-size: .93rem; }
.bascule a { padding: .45rem .9rem; color: var(--encre-2); }
.bascule a + a { border-left: 1px solid var(--champ-trait); }
.bascule a:hover { background: var(--gris); text-decoration: none; }
.bascule a.actif { background: var(--nuit); color: #fff; }

.tuile .tuile-lib { font-size: .93rem; color: var(--encre-2); }
.tuile a.tuile-lien { display: flex; flex-direction: column; gap: 2px; color: inherit; }
.tuile a.tuile-lien:hover { text-decoration: none; }
.tuile:hover { border-color: var(--calc-trait); }
.tuile.t-alerte { border-color: var(--rouge-trait); box-shadow: inset 0 3px 0 var(--rouge-txt); }
.tuile.t-alerte .tuile-lib { color: var(--rouge-fonce-txt); font-weight: 500; }
.tuile.t-alerte .tuile-n { color: var(--rouge-txt); }
.tuile.t-attention { border-color: #f5cfa8; box-shadow: inset 0 3px 0 var(--orange-vif); }
.tuile.t-attention .tuile-n { color: var(--orange-txt); }
.tuile-refs { display: flex; flex-wrap: wrap; gap: .15rem .6rem; font-size: .86rem; margin-top: .3rem; align-items: center; }
.tuile-refs a { font-family: var(--mono); font-size: .92em; }

.tdb-grille { display: grid; grid-template-columns: minmax(0, 1.75fr) minmax(300px, 1fr); gap: 0 1.25rem; align-items: start; }
.tdb-col { min-width: 0; }
.carte-titre { display: flex; align-items: center; gap: .4rem 1rem; flex-wrap: wrap; margin-bottom: .75rem; }
.carte-titre h2 { margin: 0; }
.carte-titre .discret { font-size: .92rem; }
.carte-titre .droite { margin-left: auto; font-size: .93rem; }
.carte.flush { padding: 0; }
.carte.flush > .carte-titre { padding: 1rem 1.25rem; margin: 0; border-bottom: 1px solid var(--trait-2); }
.carte.flush > .pied-carte { padding: .75rem 1.25rem; margin: 0; border-top: 1px solid var(--trait-2); }
.pilules { display: flex; gap: .35rem; flex-wrap: wrap; margin-left: auto; font-size: .88rem; }
.pilules a { padding: .15rem .7rem; border-radius: 999px; border: 1px solid var(--trait); background: #fff; color: var(--encre-2); white-space: nowrap; }
.pilules a:hover { text-decoration: none; border-color: var(--marine-2); }
.pilules a.actif { background: var(--nuit); border-color: var(--nuit); color: #fff; }

.priorites { list-style: none; margin: 0; padding: 0; }
.priorites li { display: grid; grid-template-columns: 58px 84px minmax(0, 1fr) minmax(0, 190px) 136px; gap: 14px; align-items: center; padding: 11px 1.25rem; border-bottom: 1px solid var(--trait-2); }
.priorites li:last-child { border-bottom: 0; }
.priorites .corps { min-width: 0; }
.priorites .corps strong { font-weight: 500; display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.priorites .corps small { color: var(--discret); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.priorites .personne span:last-child { overflow: hidden; text-overflow: ellipsis; font-size: .92rem; color: var(--encre-2); }
.priorites .personne { min-width: 0; }
.priorites .pastille { justify-self: end; }
.priorites .vide-tdb { display: block; padding: 1.25rem; }
.pave-date { display: flex; flex-direction: column; align-items: center; border: 1px solid var(--trait); border-radius: 8px; padding: 3px 0; line-height: 1.1; background: #fff; }
.pave-date b { font-size: 1.3rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.pave-date i { font-style: normal; font-size: .75rem; text-transform: uppercase; color: var(--discret); letter-spacing: .04em; }
.st-depasse > .pave-date, .pave-date.st-depasse { border-color: var(--rouge-trait); background: var(--rouge); }
.st-depasse > .pave-date b, .pave-date.st-depasse b { color: var(--rouge-fonce-txt); }

.vigilances { list-style: none; margin: 0; padding: 0; }
.vigilances li { display: flex; align-items: center; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--trait-2); font-size: .96rem; }
.vigilances li:last-child { border-bottom: 0; }
.vigilances .point-v { width: 8px; height: 8px; border-radius: 50%; flex: none; background: #c9cfd8; }
.vigilances .v-rouge .point-v { background: var(--rouge-txt); }
.vigilances .v-ambre .point-v { background: var(--jaune-vif); }
.vigilances .v-zero { color: var(--discret); }
.vigilances .lib { flex: 1; }
.vigilances .n { font-weight: 600; font-variant-numeric: tabular-nums; min-width: 2rem; text-align: right; }

.chiffres { display: flex; flex-wrap: wrap; gap: 14px 28px; margin-bottom: .9rem; }
.chiffres div { display: flex; flex-direction: column; }
.chiffres span { font-size: .86rem; color: var(--discret); }
.chiffres strong { font-size: 1.55rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.chiffres .accent strong { color: var(--marine-2); }
.details-montants { display: grid; grid-template-columns: 1fr auto; gap: 6px 12px; margin: .9rem 0 0; font-size: .93rem; }
.details-montants dt { color: var(--encre-2); }
.details-montants dd { margin: 0; text-align: right; font-variant-numeric: tabular-nums; }
.details-montants .alerte { color: var(--rouge-fonce-txt); font-weight: 600; }
.empile { display: flex; height: 10px; border-radius: 5px; overflow: hidden; background: var(--gris); margin: .2rem 0 .5rem; }
.empile span { display: block; height: 100%; }
.empile-leg { display: flex; flex-wrap: wrap; gap: .3rem 1rem; font-size: .84rem; color: var(--encre-2); }
.empile-leg span { display: inline-flex; align-items: center; gap: .4rem; }
.empile-leg i { width: .7rem; height: .7rem; border-radius: 2px; display: inline-block; }
.c-enc { background: #2f7d57; }
.c-att { background: #d08a1e; }
.c-ret { background: var(--rouge-txt); }
.c-raf { background: #9db4d6; }

.suivi-tdb td { vertical-align: middle; }
.suivi-tdb td.grp { font-size: .76rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--encre-2); background: #fafbfc; padding: .35rem 1rem; }
.suivi-tdb td.grp.g-dep { color: var(--rouge-fonce-txt); background: var(--rouge); }
.suivi-tdb td.grp.g-sem { color: var(--orange-txt); background: var(--orange); }
.point { display: flex; gap: .6rem; align-items: flex-start; min-width: 0; }
.point > div { min-width: 0; overflow-wrap: anywhere; }
.point .suivi-icone { width: 26px; height: 26px; flex: none; }
.point-objet { color: var(--encre); font-weight: 500; }
.etiq-proc { font-size: .72rem; color: #0f6b5c; border: 1px solid #b8ddd4; background: #e2f3ef; border-radius: 8px; padding: 0 .45rem; white-space: nowrap; }
.pied-carte { display: flex; justify-content: space-between; gap: .5rem; flex-wrap: wrap; margin-top: .6rem; font-size: .92rem; }
.note { font-size: .84rem; margin: .6rem 0 0; }
.vide-tdb { padding: 1rem 0; margin: 0; }

details.repartitions { padding: 0; }
details.repartitions > summary { cursor: pointer; padding: .9rem 1.25rem; list-style: none; display: flex; align-items: center; gap: .5rem; }
details.repartitions > summary::-webkit-details-marker { display: none; }
details.repartitions > summary::before { content: ""; width: 7px; height: 7px; border-right: 2px solid var(--discret); border-bottom: 2px solid var(--discret); transform: rotate(-45deg); transition: transform .15s; }
details.repartitions[open] > summary::before { transform: rotate(45deg); }
details.repartitions > .grille3 { padding: .2rem 1.25rem 1rem; border-top: 1px solid var(--trait-2); }
details.repartitions h3 { font-size: 1rem; margin: .9rem 0 .6rem; }
.filtre-vig a { margin-left: .5rem; }
.suivi-page tr.traite .point-objet { text-decoration: line-through; font-weight: 400; color: var(--discret); }
.suivi-page .suivi-detail { font-size: .9rem; }
.suivi-page .point small { display: block; }

/* ==========================================================
   Version 1.8 — liste des dossiers et échéancier
   ========================================================== */
.titre-liste { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin-bottom: 1rem; }
.titre-liste h1 { margin: 0; }
.compteur { background: var(--calc); color: var(--marine-2); border-radius: 999px; padding: 1px 11px; font-size: .93rem; font-weight: 600; }
.titre-liste .actions { margin-left: auto; display: flex; gap: .5rem; flex-wrap: wrap; }
.filtres-ligne { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin: 0; flex: 1 1 520px; justify-content: flex-end; }
.filtres-ligne .champ-recherche { flex: 1 1 170px; max-width: 280px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--champ-trait); border-radius: var(--rayon); padding: 0 10px; color: var(--discret); background: #fff; }
.filtres-ligne .champ-recherche:focus-within { border-color: var(--marine-2); box-shadow: 0 0 0 3px rgba(31,78,140,.15); }
.filtres-ligne .champ-recherche input { border: 0; padding: 7px 0; flex: 1; min-width: 0; outline: none; font-size: .95rem; }
.filtres-ligne select { padding: .4rem .55rem; font-size: .93rem; max-width: 160px; }
.filtres-ligne .btn { padding: .4rem .8rem; font-size: .93rem; }
.tableau-puces { padding: 8px 16px; border-bottom: 1px solid var(--trait-2); background: #fcfcfd; font-size: .9rem; color: var(--encre-2); }
.liste.dossiers td { font-size: .95rem; }
.cel-2 strong { display: block; font-weight: 500; color: var(--encre); }
.cel-2 small { display: block; color: var(--discret); font-size: .88rem; }
.cel-2.coupe { max-width: 340px; }
.cel-2.coupe strong, .cel-2.coupe small { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cel-ech { text-align: right; white-space: nowrap; }
.cel-ech .date { font-variant-numeric: tabular-nums; font-weight: 500; display: block; }
.cel-ech .pastille { margin-top: 3px; }
.cel-ech small { display: block; color: var(--discret); font-size: .84rem; max-width: 230px; margin-left: auto; white-space: normal; }
th.cel-ech { text-align: right; }
.liste a.ref-lien { font-family: var(--mono); font-weight: 500; font-size: .93rem; }
.echeancier-liste td { vertical-align: middle; }

/* ==========================================================
   Version 1.8 — fiche dossier
   ========================================================== */
.dossier-tete { background: #fff; border: 1px solid var(--trait); border-radius: var(--rayon-carte); padding: 14px 20px 0; margin-bottom: 1rem; display: flex; flex-direction: column; gap: 10px; }
.ariane { font-size: .9rem; color: var(--discret); }
.ariane .ref { color: var(--encre-2); }
.dossier-ligne { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px 20px; }
.dossier-titre { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 8px; }
.dossier-titre h1 { margin: 0; font-size: 1.65rem; line-height: 1.25; }
.dossier-titre h1 .contre { color: var(--discret); font-weight: 400; }
.meta { display: flex; flex-wrap: wrap; gap: 6px; font-size: .88rem; }
.meta span { background: var(--gris); color: var(--encre-2); border-radius: 6px; padding: 2px 8px; }
.meta .m-statut { background: var(--vert); color: var(--vert-txt); font-weight: 500; }
.meta .m-statut.clos { background: var(--gris); color: var(--discret); }
.meta .m-urgence { background: var(--rouge-fonce); color: var(--rouge-fonce-txt); font-weight: 500; }
.echeance-boite { display: flex; align-items: center; gap: 12px; border: 1px solid var(--trait); background: #fafbfc; border-radius: var(--rayon-carte); padding: 9px 14px; }
.echeance-boite .lib { font-size: .86rem; color: var(--encre-2); display: block; max-width: 260px; }
.echeance-boite .date { font-size: 1.3rem; font-weight: 600; font-variant-numeric: tabular-nums; display: block; line-height: 1.2; }
.echeance-boite.st-depasse { border-color: var(--rouge-trait); background: var(--rouge); }
.echeance-boite.st-depasse .lib { color: var(--rouge-fonce-txt); font-weight: 500; }
.echeance-boite.st-urgent { border-color: #f5cfa8; background: var(--orange); }
.echeance-boite.st-proche { border-color: #ecd59a; background: #fdf9ee; }
.dossier-actions { display: flex; gap: 8px; align-items: center; }
.dossier-tete .onglets { margin: 4px -20px 0; padding: 0 12px; border-bottom: 0; border-top: 1px solid var(--trait-2); }
.dossier-tete .onglets a { padding: .7rem .85rem; }
.onglets .pastille { margin-left: .25rem; font-size: .76rem; }
.onglets .nb { background: var(--gris); border-radius: 9px; padding: 0 7px; font-size: .8rem; color: var(--encre-2); margin-left: 4px; }

.points-completer { background: var(--ambre); border: 1px solid var(--ambre-trait); border-radius: var(--rayon-carte); padding: 12px 18px; margin-bottom: 1rem; }
.points-completer h2 { display: flex; align-items: center; gap: 8px; color: var(--ambre-txt); font-size: 1rem; margin: 0 0 8px; }
.points-completer ul { margin: 0; padding: 0; list-style: none; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 6px 18px; font-size: .95rem; }
.points-completer li { display: flex; flex-wrap: wrap; gap: 6px 8px; align-items: center; color: var(--ambre-txt); }
.points-completer li.rouge { color: var(--rouge-fonce-txt); font-weight: 500; }
.points-completer a { color: inherit; text-decoration: underline; text-underline-offset: 2px; }
.points-completer .btn.petit { background: #fff; border-color: var(--ambre-trait); color: var(--ambre-txt); }

.dossier-corps { display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 0 1.25rem; align-items: start; }
.dossier-corps.seul { grid-template-columns: minmax(0, 1fr); }
.dossier-principal { min-width: 0; }
.synthese { display: flex; flex-direction: column; gap: 1rem; position: sticky; top: 76px; }
.synthese .carte { margin: 0; padding: 14px 16px; }
.synthese h2 { font-size: 1rem; margin: 0 0 10px; display: flex; align-items: baseline; gap: 8px; }
.synthese h2 a { margin-left: auto; font-size: .88rem; font-weight: 400; }
.echeances-dossier { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 9px; font-size: .93rem; }
.echeances-dossier li { display: grid; grid-template-columns: 10px minmax(0, 1fr) auto; gap: 8px; align-items: baseline; }
.echeances-dossier .pt { width: 8px; height: 8px; border-radius: 50%; background: #c9cfd8; }
.echeances-dossier .st-depasse .pt { background: var(--rouge-txt); }
.echeances-dossier .st-urgent .pt { background: var(--orange-vif); }
.echeances-dossier .st-proche .pt { background: var(--jaune-vif); }
.echeances-dossier .avenir .pt { background: var(--marine-2); }
.echeances-dossier .fait { color: var(--discret); }
.echeances-dossier .fait .pt { background: #fff; border: 1px solid #c9cfd8; }
.echeances-dossier .d { font-variant-numeric: tabular-nums; white-space: nowrap; }
.echeances-dossier .st-depasse .d { color: var(--rouge-fonce-txt); font-weight: 600; }
.echeances-dossier small { grid-column: 2 / -1; color: var(--discret); font-size: .82rem; margin-top: -6px; }
.montant-ligne { display: flex; justify-content: space-between; align-items: baseline; gap: 8px; }
.montant-ligne strong { font-size: 1.3rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.progression { height: 8px; border-radius: 4px; background: var(--gris); overflow: hidden; margin: 8px 0 10px; }
.progression span { display: block; height: 100%; background: #2f7d57; }
.synthese .details-montants { margin-top: 0; font-size: .9rem; }
.synthese .alerte-conv { font-size: .86rem; color: var(--ambre-txt); margin: 8px 0 0; }
.note-rapide { display: flex; flex-direction: column; gap: 8px; }
.note-rapide textarea { font-size: .93rem; }
.note-rapide .btn { align-self: flex-end; }

details.cadre { background: var(--carte); border: 1px solid var(--trait); border-radius: var(--rayon-carte); margin: 0 0 1rem; scroll-margin-top: 80px; }
details.cadre > summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px; padding: 14px 20px; border-radius: var(--rayon-carte); }
details.cadre > summary::-webkit-details-marker { display: none; }
details.cadre > summary::before { content: ""; flex: none; width: 7px; height: 7px; border-right: 2px solid var(--discret); border-bottom: 2px solid var(--discret); transform: rotate(-45deg); transition: transform .15s; margin-right: 2px; }
details.cadre[open] > summary::before { transform: rotate(45deg); }
details.cadre > summary:hover { background: #fafbfc; }
details.cadre[open] > summary { border-bottom: 1px solid var(--trait-2); border-radius: var(--rayon-carte) var(--rayon-carte) 0 0; }
details.cadre .cadre-titre { font-size: 1.08rem; font-weight: 600; white-space: nowrap; }
details.cadre .resume { color: var(--discret); font-size: .93rem; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; }
details.cadre[open] .resume { display: none; }
details.cadre .marque-alerte { font-size: .72rem; text-transform: uppercase; letter-spacing: .05em; font-weight: 600; color: var(--ambre-txt); background: #fdf1d6; border-radius: 4px; padding: 1px 6px; white-space: nowrap; }
details.cadre .marque-alerte.rouge { color: var(--rouge-fonce-txt); background: var(--rouge-fonce); }
.fiche details.cadre > fieldset { border: 0; margin: 0; padding: 16px 20px 20px; background: transparent; border-radius: 0; }
.fiche details.cadre > fieldset > legend { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.outils-cadres { display: flex; justify-content: flex-end; gap: .25rem; margin: -.25rem 0 .5rem; font-size: .9rem; }

.frise { list-style: none; margin: 0 0 18px; padding: 4px 0 16px; display: grid; grid-auto-columns: minmax(0, 1fr); grid-auto-flow: column; border-bottom: 1px solid var(--trait-2); }
.frise li { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 5px; padding: 0 4px; min-width: 0; }
.frise .rail { display: flex; align-items: center; width: 100%; }
.frise .rail i { flex: 1; height: 2px; background: var(--trait); }
.frise li:first-child .rail i:first-child, .frise li:last-child .rail i:last-child { visibility: hidden; }
.frise .rond { width: 14px; height: 14px; border-radius: 50%; flex: none; border: 2px solid #c9cfd8; background: #fff; }
.frise .lib { font-size: .84rem; color: var(--encre-2); }
.frise .d { font-size: .98rem; font-weight: 600; font-variant-numeric: tabular-nums; }
.frise .nt { font-size: .8rem; color: var(--discret); }
.frise .fait .rond { background: var(--marine-2); border-color: var(--marine-2); }
.frise .fait .rail i:last-child, .frise .fait + li .rail i:first-child { background: var(--marine-2); }
.frise .manque .rond { border-color: var(--jaune-vif); }
.frise .manque .d { color: var(--ambre-txt); font-weight: 500; }
.frise .retard .rond { background: var(--rouge-txt); border-color: var(--rouge-txt); }
.frise .retard .d, .frise .retard .nt { color: var(--rouge-fonce-txt); }
.frise .avenir .rond { border-color: var(--marine-2); }

/* ---------- Petits écrans ---------- */
@media (max-width: 1180px) {
  .dossier-corps { grid-template-columns: minmax(0, 1fr); }
  .synthese { position: static; display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
  .tdb-grille { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 1000px) {
  .grille2, .grille3, .grille-listes { grid-template-columns: minmax(0, 1fr); }
  .priorites li { grid-template-columns: 52px minmax(0, 1fr) auto; }
  .priorites li > .ref-lien { grid-column: 2; grid-row: 1; }
  .priorites li > .corps { grid-column: 2; grid-row: 2; }
  .priorites li > .personne { display: none; }
  .priorites li > .pave-date { grid-row: span 2; }
  .priorites li > .pastille { grid-column: 3; grid-row: 1 / span 2; }
}
@media (max-width: 860px) {
  .menu { position: fixed; left: 0; top: 0; bottom: 0; transform: translateX(-100%); transition: transform .2s; box-shadow: 0 0 40px rgba(0,0,0,.25); }
  .menu.ouvert { transform: none; }
  .menu-replie .menu { flex-basis: 240px; width: 240px; align-items: stretch; }
  .menu-replie .menu-nom, .menu-replie .menu-lib, .menu-replie .menu-groupe { display: revert; }
  .menu-replie .menu-lien { width: auto; justify-content: flex-start; }
  .menu-replier { display: none; }
  .haut-menu { display: flex; }
  .haut { padding: 10px 14px; gap: 8px; }
  .haut .btn.principal { padding: .5rem .6rem; }
  .haut .btn.principal .lib-long { display: none; }
  .recherche kbd { display: none; }
  main { padding: 16px 14px 32px; }
  .champ.large { grid-column: auto; }
  .filtres input[type=search] { min-width: 0; max-width: none; }
  .dossier-tete { padding: 12px 14px 0; }
  .dossier-tete .onglets { margin: 4px -14px 0; padding: 0 4px; }
  .frise { grid-auto-flow: row; grid-auto-columns: auto; gap: 10px; }
  .frise li { flex-direction: row; text-align: left; gap: 10px; }
  .frise .rail { width: auto; }
  .frise .rail i { display: none; }
  .tdb-tete .bascule { margin-left: 0; }
  details.cadre .resume { display: none; }
}
@media (prefers-reduced-motion: reduce) {
  details.cadre > summary::before, details.repartitions > summary::before, .menu { transition: none; }
}

/* ---------- Impression ---------- */
@media print {
  .menu, .haut, .filtres, .filtres-ligne, .tableau-outils, .tableau-puces, .btn, .pied, .barre-enregistrer, .onglets, .synthese, .outils-cadres, form[data-confirm], .evitement { display: none !important; }
  body { background: #fff; font-size: 11px; }
  .appli, .zone { display: block; }
  main { padding: 0; max-width: none; }
  .liste thead th { position: static; }
  .dossier-corps { display: block; }
  details.cadre { break-inside: avoid; }
  tr.st-depasse > td, tr.st-urgent > td, tr.st-proche > td, .pastille { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
}

/* ---------- Écrans d'accès : connexion et vérification (versions 1.7 et 1.8) ---------- */

body.page-acces {
  --acces-nuit: #14213a;
  --acces-action: #1f4e8c;
  --acces-action-2: #163a6b;
  --acces-texte: #18212f;
  --acces-texte-2: #4b5565;
  --acces-discret: #6b7280;
  --acces-trait: #d5dae1;
  background: #fff; color: var(--acces-texte);
  font-family: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 14px;
}
.acces { display: flex; flex-wrap: wrap; min-height: 100vh; }
.acces-volet {
  flex: 1 1 420px; background: var(--acces-nuit); color: #fff;
  padding: 56px 64px; display: flex; flex-direction: column;
}
.acces-nom { margin: 0; color: #fff; font-weight: 600; font-size: 18px; line-height: 1.35; letter-spacing: .005em; }
.acces-principal {
  flex: 1 1 480px; max-width: none; margin: 0; background: #fff;
  display: flex; align-items: center; justify-content: center; padding: 48px 24px;
}
.acces-carte { width: 100%; max-width: 380px; display: flex; flex-direction: column; gap: 18px; }
.acces-titre { display: flex; flex-direction: column; gap: 6px; }
.acces-titre h1 { margin: 0; font-size: 24px; font-weight: 600; color: var(--acces-texte); letter-spacing: -.005em; }
.acces-titre p { margin: 0; color: var(--acces-discret); }
.acces-form { display: flex; flex-direction: column; gap: 18px; }
.acces-champ { display: flex; flex-direction: column; gap: 6px; }
.acces-champ label { font-size: 13px; font-weight: 500; color: var(--acces-texte-2); }
.acces-champ input {
  width: 100%; font: inherit; font-size: 15px; color: var(--acces-texte);
  border: 1px solid var(--acces-trait); border-radius: 8px; padding: 11px 12px; background: #fff;
}
.acces-champ input:focus { outline: 3px solid rgba(31, 78, 140, .25); outline-offset: 0; border-color: var(--acces-action); }
.acces-champ input.code-otp { max-width: none; font-size: 22px; padding: 10px 12px; }
.acces-champ small { font-size: 12.5px; color: var(--acces-discret); }
.acces-bouton {
  border: 0; background: var(--acces-action); color: #fff; border-radius: 8px; min-height: 44px;
  padding: 12px 16px; font: inherit; font-size: 15px; font-weight: 500; cursor: pointer;
}
.acces-bouton:hover { background: var(--acces-action-2); }
.acces-bouton:focus-visible { outline: 3px solid rgba(31, 78, 140, .35); outline-offset: 2px; }
.acces-aide { margin: 0; font-size: 12.5px; color: var(--acces-discret); }
.acces-sso { display: flex; align-items: center; justify-content: center; text-decoration: none; }
.acces-sso:hover { color: #fff; text-decoration: none; }
.acces-secours { border-top: 1px solid var(--trait); padding-top: 14px; }
.acces-secours summary { cursor: pointer; font-size: 13px; color: var(--acces-discret); margin-bottom: 4px; }
.acces-secours[open] summary { margin-bottom: 16px; }
.acces-secours .acces-aide { margin-top: 12px; }
.acces-aide a { color: var(--acces-action); }
.acces-annuler { margin: 0; }
.acces-annuler .lien { padding: 0; font-size: 13px; color: var(--acces-texte-2); }
.acces-carte .flash { margin: 0; font-size: 13.5px; }
.acces-version { margin: 24px 0 0; padding-top: 14px; border-top: 1px solid #edeff2; font-size: 12px; color: var(--acces-discret); }

@media (max-width: 900px) {
  .acces { flex-direction: column; flex-wrap: nowrap; }
  .acces-volet { flex: none; padding: 20px 24px; }
  .acces-principal { flex: 1 0 auto; align-items: flex-start; padding: 32px 20px 40px; }
}
