:root{--r:11px;--rs:8px;--fd:Archivo,system-ui,sans-serif;--ft:"IBM Plex Sans",system-ui,sans-serif;
 --bg:#f5f6f8;--surface:#fff;--s2:#eef0f4;--s3:#e4e8ee;--ink:#0b0e13;--ink2:#3c4652;
 --muted:#5f6874;--line:#cfd6e0;--lineS:#e2e7ee;--acc:#1a56a8;--accS:#e6eefa;--good:#0ca30c;
 --goodS:#e6f6e6;--warn:#fab219;--crit:#d03b3b;--critS:#fdeaea;
 --sh:0 1px 2px rgba(14,17,22,.06),0 8px 24px -12px rgba(14,17,22,.14);
 --s1:#2a78d6;--s2c:#eb6834;--s3c:#1baf7a;--s4c:#eda100;--s5c:#7c5cd6;--sAut:#78828f;
 --jauge:#e5eaf1;--ok:#136c4c;--okS:#e2f2ea;--att:#43546d;--attS:#e9edf3;--ret:#a5271c;--retS:#fbe9e7;
 --ven:#a2551a;--venS:#fdf1e4;--reg:#1f4fa8;--regS:#e6edfb;
 /* synthèse : rail = budget, trois pas d'un même bleu = engagé, facturé, payé (ΔE adjacents ≥ 15, validés) */
 --rail:#e4e9ef;--cEng:#86b6ea;--cFac:#2a78d6;--cPay:#143e78;}
:root[data-mode="dark"]{--bg:#0c0e11;--surface:#15181d;--s2:#1b1f25;
 --rail:#2b3442;--cEng:#3f6ea8;--cFac:#6ea6e8;--cPay:#bcd6f5;
 --s3:#232830;--ink:#f6f8fb;--ink2:#c2cad4;--muted:#98a1ac;--line:#323944;--lineS:#252b33;--acc:#6aa6ee;
 --accS:#152540;--goodS:#0f2410;--crit:#e66767;--critS:#2a1414;
 --sh:0 1px 2px rgba(0,0,0,.5),0 8px 24px -12px rgba(0,0,0,.6);
 --s1:#3987e5;--s2c:#d95926;--s3c:#199e70;--s4c:#c98500;--s5c:#8f78e0;--sAut:#8b95a3;
 --jauge:#2a313a;--ok:#5fd3a4;--okS:#12332a;--att:#a9b4c2;--attS:#242a33;--ret:#f08d84;--retS:#3a1f1c;
 --ven:#e8b070;--venS:#33261a;--reg:#8ab6f5;--regS:#18253d;}
*{box-sizing:border-box}
html{color-scheme:light}
:root[data-mode="dark"]{color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--ft);font-size:15px;line-height:1.5}
h1,h2,h3{font-family:var(--fd);margin:0;text-wrap:balance}
.num{font-variant-numeric:tabular-nums}.mono{font-family:"IBM Plex Mono",monospace}
/* connexion */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .box{width:100%;max-width:380px;background:var(--surface);border:1px solid var(--line);
 border-radius:var(--r);padding:30px;box-shadow:var(--sh)}
.login h1{font-size:21px;font-weight:700;margin-bottom:4px}
.login p.sub{color:var(--muted);font-size:13.5px;margin:0 0 22px}
/* app */
.wrap{max-width:1440px;margin:0 auto;padding:0 24px}
.wrap.contenu{padding-bottom:70px}
:root[data-largeur="confort"] .wrap{max-width:1200px}
.wrap.pleine{max-width:none}
/* Bandeau d'en-tête (choix C du 06/10/2026) : teinté, pleine largeur, ligne fine ; la page reste telle quelle. */
.bande{background:var(--accS);border-bottom:1px solid color-mix(in srgb,var(--acc) 28%,var(--line));margin-bottom:4px}
[data-style="tt"] .bande{background:var(--accS)}
:root[data-mode="dark"] .bande{background:color-mix(in srgb,var(--accS) 70%,var(--bg))}
header{padding:20px 0 0}
.eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-weight:600}
h1.t{font-size:24px;font-weight:700;letter-spacing:-.02em;margin-top:4px}
.bar{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-top:14px}
nav{display:flex;gap:4px;flex-wrap:wrap}
nav button{background:none;border:0;border-bottom:2px solid transparent;padding:10px 14px;font:inherit;
 font-size:14px;font-weight:500;color:var(--ink2);cursor:pointer}
nav button[aria-selected="true"]{color:var(--acc);border-bottom-color:var(--acc);font-weight:600}
.who{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--ink2)}
.who b{color:var(--ink)}
.badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--accS);color:var(--acc);letter-spacing:.04em}
.seg{display:inline-flex;background:var(--s2);border:1px solid var(--line);border-radius:var(--rs);padding:3px;gap:3px}
.seg button{font:inherit;font-size:13px;font-weight:600;padding:7px 14px;border:0;border-radius:calc(var(--rs) - 2px);background:transparent;color:var(--ink2);cursor:pointer}
.seg button[aria-pressed="true"]{background:var(--acc);color:#fff}
label{display:block;font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-weight:600;margin-bottom:5px}
input,select{width:100%;font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:var(--rs);background:var(--surface);color:var(--ink)}
input:focus,select:focus{outline:2px solid var(--acc);outline-offset:1px}
.btn{font:inherit;font-size:14px;font-weight:600;padding:10px 17px;border-radius:var(--rs);border:1px solid var(--line);background:var(--surface);color:var(--ink);cursor:pointer}
.btn.pri{background:var(--acc);border-color:var(--acc);color:#fff;width:100%}
.mini{font:inherit;font-size:12.5px;padding:5px 10px;border-radius:calc(var(--rs) - 1px);border:1px solid var(--line);background:var(--surface);color:var(--ink2);cursor:pointer}
.mini:hover{background:var(--s2);color:var(--ink)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh)}
.pad{padding:18px}
section{margin-top:22px}
h2.sec{font-size:16px;font-weight:600;margin:0 0 11px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:11px;margin:16px 0}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:13px 15px;box-shadow:var(--sh)}
.kpi .k{font-size:11px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-weight:600}
.kpi .v{font-family:var(--fd);font-size:22px;font-weight:600;margin-top:5px}
.m{font-size:12.5px;color:var(--ink2)}
.kpi .m{font-size:12px;color:var(--ink2);margin-top:2px}
.kpi.lead{background:var(--accS);border-color:color-mix(in srgb,var(--acc) 28%,transparent)}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th,td{padding:9px 11px;text-align:right;border-bottom:1px solid var(--lineS);white-space:nowrap}
th{font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--surface)}
th:first-child,td:first-child,th.l,td.l{text-align:left}
tbody tr:hover td{background:var(--s2)}
tfoot td{font-weight:700;border-top:2px solid var(--line);border-bottom:0}
.scroll{overflow:auto;max-height:66vh}
.masq{color:var(--muted);font-style:italic;font-size:12.5px}
.opt{display:flex;align-items:center;gap:13px;padding:11px 0;border-bottom:1px solid var(--lineS)}
.opt:last-child{border-bottom:0}
.opt .lib{flex:1}
.opt .lot{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px;background:var(--s3);color:var(--ink2)}
.sw{position:relative;width:44px;height:25px;flex:0 0 44px}
.sw input{position:absolute;opacity:0;width:100%;height:100%;margin:0;cursor:pointer}
.sw span{position:absolute;inset:0;background:var(--s3);border-radius:20px;transition:.15s;pointer-events:none}
.sw span::after{content:"";position:absolute;left:3px;top:3px;width:19px;height:19px;background:#fff;border-radius:50%;transition:.15s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.sw input:checked+span{background:var(--acc)}
.sw input:checked+span::after{transform:translateX(19px)}
.sw input:focus-visible+span{outline:2px solid var(--acc);outline-offset:2px}
.grp{font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:20px 0 4px}
.err{background:var(--critS);color:var(--crit);padding:10px 13px;border-radius:8px;font-size:13.5px;font-weight:500;margin-bottom:14px}
.info{border-left:3px solid var(--acc);background:var(--accS);padding:12px 15px;border-radius:0 8px 8px 0;font-size:13.5px;margin:14px 0}
.fl{display:flex;gap:9px;flex-wrap:wrap;align-items:end;margin-bottom:14px}
.fl>div{min-width:150px}
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(20px);opacity:0;
 background:var(--ink);color:var(--bg);padding:11px 18px;border-radius:9px;font-size:13.5px;font-weight:500;
 transition:.2s;pointer-events:none;z-index:60}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}


/* ---------- lot 1 : factures, ventilation, engagements ---------- */
tr.cl{cursor:pointer}
tr.cl:hover td{background:var(--s2)}
.num.neg{color:var(--crit);font-weight:600}
.et{display:inline-block;padding:2px 9px;border-radius:11px;font-size:11.5px;
    font-weight:700;letter-spacing:.02em;white-space:nowrap}
.et.a_ventiler{background:var(--venS);color:var(--ven)}
.et.ventilee  {background:var(--okS);color:var(--ok)}
.et.reglee    {background:var(--regS);color:var(--reg)}
.et.attente   {background:var(--attS);color:var(--att)}
.et.retard    {background:var(--retS);color:var(--ret)}
.rouge{color:var(--crit)}
.depot{border:1.5px dashed var(--line);border-radius:11px;padding:26px 18px;text-align:center;
       color:var(--ink2);cursor:pointer;transition:background .15s,border-color .15s,color .15s}
.depot:hover,.depot.on{background:var(--accS);border-color:var(--acc);color:var(--acc)}
.mini.danger{color:var(--crit);border-color:color-mix(in srgb,var(--crit) 40%,var(--line))}
.mini.danger:hover{background:var(--critS)}
.fl>div{flex:1 1 170px}
.fl>div[style*="min-width:auto"]{flex:0 0 auto}
.card.pad .grp:not(:first-child){margin-top:22px}
.ro{padding:9px 2px;font-size:14px;color:var(--ink);font-weight:600}

/* ---------- en-tête ---------- */
.tete{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:6px}
.seg.sites{margin:0}
h1.t .sur{color:var(--muted);font-weight:500}
.menu{position:relative}
.roue{display:inline-flex;align-items:center;justify-content:center;width:33px;height:33px;
      border:1px solid var(--line);background:var(--surface);border-radius:9px;color:var(--ink2);
      cursor:pointer;transition:.15s}
.roue:hover{background:var(--accS);border-color:var(--acc);color:var(--acc)}
.roue.on{background:var(--acc);border-color:var(--acc);color:#fff}
.roue svg{display:block}
.pop{position:absolute;right:0;top:40px;min-width:224px;background:var(--surface);z-index:50;
     border:1px solid var(--line);border-radius:11px;padding:6px;box-shadow:var(--sh)}
.pop-t{padding:8px 10px 4px;font-size:10.5px;font-weight:700;letter-spacing:.08em;
       text-transform:uppercase;color:var(--muted)}
.pop-s{height:1px;background:var(--line);margin:6px 4px}
.pop button{display:block;width:100%;text-align:left;padding:8px 10px;border:0;background:none;
            border-radius:8px;font:inherit;font-size:13.5px;color:var(--ink);cursor:pointer}
.pop button:hover{background:var(--s2)}
.pop button.act{background:var(--accS);color:var(--acc);font-weight:600}
.pop button.dg{color:var(--crit)}
.pop button.dg:hover{background:var(--critS)}
.pop .seg{display:flex;width:100%;margin:2px 0 4px}
.pop .seg button{flex:1;text-align:center;padding:6px 4px;font-size:12.5px}

/* ---------- entités ---------- */
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip{display:inline-block;padding:4px 11px;border-radius:13px;background:var(--s2);
      border:1px solid var(--line);font-size:12.5px;color:var(--ink2)}
.chip b{color:var(--ink);letter-spacing:.02em}

/* ---------- synthèse ---------- */
.kpis.k5{grid-template-columns:repeat(5,minmax(0,1fr))}
@media (max-width:1100px){.kpis.k5{grid-template-columns:repeat(2,minmax(0,1fr))}}
.deux{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:18px;align-items:start}
@media (max-width:900px){.deux{grid-template-columns:1fr}}
.cam{display:flex;flex-direction:column;align-items:center;gap:18px}
.cam svg{display:block}
.part{transition:opacity .12s;cursor:default}
.cam:hover .part{opacity:.45}
.cam .part:hover{opacity:1}
.camv{font:700 26px/1 var(--fd);fill:var(--ink)}
.caml{font:600 10.5px/1 system-ui,sans-serif;fill:var(--muted);letter-spacing:.08em;text-transform:uppercase}
.camp{font:700 13px/1 system-ui,sans-serif;fill:#fff;paint-order:stroke;
      stroke:rgba(0,0,0,.28);stroke-width:2.5px}
.leg{list-style:none;margin:0;padding:0;width:100%;
     display:grid;grid-template-columns:1fr 1fr;gap:2px 18px}
@media (max-width:620px){.leg{grid-template-columns:1fr}}
.rang.trois .leg{grid-template-columns:1fr}
.leg li{display:flex;align-items:center;gap:9px;padding:5px 0;font-size:12.5px;color:var(--ink2);
        border-bottom:1px solid var(--lineS)}
.leg i{width:11px;height:11px;border-radius:3px;flex:0 0 auto}
.leg .ln{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.leg .lp{width:50px;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.leg b{font-variant-numeric:tabular-nums;color:var(--ink)}
.brs{list-style:none;margin:0;padding:0}
.brs li{display:flex;align-items:center;gap:10px;padding:4px 0;font-size:12.5px;color:var(--ink2)}
.brs .bl{width:118px;flex:0 0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.brs .bt{flex:1;height:10px;background:var(--jauge);border-radius:5px;overflow:hidden;min-width:60px}
.brs .bf{display:block;height:100%;background:var(--s1);border-radius:0 5px 5px 0}
.brs .bv{width:76px;text-align:right;flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--ink)}
.brs li:hover .bf{filter:brightness(.88)}
.jauge{height:8px;border-radius:4px;background:var(--jauge);overflow:hidden;min-width:90px}
.jauge span{display:block;height:100%;border-radius:4px;background:var(--s1)}
.jauge.haut span{background:var(--s4c)}
.jauge.depasse span{background:var(--crit)}
.ib{position:fixed;z-index:80;background:var(--ink);color:var(--bg);padding:7px 11px;border-radius:8px;
    font-size:12.5px;font-weight:500;pointer-events:none;box-shadow:var(--sh);max-width:290px}
.pastille{display:inline-block;width:16px;height:16px;line-height:16px;text-align:center;
  border-radius:4px;background:var(--s4c);color:#25190a;font-size:10px;font-weight:800;vertical-align:1px}
td.ave{cursor:help}
.unite{font-size:11px;font-weight:600;letter-spacing:.06em;color:var(--muted);text-transform:uppercase}
[hidden]{display:none!important}


/* =====================================================================
   DIRECTIONS VISUELLES — commutables sous la roue dentée.
   Chaque direction redéfinit les jetons, en clair et en sombre.
   « atelier » est la base ci-dessus.
   ===================================================================== */

/* ---------- Time Tripper : bleu nuit #0d1236, orange #ff8300, Chakra Petch ---------- */
:root[data-style="tt"]{
 --r:8px;--rs:6px;--fd:"Chakra Petch",Archivo,system-ui,sans-serif;
 --bg:#eef0f6;--surface:#ffffff;--s2:#e9ecf4;--s3:#dde1ec;
 --ink:#0d1236;--ink2:#3a4160;--muted:#6a7189;--line:#cfd4e3;--lineS:#e3e7f0;
 --acc:#0d1236;--accS:#e6e9f4;--or:#ff8300;--orS:#fff1e3;--orInk:#0d1236;
 --sh:0 1px 2px rgba(13,18,54,.06),0 10px 28px -14px rgba(13,18,54,.22)}
:root[data-style="tt"][data-mode="dark"]{
 --bg:#070a1c;--surface:#0f1430;--s2:#161c3d;--s3:#1e254c;
 --ink:#f4f5fb;--ink2:#c4c9df;--muted:#8f96b4;--line:#2a3158;--lineS:#1c2247;
 --acc:#ffa040;--accS:#2a1f0f;--or:#ff8300;--orS:#3a2410;--orInk:#0d1236;
 --crit:#ff7b7b;--critS:#3a1a1a;--jauge:#1e254c;--ok:#5fd3a4;--okS:#12332a;
 --att:#b3b9d3;--attS:#1c2247;--ret:#ff9b93;--retS:#3a1f1c;--ven:#ffc27a;--venS:#33261a;
 --reg:#9fc0ff;--regS:#18253d;
 --sh:0 1px 2px rgba(0,0,0,.5),0 10px 28px -14px rgba(0,0,0,.7)}
[data-style="tt"] h1.t{text-transform:uppercase;letter-spacing:.04em;font-weight:700}
[data-style="tt"] .eyebrow{font-family:var(--fd);letter-spacing:.16em}
[data-style="tt"] nav{gap:6px}
[data-style="tt"] nav button{border:1px solid transparent;border-radius:var(--rs);padding:8px 14px}
[data-style="tt"] nav button[aria-selected="true"]{background:var(--or);border-color:var(--or);color:var(--orInk);border-bottom-color:var(--or)}
[data-style="tt"] .seg button[aria-pressed="true"]{background:var(--or);color:var(--orInk)}
[data-style="tt"] .btn.pri{background:var(--or);border-color:var(--or);color:var(--orInk)}
[data-style="tt"] .kpi.lead{background:var(--acc);border-color:var(--acc);color:#fff}
[data-style="tt"] .kpi.lead .k,[data-style="tt"] .kpi.lead .m{color:#c9cfe6}
[data-style="tt"] .kpi .v{font-size:24px;letter-spacing:.01em}
[data-style="tt"] .badge{background:var(--orS);color:#9a4c00}
[data-style="tt"][data-mode="dark"] .badge{color:var(--or)}
[data-style="tt"] .roue.on{background:var(--or);border-color:var(--or);color:var(--orInk)}
[data-style="tt"] .info{border-left-color:var(--or)}
[data-style="tt"] .jauge span,[data-style="tt"] .brs .bf{background:var(--acc)}
[data-style="tt"] .num.mono,[data-style="tt"] .kpi .v,[data-style="tt"] .camv{font-family:var(--fd)}
[data-style="tt"] .login h1{font-family:var(--fd);text-transform:uppercase;letter-spacing:.05em}

/* ---------- Papier : fond chaud, encre, un seul accent vert, sérif ---------- */
:root[data-style="papier"]{
 --r:5px;--rs:4px;--fd:"Iowan Old Style","Palatino Linotype",Palatino,Georgia,serif;
 --ft:"IBM Plex Sans",system-ui,sans-serif;
 --bg:#f4f0e7;--surface:#fdfbf6;--s2:#efe9dc;--s3:#e5ddcc;
 --ink:#1c1915;--ink2:#484238;--muted:#736b5e;--line:#d6cdbb;--lineS:#e8e1d2;
 --acc:#1f5c46;--accS:#e2eee7;--crit:#a8342a;--critS:#f6e4e1;
 --sAut:#8a8375;
 --jauge:#e5ddcc;--ok:#1f5c46;--okS:#e2eee7;--att:#5a5346;--attS:#efe9dc;--ret:#a8342a;--retS:#f6e4e1;
 --ven:#8a5a1c;--venS:#f5ebd9;--reg:#2a5fa8;--regS:#e3eaf6;
 --sh:none}
:root[data-style="papier"][data-mode="dark"]{
 --bg:#17150f;--surface:#211e16;--s2:#2a2619;--s3:#332e1f;
 --ink:#f1ece0;--ink2:#cdc5b3;--muted:#9a917f;--line:#3d3728;--lineS:#2f2a1e;
 --acc:#7fc9a8;--accS:#1a2e25;--crit:#ef8b80;--critS:#3a1f1c;
 --sAut:#8d8574;
 --jauge:#332e1f;--ok:#7fc9a8;--okS:#1a2e25;--att:#b8b09d;--attS:#2a2619;--ret:#ef8b80;--retS:#3a1f1c;
 --ven:#e5b87a;--venS:#33291a;--reg:#9bbdf0;--regS:#1c2740;
 --sh:none}
[data-style="papier"] h1.t{font-weight:600;letter-spacing:-.01em;font-size:27px}
[data-style="papier"] .card,[data-style="papier"] .kpi{box-shadow:none}
[data-style="papier"] .kpi.lead{background:var(--surface);border-color:var(--acc);border-width:1.5px}
[data-style="papier"] .kpi .v{font-size:25px;font-weight:600}
[data-style="papier"] th{border-bottom:1.5px solid var(--ink);color:var(--ink2)}
[data-style="papier"] tfoot td{border-top:1.5px solid var(--ink)}
[data-style="papier"] nav button[aria-selected="true"]{border-bottom-width:2px}
[data-style="papier"] .eyebrow{font-family:var(--fd);letter-spacing:.14em;font-style:italic;text-transform:none;font-size:13px}
[data-style="papier"] .grp{font-family:var(--fd);text-transform:none;letter-spacing:0;font-size:13.5px;font-style:italic;font-weight:600}
[data-style="papier"] .login h1{font-family:var(--fd)}
[data-style="papier"] .jauge span,[data-style="papier"] .brs .bf{background:var(--acc)}

/* ---------- planning ---------- */
.gantt{display:block;font-family:var(--ft)}
.gsecbg{fill:var(--s2)}
.gsec{font:700 11px var(--ft);fill:var(--muted);letter-spacing:.06em;text-transform:uppercase}
.glab{font:500 12.5px var(--ft);fill:var(--ink);cursor:default}
.glab.jal{font-weight:700}
.gline{stroke:var(--lineS);stroke-width:1}
.gsplit{stroke:var(--line);stroke-width:1.5}
.gweek{stroke:var(--lineS);stroke-width:1;stroke-dasharray:2 3}
.gtick{font:500 10px var(--ft);fill:var(--muted)}
.gmois{font:700 11px var(--ft);fill:var(--ink2);letter-spacing:.05em;text-transform:uppercase}
.gauj{stroke:var(--crit);stroke-width:1.5}
.gaujt{font:700 10px var(--ft);fill:var(--crit)}
/* Barres : la couleur (--tr) est celle du responsable, l'état est le remplissage. */
.gbar,.gjal{--tr:var(--sAut);cursor:default}
.gbar.a_faire,.gjal.a_faire{fill:color-mix(in srgb,var(--tr) 18%,var(--surface));stroke:var(--tr);stroke-width:2.5}
.gbar.en_cours,.gjal.en_cours{fill:var(--tr);stroke:var(--surface);stroke-width:1.5}
.gbar.termine,.gjal.termine{fill:var(--tr);fill-opacity:.42;stroke:none}
.gbar.ret,.gjal.ret{stroke:var(--crit);stroke-width:2.5}
.gret{font-size:11px;font-weight:700;fill:var(--crit);pointer-events:none}
.gcoche{font-size:12px;font-weight:700;fill:var(--ink);pointer-events:none}
.gref{fill:none;stroke:var(--muted);stroke-width:1.5;stroke-dasharray:4 3;opacity:.9;pointer-events:all}
.gref.gl{stroke:var(--ink2)}
.gref:hover{stroke:var(--acc)}
.gdep{fill:none;stroke:var(--ink2);stroke-width:1.3;opacity:.7}
.leg-g{display:flex;gap:18px;flex-wrap:wrap;margin:10px 4px 0;font-size:12px;color:var(--ink2)}
.leg-g i{display:inline-block;width:14px;height:8px;border-radius:3px;vertical-align:middle;margin-right:6px}
.leg-g i.lg-af{background:transparent;border:1.8px solid var(--ink2);height:6px;width:12px}
.leg-g i.lg-ec{background:var(--ink2)}.leg-g i.lg-te{background:var(--ink2);opacity:.42}
.leg-g i.lg-ret{background:transparent;border:2px solid var(--crit);height:6px;width:12px}
.leg-g .sep{width:1px;height:14px;background:var(--line);display:inline-block}
.leg-g i.refl{background:transparent;border:1.5px dashed var(--muted);height:6px;width:12px}
tr.ret td:nth-child(5){color:var(--crit);font-weight:600}
.et-sel{width:auto;padding:4px 8px;font-size:12.5px;border-radius:11px;font-weight:700}
.et-sel.a_faire{background:var(--attS);color:var(--att)}
.et-sel.en_cours{background:var(--accS);color:var(--acc)}
.et-sel.termine{background:var(--okS);color:var(--ok)}
.card.ia{border-left:3px solid var(--s4c);margin-bottom:14px}
.cliq{cursor:pointer}
.gbar.cliq:hover,.gjal.cliq:hover{filter:brightness(1.15);stroke:var(--acc);stroke-width:2}
.gbar.ret.cliq:hover,.gjal.ret.cliq:hover{stroke:var(--crit)}
.glab.cliq:hover{fill:var(--acc);text-decoration:underline}

/* ---------- tiroir d'édition ---------- */
.voile{position:fixed;inset:0;background:rgba(10,14,24,.38);z-index:70}
.tiroir{position:fixed;top:0;right:0;bottom:0;width:min(520px,100vw);background:var(--surface);z-index:71;
  display:flex;flex-direction:column;box-shadow:-12px 0 40px rgba(0,0,0,.18);border-left:1px solid var(--line);
  animation:tiroir .18s ease-out}
@keyframes tiroir{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}
.tiroir-t{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:20px 22px 12px;border-bottom:1px solid var(--lineS)}
.tiroir-t h2{font-size:18px;font-weight:700;margin-top:2px;line-height:1.25}
.tiroir-c{flex:1;overflow:auto;padding:6px 22px 18px}
.tiroir .bloc{padding:14px 0;border-bottom:1px solid var(--lineS)}
.tiroir .bloc:last-child{border-bottom:0}
.tiroir .grp{margin:0 0 8px}
.tiroir-p{display:flex;gap:10px;align-items:center;padding:14px 22px;border-top:1px solid var(--line);background:var(--s2)}
.tiroir textarea{width:100%;font:inherit;font-size:14px;padding:9px 11px;border:1px solid var(--line);border-radius:var(--rs);background:var(--surface);color:var(--ink);resize:vertical}
.cb{display:flex;align-items:center;gap:8px;text-transform:none;letter-spacing:0;font-size:13.5px;color:var(--ink);font-weight:500;cursor:pointer}
.cb input{width:auto}
.gbar.glisse,.gjal.glisse{opacity:.75;stroke:var(--acc);stroke-width:2}
.gdep.viol{stroke:var(--crit);stroke-width:2;opacity:1}
svg.gantt{touch-action:none;user-select:none}

/* ---------- synthèse ---------- */
.card.syn{margin-bottom:14px}
.rang{display:grid;gap:14px;margin-bottom:14px;align-items:stretch}
.rang.un{grid-template-columns:minmax(0,1fr)}.rang.deux{grid-template-columns:repeat(2,minmax(0,1fr))}.rang.trois{grid-template-columns:repeat(3,minmax(0,1fr))}
.rang>div{display:flex;flex-direction:column}
.rang .card.syn{flex:1;margin-bottom:0}
.rang>div>details.syn-t{margin:8px 0 0}
.rang .cam{justify-content:center;flex:1}
.rang .card.syn{display:flex;flex-direction:column}
.rang .card.syn .bc{flex:1;display:flex;flex-direction:column;justify-content:space-evenly}
.bc.ent .bl{width:210px;text-align:left}.bc.ent .bl i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle}
.bc .bp .masq{font-size:11px}
.tunnel-c{position:relative;padding:22px 0 26px}
.tunnel{display:block;width:100%;height:30px}
.tunnel-e{position:absolute;inset:0;pointer-events:none;font-size:12px;color:var(--ink2)}
.te{position:absolute;white-space:nowrap}.te b{color:var(--ink)}
.te.droite{text-align:right}
.courbe{display:block;width:100%;height:auto}
.courbe .cg{stroke:var(--lineS);stroke-width:1}.courbe .ct{font-size:11px;fill:var(--muted)}
.courbe .cb{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:5 4}.courbe .ca{stroke:var(--crit);stroke-width:1.2}
.bc{list-style:none;margin:0;padding:0}
.bc li{display:flex;align-items:center;gap:10px;padding:4px 4px;font-size:12.5px;color:var(--ink2);border-radius:6px}
.bc li.cliq{cursor:pointer}.bc li.cliq:hover{background:var(--s2)}
.bc .bl{width:150px;flex:0 0 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:right}
.bc .bt{flex:1;height:16px;position:relative;min-width:60px}
.bc .bt span{position:absolute;left:0;top:0;height:100%;border-radius:4px;display:block}
.bc .br{background:var(--rail)}.bc .be{background:var(--cEng)}.bc .bf2{background:var(--cFac)}.bc .bd{background:var(--crit);border-radius:0 4px 4px 0}
.bc .bv{width:76px;text-align:right;flex:0 0 auto;font-variant-numeric:tabular-nums;color:var(--ink)}
.bc .bp{width:44px;flex:0 0 auto;font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.pile{display:flex;height:24px;border-radius:5px;overflow:hidden;gap:2px;margin:6px 0 10px}
.pile span{display:flex;align-items:center;justify-content:center;color:#fff;font-size:11.5px;font-weight:600;overflow:hidden;white-space:nowrap}
table.ent{width:100%;font-size:12.5px}table.ent td{padding:5px 6px;border-bottom:1px solid var(--lineS);text-align:left}
table.ent td.num{text-align:right}table.ent tr:last-child td{border-bottom:0}
table.ent i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:7px;vertical-align:middle}
.hero{font-family:var(--fd);font-size:28px;font-weight:600;margin:4px 0 8px}
.jauge.grande{height:14px;min-width:0}
details.syn-t{margin:-6px 0 14px}
details.syn-t summary{cursor:pointer;font-size:12.5px;color:var(--acc);padding:4px 2px;list-style:none;display:flex;align-items:center;gap:10px}
details.syn-t summary::before{content:"▸";display:inline-block;transition:.15s}
details.syn-t[open] summary::before{transform:rotate(90deg)}
details.syn-t summary .mini{margin-left:auto}
details.syn-t .card{margin-top:6px}
/* ---------- mode présentation : ne reste que ce qui se regarde ---------- */
.quitter{position:fixed;right:18px;bottom:18px;z-index:90;width:auto}
:root[data-presente="1"] body{background:var(--surface)}
:root[data-presente="1"] header,:root[data-presente="1"] .syn-barre,:root[data-presente="1"] details.syn-t,:root[data-presente="1"] .info{display:none}
:root[data-presente="1"] .wrap{max-width:none}
:root[data-presente="1"] .kpi .v{font-size:28px}
:root[data-presente="1"] .card.syn .grp{font-size:13px}
:root[data-presente="1"] .bc li{font-size:14px;padding:6px 4px}:root[data-presente="1"] .bc .bt{height:20px}:root[data-presente="1"] .bc .bl{width:190px}
@media print{
  @page{size:A4 landscape;margin:10mm}
  header,.syn-barre,details.syn-t,.info,.quitter,.ib{display:none !important}
  body{background:#fff}.wrap{max-width:none;padding:0}.card,.kpi{box-shadow:none;break-inside:avoid}
}
:root[data-presente="1"] .card.syn > .m{display:none}
.ordre{display:inline-flex;gap:2px;margin-right:8px}.ordre .mini,td .mini[data-tord]{padding:4px 7px;font-size:11px}
.logo-tt{height:22px;width:auto;vertical-align:middle;margin:-4px 6px 0 0;content:url("/logo-tt-noir.png")}
:root[data-mode="dark"] .logo-tt{content:url("/logo-tt-blanc.png")}
