:root{
  --indigo:#3D35D6; --indigo-700:#2E27B0; --indigo-900:#1B1764; --indigo-50:#EEEDFC; --indigo-100:#DDDBFA;
  --safran:#F6B414; --safran-50:#FEF6DE; --safran-700:#9A6B00;
  --ink:#17162E; --muted:#6C6B86; --line:#E7E6F2; --bg:#F6F6FB; --card:#FFFFFF;
  --ok:#0F8A5F; --ok-50:#E5F5EE; --warn:#9A6B00; --warn-50:#FEF6DE; --ko:#C8322A; --ko-50:#FCEBEA;
  --r:18px; --font:"Plus Jakarta Sans",system-ui,sans-serif; --ar:"Noto Kufi Arabic",sans-serif;
}
*{box-sizing:border-box;margin:0}
body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:14px;line-height:1.5}
button{font:inherit;cursor:pointer;border:0}
.app{display:grid;grid-template-columns:248px 1fr;min-height:100vh}

.side{background:var(--indigo);color:#fff;padding:26px 18px;display:flex;flex-direction:column;gap:28px;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}
.brand{display:flex;align-items:center;gap:12px;padding:0 8px}
.brand img{width:42px;height:42px}
.brand b{font-size:26px;font-weight:800;letter-spacing:-.03em;line-height:1}
.brand small{display:block;font-family:var(--ar);font-size:13px;opacity:.75;margin-top:2px}
.nav{display:flex;flex-direction:column;gap:4px}
.nav span.t{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.55;padding:0 12px 6px}
.nav a{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:12px;color:#fff;text-decoration:none;opacity:.7;font-weight:500}
.nav a.on{background:rgba(255,255,255,.14);opacity:1}
.nav a i{width:8px;height:8px;border-radius:50%;background:rgba(255,255,255,.4)}
.nav a.on i{background:var(--safran);box-shadow:0 0 0 4px rgba(246,180,20,.25)}
.nav a em{margin-left:auto;font-style:normal;font-size:10px;background:rgba(255,255,255,.12);padding:2px 8px;border-radius:99px}
.tenant{margin-top:auto;flex:none;background:var(--indigo-900);border-radius:14px;padding:14px}
.tenant small{opacity:.6;font-size:11px;display:block}
.tenant b{display:block;font-size:14px}
.tenant span{font-size:12px;opacity:.8}
.compte{flex:none;margin-top:-14px;padding:0 6px;display:flex;align-items:center;justify-content:space-between;gap:8px}
.compte span{font-size:12.5px;font-weight:600;opacity:.9;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.compte button{background:rgba(255,255,255,.14);color:#fff;font-size:11px;font-weight:700;padding:6px 11px;border-radius:99px;flex:none;transition:background .2s}
.compte button:hover{background:rgba(255,255,255,.26)}

main{padding:32px 40px 60px;min-width:0}
header.top{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}
h1{font-size:28px;font-weight:800;letter-spacing:-.03em}
.sub{color:var(--muted)}
.alerte-cle{background:var(--safran-50);border:1px solid #F3D58A;color:var(--safran-700);padding:12px 16px;border-radius:12px;margin-bottom:20px;display:none}
.alerte-cle code{background:#fff;padding:1px 6px;border-radius:6px}

.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:22px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px}
.kpi small{color:var(--muted);font-weight:500}
.kpi b{display:block;font-size:26px;font-weight:800;letter-spacing:-.02em;margin-top:2px}
.kpi.main{background:var(--indigo);color:#fff;border-color:var(--indigo)}
.kpi.main small{color:rgba(255,255,255,.7)}

.grid{display:grid;grid-template-columns:minmax(320px,400px) 1fr;gap:20px;align-items:start}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r)}

.drop{display:block;border:2px dashed var(--indigo-100);background:var(--indigo-50);border-radius:var(--r);padding:26px;text-align:center;cursor:pointer;transition:.2s;margin-bottom:16px}
.drop:hover,.drop.over{border-color:var(--indigo);background:#E6E4FB}
.drop img{width:48px;height:48px;margin-bottom:8px}
.drop b{display:block;font-size:15px}
.drop span{color:var(--muted);font-size:13px}
.drop.busy{cursor:progress}
.drop.busy img{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{transform:scale(1.12) rotate(-6deg)}}
.etapes{display:none;text-align:left;margin:14px auto 0;max-width:240px;font-size:13px}
.drop.busy .etapes{display:block}
.etapes div{padding:3px 0;color:var(--muted)}
.etapes div.on{color:var(--indigo);font-weight:600}
.etapes div.fait{color:var(--ok)}
.etapes div::before{content:"○ ";}
.etapes div.on::before{content:"◉ "}
.etapes div.fait::before{content:"✓ "}

.liste{overflow:hidden}
.liste h3{font-size:13px;padding:14px 18px;border-bottom:1px solid var(--line);color:var(--muted);font-weight:600}
.ligne-f{display:flex;align-items:center;gap:12px;padding:13px 18px;border-bottom:1px solid var(--line);cursor:pointer}
.ligne-f:last-child{border-bottom:0}
.ligne-f:hover{background:#FAFAFE}
.ligne-f.sel{background:var(--indigo-50);box-shadow:inset 3px 0 0 var(--indigo)}
.ligne-f .q{flex:1;min-width:0}
.ligne-f .q b{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13.5px}
.ligne-f .q small{color:var(--muted)}
.ligne-f .m{text-align:right;font-weight:700;font-size:13px;white-space:nowrap}
.vide{padding:30px 18px;text-align:center;color:var(--muted)}

.pill{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:700;padding:3px 10px;border-radius:99px;white-space:nowrap}
.pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.s-prete{background:var(--ok-50);color:var(--ok)}
.s-a-verifier{background:var(--warn-50);color:var(--warn)}
.s-bloquee{background:var(--ko-50);color:var(--ko)}
.s-envoyee{background:var(--indigo-50);color:var(--indigo)}
.s-rejetee{background:#EEE;color:#666}

.detail{padding:0;min-height:400px}
.accueil{padding:60px 40px;text-align:center;color:var(--muted)}
.accueil img{width:72px;opacity:.9;margin-bottom:14px}
.accueil h2{color:var(--ink);font-size:20px;margin-bottom:6px}
.bandeau{display:flex;align-items:center;gap:16px;padding:22px 24px;border-bottom:1px solid var(--line);border-radius:var(--r) var(--r) 0 0}
.bandeau.prete{background:linear-gradient(90deg,var(--ok-50),#fff)}
.bandeau.bloquee{background:linear-gradient(90deg,var(--ko-50),#fff)}
.bandeau.a-verifier{background:linear-gradient(90deg,var(--warn-50),#fff)}
.bandeau.envoyee{background:linear-gradient(90deg,var(--indigo-50),#fff)}
.bandeau .ico{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-size:22px;font-weight:800;color:#fff;flex:none}
.bandeau{flex-wrap:wrap}
.bandeau .t{flex:1 1 240px}
.bandeau h2{font-size:18px;letter-spacing:-.01em}
.bandeau p{color:var(--muted);font-size:13px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.btn{padding:10px 16px;border-radius:12px;font-weight:700;font-size:13px;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
.btn.p{background:var(--indigo);color:#fff}
.btn.p:hover{background:var(--indigo-700)}
.btn.s{background:#fff;color:var(--ink);border:1px solid var(--line)}
.btn.s:hover{border-color:var(--indigo);color:var(--indigo)}
.btn:disabled{opacity:.4;cursor:not-allowed}

.sec{padding:20px 24px;border-bottom:1px solid var(--line)}
.sec:last-child{border-bottom:0}
.sec h4{font-size:12px;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-bottom:12px;display:flex;align-items:center;gap:8px}
.sec h4::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--safran)}
.champs{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px 20px}
.champ small{display:block;color:var(--muted);font-size:11.5px}
.champ b{font-weight:600;font-size:13.5px;word-break:break-word}
.champ b.nul{color:var(--ko);font-weight:500;font-style:italic}

table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;font-size:11.5px;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:1px solid var(--line)}
td{padding:9px 10px;border-bottom:1px solid var(--line)}
td.n,th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
tr:last-child td{border-bottom:0}
.totaux{display:flex;justify-content:flex-end;margin-top:12px}
.totaux table{width:auto;min-width:260px}
.totaux td{border:0;padding:4px 10px}
.totaux tr.ttc td{font-weight:800;font-size:15px;border-top:2px solid var(--ink)}

.ctrl{display:flex;gap:12px;padding:9px 0;border-bottom:1px dashed var(--line)}
.ctrl:last-child{border:0}
.ctrl .d{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:800;flex:none;margin-top:1px}
.ctrl.ok .d{background:var(--ok-50);color:var(--ok)}
.ctrl.alerte .d{background:var(--warn-50);color:var(--warn)}
.ctrl.bloquant .d{background:var(--ko-50);color:var(--ko)}
.ctrl b{font-size:13.5px}
.ctrl p{color:var(--muted);font-size:12.5px}
.ctrl.bloquant p{color:var(--ko)}

.ecarts{background:var(--warn-50);border-radius:12px;padding:12px 14px;margin-top:10px;color:var(--safran-700);font-size:13px}
.ecarts li{margin-left:16px}
.ok-box{background:var(--ok-50);color:var(--ok);border-radius:12px;padding:12px 14px;margin-top:10px;font-weight:600;font-size:13px}
details summary{cursor:pointer;font-weight:600;color:var(--indigo);font-size:13px}
pre{background:var(--indigo-900);color:#E4E2FF;padding:16px;border-radius:12px;font-size:12px;overflow:auto;margin-top:10px;max-height:340px}
.meta{color:var(--muted);font-size:12px;padding:14px 24px;display:flex;gap:18px;flex-wrap:wrap}
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(120px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:12px;transition:.3s;z-index:9;font-weight:600}
.toast.on{transform:translateX(-50%) translateY(0)}

@media (max-width:1100px){.kpis{grid-template-columns:repeat(2,1fr)}.kpi.main{grid-column:span 2}.grid{grid-template-columns:1fr}}
@media (max-width:760px){.app{grid-template-columns:1fr}.side{position:static;height:auto;flex-direction:row;align-items:center;padding:14px 16px}.nav,.tenant{display:none}.compte{margin:0 0 0 auto;padding:0}.compte span{display:none}main{padding:20px 16px}h1{font-size:22px}.bandeau{flex-wrap:wrap}}
.prio{display:inline-grid;place-items:center;min-width:34px;height:24px;padding:0 8px;border-radius:8px;font-weight:800;font-size:12px;flex:none}
.prio.P1{background:var(--ko);color:#fff}.prio.P2{background:var(--safran);color:var(--indigo-900)}.prio.P3{background:var(--ok-50);color:var(--ok)}
.prio-bloc{display:flex;align-items:center;gap:14px;background:#FAFAFE}
.prio-bloc .prio{min-width:46px;height:38px;font-size:16px;border-radius:12px}
.rep{width:100%;font:inherit;font-size:14px;border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-top:8px;color:var(--ink);background:#fff;resize:vertical}
.rep:focus{outline:2px solid var(--indigo-100);border-color:var(--indigo)}
.rep:disabled{background:#FAFAFE;color:var(--muted)}
textarea.rep[dir=rtl],input.rep[dir=rtl]{font-family:var(--ar),var(--font);line-height:1.9}

.nav a.assistant-lien{background:var(--safran);color:var(--indigo-900);opacity:1;font-weight:800;margin-bottom:14px}
.nav a.assistant-lien img{width:22px;height:22px;border-radius:7px}
.nav a.assistant-lien.on{box-shadow:0 0 0 3px rgba(246,180,20,.35)}

/* Micro-animations. Règles : transform et opacité seulement (pas de mise en page ni de peinture à chaque image),
   jouées une fois à l'apparition, et rien d'infini en dehors d'un état d'attente visible. */
@keyframes arrive{from{opacity:0;transform:translateY(8px)}}
@keyframes pop{from{opacity:0;transform:scale(.8)}}
.btn{transition:background .2s,border-color .2s,color .2s,transform .12s}
.btn:active{transform:scale(.97)}
.nav a{transition:opacity .2s,background .2s}
.nav a:hover{opacity:1}
.ligne-f{transition:background .15s}
.drop.over{transform:scale(1.01)}
.detail>*{animation:arrive .3s cubic-bezier(.2,.8,.2,1) both}
.detail>*:nth-child(2){animation-delay:40ms}
.detail>*:nth-child(3){animation-delay:80ms}
.detail>*:nth-child(n+4){animation-delay:120ms}
.bandeau .ico{animation:pop .35s cubic-bezier(.2,1.5,.4,1) both .12s}
.toast{transition:transform .35s cubic-bezier(.2,.9,.2,1)}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms!important;animation-delay:0s!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}
}
