/* ── index.css — styles spécifiques à index.html ── */
:root{--navy:#0d1b35;--blue:#1648a0;--blue-mid:#2563c8;--blue-light:#e8f0fd;--blue-ultra:#f0f5ff;--teal:#0e7a6e;--teal-mid:#12998a;--teal-light:#e0f5f2;--gold:#b86a00;--gold-mid:#d98a10;--gold-light:#fef3e0;--red:#c0282a;--red-light:#fde8e8;--green:#1a7a3a;--green-light:#e4f7ea;--gray-50:#f5f7fc;--gray-100:#eceef6;--gray-200:#d8dcea;--gray-300:#b8bdd4;--gray-400:#8188a8;--gray-600:#424966;--text:#111827;--white:#fff;--shadow:0 3px 20px rgba(13,27,53,.10);--shadow-lg:0 8px 40px rgba(13,27,53,.14);--r:12px;--rlg:18px;}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Plus Jakarta Sans',sans-serif;background:var(--gray-50);background-image:radial-gradient(ellipse at 20% 0%,rgba(22,72,160,.06) 0%,transparent 60%);color:var(--text);font-size:14px;min-height:100vh;}
.login-screen{position:fixed;inset:0;background:linear-gradient(145deg,var(--branding-primary,var(--navy)) 0%,var(--branding-primary-mid,#1a3a80) 60%,var(--branding-primary-end,#1e5090) 100%);z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px;}
.login-card{background:var(--white);border-radius:var(--rlg);box-shadow:var(--shadow-lg);width:100%;max-width:400px;overflow:hidden;}
.login-head{background:linear-gradient(135deg,var(--branding-primary,var(--navy)),var(--branding-primary-mid,#1e3d82));padding:26px 30px 22px;color:#fff;text-align:center;position:relative;overflow:hidden;}
.login-head::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),var(--gold-mid),transparent);}
.login-logo{font-size:34px;margin-bottom:8px;}
.login-title{font-family:'Playfair Display',serif;font-size:21px;font-weight:700;}
.login-sub{font-size:12px;color:rgba(255,255,255,.5);margin-top:3px;}
.login-body{padding:24px 28px;}
.profile-btn{display:flex;align-items:center;gap:11px;padding:11px 14px;border-radius:var(--r);border:1.5px solid var(--gray-200);background:var(--gray-50);cursor:pointer;transition:all .12s;margin-bottom:7px;font-family:'Plus Jakarta Sans',sans-serif;}
.profile-btn:hover,.profile-btn.sel{border-color:var(--blue-mid);background:var(--blue-ultra);}
.profile-icon{font-size:20px;}
.profile-name{font-weight:700;color:var(--navy);font-size:13px;}
.profile-desc{font-size:11px;color:var(--gray-400);margin-top:1px;}
.pw-wrap{display:none;margin-top:10px;margin-bottom:12px;}
.pw-wrap.show{display:block;}
.profile-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 11px;border-radius:20px;font-size:12px;font-weight:600;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);cursor:pointer;}
.profile-badge:hover{background:rgba(255,255,255,.2);}
.hdr{background:linear-gradient(145deg,var(--branding-primary,var(--navy)) 0%,var(--branding-primary-mid,#1a3a80) 60%,var(--branding-primary-end,#1e5090) 100%);color:#fff;padding:24px 40px 20px;position:relative;overflow:hidden;}
.hdr::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.15),var(--gold-mid),rgba(255,255,255,.15),transparent);}
.hdr-inner{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;flex-wrap:wrap;position:relative;z-index:1;}
.institute{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(255,255,255,.5);margin-bottom:5px;font-weight:600;}
.doc-title{font-family:'Playfair Display',serif;font-size:25px;font-weight:700;line-height:1.1;}
.doc-sub{font-size:13px;color:rgba(255,255,255,.5);margin-top:3px;}
.hdr-stats{display:flex;gap:18px;align-items:center;}
.hstat{text-align:center;}
.hstat-v{font-family:'Playfair Display',serif;font-size:27px;font-weight:700;line-height:1;}
.hstat-l{font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:rgba(255,255,255,.4);margin-top:3px;font-weight:600;}
.hdiv{width:1px;height:38px;background:rgba(255,255,255,.15);}
.hdr-btns{display:flex;gap:7px;margin-top:12px;flex-wrap:wrap;position:relative;z-index:1;}
.btn{display:inline-flex;align-items:center;gap:5px;padding:8px 16px;border-radius:9px;font-family:'Plus Jakarta Sans',sans-serif;font-size:13px;font-weight:700;cursor:pointer;border:none;transition:all .15s;letter-spacing:.01em;white-space:nowrap;}
.btn-primary{background:linear-gradient(135deg,var(--blue),var(--blue-mid));color:#fff;box-shadow:0 2px 10px rgba(22,72,160,.3);}
.btn-primary:hover{transform:translateY(-1px);box-shadow:0 4px 14px rgba(22,72,160,.4);}
.btn-ghost{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.2);}
.btn-ghost:hover{background:rgba(255,255,255,.18);}
.btn-secondary{background:var(--gray-100);color:var(--navy);border:1.5px solid var(--gray-200);}
.btn-secondary:hover{background:var(--gray-200);}
.btn-teal{background:linear-gradient(135deg,var(--teal),var(--teal-mid));color:#fff;}
.btn-sm{padding:6px 12px;font-size:12px;}
.container{width:96vw;max-width:100%;margin:0 auto;padding:22px 18px 80px;}
.filter-bar{background:var(--white);border-radius:var(--rlg);box-shadow:var(--shadow);padding:11px 16px;margin-bottom:16px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid var(--gray-100);}
.flbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--gray-400);}
.chip{padding:5px 12px;border-radius:20px;border:1.5px solid var(--gray-200);background:var(--gray-50);font-size:12px;font-weight:600;cursor:pointer;color:var(--gray-600);font-family:'Plus Jakarta Sans',sans-serif;transition:all .12s;}
.chip:hover{border-color:var(--blue-mid);color:var(--blue-mid);}
.chip.on{background:var(--navy);color:#fff;border-color:var(--navy);}
.search-w{margin-left:auto;position:relative;}
.search-w input{padding:7px 13px 7px 30px;border-radius:9px;border:1.5px solid var(--gray-200);background:var(--gray-50);font-size:13px;font-family:'Plus Jakarta Sans',sans-serif;color:var(--text);width:196px;outline:none;transition:all .15s;}
.search-w input:focus{border-color:var(--blue-mid);background:var(--white);}
.search-w::before{content:'🔍';position:absolute;left:9px;top:50%;transform:translateY(-50%);font-size:12px;}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:14px;}
.card{background:var(--white);border-radius:var(--rlg);box-shadow:var(--shadow);border:1px solid var(--gray-100);overflow:hidden;transition:all .2s;}
.card:hover{box-shadow:var(--shadow-lg);transform:translateY(-2px);}
.card-inactive{opacity:.5;filter:grayscale(30%);}
.card-top{padding:15px 17px 0;display:flex;align-items:flex-start;gap:11px;}
.av{width:40px;height:40px;border-radius:11px;display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:15px;font-weight:700;flex-shrink:0;}
.av-dcb{background:var(--blue-ultra);color:var(--blue-mid);}
.av-mcb2{background:var(--teal-light);color:var(--teal);}
.av-mcb3{background:var(--gold-light);color:var(--gold);}
.av-fcb{background:var(--red-light);color:var(--red);}
.card-name{font-family:'Playfair Display',serif;font-size:14px;font-weight:700;color:var(--navy);line-height:1.2;}
.card-meta{font-size:11px;color:var(--gray-400);margin-top:3px;}
.pen-badge{display:inline-flex;align-items:center;justify-content:center;width:15px;height:15px;border-radius:50%;background:var(--red);color:#fff;font-size:9px;font-weight:700;vertical-align:middle;margin-left:4px;}
.bloc-badge{display:inline-block;padding:1px 7px;border-radius:20px;font-size:10px;font-weight:700;margin-left:4px;}
.bb-dcb{background:var(--blue-ultra);color:var(--blue-mid);}
.bb-mcb2{background:var(--teal-light);color:var(--teal);}
.bb-mcb3{background:var(--gold-light);color:var(--gold);}
.bb-fcb{background:var(--red-light);color:var(--red);}
.status-badge{display:inline-flex;align-items:center;gap:3px;padding:1px 7px;border-radius:20px;font-size:10px;font-weight:700;margin-left:4px;vertical-align:middle;}
.sb-inactif{background:var(--gold-light);color:var(--gold);}
.sb-abandonne{background:var(--red-light);color:var(--red);}
.sb-diplome{background:#ede9fe;color:#5b21b6;}
.card-actions{display:flex;gap:4px;margin-left:auto;}
.ic-btn{width:25px;height:25px;border-radius:6px;background:var(--gray-50);border:1.5px solid var(--gray-200);cursor:pointer;font-size:11px;display:flex;align-items:center;justify-content:center;transition:all .12s;}
.ic-btn:hover{background:var(--blue-light);border-color:var(--blue-mid);}
.ic-btn.red:hover{background:var(--red-light);border-color:var(--red);}
.ic-btn.pen-on{background:var(--red-light);border-color:var(--red);}
.ic-btn.st-inactif{background:var(--gold-light);border-color:var(--gold-mid);}
.ic-btn.st-abandonne{background:var(--red-light);border-color:var(--red);}
.card-prog{padding:9px 17px 0;}
.prog-txt{display:flex;justify-content:space-between;font-size:11px;color:var(--gray-400);font-weight:600;margin-bottom:4px;}
.prog-track{height:3px;background:var(--gray-200);border-radius:20px;overflow:hidden;}
.prog-fill{height:100%;border-radius:20px;background:linear-gradient(90deg,var(--blue-mid),var(--teal-mid));transition:width .4s;}
.card-evals{padding:9px 17px 15px;}
.ev-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--gray-400);margin-bottom:6px;}
.ev-grp{margin-bottom:7px;}
.ev-grp-title{font-size:11px;font-weight:600;color:var(--gray-600);margin-bottom:4px;}
.pills{display:flex;flex-wrap:wrap;gap:4px;}
.pill{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:20px;font-size:11px;font-weight:600;cursor:pointer;transition:all .12px;border:1.5px solid transparent;font-family:'Plus Jakarta Sans',sans-serif;}
.pill-todo{background:var(--gray-50);border-color:var(--gray-200);color:var(--gray-600);}
.pill-todo:hover{background:var(--blue-light);border-color:var(--blue-mid);color:var(--blue-mid);}
.pill-done{background:var(--green-light);border-color:#a8ddb8;color:var(--green);}
.pill-draft{background:var(--gold-light);border-color:var(--gold-mid);color:var(--gold);}
.pill-draft:hover{background:var(--gold-mid);color:#fff;}
.pill-form{background:var(--gray-50);border-color:var(--gray-200);border-style:dashed;color:var(--gray-400);font-style:italic;}
.pill-form:hover{background:var(--gold-light);border-color:#f5d89a;color:var(--gold);}
.sp{background:var(--white);border-radius:var(--rlg);box-shadow:var(--shadow);border:1px solid var(--gray-100);margin-bottom:16px;overflow:hidden;display:none;}
.sp.open{display:block;}
.sp-hd{background:linear-gradient(135deg,var(--navy),#1e3d82);padding:12px 18px;color:#fff;display:flex;align-items:center;gap:8px;}
.sp-title{font-family:'Playfair Display',serif;font-size:16px;font-weight:700;flex:1;}
.sp-tabs{display:flex;border-bottom:1.5px solid var(--gray-100);overflow-x:auto;}
.sp-tab{padding:9px 16px;font-size:12px;font-weight:600;cursor:pointer;color:var(--gray-600);border-bottom:2px solid transparent;transition:all .12s;font-family:'Plus Jakarta Sans',sans-serif;white-space:nowrap;}
.sp-tab:hover{color:var(--blue-mid);}
.sp-tab.on{color:var(--blue-mid);border-bottom-color:var(--blue-mid);}
.sp-body{padding:18px;}
.sp-pane{display:none;}
.sp-pane.on{display:block;}
.sp-sec-title{font-family:'Playfair Display',serif;font-size:15px;font-weight:700;color:var(--navy);margin-bottom:10px;}
.bp-bloc{background:var(--gray-50);border-radius:var(--r);border:1.5px solid var(--gray-200);overflow:hidden;margin-bottom:12px;}
.bp-bloc-hd{background:linear-gradient(135deg,var(--navy),#1e3d82);padding:10px 15px;color:#fff;font-family:'Playfair Display',serif;font-size:14px;font-weight:700;}
.bp-row{display:flex;align-items:center;gap:10px;padding:9px 15px;border-bottom:1px solid var(--gray-100);transition:background .1s;}
.bp-row:hover{background:var(--blue-ultra);}
.bp-row:last-child{border-bottom:none;}
.bp-row-info{flex:1;}
.bp-row-label{font-size:13px;font-weight:600;color:var(--navy);}
.bp-row-desc{font-size:11px;color:var(--gray-400);margin-top:1px;}
.bp-toggle{width:38px;height:22px;border-radius:11px;border:none;cursor:pointer;position:relative;background:var(--gray-200);transition:background .15s;flex-shrink:0;}
.bp-toggle.on{background:var(--teal-mid);}
.bp-toggle::after{content:'';position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .15s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.bp-toggle.on::after{transform:translateX(16px);}
.bp-badge-cert{background:var(--blue-light);color:var(--blue-mid);font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;flex-shrink:0;}
.bp-badge-form{background:var(--gold-light);color:var(--gold);font-size:10px;font-weight:700;padding:2px 8px;border-radius:20px;flex-shrink:0;}
.bp-num-wrap{display:flex;align-items:center;gap:6px;}
.bp-num{width:52px;padding:5px 7px;border-radius:7px;border:1.5px solid var(--gray-200);font-size:13px;font-weight:700;text-align:center;outline:none;font-family:'Playfair Display',serif;}
.bp-num:focus{border-color:var(--blue-mid);}
.ge-comp{background:var(--gray-50);border-radius:var(--r);border:1.5px solid var(--gray-200);overflow:hidden;margin-bottom:10px;}
.ge-comp-hd{background:linear-gradient(135deg,var(--navy),#1e3d82);color:#fff;padding:10px 14px;display:flex;align-items:center;gap:8px;}
.ge-cap{border-bottom:1px solid var(--gray-200);}
.ge-cap-hd{background:var(--blue-ultra);padding:7px 14px 7px 20px;display:flex;align-items:center;gap:8px;border-bottom:1px solid var(--gray-200);}
.ge-cap-lbl{font-size:11px;font-weight:700;color:var(--blue-mid);text-transform:uppercase;letter-spacing:.06em;flex:0 0 auto;}
.ge-crit-row{padding:5px 14px 5px 26px;display:flex;align-items:center;gap:7px;border-top:1px solid var(--gray-100);background:var(--white);}
.ge-inp{padding:5px 9px;border-radius:7px;border:1.5px solid var(--gray-200);background:var(--white);font-size:12px;font-family:'Plus Jakarta Sans',sans-serif;color:var(--text);outline:none;flex:1;}
.ge-inp:focus{border-color:var(--blue-mid);}
.ge-inp-hd{background:rgba(255,255,255,.15);border-color:rgba(255,255,255,.2);color:#fff;}
.ge-type-sel{padding:4px 7px;border-radius:6px;border:1.5px solid var(--gray-200);font-size:11px;font-weight:700;cursor:pointer;font-family:'Plus Jakarta Sans',sans-serif;}
.ge-type-CM{background:var(--blue-light);color:var(--blue-mid);}
.ge-type-CE{background:var(--teal-light);color:var(--teal);}
.ge-type-CF{background:var(--gold-light);color:var(--gold);}
.ge-del{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:6px;border:1.5px solid var(--gray-200);background:var(--white);font-size:11px;font-weight:600;cursor:pointer;color:var(--red);font-family:'Plus Jakarta Sans',sans-serif;white-space:nowrap;}
.ge-del:hover{background:var(--red-light);border-color:var(--red);}
.ge-add{display:inline-flex;align-items:center;gap:4px;padding:4px 9px;border-radius:6px;border:1.5px solid #a8ddb8;background:var(--green-light);font-size:11px;font-weight:600;cursor:pointer;color:var(--green);font-family:'Plus Jakarta Sans',sans-serif;}
.ge-add:hover{background:var(--green);color:#fff;border-color:var(--green);}
.pond-bloc{background:var(--gray-50);border-radius:var(--r);border:1.5px solid var(--gray-200);overflow:hidden;margin-bottom:11px;}
.pond-bloc-hd{background:linear-gradient(135deg,var(--navy),#1e3d82);padding:9px 15px;color:#fff;font-family:'Playfair Display',serif;font-size:13px;font-weight:700;}
.pond-row{display:flex;align-items:center;gap:10px;padding:8px 15px;border-bottom:1px solid var(--gray-100);}
.pond-row:last-child{border-bottom:none;}
.pond-lbl{flex:1;font-size:13px;color:var(--gray-600);}
.pond-inp{width:60px;padding:5px 7px;border-radius:7px;border:1.5px solid var(--gray-200);font-size:13px;font-weight:700;text-align:center;outline:none;}
.pond-inp:focus{border-color:var(--blue-mid);}
.pond-total{display:flex;justify-content:space-between;padding:7px 15px;border-top:2px solid var(--gray-200);font-size:12px;font-weight:700;background:var(--white);}
.jour-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px;margin-bottom:11px;}
.jour-cell{background:var(--white);border-radius:var(--r);border:1.5px solid var(--gray-200);padding:10px 12px;display:flex;flex-direction:column;gap:7px;}
.jour-cell.done{border-color:var(--teal-mid);background:var(--teal-light);}
.jour-cell.nr{border-color:var(--gray-300);background:var(--gray-100);}
.jour-lbl{font-size:10px;font-weight:700;color:var(--gray-400);text-transform:uppercase;letter-spacing:.08em;}
.jour-mfp-inp{width:100%;padding:5px 8px;border-radius:6px;border:1.5px solid var(--gray-200);font-size:12px;font-family:'Plus Jakarta Sans',sans-serif;color:var(--text);outline:none;background:var(--gray-50);}
.jour-mfp-inp:focus{border-color:var(--teal-mid);background:var(--white);}
.jour-mfp-inp.required-empty{border-color:var(--red)!important;}
.jour-inp{width:100%;padding:4px 5px;border-radius:6px;border:1.5px solid var(--gray-200);font-size:13px;font-family:'Playfair Display',serif;font-weight:700;text-align:center;outline:none;}
.jour-nr{padding:3px 6px;border-radius:6px;border:1.5px solid var(--gray-200);background:var(--gray-50);font-size:11px;font-weight:600;cursor:pointer;color:var(--gray-400);font-family:'Plus Jakarta Sans',sans-serif;text-align:center;}
.jour-nr.on{background:var(--gray-200);color:var(--navy);}
.jour-avg{display:flex;justify-content:space-between;align-items:center;padding:9px 0 3px;border-top:1.5px solid var(--gray-100);}
.ov{position:fixed;inset:0;background:rgba(13,27,53,.5);backdrop-filter:blur(4px);z-index:200;display:flex;align-items:center;justify-content:center;padding:14px;}
.modal{background:var(--white);border-radius:var(--rlg);box-shadow:var(--shadow-lg);width:100%;max-width:510px;overflow:hidden;max-height:90vh;display:flex;flex-direction:column;}
.modal-lg{max-width:620px;}
.mh{padding:17px 22px;color:#fff;display:flex;align-items:center;justify-content:space-between;flex-shrink:0;}
.mh-navy{background:linear-gradient(135deg,var(--navy),#1e3d82);}
.mh-red{background:linear-gradient(135deg,#6b1a1a,#922222);}
.mh-teal{background:linear-gradient(135deg,var(--teal),var(--teal-mid));}
.mh-title{font-family:'Playfair Display',serif;font-size:17px;font-weight:700;}
.mh-sub{font-size:12px;color:rgba(255,255,255,.55);margin-top:2px;}
.mx{width:27px;height:27px;border-radius:7px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.2);color:#fff;cursor:pointer;font-size:14px;display:flex;align-items:center;justify-content:center;}
.mb{padding:17px 21px 21px;overflow-y:auto;flex:1;}
.fl{display:flex;flex-direction:column;gap:4px;margin-bottom:11px;}
.fl label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;color:var(--gray-400);}
.fi{width:100%;padding:8px 12px;border-radius:8px;border:1.5px solid var(--gray-200);background:var(--gray-50);font-size:13px;font-family:'Plus Jakarta Sans',sans-serif;color:var(--text);outline:none;transition:all .15s;}
.fi:focus{border-color:var(--blue-mid);background:var(--white);box-shadow:0 0 0 3px rgba(37,99,200,.1);}
.fi[readonly]{background:var(--gray-100);cursor:default;}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:11px;}
.bloc-info{background:var(--blue-ultra);border-radius:8px;padding:8px 12px;font-size:12px;color:var(--blue-mid);font-weight:500;}
.mfoot{display:flex;gap:8px;justify-content:flex-end;padding-top:5px;}
.pen-item{padding:9px 13px;border-bottom:1px solid var(--gray-100);display:flex;align-items:flex-start;gap:8px;}
.pen-item:hover{background:var(--red-light);}
.pen-item:last-child{border-bottom:none;}
.pen-del{width:19px;height:19px;border-radius:5px;background:transparent;border:none;cursor:pointer;color:var(--gray-400);font-size:10px;}
.pen-del:hover{background:var(--red-light);color:var(--red);}
.toast{position:fixed;bottom:20px;right:20px;background:var(--navy);color:#fff;padding:10px 17px;border-radius:var(--r);font-size:13px;font-weight:600;z-index:9999;transform:translateY(20px);opacity:0;transition:all .25s;box-shadow:var(--shadow-lg);pointer-events:none;}
.toast.show{transform:translateY(0);opacity:1;}
.empty{text-align:center;padding:65px 20px;color:var(--gray-400);}
.empty-icon{font-size:44px;margin-bottom:12px;}
.empty-title{font-family:'Playfair Display',serif;font-size:19px;font-weight:700;color:var(--navy);margin-bottom:8px;}
@media(max-width:640px){.hdr{padding:16px 14px;}.doc-title{font-size:19px;}.container{padding:12px 10px 60px;}.grid{grid-template-columns:1fr;}.frow{grid-template-columns:1fr;}}
