/* TANTINES: interface v2 (2026-11-15). Barre latérale malachite profonde, accent ocre,
   cartes en relief doux, tableaux denses à en-tête fixe, états codés par pastilles.
   Tous les sélecteurs de la v1 sont conservés: seul le rendu change. */
:root{
 --bg:#F2F4F0;--surface:#FFFFFF;--surface2:#E9ECE6;--line:#D9DED5;--ink:#16201B;--ink2:#56635B;
 --acc:#0B6B55;--acc2:#0E7A5F;--acc-ink:#FFFFFF;--acc-soft:#DCEDE6;--ochre:#A3650E;--gold:#C8912A;--ochre-soft:#F6E9D2;
 --ok:#1A7442;--ok-bg:#DFF1E5;--warn:#8E5B06;--warn-bg:#FAEDD2;--crit:#B0261D;--crit-bg:#FAE1DE;--info:#245E9E;--info-bg:#E0EAF7;--mute:#56635B;--mute-bg:#E9ECE6;
 --om:#DF5F0B;--wv:#1290C0;--mv:#1C4C9C;--scrim:rgba(10,20,16,.48);--shadow:0 18px 44px rgba(13,32,24,.18);--shadow-sm:0 1px 2px rgba(13,32,24,.05),0 4px 14px rgba(13,32,24,.05);
 --side1:#0A5C47;--side2:#073F31;--side-ink:#EAF4EF;--side-ink2:rgba(234,244,239,.62);--side-line:rgba(255,255,255,.14);
 --f-ui:'IBM Plex Sans',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;--f-head:'Manrope','IBM Plex Sans',system-ui,sans-serif;--f-num:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
 --bg:#0E1311;--surface:#161D1A;--surface2:#1E2723;--line:#2B3631;--ink:#E5EBE7;--ink2:#9AA89F;--acc:#43C29C;--acc2:#43C29C;--acc-ink:#05211A;--acc-soft:#16362D;--ochre:#E0A64A;--gold:#E0A64A;--ochre-soft:#3A2C14;
 --ok:#62CB8E;--ok-bg:#15301F;--warn:#E7B14F;--warn-bg:#33270F;--crit:#F2877D;--crit-bg:#3A1A17;--info:#83B2EA;--info-bg:#162A40;--mute:#9AA89F;--mute-bg:#222C27;--om:#FF8A3D;--wv:#4CC3EE;--mv:#7EA6EE;--scrim:rgba(0,0,0,.62);--shadow:0 18px 44px rgba(0,0,0,.55);--shadow-sm:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.3);color-scheme:dark}}
:root[data-theme="dark"]{
 --bg:#0E1311;--surface:#161D1A;--surface2:#1E2723;--line:#2B3631;--ink:#E5EBE7;--ink2:#9AA89F;--acc:#43C29C;--acc2:#43C29C;--acc-ink:#05211A;--acc-soft:#16362D;--ochre:#E0A64A;--gold:#E0A64A;--ochre-soft:#3A2C14;
 --ok:#62CB8E;--ok-bg:#15301F;--warn:#E7B14F;--warn-bg:#33270F;--crit:#F2877D;--crit-bg:#3A1A17;--info:#83B2EA;--info-bg:#162A40;--mute:#9AA89F;--mute-bg:#222C27;--om:#FF8A3D;--wv:#4CC3EE;--mv:#7EA6EE;--scrim:rgba(0,0,0,.62);--shadow:0 18px 44px rgba(0,0,0,.55);--shadow-sm:0 1px 2px rgba(0,0,0,.4),0 4px 14px rgba(0,0,0,.3);color-scheme:dark}
*{box-sizing:border-box}
::selection{background:var(--acc-soft)}
html,body{min-height:100%}
body{background:var(--bg);color:var(--ink);font:14px/1.5 var(--f-ui);-webkit-font-smoothing:antialiased}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
a{color:var(--acc)}
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:var(--line);border-radius:6px;border:2px solid var(--bg)}
::-webkit-scrollbar-track{background:transparent}
.app{display:grid;grid-template-columns:264px minmax(0,1fr);min-height:100vh}
/* Barre latérale: fond malachite, texte clair, repère ocre sur l'entrée active. */
.side{position:sticky;top:0;height:100vh;overflow-y:auto;background:linear-gradient(178deg,var(--side1),var(--side2) 72%);color:var(--side-ink);padding:20px 14px 28px max(14px,env(safe-area-inset-left,0px));display:flex;flex-direction:column;gap:6px;scrollbar-width:thin}
.side::-webkit-scrollbar-thumb{background:rgba(255,255,255,.18);border-color:transparent}
.brand{display:flex;gap:11px;align-items:center;padding:2px 8px 16px;border-bottom:1px solid var(--side-line);margin-bottom:6px}
.brand svg{flex:none;filter:drop-shadow(0 3px 8px rgba(0,0,0,.35))}
.brand b{font:800 15.5px/1.1 var(--f-head);letter-spacing:.05em;display:block;color:#fff}
.brand span{font-size:11.5px;color:var(--side-ink2)}
.nav-g{font:600 10.5px var(--f-ui);letter-spacing:.12em;text-transform:uppercase;color:var(--side-ink2);padding:14px 10px 5px}
.nav a{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 10px;border-radius:9px;color:var(--side-ink);text-decoration:none;font-weight:500;transition:background .15s ease,color .15s ease}
.nav a:hover{background:rgba(255,255,255,.08);color:#fff}
.nav a.on{background:rgba(255,255,255,.13);color:#fff;font-weight:600;box-shadow:inset 3px 0 0 var(--gold)}
.side .nb{font:600 11px var(--f-num);border-radius:10px;padding:0 7px;background:rgba(242,135,125,.22);color:#FFB4AB}
.side .nb.i{background:rgba(131,178,234,.22);color:#B9D4F5}
.side input,.side select{background:rgba(255,255,255,.08);border-color:var(--side-line);color:var(--side-ink)}
.side .btn{background:rgba(255,255,255,.07);border-color:var(--side-line);color:var(--side-ink)}
.side .btn:hover{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.3)}
.side .muted,.side .small{color:var(--side-ink2)}
.nb{font:600 11px var(--f-num);border-radius:10px;padding:0 7px;background:var(--crit-bg);color:var(--crit)}
.nb.i{background:var(--info-bg);color:var(--info)}
.main{min-width:0;display:flex;flex-direction:column}
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--line);padding-block:10px;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.top .sp{flex:1}
.who{display:flex;align-items:center;gap:8px;min-width:0}
.who label{font-size:12px;color:var(--ink2);white-space:nowrap}
.who select{max-width:min(320px,62vw)}
.menuBtn{display:none}
.content{padding-block:24px 72px;padding-left:max(20px,env(safe-area-inset-left,0px));padding-right:max(20px,env(safe-area-inset-right,0px));width:100%;max-width:1340px;display:flex;flex-direction:column;gap:18px}
h1{font:800 24px/1.2 var(--f-head);margin:0;text-wrap:balance;letter-spacing:-.015em}
h2{font:700 15.5px/1.3 var(--f-head);margin:0;text-wrap:balance}
h3{font:700 13.5px var(--f-head);margin:0}
p{margin:0}
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;flex-wrap:wrap}
.head p{color:var(--ink2);margin-top:4px;max-width:70ch}
.crumb{font-size:12px;color:var(--ink2);margin-bottom:4px}
.crumb a{text-decoration:none}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px;min-width:0;box-shadow:var(--shadow-sm)}
.card.flat{background:transparent;border-style:dashed;box-shadow:none}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,168px),1fr));gap:12px}
.kpi{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:2px;min-width:0;box-shadow:var(--shadow-sm);position:relative;overflow:hidden}
.kpi::before{content:"";position:absolute;inset:0 0 auto;height:3px;background:var(--acc-soft)}
.kpi .l{font-size:12px;color:var(--ink2)}
.kpi .v{font:600 21px/1.3 var(--f-num);font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi .s{font-size:11.5px;color:var(--ink2)}
.kpi.crit .v{color:var(--crit)}.kpi.crit::before{background:var(--crit)}
.kpi.warn .v{color:var(--warn)}.kpi.warn::before{background:var(--warn)}
.kpi.ok .v{color:var(--ok)}.kpi.ok::before{background:var(--ok)}
.g2{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,430px),1fr));gap:16px;align-items:start}
.g3{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:12px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.between{justify-content:space-between}
.muted{color:var(--ink2)}.small{font-size:12px}
.tw{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:8px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{font:600 10.5px var(--f-ui);text-transform:uppercase;letter-spacing:.07em;color:var(--ink2);text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;background:var(--surface)}
.tw th{position:sticky;top:0;z-index:1}
td{padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:middle}
tbody tr{transition:background .12s ease}
tbody tr:hover{background:color-mix(in srgb,var(--surface2) 55%,transparent)}
tbody tr:last-child td{border-bottom:none}
tfoot td{font-weight:600;border-top:2px solid var(--line);border-bottom:none}
td.n,th.n{text-align:right;font-family:var(--f-num);font-variant-numeric:tabular-nums;white-space:nowrap}
td .sub{font-size:11.5px;color:var(--ink2)}
.mono{font-family:var(--f-num);font-size:12.5px}
.empty{color:var(--ink2);font-size:13px;padding:6px 0}
.pill{display:inline-block;padding:1px 9px;border-radius:999px;font-size:11.5px;font-weight:600;white-space:nowrap;line-height:1.6;box-shadow:inset 0 0 0 1px rgba(10,25,18,.05)}
.p-ok{background:var(--ok-bg);color:var(--ok)}.p-warn{background:var(--warn-bg);color:var(--warn)}.p-crit{background:var(--crit-bg);color:var(--crit)}.p-info{background:var(--info-bg);color:var(--info)}.p-mute{background:var(--mute-bg);color:var(--mute)}.p-acc{background:var(--acc-soft);color:var(--acc)}
.op{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}
.op::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.op-om{color:var(--om)}.op-wv{color:var(--wv)}.op-mv{color:var(--mv)}
.op span{color:var(--ink)}
.btn{font:600 13px/1.2 var(--f-ui);border:1px solid var(--line);background:var(--surface);color:var(--ink);padding:8px 13px;border-radius:9px;cursor:pointer;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center;gap:6px;transition:border-color .15s ease,background .15s ease,filter .15s ease,transform .05s ease}
.btn:hover{border-color:var(--ink2)}
.btn:active{transform:translateY(.5px)}
.btn.pri{background:linear-gradient(180deg,var(--acc2),var(--acc));border-color:var(--acc);color:var(--acc-ink);box-shadow:0 2px 8px rgba(11,107,85,.28)}
.btn.pri:hover{filter:brightness(1.07)}
.btn.warn{border-color:var(--ochre);color:var(--ochre)}
.btn.danger{color:var(--crit)}
.btn.sm{padding:4px 9px;font-size:12px}
.btn.ghost{background:transparent}
.btn.locked{opacity:.5}
.btn.locked::after{content:"";width:9px;height:9px;border:1.6px solid currentColor;border-radius:2px;margin-left:2px}
:focus-visible{outline:2px solid var(--acc);outline-offset:2px}
input,select,textarea{font:14px/1.4 var(--f-ui);padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:var(--ink);width:100%;min-width:0;transition:border-color .15s ease,box-shadow .15s ease}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--acc);box-shadow:0 0 0 3px var(--acc-soft)}
select.inline{width:auto}
textarea{min-height:110px;font-family:var(--f-num);font-size:12.5px}
.fld{display:flex;flex-direction:column;gap:4px;min-width:0}
.fld>label{font-size:12px;font-weight:600;color:var(--ink2)}
.fld .hint{font-size:11.5px;color:var(--ink2)}
.chk{display:flex;gap:8px;align-items:center;font-size:13.5px}
.chk input{width:auto}
.fgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,190px),1fr));gap:12px}
.ov{position:fixed;inset:0;background:var(--scrim);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);z-index:60;overflow-y:auto;display:flex;justify-content:center;align-items:flex-start;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.modal{background:var(--surface);color:var(--ink);border-radius:16px;width:min(640px,100%);margin-top:5vh;box-shadow:var(--shadow);display:flex;flex-direction:column}
.modal.wide{width:min(920px,100%)}
.mh{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:15px 18px;border-bottom:1px solid var(--line)}
.mb{padding:16px 18px;display:flex;flex-direction:column;gap:14px}
.mact{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding-top:4px}
.intro{background:var(--surface2);border-radius:9px;padding:10px 12px;font-size:13px}
.ferr{background:var(--crit-bg);color:var(--crit);border-radius:9px;padding:9px 12px;font-size:13px}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(18px + env(safe-area-inset-bottom,0px));z-index:80;display:flex;flex-direction:column;gap:8px;width:min(520px,calc(100% - 32px))}
.toast div{background:var(--ink);color:var(--bg);padding:11px 14px;border-radius:10px;font-size:13.5px;box-shadow:var(--shadow)}
.toast div.err{background:var(--crit);color:#fff}
.alerts{display:flex;flex-direction:column;gap:2px}
.alerts a{display:grid;grid-template-columns:4px 1fr;gap:10px;padding:8px 6px;border-radius:8px;color:var(--ink);text-decoration:none;font-size:13px}
.alerts a:hover{background:var(--surface2)}
.alerts a i{border-radius:3px}
.alerts .crit i{background:var(--crit)}.alerts .warn i{background:var(--ochre)}.alerts .info i{background:var(--info)}
.capt td{padding:6px 4px}
.capt tr.tot td{border-top:2px solid var(--ink);font-weight:700;font-size:14px}
.mbar{display:inline-block;width:70px;height:6px;border-radius:3px;background:var(--surface2);vertical-align:middle;margin-right:6px;overflow:hidden}
.mbar i{display:block;height:100%;background:var(--acc)}
.chart svg{width:100%;height:auto;display:block}
.legend{display:flex;gap:14px;font-size:12px;color:var(--ink2)}
.legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px;vertical-align:-1px}
.steps{display:flex;gap:4px;overflow-x:auto;padding-bottom:2px}
.step{flex:1 0 96px;font-size:11.5px;padding:6px 6px 0;border-top:3px solid var(--line);color:var(--ink2)}
.step.done{border-color:var(--acc);color:var(--ink)}
.step.cur{border-color:var(--ochre);color:var(--ink);font-weight:600}
.step.ko{border-color:var(--crit);color:var(--crit);font-weight:600}
.dl{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,150px),1fr));gap:10px 16px}
.dl div{min-width:0}
.dl dt{font-size:11.5px;color:var(--ink2)}
.dl dd{margin:0;font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.crit-row{display:grid;grid-template-columns:minmax(0,1fr) 120px 42px;gap:10px;align-items:center;font-size:13px}
.crit-row .bar{height:8px;border-radius:4px;background:var(--surface2);overflow:hidden}
.crit-row .bar i{display:block;height:100%;background:var(--acc)}
.scoreBig{font:700 30px/1 var(--f-num)}
.mx td{padding:5px 6px}
.cell{font:600 11.5px var(--f-ui);border:0;border-radius:7px;padding:4px 8px;cursor:pointer;white-space:nowrap;min-width:64px}
.c-ok{background:var(--ok-bg);color:var(--ok)}.c-crit{background:var(--crit-bg);color:var(--crit)}.c-mute{background:var(--mute-bg);color:var(--mute)}.c-warn{background:var(--warn-bg);color:var(--warn)}.c-info{background:var(--info-bg);color:var(--info)}
.tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);overflow-x:auto}
.tabs button{font:600 13px var(--f-ui);background:none;border:0;border-bottom:2px solid transparent;color:var(--ink2);padding:8px 12px;cursor:pointer;white-space:nowrap;transition:color .15s ease}
.tabs button.on{color:var(--acc);border-bottom-color:var(--acc)}
.dossiers{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:10px}
.dos{text-align:left;font:inherit;color:inherit;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:13px;cursor:pointer;display:flex;flex-direction:column;gap:4px;box-shadow:var(--shadow-sm);transition:border-color .15s ease,box-shadow .15s ease}
.dos:hover{border-color:var(--ink2)}
.dos.on{border-color:var(--acc);box-shadow:inset 0 0 0 1px var(--acc)}
.dos.lock{background:var(--surface2);color:var(--ink2)}
.dos b{font:700 13.5px var(--f-head)}
.acct{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,200px),1fr));gap:12px}
.acct .kpi{border-top:3px solid var(--line)}
.acct .kpi::before{display:none}
.acct .kpi.om{border-top-color:var(--om)}.acct .kpi.wv{border-top-color:var(--wv)}.acct .kpi.mv{border-top-color:var(--mv)}.acct .kpi.bq{border-top-color:var(--acc)}.acct .kpi.ca{border-top-color:var(--ochre)}
.tl{display:flex;flex-direction:column;gap:8px;font-size:13px}
.tl div{display:grid;grid-template-columns:86px 1fr;gap:10px}
.code{font-family:var(--f-num);font-size:12px;background:var(--surface2);border-radius:5px;padding:1px 5px}
.state-ok{color:var(--ok);font-weight:600}.state-ko{color:var(--crit);font-weight:600}
.scrim{display:none}
@media (max-width:900px){
 .app{grid-template-columns:minmax(0,1fr)}
 .side{position:fixed;top:0;bottom:0;left:0;width:min(292px,86vw);z-index:50;transform:translateX(-104%);transition:transform .2s ease;height:100%;padding-top:max(20px,env(safe-area-inset-top,0px));box-shadow:var(--shadow)}
 .side.open{transform:none}
 .scrim.open{display:block;position:fixed;inset:0;background:var(--scrim);z-index:45}
 .menuBtn{display:inline-flex}
 h1{font-size:21px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* Connexion: fond malachite profond, carte en relief, liseré ocre. */
.login{min-height:100vh;display:grid;place-items:center;padding:24px max(16px,env(safe-area-inset-left,0px));background:radial-gradient(1100px 550px at 85% -10%,rgba(200,145,42,.20),transparent 60%),radial-gradient(900px 600px at -10% 110%,rgba(67,194,156,.16),transparent 55%),linear-gradient(160deg,#0A5C47,#06382B 78%)}
.login .box{width:min(440px,100%);background:var(--surface);border:1px solid var(--line);border-radius:18px;padding:28px;display:flex;flex-direction:column;gap:16px;box-shadow:0 30px 70px rgba(0,0,0,.4),inset 0 4px 0 var(--gold)}
.login .demo{display:flex;flex-direction:column;gap:4px;max-height:260px;overflow-y:auto}
.login .demo button{text-align:left;background:var(--surface2);border:0;border-radius:9px;padding:8px 11px;font:inherit;color:var(--ink);cursor:pointer;display:flex;justify-content:space-between;gap:8px;transition:background .15s ease}
.login .demo button:hover{background:var(--acc-soft)}
.loading{color:var(--ink2);padding:30px 0}
.skel{height:14px;border-radius:6px;background:var(--surface2);margin:10px 0;animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.5}}
.cur{font:600 10.5px var(--f-num);color:var(--ink2);margin-left:4px}
