*{box-sizing:border-box}
:root{
  --bg:#f5f6f1; --surface:#ffffff; --soft:#fafbf7; --band:#eef1e7; --line:#dde1d4; --fg:#20251b; --muted:#646b5a;
  --accent:#4a6b2a; --accent-soft:#e3ead6; --warn:#9a5b00; --warn-soft:#fbefd9; --bad:#a3302a; --bad-soft:#f8e1df; --good:#2f6b3a; --sim:#eaf0f6; --sim-fg:#2c4f72;
  --f-display:"Barlow Condensed","Arial Narrow",sans-serif;
  --f-body:"Barlow",system-ui,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#161a13; --surface:#1d2219; --soft:#1a1e16; --band:#252b20; --line:#343b2d; --fg:#e7eadf; --muted:#9ba290;
  --accent:#9cc06a; --accent-soft:#2b3621; --warn:#e3a94a; --warn-soft:#3a2d16; --bad:#ec7a70; --bad-soft:#3a1d1a; --good:#7cc489; --sim:#1c2633; --sim-fg:#9cc3ea; color-scheme:dark}}
:root[data-theme="dark"]{
  --bg:#161a13; --surface:#1d2219; --soft:#1a1e16; --band:#252b20; --line:#343b2d; --fg:#e7eadf; --muted:#9ba290;
  --accent:#9cc06a; --accent-soft:#2b3621; --warn:#e3a94a; --warn-soft:#3a2d16; --bad:#ec7a70; --bad-soft:#3a1d1a; --good:#7cc489; --sim:#1c2633; --sim-fg:#9cc3ea; color-scheme:dark}
body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:14px;line-height:1.4;
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 40px}
h1{font-family:var(--f-display);font-size:1.9rem;font-weight:700;margin:0;text-wrap:balance}
.wrap{display:grid;gap:14px;max-width:100%}
/* Bandeau de titre (comme SaisieBT) : pleine largeur, pastille, titre + sous-titre, menu à droite */
.topbar{display:flex;align-items:center;gap:16px;
  margin:0 calc(-1 * max(16px,env(safe-area-inset-right,0px))) 16px calc(-1 * max(16px,env(safe-area-inset-left,0px)));
  padding:10px max(16px,env(safe-area-inset-right,0px)) 10px max(16px,env(safe-area-inset-left,0px));
  background:var(--surface);border-bottom:1px solid var(--line)}
.brand{display:flex;align-items:center;gap:10px;min-width:0;flex:1 1 auto}
.brand .titre{min-width:0}
.brand-mark{width:30px;height:30px;border-radius:8px;background:var(--accent);position:relative;flex:none}
.brand-mark::after{content:"";position:absolute;inset:8px 7px;border:2px solid var(--surface);border-radius:2px;border-top-width:5px;opacity:.9}
h1.brand-name{font:650 14px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;margin:0;letter-spacing:.01em}
.brand-sub{color:var(--muted);font:12px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Menu ⋯ à droite du bandeau */
.menu{position:relative;flex:none}
.menu summary{list-style:none;cursor:pointer;width:36px;text-align:center;font-size:1.1rem;font-weight:700;line-height:1.2;padding:6px 0;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--fg);user-select:none}
.menu summary:hover{background:var(--band)}
.menu summary::-webkit-details-marker{display:none}
.menu[open] summary{background:var(--accent);color:var(--bg);border-color:var(--accent)}
.menu summary:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
.menu-p{position:absolute;top:calc(100% + 6px);right:0;z-index:30;min-width:250px;max-width:calc(100vw - 32px);display:grid;padding:6px 0;background:var(--surface);border:1px solid var(--line);border-radius:10px;box-shadow:0 6px 18px rgba(0,0,0,.15)}
.menu-p .menu-t{font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:6px 14px 2px}
.menu-p .menu-t + button{margin-top:0}
.menu-p button{background:none;border:0;border-radius:0;color:var(--fg);font-weight:500;text-align:left;padding:6px 14px}
.menu-p button:hover{background:var(--accent-soft);color:var(--accent)}
.drop{cursor:pointer}
.controls{display:flex;flex-wrap:wrap;gap:12px;align-items:end;justify-content:flex-end}
label.f{display:grid;gap:3px;font-size:.8rem;color:var(--muted)}
select,input{font:inherit;font-size:.86rem;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:3px;padding:3px 5px}
input[type=number]{width:5.6em;font-family:var(--f-mono);text-align:right}
input.ex{border-color:var(--warn);background:var(--warn-soft)}
input:disabled{opacity:.35}
input:focus-visible,select:focus-visible,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button{font:inherit;font-weight:600;border:1px solid var(--accent);background:var(--accent);color:var(--bg);border-radius:4px;padding:5px 11px;cursor:pointer}
button.ghost{background:transparent;color:var(--accent)}
button.mini{font-size:.74rem;padding:1px 6px;font-weight:500}
[hidden]{display:none!important}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.seg button{border:0;border-radius:0;background:var(--surface);color:var(--fg);font-weight:500;padding:5px 10px}
.seg button[aria-pressed="true"]{background:var(--accent);color:var(--bg)}
.proto{background:var(--warn-soft);color:var(--warn);border-radius:4px;padding:8px 12px;font-size:.88rem;display:flex;flex-wrap:wrap;gap:8px 16px;align-items:center;justify-content:space-between}
.acts2{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.82rem;color:var(--muted);align-items:center}
.sw{display:inline-block;width:14px;height:10px;border-radius:2px;vertical-align:-1px;margin-right:5px;border:1px solid var(--line)}
.small{font-size:.74rem;color:var(--muted);display:block}
.note{font-size:.84rem;color:var(--muted);margin:0}
.toast{position:fixed;right:16px;bottom:16px;font-size:.88rem;background:var(--fg);color:var(--bg);border-radius:4px;padding:6px 12px;opacity:0;transition:opacity .2s;pointer-events:none;max-width:calc(100vw - 32px)}
.toast.on{opacity:1}

/* Dépôt des fichiers */
.depot{display:grid;gap:10px;margin-bottom:14px}
.drop{border:2px dashed var(--line);border-radius:6px;background:transparent;padding:12px 14px;display:grid;gap:10px}
.drop.over{border-color:var(--accent);background:var(--accent-soft)}
.drop > div:first-child{min-width:0}
.slots{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.slot{background:var(--soft);border:1px solid var(--line);border-radius:6px;padding:8px 10px;display:grid;gap:4px;align-content:start;font-size:.84rem;position:relative}
.slot .n{font:650 14px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;padding-right:60px}
.slot .n .fmt{font-family:var(--f-mono);font-size:.68rem;font-weight:500;color:var(--muted);margin-left:6px;text-transform:uppercase}
.slot .ap{color:var(--muted);font-size:.78rem}
.slot.ok .n::before{content:"✓ ";color:var(--good)}
.slot.err{border-color:var(--bad)}
.slot.busy{opacity:.6}
.slot .fic{font-family:var(--f-mono);font-size:.72rem;word-break:break-all}
.slot ul{margin:0;padding-left:16px;font-size:.78rem}
.slot li.ko{color:var(--bad)} .slot li.al{color:var(--warn)} .slot li.ok{color:var(--good)}
.slot .ret{position:absolute;top:6px;right:6px}
.slot .tag{font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.slot .tag.req{color:var(--accent)}
.coh{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:8px 12px;font-size:.84rem}
.coh h2{font-family:var(--f-display);font-size:1.05rem;margin:0 0 4px}
.coh ul{margin:0;padding-left:18px}
.coh li.ko{color:var(--bad)} .coh li.al{color:var(--warn)} .coh li.ok{color:var(--good)}

/* Tableau : rubriques en lignes, activités en colonnes, 1re colonne figée */
.tbl{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;--wl:240px;--wt:110px;--wa:150px}
.hdr{position:sticky;top:0;z-index:5;margin-bottom:-10px;box-shadow:0 2px 6px rgba(0,0,0,.08)}
.sx{overflow-x:auto;background:var(--surface);border:1px solid var(--line)}
.hdr .sx{overflow:hidden;border-radius:6px 6px 0 0}
.blk .sx{border-top:0;padding-bottom:16px;scrollbar-width:auto;scrollbar-color:var(--muted) var(--band)}
.blk .sx::-webkit-scrollbar{height:12px}
.blk .sx::-webkit-scrollbar-track{background:var(--band)}
.blk .sx::-webkit-scrollbar-thumb{background:var(--muted);border-radius:6px;border:2px solid var(--band)}
.blk:last-child .sx{border-radius:0 0 6px 6px}
table{border-collapse:separate;border-spacing:0;font-size:.86rem;table-layout:fixed;width:calc(var(--wl) + var(--wt) + var(--na) * var(--wa))}
col.c-lab{width:var(--wl)} col.c-tot{width:var(--wt)} col.c-a{width:var(--wa)}
th,td{padding:4px 8px;border-bottom:1px solid var(--line);white-space:nowrap}
td+td,th+th{border-left:1px solid var(--line)}
/* Cellules chiffrées centrées (la colonne des libellés reste à gauche) ; suffixes (unité, € / unité, %, badges) collés à la valeur. */
body.verbeux .tbl{--wa:200px}
td.n,th.n{font-family:var(--f-mono);font-variant-numeric:tabular-nums;text-align:center}
.sfx{display:inline;margin-left:4px;white-space:nowrap;font-family:var(--f-body);font-size:.76rem;color:var(--muted)}
.sfx:empty{display:none}
.sfx .chip{margin-left:3px;vertical-align:baseline}
.in{display:inline-flex;align-items:baseline;justify-content:center}
.in select{width:6.4em}
/* Champs numériques sans flèches, texte centré comme les valeurs fixes. */
td.n .in input[type=number]{text-align:center;-moz-appearance:textfield;appearance:textfield}
td.n .in input[type=number]::-webkit-inner-spin-button,
td.n .in input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
thead th{position:sticky;top:0;z-index:2;background:var(--surface);font-weight:600;vertical-align:middle;text-align:center}
thead th .code{font-family:var(--f-mono);font-size:.82rem;display:block}
thead th .lib{font-family:var(--f-display);font-weight:500;font-size:.9rem;color:var(--muted);white-space:normal;display:block;max-width:9em;margin-inline:auto;line-height:1.1}
thead th .hide{border:0;background:none;color:var(--muted);padding:0 2px;font-weight:400;position:absolute;top:3px;left:3px;line-height:1}
th.lab,td.lab{position:sticky;left:0;z-index:1;background:var(--surface);text-align:left;white-space:normal;border-right:1px solid var(--line)}
td{overflow:hidden}
thead th.lab{z-index:3;background:var(--surface)}
td.tot,th.tot{background:var(--band)}
tr.sec td{background:var(--fg);color:var(--bg);font-family:var(--f-display);font-size:1rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase;padding:5px 8px}
tr.sec td.lab{background:var(--fg)}
tr.sec.sim td{background:var(--sim-fg);color:var(--surface)}
tr.sum td{font-weight:600;border-top:1px solid var(--fg)}
tr.sum td.lab{font-family:var(--f-display);font-size:.98rem;letter-spacing:.03em;text-transform:uppercase}
tr.det td{color:var(--muted);font-size:.8rem}
tr.det td.lab{padding-left:22px}
tr.simrow td:not(.lab){background:var(--sim)}
tr.simrow td.tot{background:var(--sim)}
tr.uni td,tr.sep td{border-top:2px solid var(--line);padding-top:6px}
tr.uni td.lab{font-weight:600}
tr.uni td:not(.lab){font-family:var(--f-body);color:var(--muted)}
.uq{font-weight:400}
tr.key td{font-weight:600}
tr.key td:not(.lab){color:var(--sim-fg)}
.pos{color:var(--good)!important} .neg{color:var(--bad)!important}
.chip{display:inline-block;font-size:.66rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;padding:0 5px;border-radius:3px;background:var(--accent-soft);color:var(--accent);margin-left:4px}
.chip.w{background:var(--warn-soft);color:var(--warn)}
.src{display:inline-block;font-family:var(--f-mono);font-size:.66rem;font-weight:600;width:1.4em;text-align:center;border-radius:3px;background:var(--accent-soft);color:var(--accent);margin-left:2px}
.src.off{background:transparent;color:var(--line)}
.warn-t{color:var(--warn)}
.cmp{display:grid;gap:1px;justify-items:center}
.cmp span{font-size:.8rem}
.cmp b{font-weight:600}
td.lab select{font-size:.76rem;padding:1px 3px;margin-left:6px}
.toggle{background:none;border:0;color:var(--accent);padding:0 4px 0 0;font-weight:700;cursor:pointer}
.masques{font-size:.84rem;color:var(--muted);margin:0}
.masques button{margin:2px 4px}
@media (max-width:600px){.tbl{--wl:150px}}

/* Mode verbeux (désactivé par défaut) : sans lui, on masque les détails des fichiers, la cohérence et les origines */
.switch{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:0 8px;margin-top:6px;padding:8px 14px 4px;border-top:1px solid var(--line);font-size:.86rem;cursor:pointer}
.switch .small{grid-column:2}
.switch input{appearance:none;width:30px;height:16px;border-radius:8px;background:var(--line);position:relative;cursor:pointer;padding:0;border:0;transition:background .15s}
.switch input::after{content:"";position:absolute;top:2px;left:2px;width:12px;height:12px;border-radius:50%;background:var(--surface);transition:left .15s}
.switch input:checked{background:var(--accent)}
.switch input:checked::after{left:16px}
body:not(.verbeux) .v-only,
body:not(.verbeux) .drop .small,
body:not(.verbeux) .slot .ap,
body:not(.verbeux) .slot .det,
body:not(.verbeux) .slot li:not(.ko),
body:not(.verbeux) #coh,
body:not(.verbeux) td.n .chip{display:none!important}
body:not(.verbeux) .slot ul:not(:has(li.ko)){display:none}
