:root{
  /* Charte Logbook (docs/BRAND.md, docs/brand-kit/tokens.css) — structure */
  --noir-base:#000000;--graphite:#2B2B2B;--fond-sombre:#1F1F1F;--papier:#F4F4F2;--blanc:#FFFFFF;--blanc-casse:#EDEDEB;
  /* BU : sert uniquement à distinguer les BU (jamais aux boutons, liens, alertes ou états) */
  --bu-groupe:#2B2B2B;--bu-groupe-symbole:#8A8F95;--bu-xc:#D8113E;--bu-mr:#2C4F9C;--bu-hrc:#009540;--bu-hrl:#F4BE00;--bu-mr-sombre:#6F8FD6;
  /* Polices */
  --font-display:'Barlow Condensed','Arial Narrow',sans-serif;--font-title:var(--font-display);
  --font-ui:'IBM Plex Sans','Helvetica Neue',Arial,sans-serif;--font-mono:'IBM Plex Mono',ui-monospace,monospace;
  /* Rôles — mode sombre par défaut */
  --bg:var(--fond-sombre);--surface:var(--graphite);--border:#3A3A3A;--text:var(--blanc-casse);--text-muted:#A3A6AA;
  --action-bg:var(--blanc-casse);--action-text:var(--fond-sombre);--bu-mr-ui:var(--bu-mr-sombre);
  /* Noms utilisés par l'application (alias des rôles ci-dessus) */
  --card:var(--surface);--nav:var(--surface);--line:var(--border);--fg:var(--text);--mut:var(--text-muted);
  --accent:var(--action-bg);--accent-ink:var(--action-text);--series:var(--action-bg);
  --red:var(--bu-xc);--blu:#6aa6ff;--grn:#3fae6a;--neg:#e5484d}
@media (prefers-color-scheme:light){:root{--bg:var(--papier);--surface:var(--blanc);--border:#DCDCD8;--text:var(--graphite);--text-muted:#5C6167;--action-bg:var(--graphite);--action-text:var(--blanc);--bu-mr-ui:var(--bu-mr);--blu:#2563c9}}
/* Bascule manuelle éventuelle : <html data-theme="dark|light"> prime sur la préférence de l'appareil */
:root[data-theme="dark"]{--bg:var(--fond-sombre);--surface:var(--graphite);--border:#3A3A3A;--text:var(--blanc-casse);--text-muted:#A3A6AA;--action-bg:var(--blanc-casse);--action-text:var(--fond-sombre);--bu-mr-ui:var(--bu-mr-sombre)}
:root[data-theme="light"]{--bg:var(--papier);--surface:var(--blanc);--border:#DCDCD8;--text:var(--graphite);--text-muted:#5C6167;--action-bg:var(--graphite);--action-text:var(--blanc);--bu-mr-ui:var(--bu-mr)}
*{box-sizing:border-box}
body{font-family:var(--font-ui)}
#page-title,.home-hero .hello{font-family:var(--font-title);font-style:italic;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.card .v,.home-tile .v{font-family:var(--font-title);font-weight:700}
th,.num,td[data-v]{font-variant-numeric:tabular-nums}

body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.4 var(--font-ui);padding-top:env(safe-area-inset-top)}
header{position:sticky;top:0;z-index:20;display:flex;gap:10px;align-items:center;padding:10px 16px;background:var(--bg);border-bottom:1px solid var(--line)}
h1{font-size:13px;margin:0;letter-spacing:.14em;text-transform:uppercase}h1 a{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}
.controls{margin-left:auto;display:flex;gap:6px}
.logo{height:20px;width:auto;display:block}.logo-on-light{display:none}
h1 .app-icon{width:34px;height:34px;border-radius:8px;flex:none}h1 .brand{display:flex;flex-direction:column;gap:4px}h1 .brand-name{font-family:var(--font-title);font-style:italic;font-weight:700;font-size:26px;line-height:1;letter-spacing:.02em;text-transform:uppercase;color:var(--fg)}h1 .brand .logo{height:8px;width:auto;opacity:.85}
@media (prefers-color-scheme:light){.logo-on-dark{display:none}.logo-on-light{display:block}}
select,button{background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:8px 10px;font:inherit}
button{cursor:pointer}
#menu-btn{display:none;padding:6px 10px;font-size:18px;line-height:1}
#status{color:var(--mut);padding:8px 16px;font-size:13px}#status.err{color:var(--neg)}
#login{display:flex;justify-content:center;padding:40px 0}
#login[hidden],#app[hidden]{display:none}

#app{display:grid;grid-template-columns:240px minmax(0,1fr);align-items:start}
#nav{position:sticky;top:57px;height:calc(100vh - 57px);overflow-y:auto;background:var(--nav);border-right:1px solid var(--line);padding:12px 8px 40px}
#nav .grp>button{width:100%;display:flex;justify-content:space-between;align-items:center;background:none;border:0;border-radius:8px;
  padding:9px 10px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--mut);text-align:left}
#nav .grp>button:hover{background:var(--card)}
#nav .grp>button::after{content:"›";transition:transform .15s;font-size:16px}
#nav .grp.open>button::after{transform:rotate(90deg)}
#nav .grp.active>button{color:var(--fg)}
#nav ul{list-style:none;margin:0 0 6px;padding:0 0 0 8px;display:none}
#nav .grp.open ul{display:block}
#nav a{display:flex;justify-content:space-between;align-items:center;gap:6px;padding:7px 10px;border-radius:8px;color:var(--fg);text-decoration:none;font-size:14px}
#nav a:hover{background:var(--card)}
#nav a.on{background:var(--accent);color:var(--accent-ink)}
#nav a.soon{color:var(--mut)}#nav a.on.soon{color:#fff}
#nav a small{font-size:10px;border:1px solid var(--line);border-radius:999px;padding:0 6px;color:var(--mut)}
#nav a.on small{border-color:#ffffff88;color:#fff}
#backdrop{display:none}

main{padding:16px 24px 48px;max-width:1100px;width:100%}
#page-title{font-size:20px;margin:6px 0 16px}#page-title small{color:var(--mut);font-weight:400;font-size:14px}
h3{font-size:13px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em;margin:26px 0 10px}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.card{background:var(--card);border-radius:12px;padding:14px}
.card .v{font-size:24px;font-weight:700;font-variant-numeric:tabular-nums}.card .l{color:var(--mut);font-size:13px}
.neg{color:var(--neg)}.pos{color:var(--grn)}
.two{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:10px}
.row{display:grid;grid-template-columns:110px 1fr 100px;gap:8px;align-items:center;margin:8px 0;font-size:13px}
.bars{position:relative;height:30px}
.bar{position:absolute;left:0;height:12px;border-radius:3px}.bar.ca{top:0;background:var(--series)}
.bar.m{top:15px;background:var(--grn)}.bar.m.n{background:var(--neg)}
.bar.solo{top:9px;height:14px}
.stack{display:flex;height:22px;border-radius:6px;overflow:hidden;margin:8px 0}.stack div{height:100%}
.row .num{text-align:right;font-variant-numeric:tabular-nums}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}.tabs button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
ol{padding-left:22px;margin:0}li{display:flex;justify-content:space-between;gap:10px;padding:6px 0;border-bottom:1px solid var(--line)}
table{width:100%;border-collapse:collapse;font-size:14px;font-variant-numeric:tabular-nums}
th,td{padding:8px 6px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}
th{color:var(--mut);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.table-wrap{overflow-x:auto}
.note{background:var(--card);border-left:3px solid var(--line);border-radius:8px;padding:10px 12px;color:var(--mut);font-size:13px;margin:12px 0}
.soon-box{background:var(--card);border-radius:12px;padding:18px}.soon-box h4{margin:14px 0 6px;font-size:13px;color:var(--mut);text-transform:uppercase;letter-spacing:.06em}
.soon-box ul{margin:0;padding-left:20px}.soon-box .tag{display:inline-block;background:var(--accent);color:var(--accent-ink);font-size:11px;font-weight:700;border-radius:999px;padding:2px 10px}
footer{color:var(--mut);font-size:12px;margin-top:28px}.na{color:var(--mut);font-style:italic}

@media (max-width:899px){
  #menu-btn{display:block}
  #app{display:block}
  #nav{position:fixed;z-index:30;top:0;left:0;bottom:0;height:auto;width:min(82vw,300px);padding-top:calc(env(safe-area-inset-top) + 12px);transform:translateX(-100%);transition:transform .2s}
  body.nav-open #nav{transform:none}
  body.nav-open #backdrop{display:block;position:fixed;inset:0;z-index:25;background:#0008}
  main{padding:12px 16px 40px}
  h1 span{display:none}
  header{gap:8px;padding:10px 12px}
  h1{min-width:0;flex:1 1 auto}.logo{height:15px;max-width:100%}
  .controls{min-width:0;flex-shrink:0}.controls button{padding:8px}
  #menu-btn{padding:6px 9px}
}

/* Blocs avec sélecteur de période */
.block{margin:0 0 22px}
.block-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin:26px 0 10px}
.block-head h3{margin:0}
.per-wrap{display:flex;align-items:center;gap:8px}
.per-wrap select{padding:5px 8px;font-size:13px}
.per-dates{color:var(--mut);font-size:12px;white-space:nowrap}
h4.sub{margin:14px 0 4px;font-size:14px}
#print-head{display:none}
#pdf{font-size:13px;white-space:nowrap}

/* Impression / export PDF : tout en clair, sans menu ni boutons */
@media print{
  :root{--bg:#fff;--card:#fff;--fg:#111;--mut:#555;--line:#ddd;--nav:#fff;--grn:#1f8a4c;--neg:#c62f34;--accent:#2B2B2B;--accent-ink:#fff;--series:#2B2B2B}
  @page{size:A4;margin:14mm}
  body{background:#fff;color:#111;font-size:12px;-webkit-print-color-adjust:exact;print-color-adjust:exact}
  header,#nav,#backdrop,#status,#login,#menu-btn,.per-wrap select,.tabs button:not(.on),#refresh,#pdf{display:none!important}
  #app{display:block!important}
  main{max-width:none;padding:0}
  #print-head{display:flex;align-items:center;gap:18px;border-bottom:2px solid #2B2B2B;padding-bottom:8px;margin-bottom:10px}
  #print-head img{height:18px;width:auto}
  #print-head span{color:#555;font-size:11px}
  .card,.note,.soon-box{border:1px solid #ddd;box-shadow:none}
  .card,.note,tr,li{break-inside:avoid}
  .block{break-inside:auto}                      /* un bloc long (grand tableau) doit pouvoir se couper entre deux lignes : sinon il saute en entier à la page suivante et laisse la 1re page presque vide */
  .block-head,h4.sub{break-after:avoid}.kpis{break-inside:avoid}
  .block-head{margin-top:14px}
  .per-dates{font-size:11px;color:#333}
  .table-wrap{overflow:visible}
  .tabs{margin-bottom:4px}
  footer{margin-top:14px}
}

table.prodtable th:nth-child(2),table.prodtable td:nth-child(2){text-align:left;white-space:normal;min-width:180px}
tr.tot td{font-weight:700;border-top:2px solid var(--line)}

/* Actualiser : retour visuel */
#refresh span{display:inline-block}
#refresh.spin span{animation:turn .8s linear infinite}
#refresh:disabled{opacity:.7;cursor:progress}
@keyframes turn{to{transform:rotate(360deg)}}
#status.ok{color:var(--grn)}

td.open{font-style:italic;color:var(--mut)}
tr.tot td.open{font-weight:600}

table.prodtable td.bu{text-align:left;white-space:normal;color:var(--mut);font-size:13px}
table.prodtable.ev th:nth-child(2){text-align:left}

th.sortable{cursor:pointer;user-select:none;white-space:normal;vertical-align:bottom;line-height:1.2}th.sortable:hover,th.sorted{color:var(--fg,#fff)}th .arrow{font-size:10px}

.linechart svg{width:100%;height:auto;display:block}.linechart .grid{stroke:var(--line);stroke-width:1}.linechart .ax{fill:var(--mut);font-size:11px}
.linechart .ln{fill:none;stroke:var(--series);stroke-width:2;stroke-linejoin:round}.linechart .ref{stroke:var(--mut);stroke-width:1;stroke-dasharray:4 4}
.linechart .dot{fill:var(--series);stroke:var(--card);stroke-width:2}.linechart .hit{fill:transparent}.linechart .hit:hover{fill:rgba(128,128,128,.22)}

.sharecell{position:relative;min-width:110px}.sharecell .sharebar{position:absolute;left:0;top:8px;bottom:8px;background:var(--series);opacity:.22;border-radius:3px}.sharecell span:last-child{position:relative}
.prodtable td:first-child{min-width:180px}.prodtable td.bu{text-align:left;min-width:110px}
.prodtable td.client{text-align:left;font-size:12px;color:var(--mut);max-width:150px}
.prodtable th,.prodtable td{padding-left:5px;padding-right:5px}.prodtable td:first-child{min-width:150px}.prodtable td.bu{min-width:90px}.prodtable td.client{max-width:130px}.prodtable td.client,.prodtable td.bu{white-space:normal}

.adjbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--card);font-size:13px}
.adjbar.on{border-color:var(--accent)}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{background:none;border:0;color:var(--mut);padding:7px 12px;font:inherit;cursor:pointer}
.seg button.sel{background:var(--accent);color:var(--accent-ink)}
.adjcard{border:1px solid var(--line);border-radius:10px;padding:10px;margin:0 0 10px;background:var(--card)}.adjcard.off{opacity:.55}
.adjrow{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:flex-end;margin:0 0 8px}.adjrow label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--mut)}
.adjrow label.chk{flex-direction:row;align-items:center;color:var(--fg)}.adjcard input[type=text],.adjcard input[type=number],.adjcard input[type=date],.adjcard select{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 8px;font:inherit}
.adjcard input.lbl{flex:1 1 260px}.adjcard input.note{width:100%;box-sizing:border-box}
.sellist{flex:1 1 100%}.sellist summary{cursor:pointer;color:var(--mut);font-size:13px}.sellist .checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:4px 12px;max-height:220px;overflow:auto;margin-top:8px}
.sellist .checks label{flex-direction:row;align-items:center;gap:6px;color:var(--fg);font-size:13px}
.adjbtns{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0}.adjbtns button,.mini{background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font:inherit;cursor:pointer}
.adjbtns button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.adjbtns button:disabled{opacity:.45;cursor:default}
@media print{.adjbtns,.mini{display:none}}
.prodtable td.mix{text-align:left;font-size:12px;line-height:1.3}
.prodtable td.mix small{white-space:nowrap}

.linechart .ln.s1{stroke:var(--series)}.linechart .ln.s2{stroke:var(--blu);stroke-dasharray:6 3}.linechart .dot.s1{fill:var(--series)}.linechart .dot.s2{fill:var(--blu)}
.linechart .legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;margin:0 0 6px}.linechart .legend .sw{display:inline-block;width:18px;height:0;border-top:3px solid var(--series);vertical-align:middle;margin-right:6px}
.linechart .legend .sw.s2{border-top:3px dashed var(--blu)}.linechart rect.hit{fill:transparent}.linechart rect.hit:hover{fill:rgba(128,128,128,.14)}
.stock td:nth-child(2),.stock td:nth-child(3),.stock th:nth-child(2),.stock th:nth-child(3){text-align:left}
#logout{color:var(--mut);text-decoration:underline;text-underline-offset:2px}#logout:hover{color:var(--fg)}
@media print{#logout{display:none}}
a.olink{color:inherit;text-decoration:none;border-bottom:1px dotted var(--mut)}a.olink:hover{color:var(--fg);border-bottom-color:var(--fg)}
@media print{a.olink{border:0}}
.note ul{list-style:disc;padding-left:20px;margin:8px 0}.note li{display:list-item;border:0;padding:2px 0}
.tagchip{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:2px 10px;font-size:12px;margin:2px 4px 2px 0;background:var(--bg)}.tagchip small{color:var(--mut)}.convtable td:first-child{min-width:190px;font-weight:600}.note code{font-size:13px}
.decomp td{vertical-align:top}.decomp td small{font-size:11px}.decomp td:first-child{min-width:200px}
table.prodtable.decomp th:nth-child(2),table.prodtable.decomp td:nth-child(2){text-align:right;min-width:0}table.prodtable.decomp td:first-child,table.prodtable.decomp th:first-child{text-align:left}

.mixbar{display:flex;height:10px;min-width:110px;border-radius:3px;overflow:hidden;background:var(--line)}.mixbar i{display:block;height:100%}
.mixbar i.m604,.sw.m604{background:var(--series)}.mixbar i.m603,.sw.m603{background:var(--blu)}.mixbar i.m602,.sw.m602{background:var(--grn)}.mixbar i.mautres,.sw.mautres{background:var(--mut)}
.mixbar i+i{border-left:1px solid var(--card)}.mixcell{min-width:120px}
.mixlegend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;margin:6px 0}.mixlegend .sw{display:inline-block;width:12px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle;border:0}
.kpis+.kpis{margin-top:12px}

.sdbar label.btn{background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 12px;cursor:pointer}
.sdbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:0 0 12px}.sdbar button,.sdadd button,.sdres button,#staff-source button.danger,.sdtable button{background:var(--card);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 12px;font:inherit;cursor:pointer}
.sdbar button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.sdbar button:disabled{opacity:.45;cursor:default}button.danger{color:var(--neg)!important}
.sdgrid,.sdparams{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 14px;margin:8px 0 12px}.sdparams{max-width:560px}
.sdfield{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--mut)}.sdin{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 8px;font:inherit;width:100%;box-sizing:border-box;min-width:70px}
input.sdin[type=checkbox]{width:auto}.sdtable td{vertical-align:middle}.sdtable td:first-child{min-width:0}.sdalloc input.sdin{width:76px;text-align:right}
.sdadd{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}.sdadd input{background:var(--bg);color:var(--fg);border:1px solid var(--line);border-radius:8px;padding:7px 8px;font:inherit}
.sdres{display:flex;justify-content:space-between;gap:8px;padding:6px 0;border-bottom:1px solid var(--line)}.sdpeople{margin-top:8px}
td.adjv{text-decoration:underline dotted;cursor:help}
td.exactive{background:rgba(220,20,60,.08);font-weight:600}.exkeyin{max-width:420px;margin:0 0 10px}
pre.exatt{max-height:320px;overflow:auto;white-space:pre-wrap;font-size:12px;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:10px}

.sdtable th.grp{text-align:center;border-bottom:0}.sdtable tr.grp td{background:var(--bg-alt,transparent);padding-top:12px}.sdtable input.sdpct{width:62px;min-width:0;text-align:right}
.sdsplit{width:auto;min-width:0;font-size:13px}.sdsplit th,.sdsplit td{padding:5px 4px}.sdsplit th.grp{border-left:1px solid var(--line)}.sdsplit th.sdsub{font-size:10px;font-weight:500;color:var(--mut);text-align:right}
.sdsplit td.sdind{text-align:right;color:var(--mut);font-size:12px;padding-right:2px;width:36px;border-left:1px solid var(--line)}.sdsplit td.sdind.on{font-style:italic}
.sdsplit td.sdinp{padding-left:2px;width:52px}.sdsplit input.sdpct{width:48px;min-width:0;padding:4px 5px;text-align:right;border-radius:6px}.sdsplit td.sdname{white-space:nowrap;position:sticky;left:0;background:var(--bg);z-index:1;max-width:190px;overflow:hidden;text-overflow:ellipsis}
.sdsplit td.sdcost,.sdsplit td.sdtot{white-space:nowrap;text-align:right}.sdfill{background:none;border:1px solid var(--line);color:var(--mut);border-radius:6px;cursor:pointer;padding:2px 6px}.sdfill:hover{color:var(--fg)}
.nmtable td,.nmtable th{white-space:nowrap}.nmtable td:not(:first-child){text-align:right}.nmtable tr.subtot td{font-weight:600;border-top:1px solid var(--line)}

/* Imputation des frais véhicules : lignes compactes sur une seule ligne, sans retour à la ligne */
.sdsplit td,.sdsplit th{white-space:nowrap;vertical-align:middle;font-variant-numeric:tabular-nums}.sdsplit td{padding:3px 4px;height:34px}.sdsplit tbody tr:nth-child(even) td{background:rgba(128,128,128,.06)}
.sdsplit td.sdname{max-width:170px;overflow:hidden;text-overflow:ellipsis}.sdsplit td.sdind{width:34px;font-size:11px}
.sdsplit input.sdpct{width:42px;padding:3px 4px;font-size:13px}.sdsplit input.sdpct.set{font-weight:700;border-color:var(--fg)}
.sdsplit td.sdtot{min-width:92px}.sdsplit .chip{display:inline-block;font-size:11px;padding:1px 7px;border-radius:10px;border:1px solid var(--line);color:var(--mut)}.sdsplit .chip.ok{color:var(--grn);border-color:var(--grn)}.sdsplit .chip.bad{color:var(--neg);border-color:var(--neg)}
.sdmini{display:flex;height:5px;width:92px;border-radius:3px;overflow:hidden;margin-top:3px;background:rgba(128,128,128,.2)}.sdmini i{display:block;height:100%}
.sdsplit td.sdact{width:1%}.sdsplit button.sdfill{padding:2px 6px;font-size:12px;line-height:1.2;margin-left:3px;white-space:nowrap}
.sdsplit tr.grp td{height:30px;background:transparent!important;padding-top:10px}
#exp-split .sdbar{position:sticky;bottom:0;background:var(--bg);padding:10px 0;margin:0;z-index:5;border-top:1px solid var(--line)}

.nmhyp{border:1px solid var(--line);border-radius:10px;margin:8px 0;padding:0 12px}.nmhyp summary{cursor:pointer;padding:10px 0;font-weight:600}.nmhyp[open] summary{border-bottom:1px solid var(--line);margin-bottom:8px}
.nmhyp div{padding-bottom:10px;font-size:13px}.nmhyp b{display:block;margin:8px 0 2px;color:var(--mut);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.nmhyp ul{margin:0;padding-left:18px}.nmhyp li{margin:3px 0}

table.tsort thead th{cursor:pointer;user-select:none}table.tsort thead th:hover{color:var(--fg)}table.tsort thead th[data-tsort=asc]::after{content:' ▲';font-size:10px}table.tsort thead th[data-tsort=desc]::after{content:' ▼';font-size:10px}

/* Imputation véhicules : largeurs fixes (colgroup) pour tenir sans défilement horizontal */
.sdsplit{table-layout:fixed;min-width:0}.sdsplit td,.sdsplit th{overflow:hidden;text-overflow:ellipsis}
.sdsplit td.sdind{width:auto!important;padding-right:2px}.sdsplit td.sdinp{width:auto!important}.sdsplit td.sdname{max-width:none!important}.sdsplit td.sdtot{min-width:0!important}.sdsplit td.sdact{width:auto!important;white-space:nowrap;overflow:visible}
.sdsplit input.sdpct{width:44px!important;padding:3px 4px}.sdsplit .sdmini{width:86px}
/* neutralise les min-width généraux de .prodtable (2e colonne : 180 px ; 1re : 150 px) pour le tableau d'imputation */
table.prodtable.sdsplit th,table.prodtable.sdsplit td,table.prodtable.sdsplit td:first-child,table.prodtable.sdsplit th:nth-child(2),table.prodtable.sdsplit td:nth-child(2){min-width:0!important}
table.prodtable.sdsplit td:nth-child(2){white-space:nowrap;text-align:right}
table.sdsplit th.grp{white-space:normal;font-size:11px;line-height:1.15;text-align:center}table.sdsplit thead th{padding-left:2px;padding-right:2px}
.mgtable td.mg-green,.mg-green{color:#2ecc71;font-weight:600}.mgtable td.mg-orange,.mg-orange{color:#f5a623;font-weight:600}.mgtable td.mg-red,.mg-red{color:#ff5a5f;font-weight:600}.mgtable td.mg-none{color:var(--mut)}
.mgtable td{vertical-align:middle;white-space:nowrap}.mgtable td.prod{white-space:normal;min-width:170px}.mgbar{margin-top:14px}
/* Contrôle des marges : écart entre marge théorique et marge réelle */
.mgdb{position:relative;display:inline-block;width:150px;height:16px;vertical-align:middle}.mgdb.big{width:min(340px,42vw);height:20px}
.mgdb .mgz{position:absolute;inset:5px 0;border-radius:3px;overflow:hidden}.mgdb.big .mgz{inset:7px 0}
.mgz i{position:absolute;top:0;bottom:0;display:block}.mgz i.r{left:0;background:rgba(255,90,95,.28)}.mgz i.o{background:rgba(245,166,35,.28)}.mgz i.g{background:rgba(46,204,113,.28)}
.mgl{position:absolute;top:50%;height:3px;margin-top:-1.5px;display:block}.mgl.loss{background:#ff5a5f}.mgl.gain{background:#2ecc71}
.mgp{position:absolute;top:50%;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;box-sizing:border-box;display:block}.mgdb.big .mgp{width:13px;height:13px;margin:-6.5px 0 0 -6.5px}
.mgp.theo{background:var(--bg);border:2px solid var(--fg)}.mgp.real{border:2px solid var(--bg)}
.mg-bg-green{background:#2ecc71}.mg-bg-orange{background:#f5a623}.mg-bg-red{background:#ff5a5f}.mg-bg-none{background:var(--mut)}
.mghist .row,.mgworst .row{align-items:center}.mgworst .row{display:flex;gap:12px;padding:4px 0}.mgworst .mgname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mgworst .num{text-align:right;min-width:120px}
.mghist .row{display:grid;grid-template-columns:190px 1fr 36px;gap:10px;align-items:center;padding:3px 0}.mghist .row span:first-child{white-space:nowrap}.mghist .bars{height:14px}
.mgtable .mgdb{width:104px}.mgtable td,.mgtable th{padding-left:4px;padding-right:4px}.mgtable td.prod{min-width:130px!important}.mgtable th:nth-child(n+4){white-space:normal}

.mgtable{font-size:13px}.mgtable td.prod{min-width:140px!important;max-width:260px;white-space:normal}.mgtable td{padding-top:6px;padding-bottom:6px}.mgtable td small{font-size:11px}
.mgtable td.mggap{white-space:nowrap}.mgtable td.mggap>span:first-child{display:inline-block;min-width:62px;text-align:right;margin-right:6px}.mgtable .mgdb{width:96px}
.mgtable th:nth-child(n+3){white-space:normal}
.mgtable th:first-child,.mgtable td:first-child{min-width:0!important;width:64px}.mgtable td.prod{min-width:110px!important;max-width:220px}
.mgtable .mgdb{width:78px}.mgtable td.mggap>span:first-child{min-width:54px;margin-right:4px}.mgtable td,.mgtable th{padding-left:3px;padding-right:3px}
.mgtable td.prod{min-width:96px!important}
.mgtable .mgdb{width:70px}

/* Contrôle d'un devis TN11 */
.tn11table td{font-size:13px;white-space:nowrap;vertical-align:middle}.tn11table td.prod{white-space:normal;min-width:180px}.tn11table tr.grp td{background:rgba(128,128,128,.12);padding-top:8px;padding-bottom:8px;white-space:normal}
.tn11table tr.tn-miss td{background:rgba(255,90,95,.08)}.tnbadge{border:1px solid var(--line);border-radius:6px;padding:0 5px;color:var(--mut);font-size:10px}.tnlab{color:#f5a623;font-weight:600;line-height:1.2;display:inline-block}.tnlab small{font-weight:400;color:var(--mut)}
.tn11bar{align-items:center}
.tn11table th.tnsort{cursor:pointer;user-select:none;white-space:nowrap}.tn11table th.tnsort:hover,.tn11table th.tnsort.on{color:var(--fg)}.tnsel{display:inline-flex;align-items:center;gap:6px}

@media print{thead{display:table-header-group}.tn11table tr.grp{break-after:avoid}}
.tnopen{border:0;background:none;cursor:pointer;color:inherit;padding:0 .2em}
.tn-detail>td{background:rgba(127,127,127,.07);padding:.4em .6em}
.tn-detail table{width:100%}
.tn-warn td{background:rgba(220,60,60,.10)}
.tn-excl td{opacity:.45;text-decoration:line-through}
.tn-excl td:first-child,.tn-excl td:nth-child(2){text-decoration:none}
.tnov{color:#e0a030;cursor:help}
input.tnx{vertical-align:middle;margin-right:.25em}
.note.warn{border-left-color:#e0a030;color:var(--fg,inherit)}
.uscat{border:1px solid var(--line);border-radius:10px;padding:8px 10px;margin:0 0 10px;background:var(--card)}
.uscat .sdbar{margin:0}.uscat-body{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px 18px;margin-top:10px}
.uscat-h{display:block;margin-bottom:4px}.uscat-items label{display:block;padding:2px 0 2px 20px;font-size:13px}.uscat input[type=checkbox]{margin-right:4px}
.pjtable th.pjg{text-align:center}.pjtable .pjsub th{font-size:11px}.pjtable{font-size:13px;width:100%}.pjtable td,.pjtable th{padding:6px 5px}.pjtable input.pj-in{width:120px;padding:5px 6px;text-align:right;min-width:0}.pjtable th:not(:first-child),.pjtable td:not(:first-child){text-align:right}.pjtable{max-width:760px}
.pjtable .pjavg td{background:rgba(127,127,127,.12);font-weight:600}.pjtable .pjfut td.pjexp,.pjtable .pjcur td.pjexp{color:var(--fg)}.pjtable .pjcur td{background:rgba(224,160,48,.07)}
main a:not(.olink):not(.btn),.note a,small a,.block a:not(.olink){color:var(--blu);text-decoration:underline}main a:visited:not(.olink),.note a:visited,small a:visited,.block a:visited:not(.olink){color:var(--blu)}
#nav a.navhome{display:block;margin:0 0 8px;padding:9px 10px;font-weight:700;font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mut)}#nav a.navhome.on{background:var(--accent);color:var(--accent-ink)}
#nav .sec>.sec-h{width:100%;display:flex;justify-content:space-between;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:8px;padding:9px 10px;margin:4px 0 6px;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--fg);text-align:left}
#nav .sec>.sec-h::after{content:"›";transition:transform .15s;font-size:16px}#nav .sec.open>.sec-h::after{transform:rotate(90deg)}
#nav .sec>.sec-body{display:none;padding-left:6px;border-left:2px solid var(--line);margin:0 0 8px 6px}#nav .sec.open>.sec-body{display:block}
.home-hero{padding:6px 0 10px}.home-hero .hello{font-size:30px;font-weight:700;letter-spacing:-.01em}.home-hero .who{font-size:16px;margin:4px 0 2px;color:var(--mut)}
.badge-profile{display:inline-block;background:var(--accent);color:var(--accent-ink);border-radius:999px;padding:2px 10px;font-size:11px;font-weight:600;letter-spacing:.03em;margin-left:6px;vertical-align:middle}
.home-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}.home-tile{display:block;text-decoration:none;color:inherit}a.home-tile:hover{outline:1px solid var(--accent)}
.home-tile .v{font-size:26px;font-weight:700;margin:4px 0}.home-tile .stack{margin-top:8px}
.news{padding:10px 0;border-top:1px solid var(--line)}.news:first-child{border-top:0}.news ul{margin:6px 0 0 18px;padding:0;color:var(--mut);font-size:14px}.news li{margin:2px 0}
main a.home-tile:not(.olink):not(.btn),main a.home-tile:visited:not(.olink):not(.btn){color:var(--fg);text-decoration:none}main a.home-tile .l,main a.home-tile small{color:var(--mut)}main a.home-tile .v.pos{color:var(--grn)}main a.home-tile .v.neg{color:var(--neg)}
.bu-bar{margin:0 0 14px;display:flex;flex-direction:column;gap:8px}.bu-filter{display:flex;flex-wrap:wrap;gap:8px}
.bu-pill{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text);font:500 13px var(--font-ui);cursor:pointer}
.bu-pill[aria-pressed="true"]{background:var(--action-bg);border-color:var(--action-bg);color:var(--action-text)}
.bu-l2{padding-left:12px;border-left:2px solid var(--border)}
@media print{.bu-bar{display:none}}
.sgauge{display:flex;height:14px;border-radius:7px;overflow:hidden;background:var(--border);margin-top:8px}
.sgauge .sg-neg{display:flex;justify-content:flex-end;border-right:2px solid var(--text)}.sgauge .sg-pos{display:flex}
.sgauge .sg-neg>div,.sgauge .sg-pos>div{height:100%}
.sgauge .hatch{background-image:repeating-linear-gradient(135deg,rgba(0,0,0,.35) 0 4px,transparent 4px 8px)}
.etp-list{display:flex;flex-direction:column;gap:3px;margin-top:8px;font-size:12px;color:var(--mut)}.etp-list>div{display:flex;align-items:center;gap:6px}.etp-list b{margin-left:auto;color:var(--text);font-weight:600}.etp-dot{width:9px;height:9px;border-radius:50%;flex:none}
