/* MAISON MONTAIGNE — système de design V1 (identité provisoire, placeholder) */
:root{
  --ivoire:#F5F1E8; --papier:#FFFDF8; --papier-2:#FBF8F1; --ligne:#E3DBCB; --ligne-forte:#CDBFA6;
  --encre:#1E1C19; --graphite:#4B4741; --sourdine:#6A6459; --bronze:#96774A; --bronze-clair:#C9AB7C; --bronze-fond:#F1E7D6;
  --vert:#3B6A49; --vert-fond:#E5EFE7; --ambre:#A9711C; --ambre-fond:#F7EBD3; --rouge:#A3392C; --rouge-fond:#F6DFDA; --noir:#141311;
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif; --sans:'Inter',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --r:10px; --r-s:6px; --ombre:0 1px 2px rgba(30,28,25,.06),0 8px 24px -12px rgba(30,28,25,.18);
}
/* ==== Étape 0 : couche de tokens SÉMANTIQUES (UI/UX V2) ====
   Alias de la palette ci-dessus : aucune couleur ni fonte nouvelle, aucune règle existante modifiée.
   Base typographique : html=15px, donc 1rem=15px. Corps mini = 14px = --t-2.
   Les usages en dur seront migrés vers ces tokens lot par lot (Étape 0 ne remplace rien). */
:root{
  --c-fond:var(--ivoire); --c-surface:var(--papier); --c-surface-2:var(--papier-2);
  --c-bord:var(--ligne); --c-bord-fort:var(--ligne-forte); --c-inverse:var(--noir);
  --c-texte:var(--encre); --c-texte-2:var(--graphite); --c-texte-3:var(--sourdine);
  --c-accent:var(--bronze); --c-accent-clair:var(--bronze-clair); --c-accent-fond:var(--bronze-fond);
  --c-ok:var(--vert); --c-ok-fond:var(--vert-fond);
  --c-attention:var(--ambre); --c-attention-fond:var(--ambre-fond);
  --c-critique:var(--rouge); --c-critique-fond:var(--rouge-fond);
  --t-1:.8rem;    /* 12px — micro : badges, méta (hors corps) */
  --t-2:.933rem;  /* 14px — CORPS minimum */
  --t-3:1.133rem; /* 17px — sous-titre / h3 */
  --t-4:1.6rem;   /* 24px — titre de section / h2 */
  --t-5:2.133rem; /* 32px — titre de page / grand chiffre / h1 */
  --e-1:.25rem; --e-2:.5rem; --e-3:1rem; --e-4:1.6rem;
  --rayon:var(--r); --rayon-s:var(--r-s); --rayon-pill:999px;
  --ombre-1:var(--ombre); --ombre-2:0 2px 10px -2px rgba(30,28,25,.12);
  --chiffres:"tnum" 1,"lnum" 1;
}
*{box-sizing:border-box}
html{font-size:15px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ivoire);color:var(--encre);font-family:var(--sans);line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--bronze);text-decoration:none}a:hover{text-decoration:underline}
h1,h2,h3,.serif{font-family:var(--serif);font-weight:600;letter-spacing:0;margin:0;color:var(--encre)}
h1{font-size:1.9rem;line-height:1.2}h2{font-size:1.4rem;line-height:1.25}h3{font-size:1.2rem;line-height:1.3}
p{margin:.4rem 0}
.muted{color:var(--sourdine)}.small{font-size:.9rem}.tiny{font-size:.82rem}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}
.num{font-family:var(--serif);font-variant-numeric:tabular-nums lining-nums;font-weight:600}
/* Lot A — chiffres : lining tabulaire sur toutes les valeurs numériques d'affichage (KPI, jalons, branches) */
.val,.kpi .val,.compte .j,.branche .val{font-variant-numeric:tabular-nums lining-nums}
/* Lot A — couleur par signe (mécanisme ; filtre euros_signe). Sens MATHÉMATIQUE ; à ne pas confondre avec un seuil/écart. */
.montant{font-variant-numeric:tabular-nums lining-nums}
.montant--neg{color:var(--c-critique)} .montant--pos{color:var(--c-ok)} .montant--nul{color:var(--c-texte-2)}
/* Lot B — mur d'alertes : ligne entièrement cliquable (lien étiré, HTML valide) + survol ; groupes repliables via <details> */
.alerte.cliquable{position:relative}
.alerte.cliquable:hover{background:var(--c-surface-2)}
.alerte.cliquable .agir::after{content:"";position:absolute;inset:0}
.grp-alertes>summary{cursor:pointer;list-style:none;font:inherit;font-weight:600;margin:.6rem 0 .3rem;color:var(--c-texte-2)}
.grp-alertes>summary::-webkit-details-marker{display:none}
.grp-alertes>summary::before{content:'▾';margin-right:.4rem;font-size:.8rem;color:var(--c-texte-3)}
.grp-alertes:not([open])>summary::before{content:'▸'}
/* structure */
.shell{display:grid;grid-template-columns:240px 1fr;min-height:100vh}
.nav{background:var(--noir);color:#EDE6D8;padding:1.4rem 1.1rem 1.6rem;display:flex;flex-direction:column;gap:1.2rem;position:sticky;top:0;height:100vh;height:100dvh;
  overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#4a463f var(--noir)}
/* Le menu défile À L'INTÉRIEUR de sa colonne sombre : aucune entrée ne sort jamais sur le fond clair de la page, quel que soit le nombre d'entrées ou la hauteur de l'écran. */
.nav::-webkit-scrollbar{width:8px}.nav::-webkit-scrollbar-thumb{background:#4a463f;border-radius:4px}
.nav>*{flex:none}
.marque{display:flex;align-items:center;gap:.7rem;color:var(--ivoire)}
.marque .mono-mm{width:38px;height:38px;border:1px solid var(--bronze-clair);border-radius:50%;display:grid;place-items:center;font-family:var(--serif);font-weight:600;color:var(--bronze-clair);font-size:1.05rem}
.marque b{font-family:var(--serif);font-weight:600;font-size:1.05rem;letter-spacing:.06em;display:block;line-height:1.05}
.marque .tiny{color:var(--bronze-clair);letter-spacing:.14em;text-transform:uppercase;font-size:.62rem}
.nav a.item{display:flex;align-items:center;gap:.6rem;color:#C9C2B4;padding:.5rem .6rem;border-radius:var(--r-s);font-size:.92rem}
.nav a.item:hover,.nav a.item.actif{background:rgba(255,255,255,.07);color:#fff;text-decoration:none}
.nav a.item.actif{border-left:2px solid var(--bronze-clair);padding-left:calc(.6rem - 2px)}
/* Lot E — icônes des 7 entrées + état actif RENFORCÉ */
.nav-ico{display:inline-block;width:1.15em;text-align:center;opacity:.75;margin-right:.15rem}
.nav a.item.actif{background:rgba(201,171,124,.16);color:#fff;font-weight:600;border-left:3px solid var(--bronze-clair);padding-left:calc(.6rem - 3px)}
.nav details.nav-groupe>summary.item.actif{color:#fff}
.nav .groupe{font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--sourdine);margin:.4rem .6rem 0}
.nav details.nav-groupe>summary{cursor:pointer;list-style:none}.nav details.nav-groupe>summary::-webkit-details-marker{display:none}.nav details.nav-groupe>summary::after{content:'▾';margin-left:auto;font-size:.8rem;color:var(--sourdine)}.nav details.nav-groupe[open]>summary::after{content:'▴'}
.nav details.nav-groupe a.item.sous{padding-left:1.4rem;font-size:.88rem}.nav details.nav-groupe a.item.sous.actif{padding-left:calc(1.4rem - 2px)}
.nav .bas{margin-top:auto;padding-top:1rem;font-size:.82rem;color:#A39B8D}
.nav .stub-tag{margin-left:auto;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--sourdine);border:1px solid #3a3733;border-radius:3px;padding:0 4px}
.main{min-width:0;display:flex;flex-direction:column}
.bandeau-sandbox{background:var(--ambre);color:#fff;padding:.45rem 1.6rem;font-size:.84rem;display:flex;gap:1rem;align-items:center}
.bandeau-sandbox b{letter-spacing:.08em}
.bandeau-sandbox a{color:#fff;text-decoration:underline;margin-left:auto}
.bandeau-live{background:var(--rouge);color:#fff;padding:.45rem 1.6rem;font-size:.84rem}
.haut{display:flex;align-items:center;gap:1rem;padding:1rem 1.6rem 0;flex-wrap:wrap}
.haut .fil{color:var(--sourdine);font-size:.86rem}
.haut .droite{margin-left:auto;display:flex;align-items:center;gap:.8rem;font-size:.86rem}
.contenu{padding:var(--e-3) var(--e-4) 2rem;max-width:1380px;width:100%}
.titre-page{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin:.4rem 0 1.2rem;flex-wrap:wrap}
.titre-page .sous{color:var(--c-texte-2);margin-top:.3rem;font-size:1rem}
/* cartes et grilles */
.carte{background:var(--papier);border:1px solid var(--ligne);border-radius:var(--r);box-shadow:var(--ombre);padding:var(--e-3);overflow-x:auto}
.carte.plate{box-shadow:none}
.carte h2,.carte h3{margin-bottom:var(--e-2)}
.grille{display:grid;gap:var(--e-3)}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.pile{display:flex;flex-direction:column;gap:var(--e-3)}
.ligne{display:flex;gap:.8rem;align-items:center;flex-wrap:wrap}
.entre{justify-content:space-between}
.sep{border:0;border-top:1px solid var(--ligne);margin:1rem 0}
/* indicateurs */
.kpi{padding:var(--e-3)}
.kpi .lib{font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--sourdine)}
.kpi .val{font-family:var(--serif);font-size:2rem;font-weight:600;line-height:1.1;margin-top:.25rem}
.kpi .val.rouge{color:var(--rouge)}.kpi .val.vert{color:var(--vert)}
/* badges */
.badge{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.74rem;font-weight:500;letter-spacing:.02em;border:1px solid transparent;white-space:nowrap}
.b-neutre{background:var(--papier-2);border-color:var(--ligne-forte);color:var(--graphite)}
.b-bronze{background:var(--bronze-fond);color:var(--bronze);border-color:#E2CFAE}
.b-vert{background:var(--vert-fond);color:var(--vert);border-color:#C6DCCB}
.b-ambre{background:var(--ambre-fond);color:var(--ambre);border-color:#EBD3A6}
.b-rouge{background:var(--rouge-fond);color:var(--rouge);border-color:#EBBFB6}
.b-noir{background:var(--noir);color:#fff}
.b-confirmer{background:transparent;border:1px dashed var(--bronze);color:var(--bronze);font-style:italic}
/* comptes à rebours */
.compte{display:flex;align-items:center;gap:.9rem;padding:.7rem .2rem;border-top:1px solid var(--ligne)}
.compte:first-child{border-top:0}
.compte .j{min-width:74px;text-align:center;font-family:var(--serif);font-weight:600;font-size:1.5rem;line-height:1;padding:.45rem .3rem;border-radius:var(--r-s);background:var(--papier-2);color:var(--graphite)}
.compte .j small{display:block;font-family:var(--sans);font-size:.62rem;letter-spacing:.1em;text-transform:uppercase;font-weight:500;margin-top:.2rem;opacity:.85}
.compte.calme .j{background:var(--papier-2)}
.compte.attention .j{background:var(--bronze-fond);color:var(--bronze)}
.compte.urgent .j{background:var(--ambre-fond);color:var(--ambre)}
.compte.critique .j{background:var(--rouge-fond);color:var(--rouge)}
.compte.depasse .j{background:var(--noir);color:#fff}
.compte.realisee .j{background:var(--vert-fond);color:var(--vert)}
.compte .t b{display:block;font-weight:500}
.compte .t span{color:var(--sourdine);font-size:.84rem}
/* alertes */
.alerte{display:flex;gap:.7rem;align-items:flex-start;padding:.6rem .7rem;border-radius:var(--r-s);border-left:3px solid var(--ligne-forte);background:var(--papier-2);font-size:.9rem}
.alerte.rouge{border-color:var(--rouge);background:var(--rouge-fond)}.alerte.ambre{border-color:var(--ambre);background:var(--ambre-fond)}.alerte.noir{border-color:var(--noir)}
.alerte .quoi b{font-weight:600}
.alerte .ico{flex:none;width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:.74rem;font-weight:700;font-family:var(--serif);background:var(--ligne-forte);color:#fff;margin-top:.05rem}
.alerte.rouge .ico{background:var(--rouge)}.alerte.ambre .ico{background:var(--ambre)}.alerte.noir .ico{background:var(--noir)}
.alerte .quoi{flex:1;min-width:0}
.alerte .agir{margin-left:auto;align-self:center;min-height:40px;white-space:nowrap}
.mur-tete{display:flex;align-items:center;gap:.35rem;flex-wrap:wrap;margin-bottom:.6rem}
.mur-tete h3{margin:0 .3rem 0 0}
.pastille{display:inline-grid;place-items:center;min-width:26px;height:26px;padding:0 .45rem;border-radius:999px;font-size:.78rem;font-weight:600;font-variant-numeric:tabular-nums;color:#fff}
.pastille.noir{background:var(--noir)}.pastille.rouge{background:var(--rouge)}.pastille.ambre{background:var(--ambre)}
.btn.coche{min-width:44px;min-height:44px;justify-content:center;font-size:1.05rem}
.tb-grille{display:grid;gap:1rem;grid-template-columns:2fr 1fr}
/* état vide composable : titre, phrase, action */
.etat-vide{display:flex;flex-direction:column;align-items:center;gap:.35rem;text-align:center;padding:1.4rem 1rem;color:var(--sourdine);border:1px dashed var(--ligne-forte);border-radius:var(--r);background:var(--papier-2)}
.etat-vide.compact{flex-direction:row;align-items:baseline;text-align:left;flex-wrap:wrap;gap:var(--e-2);padding:var(--e-2) var(--e-3)}
.etat-vide.compact b{font-size:var(--t-2)}
.etat-vide.compact p{font-size:var(--t-1);color:var(--c-texte-3);max-width:none}
.etat-vide.compact .btn{margin-top:0}
.etat-vide img.visuel{width:72px;height:54px;object-fit:cover;border-radius:6px;flex:none;align-self:center;opacity:.92;border:1px solid var(--ligne)}
.etat-vide b{font-family:var(--serif);font-weight:600;font-size:1.12rem;color:var(--encre)}
.etat-vide p{margin:0;font-size:.88rem;max-width:36ch}
.etat-vide .btn{margin-top:.5rem;min-height:44px}
.carte.vide .etat-vide{border:0;background:transparent;padding-top:.2rem}
.tab td .etat-vide{margin:.3rem 0}.tab tr:hover td .etat-vide{background:var(--papier-2)}
/* Ma journée : lignes-cartes tactiles */
.lj{display:flex;align-items:center;gap:.7rem;padding:.55rem .3rem;min-height:48px;border-top:1px solid var(--ligne);color:inherit;text-decoration:none}
.carte .lj:first-of-type,.carte p+.lj,.carte h3+.lj{border-top:0}
.lj:hover{background:var(--papier-2);text-decoration:none}
.lj-t{flex:1;min-width:0}.lj-t b{display:block;font-weight:500;line-height:1.3}.lj-t span{display:block;font-size:.82rem;color:var(--sourdine)}
.lj-d{display:flex;align-items:center;gap:.4rem;white-space:nowrap}
.lj::after{content:"›";color:var(--bronze-clair);font-size:1.4rem;line-height:1;font-family:var(--serif)}
.carte h3 .pastille{vertical-align:middle;margin-left:.25rem}
/* axe de dates (B15) */
.axe{position:relative;height:74px;margin:.4rem .6rem 0}
.axe-ligne{position:absolute;left:0;right:0;top:30px;height:2px;background:var(--ligne-forte)}
.axe-pt{position:absolute;top:22px;transform:translateX(-50%);text-align:center;font-size:.68rem;line-height:1.15;color:var(--sourdine);width:76px}
.axe-pt i{display:block;width:14px;height:14px;border-radius:50%;margin:0 auto 4px;background:var(--graphite);border:2px solid var(--papier)}
.axe-pt b{display:block;color:var(--encre);font-weight:600}
.axe-pt.attention i{background:var(--bronze)}.axe-pt.urgent i{background:var(--ambre)}.axe-pt.critique i{background:var(--rouge)}.axe-pt.depasse i{background:var(--noir)}.axe-pt.realisee i{background:var(--vert)}
.axe-auj{position:absolute;top:8px;bottom:14px;width:2px;background:var(--bronze);transform:translateX(-50%)}
.axe-auj span{position:absolute;top:-8px;left:5px;font-size:.62rem;letter-spacing:.08em;text-transform:uppercase;color:var(--bronze);white-space:nowrap}
@media (max-width:620px){.axe-pt span{display:none}.axe-pt{width:44px}}
/* branches de statut */
.branches{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.6rem}
.branche{border:1px solid var(--ligne);border-radius:var(--r-s);padding:.6rem .7rem;background:var(--papier-2)}
.branche .lib{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--sourdine)}
.branche .val{font-weight:500;margin-top:.15rem}
.etapes{display:flex;gap:.3rem;flex-wrap:wrap;margin:.6rem 0}
.etape{flex:1;min-width:110px;text-align:center;font-size:.76rem;padding:.4rem .3rem;border:1px solid var(--ligne);border-radius:var(--r-s);color:var(--sourdine);background:var(--papier)}
.etape.fait{background:var(--vert-fond);border-color:#C6DCCB;color:var(--vert)}
.etape.actuel{background:var(--noir);border-color:var(--noir);color:#fff;font-weight:500}
/* tableaux */
table.tab{width:100%;border-collapse:collapse;font-size:var(--t-2)}
.tab th{text-align:left;font-weight:600;font-size:.76rem;letter-spacing:.08em;text-transform:uppercase;color:var(--sourdine);padding:.5rem .6rem;border-bottom:1px solid var(--ligne-forte)}
.tab td{padding:.55rem .6rem;border-bottom:1px solid var(--ligne);vertical-align:middle}
.tab tr:hover td{background:var(--papier-2)}
.tab td.num,.tab th.num{text-align:right;font-variant-numeric:tabular-nums}
/* Lot D — tri par colonne : en-têtes cliquables + indicateur */
.tab th.triable{cursor:pointer;user-select:none}
.tab th.triable:hover{color:var(--c-texte-2)}
.tab th.triable::after{content:'\2195';opacity:.35;margin-left:.3em;font-size:.9em}
.tab th.triable[data-tri=asc]::after{content:'\2191';opacity:1}
.tab th.triable[data-tri=desc]::after{content:'\2193';opacity:1}
.tab td.vert{color:var(--vert);font-weight:600}
/* Lot D — en-têtes collants : les tables enveloppées défilent dans leur cadre, l'en-tête reste visible */
.tab-wrap{overflow:auto;max-height:72vh}
.tab-wrap table.tab thead th{position:sticky;top:0;z-index:1;background:var(--c-surface);box-shadow:inset 0 -1px var(--c-bord-fort)}
.colonnes-vides{margin:0 0 .5rem}
[hidden]{display:none!important}   /* l'attribut hidden doit gagner sur toute classe display:flex/grid (palette, tiroirs) */
/* Lot E — palette de commandes (Cmd+K) */
.palette-ov{position:fixed;inset:0;background:rgba(20,19,17,.45);display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;z-index:50}
.palette{background:var(--c-surface);border:1px solid var(--c-bord-fort);border-radius:var(--rayon);box-shadow:var(--ombre-2);width:min(560px,92vw);overflow:hidden}
.palette-q{width:100%;border:0;border-bottom:1px solid var(--c-bord);padding:.9rem 1rem;font-size:var(--t-3);background:transparent;color:var(--c-texte)}
.palette-q:focus{outline:none}
.palette-res{list-style:none;margin:0;padding:.3rem;max-height:50vh;overflow:auto}
.palette-res li{padding:.5rem .7rem;border-radius:var(--rayon-s);cursor:pointer;font-size:var(--t-2);color:var(--c-texte)}
.palette-res li.actif{background:var(--c-accent-fond)}
/* Lot F — carte d'opération : frise des jalons, tâche en tête, tags en grille de 5 avec pastille */
.frise{display:flex;gap:.25rem;margin:.7rem 0 .5rem}
.frise .jalon{flex:1;text-align:center;font-size:var(--t-1);color:var(--c-texte-3)}
.frise .jalon .pt{display:block;height:6px;border-radius:3px;background:var(--c-bord-fort);margin-bottom:.25rem}
.frise .jalon.ok{color:var(--c-texte);font-weight:600}
.frise .jalon.ok .pt{background:var(--c-ok)}
.tache-tete{background:var(--c-accent-fond);border-radius:var(--rayon-s);padding:.45rem .6rem;font-size:var(--t-2);margin-bottom:.2rem}
.tache-tete .lib{color:var(--c-texte-3);font-size:var(--t-1);text-transform:uppercase;letter-spacing:.08em;margin-right:.4rem}
.tags-grille{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.4rem;margin:.3rem 0}
.tags-grille .tag-etat{border:1px solid var(--c-bord);border-radius:var(--rayon-s);padding:.3rem .5rem .3rem .4rem;position:relative}
.tags-grille .tag-etat .lib{display:block;color:var(--c-texte-3);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}
.tags-grille .tag-etat .val{display:block;color:var(--c-texte);margin-top:.1rem;font-size:var(--t-1)}
.tags-grille .tag-etat::before{content:'';position:absolute;top:.45rem;right:.4rem;width:7px;height:7px;border-radius:50%;background:var(--c-bord-fort)}
.tags-grille .tag-etat.e-attente::before{background:var(--c-attention)}
.tags-grille .tag-etat.e-ok::before{background:var(--c-ok)}
@media (max-width:620px){.tags-grille{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* tableau des ventes : saisie inline, retour d'état sur la ligne */
.prix-inp{width:118px;text-align:right;padding:.35rem .5rem;font-weight:600;font-variant-numeric:tabular-nums}
.statut-sel{padding:.35rem .4rem;width:auto}
tr.lot-vert td.prix,tr.lot-vert td.prix input{color:var(--vert)} tr.lot-vert td.prix input{border-color:#C6DCCB;background:var(--vert-fond)} tr.lot-exclu td{opacity:.55}
td.prix{position:relative;white-space:nowrap}
td.prix::after{display:inline-block;width:1.1em;margin-left:.3rem;font-size:.8rem;vertical-align:middle;text-align:left;content:""}
tr.enregistrement td.prix::after{content:"…";color:var(--sourdine)}
tr.enregistre td.prix::after{content:"✓";color:var(--vert);font-weight:700}
tr.echec td.prix::after{content:"!";color:var(--rouge);font-weight:700}
tr.echec td.prix input{border-color:var(--rouge);background:var(--rouge-fond)}
/* formulaires */
.champ{display:flex;flex-direction:column;gap:.3rem;margin-bottom:.9rem}
.champ label{font-size:.8rem;font-weight:500;color:var(--graphite)}
.champ .aide{font-size:.78rem;color:var(--sourdine)}
input[type=text],input[type=email],input[type=password],input[type=number],input[type=date],select,textarea{
  font:inherit;padding:.55rem .7rem;border:1px solid var(--ligne-forte);border-radius:var(--r-s);background:#fff;color:var(--encre);width:100%}
input:focus,select:focus,textarea:focus{outline:2px solid var(--bronze-clair);outline-offset:1px;border-color:var(--bronze)}
textarea{min-height:110px;resize:vertical}
.form-grille{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 1.2rem}
.form-grille .large{grid-column:1/-1}
.btn{display:inline-flex;align-items:center;gap:.4rem;font:inherit;font-size:.9rem;font-weight:500;padding:.55rem 1rem;border-radius:var(--r-s);border:1px solid var(--ligne-forte);background:var(--papier);color:var(--encre);cursor:pointer;text-decoration:none;line-height:1.2}
.btn:hover{background:var(--papier-2);text-decoration:none}
.btn.primaire{background:var(--noir);border-color:var(--noir);color:#fff}.btn.primaire:hover{background:#2c2a26}
.btn.bronze{background:var(--bronze);border-color:var(--bronze);color:#fff}
.btn.vert{background:var(--vert);border-color:var(--vert);color:#fff}
.btn.rouge{background:var(--rouge);border-color:var(--rouge);color:#fff}
.btn.petit{padding:.3rem .65rem;font-size:.8rem}
.btn.lien{border:0;background:transparent;color:var(--bronze);padding:.2rem .3rem}
.actions{display:flex;gap:.6rem;flex-wrap:wrap;align-items:center}
form.inline{display:inline}
.btn.pleine{width:100%;justify-content:center;min-height:48px}
.devis-form{gap:.4rem}.montant-inp{width:150px;font-variant-numeric:tabular-nums}
/* onglets */
.onglets{display:flex;gap:.2rem;border-bottom:1px solid var(--ligne-forte);margin:1rem 0 1.2rem;overflow-x:auto}
.onglets a{padding:.6rem .9rem;color:var(--sourdine);border-bottom:2px solid transparent;white-space:nowrap;font-size:.92rem}
.onglets a:hover{color:var(--encre);text-decoration:none}
.onglets a.actif{color:var(--encre);border-bottom-color:var(--bronze);font-weight:500}
.onglets-plus{margin:-.9rem 0 1.2rem}.onglets-plus>summary{cursor:pointer;list-style:none;display:inline-flex;gap:.5rem;align-items:center;padding:.35rem .9rem;font-size:.86rem;color:var(--sourdine);border-radius:var(--r-s)}
.onglets-plus>summary::-webkit-details-marker{display:none}.onglets-plus>summary>span:first-child::after{content:' ▾'}.onglets-plus[open]>summary>span:first-child::after{content:' ▴'}.onglets-plus>summary:hover{color:var(--encre);background:var(--fond-2,rgba(0,0,0,.03))}
.onglets.secondaires{margin:.2rem 0 0;border-bottom:1px dashed var(--ligne-forte)}.onglets.secondaires a{font-size:.88rem;padding:.45rem .8rem}
/* messages */
.flash{padding:.6rem .9rem;border-radius:var(--r-s);margin-bottom:.8rem;font-size:.9rem;border:1px solid}
.flash.success{background:var(--vert-fond);border-color:#C6DCCB;color:var(--vert)}
.flash.error{background:var(--rouge-fond);border-color:#EBBFB6;color:var(--rouge)}
.flash.warning,.flash.info{background:var(--ambre-fond);border-color:#EBD3A6;color:var(--ambre)}
/* fil */
.fil-liste{list-style:none;margin:0;padding:0}
.fil-liste li{display:grid;grid-template-columns:120px 1fr;gap:.8rem;padding:.55rem 0;border-top:1px solid var(--ligne);font-size:.9rem}
.fil-liste li:first-child{border-top:0}
.fil-liste .quand{color:var(--sourdine);font-size:.8rem;padding-top:.15rem}
.fil-liste .type{font-weight:500}
/* arbre documents */
.arbre{list-style:none;padding-left:0;margin:0}
.arbre ul{list-style:none;padding-left:1.1rem;margin:0;border-left:1px dashed var(--ligne-forte)}
.arbre li{padding:.18rem 0}
.arbre .dos{display:flex;gap:.5rem;align-items:baseline}
.arbre .dos .lib{font-weight:500}
.arbre .dos .code{font-family:var(--serif);color:var(--sourdine)}
.arbre .n1>.dos .lib{font-size:1.02rem;font-weight:600}
.doc{display:flex;gap:.6rem;align-items:center;padding:.25rem .4rem;margin-left:2.6rem;border-radius:var(--r-s);background:var(--papier-2);font-size:.86rem;margin-top:.15rem}
.doc.caduc{opacity:.55;text-decoration:line-through}
/* D01 : vue documents en tuiles façon Drive */
.fil-drive{font-size:.9rem;margin-bottom:.6rem;color:var(--sourdine)}
.fil-drive a{color:var(--bronze)}.fil-drive .sep{color:var(--ligne-forte);margin:0 .1rem}.fil-drive b{color:var(--encre)}
.tuiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.7rem;margin:.4rem 0 .2rem}
.tuile{display:flex;flex-direction:column;gap:.35rem;padding:.75rem .8rem;border:1px solid var(--ligne);border-radius:var(--r);background:var(--papier-2);text-decoration:none;color:var(--encre);transition:.12s}
.tuile:hover{background:var(--bronze-fond);border-color:var(--ligne-forte);text-decoration:none;transform:translateY(-1px)}
.tuile.vide{opacity:.72}
.tuile .ico-dossier{width:30px;height:24px;border-radius:3px 3px 4px 4px;background:var(--bronze-clair);position:relative}
.tuile .ico-dossier::before{content:"";position:absolute;top:-5px;left:0;width:13px;height:6px;border-radius:3px 3px 0 0;background:var(--bronze-clair)}
.tuile.vide .ico-dossier,.tuile.vide .ico-dossier::before{background:var(--ligne-forte)}
.tuile .nom{font-weight:600;font-size:.92rem;line-height:1.25}
.tuile .meta{font-size:.72rem;color:var(--sourdine)}
.tuile .meta .code{font-family:var(--serif)}
.pastille-vide{color:var(--ambre)}
/* dépôt */
.zone-depot{border:2px dashed var(--ligne-forte);border-radius:var(--r);padding:2rem;text-align:center;background:var(--papier-2);transition:.15s}
.zone-depot.survol{border-color:var(--bronze);background:var(--bronze-fond)}
.zone-depot input{display:none}
.zone-depot::before{content:"";display:block;width:36px;height:36px;margin:0 auto .5rem;border-radius:50%;border:1.5px solid var(--bronze-clair);background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2396774A' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 14.899A7 7 0 1 1 15.71 8h1.79a4.5 4.5 0 0 1 2.5 8.242'/%3E%3Cpath d='M12 12v9'/%3E%3Cpath d='m16 16-4-4-4 4'/%3E%3C/svg%3E") center/18px no-repeat}
.zone-depot p{margin:.2rem 0}
.progres{height:8px;background:var(--ligne);border-radius:999px;overflow:hidden}
.progres>div{height:100%;background:var(--bronze);width:0;transition:width .2s}
.fichier-ligne{display:grid;grid-template-columns:1fr 100px 80px;gap:.8rem;align-items:center;padding:.5rem 0;border-top:1px solid var(--ligne);font-size:.88rem}
/* connexion */
.connexion{min-height:100vh;display:grid;grid-template-columns:1.1fr 1fr}
.connexion .visuel{background:var(--noir) center/cover no-repeat;position:relative;min-height:320px}
.connexion .visuel::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,19,17,.15),rgba(20,19,17,.75))}
.connexion .visuel .legende{position:absolute;left:2.2rem;bottom:2rem;color:var(--ivoire);z-index:1;max-width:420px}
.connexion .visuel .legende h1{font-size:2.6rem;color:#fff;font-weight:500}
.connexion .panneau{display:flex;align-items:center;justify-content:center;padding:2rem}
.connexion .boite{width:100%;max-width:380px}
.placeholder-tag{font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:var(--bronze-clair);border:1px dashed var(--bronze-clair);border-radius:3px;padding:.1rem .4rem}
/* portail */
.portail-shell{max-width:980px;margin:0 auto;padding:1.2rem 1.4rem 3rem}
.portail-haut{display:flex;align-items:center;gap:1rem;padding:.6rem 0 1.2rem;border-bottom:1px solid var(--ligne);margin-bottom:1.4rem}
.hero{border-radius:var(--r);overflow:hidden;background:var(--noir) center/cover;min-height:150px;position:relative;color:#fff;display:flex;align-items:flex-end;padding:1.2rem 1.4rem}
.hero::before{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(20,19,17,.8),rgba(20,19,17,.1))}
.hero>*{position:relative}
.vide{text-align:center;padding:2.2rem 1rem;color:var(--sourdine)}
.vide img{max-width:280px;border-radius:var(--r);opacity:.9;margin-bottom:.8rem}
.illus{height:110px;border-radius:var(--r);background:var(--noir) center/cover;margin-bottom:1rem;position:relative}
.illus::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(20,19,17,.55),transparent);border-radius:var(--r)}
/* pages d'erreur */
.erreur-page{max-width:560px;margin:8vh auto;text-align:center}
.erreur-page img{max-width:360px;border-radius:var(--r);margin-bottom:1rem}
/* mobile */
.burger{display:none}
@media (max-width:980px){
  .shell{grid-template-columns:1fr}
  .nav{position:fixed;top:0;bottom:0;left:-260px;width:250px;z-index:20;transition:left .2s;height:100vh;height:100dvh;overflow-y:auto;-webkit-overflow-scrolling:touch}
  .nav.ouvert{left:0}
  .burger{display:inline-flex}
  .g3,.g4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .branches{grid-template-columns:repeat(2,minmax(0,1fr))}
  .form-grille{grid-template-columns:1fr}
  .connexion{grid-template-columns:1fr}
  .connexion .visuel{min-height:220px}
  .contenu{padding:1rem}
  .haut{padding:.8rem 1rem 0}
  .tb-grille{grid-template-columns:1fr}
  .tb-alertes{order:-1}
}
@media (max-width:620px){
  .g2,.g3,.g4{grid-template-columns:1fr}
  /* tactile : colonnes secondaires masquées (.m), cibles de 44 px */
  .tab .m{display:none}
  .btn,.btn.petit{min-height:44px}
  .btn.lien{min-height:0}
  input[type=text],input[type=email],input[type=number],input[type=date],select,.prix-inp,.statut-sel{min-height:44px;font-size:16px}
  .prix-inp{width:100%;min-width:96px}
  .actions .btn{flex:1 1 auto;justify-content:center}
  .nav.ouvert{box-shadow:0 0 0 100vmax rgba(20,19,17,.45)}
  .devis-form{flex-direction:column;align-items:stretch}.devis-form .montant-inp{width:100%}.devis-form .btn{width:100%;justify-content:center;min-height:48px}
  .fil-liste li{grid-template-columns:1fr}
  .fichier-ligne{grid-template-columns:1fr 70px 60px}
  h1{font-size:1.6rem}
}

/* Connexion par code à 6 chiffres : UN champ standard, visible, sans habillage par-dessus (un pseudo-élément absolu
   posé sur le champ masquait la saisie — corrigé le 2026-09-03). L'espacement des chiffres est purement typographique. */
.code-cases{max-width:352px}
.code-6{display:block;width:100%;height:56px;padding:0 .6rem 0 1rem;font-family:ui-monospace,'DejaVu Sans Mono',Menlo,monospace;font-size:1.7rem;font-weight:600;letter-spacing:.45em;text-align:center;
  border:1px solid var(--ligne-forte);border-radius:var(--r-s);background:#fff;color:var(--encre);caret-color:var(--bronze)}
.code-6::placeholder{color:var(--ligne-forte);letter-spacing:.45em}
.code-6:focus{outline:2px solid var(--bronze-clair);outline-offset:1px;border-color:var(--bronze)}
.code-form.en-erreur .code-6{border-color:var(--rouge);background:var(--rouge-fond)}
.code-etat{margin:.5rem 0 0;font-size:.84rem;color:var(--sourdine);min-height:1.3em}
.code-etat.rouge{color:var(--rouge);font-weight:500}
.code-jauge{display:flex;gap:4px;margin-top:.6rem}
.code-jauge span{flex:1;height:4px;border-radius:2px;background:var(--vert)}
.code-jauge span.perdue{background:var(--rouge-fond);border:1px solid #EBBFB6}
.code-renvoi{display:flex;align-items:center;gap:.7rem;margin-top:.9rem;flex-wrap:wrap}
.code-renvoi .btn{min-height:48px}
.code-bloque .btn{display:inline-flex;margin-top:.4rem}
/* C2 — Tâches à réaliser : sections par rubrique */
.carte.rubrique{scroll-margin-top:1rem}.carte.rubrique.vide{opacity:.75}.carte.rubrique.vide h3{color:var(--sourdine)}
.tab.compacte td,.tab.compacte th{padding:.3rem .5rem;font-size:.88rem}tr.urgente td:first-child{border-left:3px solid var(--rouge)}
.badge.b-vide{background:transparent;border:1px solid var(--ligne-forte);color:var(--sourdine)}.saisie-ligne input,.saisie-ligne select{min-height:34px}
/* C1 — priorité des opérations */
tr.op-ligne{cursor:grab}tr.op-ligne .poignee{color:var(--muted,#999);cursor:grab;user-select:none}tr.op-ligne.en-glisse{opacity:.45;background:var(--bronze-clair,#f0e9df)}tr.op-ligne.en-glisse *{cursor:grabbing}td.rang{white-space:nowrap}td.rang .fleches{display:inline-flex;gap:2px;margin-left:.3rem;vertical-align:middle}td.rang .fleches .btn.petit{padding:0 .35rem;min-height:26px;line-height:1}
/* C6 — fiche projet : groupes de cases à cocher */
.champ.cases ul{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem .9rem}.champ.cases li label{display:inline-flex;gap:.35rem;align-items:center;font-weight:400;font-size:.9rem}.champ.cases input[type=checkbox]{width:auto;min-height:0}

/* P12 — feu Go/No-Go du lancement de la prochaine opération */
.feu-go{border-left:5px solid var(--sourdine)}
.feu-go.feu-go{border-left-color:var(--vert);background:var(--vert-fond)}
.feu-go.feu-attendre{border-left-color:var(--ambre);background:var(--ambre-fond)}
.feu-go.feu-no_go{border-left-color:var(--rouge);background:var(--rouge-fond)}
.feu-go.feu-incomplet,.feu-go.feu-aucune{border-left-color:var(--bronze-clair);background:var(--bronze-fond)}
.feu-pastille{width:20px;height:20px;border-radius:50%;flex:0 0 auto;background:var(--sourdine);box-shadow:0 0 0 3px #fff,0 0 0 4px rgba(0,0,0,.06)}
.feu-pastille.feu-go{background:var(--vert)}
.feu-pastille.feu-attendre{background:var(--ambre)}
.feu-pastille.feu-no_go{background:var(--rouge)}
.feu-pastille.feu-incomplet,.feu-pastille.feu-aucune{background:var(--bronze-clair)}

/* P02 / P03 — bandeaux de trésorerie datés */
.bandeau-vert{background:var(--vert-fond);border-left:4px solid var(--vert);color:var(--vert);padding:.55rem .8rem;border-radius:4px;margin:.6rem 0;font-size:.9rem}
.bandeau-rouge-doux{background:var(--rouge-fond);border-left:4px solid var(--rouge);color:var(--rouge);padding:.55rem .8rem;border-radius:4px;margin:.6rem 0;font-size:.9rem}

/* B01 — bilan en grille A–E, tableau des ventes à droite */
.bilan-cols{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
@media (max-width:900px){.bilan-cols{grid-template-columns:1fr}}
.sel-urgence{font-size:.85rem;padding:.15rem .3rem;border-radius:6px;border:1px solid var(--bord,#ddd)}.sel-urgence.u-forte{color:var(--rouge);border-color:var(--rouge);font-weight:600}.sel-urgence.u-moyenne{color:var(--ambre,#b8860b)}

/* #33 R4/S9 — Responsive mobile & tablette : navigation latérale repliable et grands tableaux scrollables.
   Complète les points d'arrêt existants (le tiroir de menu à 980px, les cibles tactiles à 620px). */
@media (min-width:981px) and (max-width:1180px){
  /* petit portable / tablette paysage : colonne de menu resserrée, plus de place pour les tableaux */
  .shell{grid-template-columns:208px 1fr}
  .contenu{padding:1.1rem 1.2rem 2.5rem}
}
@media (max-width:980px){
  /* menu en tiroir : un voile assombrit la page dès la tablette (pas seulement sous 620px) pour signaler l'ouverture */
  .nav.ouvert{box-shadow:0 0 0 100vmax rgba(20,19,17,.45)}
  .bilan-cols{grid-template-columns:1fr}
}
/* conteneurs de tableaux : défilement horizontal fluide plutôt qu'un écrasement des colonnes */
.carte,.tab-wrap{-webkit-overflow-scrolling:touch}
/* Mobile : une table large ne doit jamais élargir la page — les enfants de grille/pile peuvent rétrécir, la carte défile en interne */
.grille>*,.pile>*,.contenu>*,.bilan-cols>*,[class$='-cols']>*{min-width:0}.contenu,.shell{min-width:0}.carte{max-width:100%}
@media (max-width:620px){.bandeau-sandbox{flex-wrap:wrap;gap:.3rem .8rem;padding:.45rem 1rem;line-height:1.3}.bandeau-sandbox a{margin-left:0}}
@media (max-width:620px){.form-grille,[style*="min-width:380px"]{min-width:0!important}}

@media (max-width:620px){
  /* au téléphone, un grand tableau conserve des colonnes lisibles et défile DANS sa carte (les colonnes .m sont déjà masquées) */
  table.tab{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;min-width:0}   /* le tableau défile lui-même, il n'élargit jamais la page */
  /* onglets et fil d'en-tête au ras des bords pour gagner de la largeur */
  .onglets{margin-left:-1rem;margin-right:-1rem;padding:0 1rem;overflow-x:auto;flex-wrap:nowrap;white-space:nowrap;scrollbar-width:thin}   /* la barre d'onglets défile au lieu d'élargir la page */
  .titre-page{gap:.4rem}
  .haut{padding-top:.6rem}
}

/* #45 — Densité d'affichage réglable (confort par défaut / compact), mémorisée */
.densite{display:inline-flex;border:1px solid var(--ligne-forte);border-radius:var(--r-s);overflow:hidden;background:var(--papier)}
.densite .densite-opt{font:inherit;font-size:.78rem;line-height:1;cursor:pointer;border:0;background:transparent;color:var(--graphite);padding:.35rem .6rem}
.densite .densite-opt+.densite-opt{border-left:1px solid var(--ligne-forte)}
.densite .densite-opt:hover{background:var(--papier-2)}
.densite .densite-opt[aria-pressed=true]{background:var(--noir);color:#fff}
/* Mode compact : espacements et titres resserrés, cibles tactiles préservées (>=44px) */
body.dense{line-height:1.42}
body.dense .contenu{padding-top:.8rem}
body.dense .titre-page{margin:.2rem 0 .8rem}
body.dense h1{font-size:1.7rem}body.dense h2{font-size:1.28rem}body.dense h3{font-size:1.05rem}
body.dense .carte{padding:.75rem .85rem}
body.dense .kpi{padding:.7rem .85rem}body.dense .kpi .val{font-size:1.7rem}
body.dense .grille,body.dense .pile{gap:.7rem}
body.dense .tab th,body.dense .tab td{padding:.32rem .5rem}
body.dense .lj{min-height:44px;padding:.4rem .3rem}
body.dense .compte{padding:.5rem .2rem}
body.dense .alerte{padding:.45rem .6rem}

/* #46 — Raccourcis clavier : bouton d'aide et modale de rappel */
.aide-btn{font-weight:700}
.modal-raccourcis{display:none;position:fixed;inset:0;z-index:60;background:rgba(20,19,17,.5);align-items:center;justify-content:center;padding:1rem}
.modal-raccourcis.ouvert{display:flex}
.modal-raccourcis .mr-boite{background:var(--papier);border:1px solid var(--ligne-forte);border-radius:var(--r);box-shadow:var(--ombre);max-width:440px;width:100%;padding:1.1rem 1.2rem;max-height:90vh;overflow:auto}
.modal-raccourcis .mr-tete{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin-bottom:.6rem}
.modal-raccourcis .mr-tete h3{margin:0}
.modal-raccourcis .mr-liste{margin:0}
.modal-raccourcis .mr-liste>div{display:flex;align-items:center;gap:.8rem;padding:.4rem 0;border-top:1px solid var(--ligne)}
.modal-raccourcis .mr-liste>div:first-child{border-top:0}
.modal-raccourcis dt{flex:0 0 90px;display:flex;gap:.25rem}
.modal-raccourcis dd{margin:0;font-size:.9rem;color:var(--graphite)}
.modal-raccourcis kbd{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8rem;background:var(--papier-2);border:1px solid var(--ligne-forte);border-bottom-width:2px;border-radius:4px;padding:.1rem .4rem;color:var(--encre)}

/* Vague 2 — bibliothèque data-viz maison */
.mm-chart{width:100%;min-height:1em}
.mm-svg{display:block;overflow:visible}
.mm-chart.spark{display:inline-block;width:80px;height:26px;vertical-align:middle}
.chart-legende{display:flex;gap:1rem;font-size:.75rem;color:var(--c-texte-3,var(--sourdine));margin-top:.3rem;flex-wrap:wrap}
.chart-legende .lg{display:inline-flex;align-items:center;gap:.3rem}
.chart-legende .sw{width:.7rem;height:.7rem;border-radius:2px;display:inline-block}

/* Vague 1 — anneau de focus clavier cohérent (accessibilité) */
:where(a,button,summary,[tabindex],.item,.tab th.triable,.palette-res li):focus-visible{outline:2px solid var(--bronze-clair);outline-offset:2px;border-radius:3px}

/* Fondations a11y : respect de la préférence « moins d'animations » */
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important}}
/* Impression : la page utile seulement (bilan, fiche, tableaux), sans menu ni bandeau ni boutons */
@media print{.nav,.bandeau-sandbox,.bandeau-live,.burger,.btn,button,.palette-ov,.onglets,.titre-page .actions{display:none!important}.shell{display:block}.main,.contenu{max-width:none;padding:0}.carte{box-shadow:none;border-color:#bbb;break-inside:avoid;overflow:visible}body{background:#fff;color:#000}a{color:inherit;text-decoration:none}.tab-wrap{max-height:none;overflow:visible}table.tab thead th{position:static}}
/* RETOURS-CATHERINE 26/10 — la Roadmap dans l'ERP : tableau des tâches = la feuille (7 colonnes), page /roadmap */
.nav-ops{margin:-.4rem 0 .8rem;gap:.5rem}
.sep-matrice{font-family:var(--serif);font-weight:600;color:var(--sourdine)}
.carte.rubrique.feuille>summary{background:var(--papier-2);margin:calc(-1 * var(--e-3)) calc(-1 * var(--e-3)) .4rem;padding:.55rem var(--e-3);border-bottom:1px solid var(--ligne);border-radius:var(--r) var(--r) 0 0}
.defile{overflow-x:auto;max-width:100%}
.tab.roadmap{width:100%;min-width:860px;table-layout:fixed}
.tab.roadmap th:nth-child(1){width:29%}.tab.roadmap th:nth-child(2){width:10%}.tab.roadmap th:nth-child(3){width:11%}.tab.roadmap th:nth-child(4),.tab.roadmap th:nth-child(5){width:9%}.tab.roadmap th:nth-child(6){width:20%}.tab.roadmap th:nth-child(7){width:12%}
.tab.roadmap td{vertical-align:top;font-size:.9rem;overflow-wrap:anywhere}
.tab.roadmap form.inline{display:block}
.tab.roadmap tr.urgente td.cel-titre .texte{color:var(--rouge);font-weight:600}
.tab.roadmap tr.close td{opacity:.5}.tab.roadmap tr.close td.cel-statut{opacity:.8}
.tab.roadmap td.retard,.tab.roadmap b.retard,b.retard{color:var(--rouge);font-weight:600}
.tab.roadmap input[type=date]{font-size:.82rem;padding:.15rem .2rem;width:100%;box-sizing:border-box;min-width:0}
.tab.roadmap select{font-size:.85rem;padding:.15rem .2rem;width:100%;box-sizing:border-box;min-width:0}
.tab.roadmap .pile-edition input[type=text]{width:100%;box-sizing:border-box}
.sel-urgence.u-forte{background:var(--rouge);color:#fff;border-color:var(--rouge)}
.sel-statut.s-clos{color:var(--sourdine)}.sel-statut.s-a_relancer{color:var(--ambre);border-color:var(--ambre)}
.cel-titre{position:relative}.cel-titre .crayon{opacity:.45;margin-left:.2rem}.cel-titre:hover .crayon,.cel-titre .crayon:focus{opacity:1}
.cel-titre .pile-edition{display:none;flex-direction:column;gap:.3rem;margin-top:.3rem}
.cel-titre.edition .texte,.cel-titre.edition .crayon{display:none}.cel-titre.edition .pile-edition{display:flex}
.cel-action .note{margin:0 0 .2rem;line-height:1.35}.cel-action .note b{font-variant-numeric:tabular-nums}
.cel-action .ajout-note{display:flex;gap:.25rem;margin-top:.3rem;flex-wrap:wrap}.cel-action .ajout-note input[type=text]{flex:1;min-width:8rem;font-size:.85rem;padding:.15rem .3rem}
.cel-statut .relance{margin-top:.25rem;display:flex;gap:.3rem;align-items:center;flex-wrap:wrap}
.filtres-roadmap{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap;margin:0 0 .9rem}.filtres-roadmap .badge{font-size:.86rem;padding:.3rem .8rem}.filtres-roadmap .badge.actif{font-weight:600}
.section-roadmap{margin:.5rem 0 .2rem}.bandeau-section{background:var(--papier-2);border:1px solid var(--ligne);border-bottom:0;border-radius:var(--r-s,6px) var(--r-s,6px) 0 0;padding:.35rem .6rem;font-weight:600;text-align:center;font-size:.92rem}
.bloc-op.vide{opacity:.8}
@media (max-width:620px){.nav-ops .btn{max-width:42vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}

/* Mode d'emploi (/aide) — fragment pandoc de docs/erp/guide ; captures dans static/aide/ */
.modal-raccourcis .mr-guide{margin:.8rem 0 0;padding-top:.6rem;border-top:1px solid var(--ligne);font-size:.9rem}
.aide-guide{max-width:60rem;line-height:1.55}
.aide-guide h1{font-size:1.35rem;margin:2rem 0 .6rem;padding-top:1rem;border-top:2px solid var(--ligne)}
.aide-guide h1:first-child{margin-top:0;border-top:0;padding-top:0}
.aide-guide h2{font-size:1.1rem;margin:1.3rem 0 .4rem}
.aide-guide table{border-collapse:collapse;margin:.6rem 0;width:100%;font-size:.92rem}
.aide-guide th,.aide-guide td{border:1px solid var(--ligne);padding:.35rem .5rem;text-align:left;vertical-align:top}
.aide-guide img{max-width:100%;height:auto;border:1px solid var(--ligne);border-radius:6px;margin:.4rem 0 .8rem;display:block}
.aide-guide figure{margin:.6rem 0 1rem}.aide-guide figcaption{font-size:.85rem;color:var(--muet,#666)}
.aide-guide .sommaire{columns:2;column-gap:2rem;font-size:.92rem}
.aide-guide code{font-size:.9em}
@media (max-width:700px){.aide-guide .sommaire{columns:1}}
/* Vague 3 UI — planche « Semaine » (Gantt SVG serveur : abscisses en %, hauteurs en px) */
.sem-barre{display:flex;flex-wrap:wrap;gap:.6rem 1.2rem;align-items:center;margin:0 0 .7rem}.sem-barre .badge{font-size:.86rem;padding:.3rem .8rem}.sem-barre .badge.actif{font-weight:600}.sem-barre select{min-height:34px;max-width:260px}
.sem-legende{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin:0 0 .7rem}.sem-l{display:inline-block;width:18px;height:10px;border-radius:3px;vertical-align:-1px;margin-right:.3rem;border:1px solid var(--bronze-clair);background:var(--bronze-fond)}
.sem-l.bientot{background:var(--ambre-fond);border-color:var(--ambre)}.sem-l.retard{background:var(--rouge-fond);border-color:var(--rouge)}.sem-l.forte{border-left:4px solid var(--rouge)}.sem-l.relance{width:10px;height:10px;border-radius:50%;background:var(--ambre);border-color:#fff;box-shadow:0 0 0 1px var(--ambre)}
.sem-planche{border:1px solid var(--ligne);border-radius:var(--r);background:var(--papier);box-shadow:var(--ombre);overflow-x:auto}
.sem-grille{min-width:860px}.sem-ligne{display:flex;border-top:1px solid var(--ligne)}.sem-ligne:first-child{border-top:0}.sem-ligne.creux .sem-tete{opacity:.7}
.sem-tete{flex:0 0 230px;padding:.45rem .7rem;border-right:1px solid var(--ligne);position:sticky;left:0;background:var(--papier);z-index:1;font-size:var(--t-2);line-height:1.3;min-width:0}
.sem-tete .sem-nom{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}.sem-tete .badge{font-size:.68rem;padding:.05rem .45rem;vertical-align:middle}
.sem-entete .sem-tete{display:flex;align-items:center}.sem-entete .sem-piste{background:var(--papier-2)}
.sem-piste{flex:1 1 auto;min-width:0;position:relative}.sem-svg{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible}
.sem-we{fill:var(--ivoire)}.sem-auj-col{fill:var(--bronze-fond)}.sem-trait{stroke:var(--ligne);stroke-width:1}.sem-trait.semaine{stroke:var(--ligne-forte)}
.sem-col{font-size:12px;fill:var(--graphite);font-weight:500}.sem-col.auj{fill:var(--bronze);font-weight:700}
.sem-auj{stroke:var(--bronze);stroke-width:2;pointer-events:none}
.sem-lien{cursor:pointer;text-decoration:none}.sem-lien:hover .barre{stroke-width:2;filter:brightness(.97)}.sem-lien:focus-visible .barre{stroke:var(--encre);stroke-width:2}
.barre{fill:var(--bronze-fond);stroke:var(--bronze-clair);stroke-width:1}.barre.bientot{fill:var(--ambre-fond);stroke:var(--ambre)}.barre.retard{fill:var(--rouge-fond);stroke:var(--rouge)}.barre.close{fill:var(--papier-2);stroke:var(--ligne-forte);stroke-dasharray:3 2}
.sem-depasse{opacity:.22;pointer-events:none}.sem-forte{fill:var(--rouge)}
.sem-texte{font-size:12px;fill:var(--encre);pointer-events:none;font-weight:500}.sem-texte.retard{fill:var(--rouge)}.sem-texte.bientot{fill:var(--ambre)}.sem-texte.close{fill:var(--sourdine);text-decoration:line-through}
.sem-fleche{font-size:9px;fill:var(--graphite);pointer-events:none}
.sem-jalon{fill:var(--encre);stroke:var(--encre);stroke-width:1.5}.sem-jalon.realise{fill:var(--papier)}.sem-jalon-texte{font-size:11px;fill:var(--graphite)}
.sem-relance{fill:var(--ambre);stroke:#fff;stroke-width:1.5}
body.dense .sem-tete{padding:.3rem .55rem}body.dense .sem-barre{margin-bottom:.5rem}
@media (max-width:620px){.sem-tete{flex-basis:150px}.sem-grille{min-width:700px}.sem-barre{gap:.45rem .8rem}}
@media print{@page{size:A4 landscape;margin:10mm}.sem-barre,.sem-planche+p{display:none!important}.sem-planche{box-shadow:none;overflow:visible;border-color:#bbb}.sem-grille{min-width:0}.sem-tete{position:static;flex-basis:180px}.sem-ligne{break-inside:avoid}.sem-legende{color:#333}}

/* ---- Vague 3 UI (RETOURS-CATHERINE 26/10 §2 l.1–3, 7, 10) : bento d'accueil, rail de jalons, ligne clé ------------------------ */
/* Bento (motif « Stats Bento ») : 4 colonnes, cartes larges sur 2 ; variante b4 (opérationnel : 3 petites + 1 large = 5 colonnes) */
.bento{display:grid;gap:var(--e-3);grid-template-columns:repeat(4,minmax(0,1fr));grid-auto-flow:dense}
.bento.b4{grid-template-columns:repeat(5,minmax(0,1fr))}
.bento .large{grid-column:span 2}
.bento-carte{display:flex;flex-direction:column;gap:.15rem;color:inherit;text-decoration:none;min-height:118px;overflow:hidden;transition:border-color .15s,transform .15s}
.bento-carte:hover{text-decoration:none;border-color:var(--ligne-forte);transform:translateY(-1px)}
.bento-carte:focus-visible{outline:2px solid var(--bronze-clair);outline-offset:2px}
.bento-carte .lib{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap}
.bento-carte .val{font-family:var(--serif);font-size:2.1rem;font-weight:600;line-height:1.05;margin-top:.3rem;font-variant-numeric:tabular-nums lining-nums}
.bento-carte .val.rouge{color:var(--rouge)}.bento-carte .val.ambre{color:var(--ambre)}.bento-carte .val.vert{color:var(--vert)}
.bento-carte .val.a-renseigner{font-size:1.25rem;color:var(--sourdine);font-style:italic;font-weight:500;margin-top:.55rem}
.bento-carte .sous{font-size:var(--t-1);color:var(--sourdine);line-height:1.35;margin-top:auto;padding-top:.3rem}
.bento-carte .sous .rouge{color:var(--rouge);font-weight:600}.bento-carte .sous .ambre{color:var(--ambre);font-weight:600}
.bento-carte.b-alerte{border-color:var(--rouge);box-shadow:inset 3px 0 0 var(--rouge)}
.bento-carte.b-attention{border-color:#E2CFAE;box-shadow:inset 3px 0 0 var(--ambre)}
.bento-duo{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem}
.bento-duo>div:first-child{flex:1;min-width:0}
.bento-duo .spark{flex:none;width:38%;max-width:220px;height:44px;align-self:flex-end}
/* barre empilée des statuts (une couleur par étape du cycle de vie) */
.barre-etapes{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--papier-2);margin:.5rem 0 .4rem;gap:2px}
.barre-etapes .seg{display:block;min-width:4px}
.s-etude{background:var(--ligne-forte)}.s-offre_contresignee{background:var(--bronze-clair)}.s-puv_signee{background:var(--bronze)}.s-acquise{background:var(--vert)}.s-revente{background:var(--encre)}
.legende{display:flex;flex-wrap:wrap;gap:.2rem .8rem;font-size:var(--t-1);color:var(--graphite)}
.legende i{display:inline-block;width:8px;height:8px;border-radius:2px;margin-right:.3rem;vertical-align:baseline}
.legende b{font-weight:600;color:var(--encre)}.legende .muted b{color:inherit;font-weight:500}
/* Rail des jalons (motif « Milestone Timeline ») : point sur une ligne continue, libellé, date + état ; compact (≈ 46 px) */
.rail{display:flex;list-style:none;margin:.6rem 0 .45rem;padding:0;gap:.2rem;flex:1;min-width:0}
.rail .jalon{flex:1;min-width:0;position:relative;padding-top:12px;font-size:.72rem;line-height:1.25;color:var(--sourdine)}
.rail .jalon::before{content:"";position:absolute;top:4px;left:0;right:0;height:2px;background:var(--ligne)}
.rail .jalon:first-child::before{left:5px}.rail .jalon:last-child::before{right:auto;width:5px}
.rail .jalon .pt{position:absolute;top:0;left:0;width:10px;height:10px;border-radius:50%;background:var(--papier);border:2px solid var(--ligne-forte);box-sizing:border-box}
.rail .jalon .lib{display:block;font-weight:600;color:var(--graphite);letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rail .jalon .lib .court{display:none}
.rail .jalon .date{font-variant-numeric:tabular-nums lining-nums;white-space:nowrap}
.rail .jalon .etat{display:inline-block;margin-left:.3rem;padding:0 .35rem;border-radius:999px;font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;line-height:1.5;vertical-align:1px;border:1px solid var(--ligne);color:var(--sourdine);white-space:nowrap}
.rail .jalon.fait::before{background:var(--vert)}
.rail .jalon.fait .pt{background:var(--vert);border-color:var(--vert)}
.rail .jalon.fait .lib{color:var(--encre)}
.rail .jalon.fait .etat{background:var(--vert-fond);color:var(--vert);border-color:transparent}
.rail .jalon.prevu .pt{border-color:var(--bronze);background:var(--bronze-fond)}
.rail .jalon.prevu .lib{color:var(--encre)}
.rail .jalon.prevu .etat{background:var(--bronze-fond);color:var(--bronze);border-color:transparent}
.rail .jalon.a_fixer .etat{border-style:dashed}
.rail .jalon.retard,.rail .jalon.retard .lib,.rail .jalon.retard .date{color:var(--rouge)}
.rail .jalon.retard .pt{border-color:var(--rouge);background:var(--rouge-fond)}
.rail .jalon.retard .etat{background:var(--rouge-fond);color:var(--rouge);border-color:transparent;font-weight:600}
/* Ligne clé sous le rail : date butoir · précom · tâche débloquante */
.ligne-cle{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15rem .5rem;font-size:var(--t-2);padding:.4rem .6rem;border-radius:var(--r-s);background:var(--bronze-fond);line-height:1.35}
.ligne-cle .lib,.lib-mini{font-size:.68rem;letter-spacing:.1em;text-transform:uppercase;color:var(--sourdine)}
.ligne-cle b{font-weight:600}
.ligne-cle b.depasse,.ligne-cle b.critique{color:var(--rouge)}.ligne-cle b.urgent{color:var(--ambre)}.ligne-cle b.vert{color:var(--vert)}
.ligne-cle .sep{color:var(--ligne-forte)}
.ligne-cle .tache{flex:1 1 16rem;min-width:0}
.ligne-cle .tache b{font-weight:600;color:var(--encre)}
.entete-jalons .rail{margin:.1rem 0 .3rem;min-width:min(100%,32rem)}
.entete-jalons .ligne-cle{margin-top:.5rem}
.tb-grille .carte h2{font-size:1.32rem}
@media (max-width:980px){
  .bento,.bento.b4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .entete-jalons .rail{min-width:100%}
}
@media (max-width:620px){
  .bento,.bento.b4{grid-template-columns:1fr}
  .bento .large{grid-column:auto}
  .bento-carte{min-height:0}
  .bento-duo .spark{width:34%}
  .rail .jalon .etat{display:block;margin:.1rem 0 0;width:max-content}
  .rail .jalon .lib .long{display:none}.rail .jalon .lib .court{display:inline}
  .rail .jalon{font-size:.68rem}
  .ligne-cle{font-size:var(--t-1)}
  .ligne-cle .sep{display:none}
  .ligne-cle>span{flex:1 1 100%}
}
body.dense .bento{gap:.7rem}
body.dense .bento-carte{min-height:96px}
body.dense .bento-carte .val{font-size:1.75rem;margin-top:.15rem}
body.dense .rail{margin:.4rem 0 .3rem}
body.dense .rail .jalon{font-size:.68rem}
body.dense .ligne-cle{padding:.3rem .5rem;font-size:var(--t-1)}
/* Vague 3 UI (E3) : états vides illustrés (mur d'alertes, urgences, roadmap, retours) — visuel plafonné à 420 px, chargé paresseusement */
.carte.vide.illustre img{max-width:420px;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover;border:1px solid var(--ligne)}
.carte.vide.illustre .etat-vide p{max-width:44ch}
/* Portail : stock à la vente en cartes par opération, visuel générique légendé « Illustration » (jamais une photo du bien) */
.stock-cartes{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:var(--e-3)}
.stock-carte{display:flex;flex-direction:column;overflow:hidden}
.stock-carte figure{margin:calc(-1 * var(--e-3)) calc(-1 * var(--e-3)) var(--e-2);position:relative;aspect-ratio:16/7;overflow:hidden;background:var(--papier-2)}
.stock-carte figure img{width:100%;height:100%;object-fit:cover;display:block;filter:saturate(.9)}
.stock-carte figcaption{position:absolute;right:.5rem;bottom:.5rem;padding:.1rem .5rem;border-radius:999px;background:rgba(255,253,248,.92);color:var(--sourdine);font-size:.7rem;letter-spacing:.05em;text-transform:uppercase;border:1px solid var(--ligne)}
.stock-carte h3{margin:0 0 .3rem;font-size:1.05rem}
.stock-lots{list-style:none;margin:0;padding:0}
.stock-lots li{display:flex;flex-wrap:wrap;align-items:baseline;gap:.2rem .6rem;padding:.45rem 0;border-top:1px solid var(--ligne);font-size:.9rem}
.stock-lots .prix{margin-left:auto;white-space:nowrap}
