:root{
  --vf:#2d5a1b;--vm:#4a7c2f;--vc:#6aab3e;--vp:#c8e6a0;--vb:#f0f7e8;
  --te:#8b5e3c;--tc:#c49a6c;--tp:#f5ead8;
  --or:#d4a017;--oc:#f0c040;
  --gc:#f4f6f0;--gr:#9aab8a;--tx:#1e3a0f;--tl:#4a5e3a;
  --rg:#c0392b;--rc:#e74c3c;--bi:#2980b9;--sw:258px;
}
*{margin:0;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box;}
body{font-family:'Segoe UI',Tahoma,Geneva,Verdana,sans-serif;background:var(--vb);color:var(--tx);min-height:100vh;font-size:14px;}
a{text-decoration:none;color:inherit;}

/* ===== LOGIN ===== */
#loginScreen{
  min-height:100vh;
  background:linear-gradient(135deg,var(--vf) 0%,var(--vm) 55%,var(--te) 100%);
  display:-webkit-box;display:-ms-flexbox;display:flex;
  -webkit-box-align:center;-ms-flex-align:center;align-items:center;
  -webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;
  padding:20px;
}
.lcard{background:#fff;border-radius:16px;padding:40px 34px 32px;width:100%;max-width:420px;box-shadow:0 16px 48px rgba(0,0,0,.32);border-top:5px solid var(--vc);}
.llogo{text-align:center;margin-bottom:18px;}
.llogo .lem{font-size:50px;display:block;margin-bottom:5px;}
.llogo h1{font-size:1.7em;color:var(--vf);font-weight:800;letter-spacing:2px;}
.llogo p{font-size:.75em;color:var(--tl);margin-top:3px;line-height:1.4;}
.ldiv{height:3px;background:linear-gradient(90deg,var(--vc),var(--or),var(--tc));border-radius:2px;margin:14px 0;}
.lhint{margin-top:14px;background:var(--tp);border-left:4px solid var(--tc);border-radius:7px;padding:9px 12px;font-size:.75em;color:var(--te);line-height:1.6;}
.btn-login{width:100%;padding:12px;background:linear-gradient(135deg,var(--vf),var(--vm));color:#fff;border:none;border-radius:9px;font-size:14px;font-weight:700;cursor:pointer;margin-top:5px;letter-spacing:.5px;}
.btn-login:hover{background:linear-gradient(135deg,#1a3a0a,var(--vf));}

/* ===== APP ===== */
.layout{display:-webkit-box;display:-ms-flexbox;display:flex;min-height:100vh;}

/* --- SIDEBAR --- */
.sidebar{width:var(--sw);background:linear-gradient(180deg,var(--vf) 0%,#1a3a0a 100%);position:fixed;top:0;left:0;height:100vh;z-index:100;overflow-y:auto;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;box-shadow:3px 0 16px rgba(0,0,0,.28);}
.sh{padding:16px 13px 10px;border-bottom:1px solid rgba(255,255,255,.12);text-align:center;}
.sh-em{font-size:34px;display:block;}
.sh h2{color:var(--oc);font-size:1em;font-weight:800;letter-spacing:2px;margin-top:3px;}
.sh p{color:rgba(255,255,255,.4);font-size:.62em;margin-top:2px;}
.su{padding:9px 13px;background:rgba(255,255,255,.07);border-bottom:1px solid rgba(255,255,255,.1);}
.su .un{color:var(--vp);font-weight:700;font-size:.82em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.su .ur{color:var(--oc);font-size:.65em;margin-top:1px;text-transform:uppercase;letter-spacing:.5px;}
.snav{-webkit-box-flex:1;-ms-flex:1;flex:1;padding:6px 0;overflow-y:auto;}
.nst{color:rgba(255,255,255,.28);font-size:.58em;text-transform:uppercase;letter-spacing:1.4px;padding:8px 13px 2px;font-weight:700;}
.ni{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:9px;padding:9px 13px;color:rgba(255,255,255,.72);cursor:pointer;border-left:3px solid transparent;font-size:.84em;font-weight:500;-webkit-transition:background .15s,color .15s;transition:background .15s,color .15s;}
.ni:hover{background:rgba(255,255,255,.1);color:#fff;}
.ni.active{background:rgba(106,171,62,.22);color:#fff;border-left-color:var(--oc);font-weight:700;}
.sf{padding:9px 13px;border-top:1px solid rgba(255,255,255,.1);}
.btn-out{width:100%;padding:7px;background:rgba(192,57,43,.22);color:#ffaaaa;border:1px solid rgba(192,57,43,.35);border-radius:7px;cursor:pointer;font-size:.78em;font-weight:600;}
.btn-out:hover{background:rgba(192,57,43,.45);color:#fff;}

/* --- MAIN --- */
.main{margin-left:var(--sw);-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;}
.topbar{background:#fff;padding:10px 22px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;border-bottom:3px solid var(--vp);box-shadow:0 1px 8px rgba(0,0,0,.05);position:-webkit-sticky;position:sticky;top:0;z-index:50;}
.tt{font-size:1.15em;font-weight:800;color:var(--vf);}
.tb{font-size:.72em;color:var(--gr);margin-top:1px;}
.br{padding:3px 10px;border-radius:18px;font-size:.68em;font-weight:700;text-transform:uppercase;letter-spacing:.4px;}
.br-admin{background:var(--vf);color:var(--oc);}
.br-operator{background:var(--bi);color:#fff;}
.br-regional{background:var(--te);color:#fff;}
.pc{padding:20px;-webkit-box-flex:1;-ms-flex:1;flex:1;}
.sh2{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-bottom:18px;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:8px;}
.st{font-size:1.3em;font-weight:800;color:var(--vf);}

/* ===== CARDS ===== */
.sg{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr 1fr;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px;}
.sc{background:#fff;border-radius:10px;padding:16px 14px;border-left:4px solid var(--vc);box-shadow:0 2px 10px rgba(0,0,0,.06);display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:10px;}
.sc.te{border-left-color:var(--te);}.sc.or{border-left-color:var(--or);}.sc.rg{border-left-color:var(--rg);}.sc.bi{border-left-color:var(--bi);}.sc.vi{border-left-color:#8e44ad;}
.sc-ico{font-size:1.8em;}
.sc-val{font-size:1.7em;font-weight:800;color:var(--vf);line-height:1;}
.sc-lbl{font-size:.72em;color:var(--tl);margin-top:2px;font-weight:600;}
.card{background:#fff;border-radius:10px;padding:18px;box-shadow:0 2px 10px rgba(0,0,0,.06);margin-bottom:16px;border-top:3px solid var(--vc);}
.card.te{border-top-color:var(--te);}.card.or{border-top-color:var(--or);}.card.rg{border-top-color:var(--rg);}.card.bi{border-top-color:var(--bi);}.card.vi{border-top-color:#8e44ad;}
.ct{font-size:.95em;font-weight:700;color:var(--vf);margin-bottom:12px;padding-bottom:8px;border-bottom:2px solid var(--vp);}

/* ===== FORMS ===== */
.fg{margin-bottom:12px;}
.fg label{display:block;font-weight:700;font-size:.78em;color:var(--vf);margin-bottom:4px;text-transform:uppercase;letter-spacing:.4px;}
.fg input,.fg select,.fg textarea{width:100%;padding:8px 11px;border:2px solid #d5e8c0;border-radius:7px;font-size:13px;color:var(--tx);background:var(--vb);font-family:inherit;}
.fg input:focus,.fg select:focus{outline:none;border-color:var(--vc);background:#fff;}
.fg input[readonly]{background:#eee;color:var(--tl);}
.fgrid{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px;}
.frow{display:-webkit-box;display:-ms-flexbox;display:flex;gap:9px;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;}
.frow .fg{-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:130px;margin-bottom:0;}
.fbar{display:-webkit-box;display:-ms-flexbox;display:flex;gap:8px;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-align:flex-end;-ms-flex-align:flex-end;align-items:flex-end;background:var(--gc);padding:11px;border-radius:9px;margin-bottom:13px;border:1px solid #d5e8c0;}
.fbar .fg{margin-bottom:0;-webkit-box-flex:1;-ms-flex:1;flex:1;min-width:120px;}
.fbar input,.fbar select{background:#fff;border:2px solid #d5e8c0;border-radius:6px;padding:6px 9px;font-size:.82em;width:100%;color:var(--tx);font-family:inherit;}

/* ===== BUTTONS ===== */
.btn{padding:7px 15px;border:none;border-radius:7px;cursor:pointer;font-size:.82em;font-weight:700;font-family:inherit;display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:5px;}
.btn:hover{opacity:.88;}
.bp{background:linear-gradient(135deg,var(--vf),var(--vm));color:#fff;}
.bs{background:var(--gc);color:var(--tx);border:2px solid #d5e8c0;}
.bsu{background:linear-gradient(135deg,#27ae60,#2ecc71);color:#fff;}
.bw{background:linear-gradient(135deg,var(--or),var(--oc));color:var(--tx);}
.bd{background:linear-gradient(135deg,var(--rg),var(--rc));color:#fff;}
.bi2{background:linear-gradient(135deg,#2980b9,#3498db);color:#fff;}
.bte{background:linear-gradient(135deg,var(--te),var(--tc));color:#fff;}
.bvi{background:linear-gradient(135deg,#8e44ad,#9b59b6);color:#fff;}
.bsm{padding:4px 9px;font-size:.72em;}
.blg{padding:10px 22px;font-size:.92em;}
.bfull{width:100%;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;}
.fg2{display:-webkit-box;display:-ms-flexbox;display:flex;gap:7px;-ms-flex-wrap:wrap;flex-wrap:wrap;}

/* ===== TABLE ===== */
.tw{overflow-x:auto;border-radius:8px;box-shadow:0 1px 6px rgba(0,0,0,.05);}
table{width:100%;border-collapse:collapse;background:#fff;font-size:.82em;}
thead tr{background:linear-gradient(135deg,var(--vf),var(--vm));color:#fff;}
th{padding:10px 11px;text-align:left;font-weight:700;font-size:.75em;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;}
td{padding:8px 11px;border-bottom:1px solid #eef3e8;color:var(--tx);vertical-align:middle;}
tr:hover td{background:var(--vb);}
tr:last-child td{border-bottom:none;}
.tmat{font-family:Courier New,Courier,monospace;font-weight:700;color:var(--vf);font-size:.88em;background:var(--vb);border-radius:4px;padding:2px 6px;white-space:nowrap;}
.tanon{font-family:Courier New,Courier,monospace;font-weight:700;color:var(--bi);font-size:.88em;background:#e8f4fd;border-radius:4px;padding:2px 6px;white-space:nowrap;}

/* ===== BADGES ===== */
.badge{display:inline-block;padding:2px 8px;border-radius:11px;font-size:.68em;font-weight:700;text-transform:uppercase;letter-spacing:.3px;}
.b-ok{background:#d4edda;color:#155724;}.b-pend{background:#fff3cd;color:#856404;}
.b-admis{background:#d4edda;color:#155724;}.b-echec{background:#f8d7da;color:#721c24;}
.b-incomplet{background:#fff3cd;color:#856404;}
.b-act{background:#d4edda;color:#155724;}.b-inact{background:#f8d7da;color:#721c24;}
.b-adm{background:var(--vf);color:var(--oc);}.b-op{background:var(--bi);color:#fff;}.b-reg{background:var(--te);color:#fff;}

/* ===== ALERTS ===== */
.alert{padding:10px 13px;border-radius:8px;margin-bottom:11px;font-weight:600;font-size:.83em;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:7px;}
.al-s{background:#d4edda;color:#155724;border-left:4px solid #28a745;}
.al-e{background:#f8d7da;color:#721c24;border-left:4px solid #dc3545;}
.al-i{background:#cce7ff;color:#004085;border-left:4px solid #007bff;}
.al-w{background:#fff3cd;color:#856404;border-left:4px solid #ffc107;}

/* ===== MATRICULE BOX ===== */
.matbox{background:linear-gradient(135deg,var(--vf),var(--vm));color:#fff;border-radius:10px;padding:14px;text-align:center;margin:10px 0;}
.matbox .ml{font-size:.72em;opacity:.8;text-transform:uppercase;letter-spacing:1px;}
.matbox .mv{font-size:1.7em;font-weight:900;font-family:Courier New,Courier,monospace;letter-spacing:3px;color:var(--oc);margin-top:2px;}
.matbox .ms{font-size:.8em;opacity:.85;margin-top:4px;}

/* ===== ANON GRID ===== */
.ag{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(auto-fit,minmax(155px,1fr));gap:9px;margin:10px 0;}
.ai{background:linear-gradient(135deg,#1a3a6e,#2980b9);color:#fff;border-radius:9px;padding:11px;text-align:center;}
.ai .am{font-size:.7em;opacity:.85;text-transform:uppercase;letter-spacing:.4px;margin-bottom:2px;}
.ai .av{font-size:1.4em;font-weight:900;font-family:Courier New,Courier,monospace;letter-spacing:2px;color:#a8d8ff;}
.ai .ac{font-size:.66em;opacity:.7;margin-top:1px;}

/* ===== SAISIE ANONYMAT REGION ===== */
.anon-saisie-grid{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:12px 0;}
.anon-row{background:var(--vb);border:2px solid #d5e8c0;border-radius:9px;padding:12px;}
.anon-row.saisi{border-color:var(--vc);background:#f0fff0;}
.anon-row label{display:block;font-weight:700;font-size:.78em;color:var(--vf);margin-bottom:4px;text-transform:uppercase;}
.anon-row .matnom{font-size:.82em;color:var(--tl);margin-bottom:6px;}
.anon-row .coeff-tag{display:inline-block;background:var(--te);color:#fff;border-radius:9px;padding:1px 7px;font-size:.65em;font-weight:700;margin-bottom:6px;}
.anon-row input{width:100%;padding:7px 10px;border:2px solid #d5e8c0;border-radius:6px;font-size:1.05em;font-weight:700;text-align:center;font-family:Courier New,Courier,monospace;color:var(--bi);background:#fff;}
.anon-row input:focus{outline:none;border-color:var(--bi);background:#e8f4fd;}
.anon-row .statut{font-size:.7em;margin-top:4px;font-weight:600;}
.anon-row .statut.ok{color:var(--vc);}
.anon-row .statut.att{color:var(--or);}

/* ===== NOTES ===== */
.nmg{display:-ms-grid;display:grid;-ms-grid-columns:1fr 1fr;grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:11px;margin:11px 0;}
.nmi{background:var(--vb);border:2px solid #d5e8c0;border-radius:9px;padding:11px;}
.nmi label{display:block;font-weight:700;font-size:.76em;color:var(--vf);margin-bottom:2px;text-transform:uppercase;}
.nmi .cb{display:inline-block;background:var(--te);color:#fff;border-radius:9px;padding:1px 7px;font-size:.65em;font-weight:700;margin-bottom:5px;}
.nmi input{width:100%;padding:7px;border:2px solid #d5e8c0;border-radius:6px;font-size:1em;font-weight:700;text-align:center;color:var(--vf);background:#fff;font-family:inherit;}
.nmi input:focus{outline:none;border-color:var(--vc);}
.nmi .ar{font-size:.68em;color:var(--bi);font-family:Courier New,Courier,monospace;font-weight:700;margin-top:3px;}
.mres{background:linear-gradient(135deg,var(--vf),var(--vm));color:#fff;border-radius:10px;padding:13px 18px;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;margin-top:11px;}
.mres .rl{font-size:.82em;opacity:.85;}
.mres .rv{font-size:1.8em;font-weight:900;color:var(--oc);}

/* ===== FOUND BOX ===== */
.fb2{background:var(--tp);border:2px solid var(--tc);border-radius:9px;padding:11px;margin:9px 0;}
.fb2 h4{color:var(--te);font-size:.78em;text-transform:uppercase;letter-spacing:.4px;margin-bottom:5px;}
.ir{display:-webkit-box;display:-ms-flexbox;display:flex;gap:14px;-ms-flex-wrap:wrap;flex-wrap:wrap;}
.ii{font-size:.82em;}
.ii strong{color:var(--vf);}

/* ===== CHART BARS ===== */
.cbi{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:7px;margin-bottom:7px;}
.cbl{width:90px;font-size:.75em;font-weight:600;color:var(--tl);text-align:right;-ms-flex-negative:0;flex-shrink:0;}
.cbt{-webkit-box-flex:1;-ms-flex:1;flex:1;background:var(--vp);border-radius:5px;height:16px;overflow:hidden;}
.cbf{height:100%;border-radius:5px;background:linear-gradient(90deg,var(--vf),var(--vc));display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-left:5px;font-size:.67em;font-weight:700;color:#fff;min-width:18px;}
.cbc{width:28px;font-size:.75em;font-weight:700;color:var(--vf);}

/* ===== TAGS CONFIG ===== */
.tl2{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;gap:5px;min-height:34px;padding:7px;background:var(--vb);border:2px dashed #d5e8c0;border-radius:7px;margin:7px 0;}
.tag{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:3px;background:var(--vf);color:#fff;padding:2px 9px;border-radius:18px;font-size:.73em;font-weight:600;}
.tag.te{background:var(--te);}.tag.or{background:var(--or);color:var(--tx);}.tag.bi{background:var(--bi);}
.tr2{background:none;border:none;color:rgba(255,255,255,.65);cursor:pointer;font-size:.88em;line-height:1;padding:0 1px;}
.tr2:hover{color:#fff;}

/* ===== PHASE BADGE ===== */
.pb{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:4px;padding:3px 10px;border-radius:18px;font-size:.72em;font-weight:700;text-transform:uppercase;letter-spacing:.4px;}
.p1{background:#e8f5e9;color:#2e7d32;border:2px solid #a5d6a7;}
.p2{background:#e3f2fd;color:#1565c0;border:2px solid #90caf9;}

/* ===== UTILS ===== */
.hidden{display:none !important;}
.mt10{margin-top:10px;}.mt16{margin-top:16px;}.mb12{margin-bottom:12px;}
.warn-box{background:var(--tp);border-left:4px solid var(--or);border-radius:7px;padding:9px 12px;font-size:.78em;color:var(--te);margin-top:9px;}
.info-box{background:#e8f4fd;border-left:4px solid var(--bi);border-radius:7px;padding:9px 12px;font-size:.78em;color:#1a4a7a;margin-bottom:12px;}
.es{text-align:center;padding:28px 18px;color:var(--gr);}
.es .ei{font-size:2.4em;margin-bottom:7px;}
.es p{font-size:.82em;}
.divhr{height:1px;background:var(--vp);margin:14px 0;}
