:root{--bleu:#1d4ed8;--bleu-fonce:#1e3a8a;--noir:#0f172a;--gris:#64748b;--ligne:#e2e8f0;--fond:#f8fafc;--blanc:#fff;--rouge:#b91c1c}*{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--fond);color:var(--noir);line-height:1.5}a{color:var(--bleu)}.top{background:var(--blanc);border-bottom:1px solid var(--ligne);padding:14px 20px;display:flex;justify-content:space-between;align-items:center;gap:12px}.top strong{font-size:1.05rem}.top small{color:var(--gris);display:block;font-size:.8rem}.wrap{max-width:1000px;margin:0 auto;padding:28px 20px}h1{font-size:1.6rem;margin-bottom:6px}.sous{color:var(--gris);margin-bottom:24px}.carte{background:var(--blanc);border:1px solid var(--ligne);border-radius:10px;padding:20px;margin-bottom:16px}.carte h2{font-size:1.05rem;margin-bottom:10px}.liste{list-style:none}.liste li{padding:10px 0;border-top:1px solid var(--ligne)}.liste li:first-child{border-top:0}.btn{display:inline-block;background:var(--bleu);color:#fff;border:0;border-radius:8px;padding:10px 16px;font:inherit;font-weight:600;cursor:pointer;text-decoration:none}.btn:hover{background:var(--bleu-fonce)}.btn.sec{background:var(--blanc);color:var(--noir);border:1px solid var(--ligne)}.btn.sec:hover{background:var(--fond)}.login{min-height:100vh;display:grid;place-items:center;padding:20px}.login form{background:var(--blanc);border:1px solid var(--ligne);border-radius:12px;padding:28px;width:100%;max-width:380px}.login h1{font-size:1.4rem;margin-bottom:4px}label{display:block;font-weight:600;font-size:.9rem;margin:16px 0 6px}input{width:100%;padding:11px 12px;border:1px solid var(--ligne);border-radius:8px;font:inherit;background:#fff}input:focus{outline:2px solid var(--bleu);outline-offset:1px}.login .btn{width:100%;margin-top:22px}.err{background:#fef2f2;color:var(--rouge);border:1px solid #fecaca;border-radius:8px;padding:10px 12px;margin-top:16px;font-size:.9rem}@media(max-width:600px){.wrap{padding:20px 16px}h1{font-size:1.35rem}}.gris{color:var(--gris)}.app{min-height:100vh}.app,.side{display:flex}.side{width:240px;background:var(--noir);color:#fff;flex-direction:column;padding:20px 14px;position:-webkit-sticky;position:sticky;top:0;height:100vh;flex-shrink:0}.marque{font-weight:700;font-size:1.05rem;padding:0 8px 18px}.marque small{display:block;font-weight:400;color:#94a3b8;font-size:.8rem;margin-top:2px}.side nav{display:flex;flex-direction:column;gap:2px;flex:1 1}.side nav a{color:#cbd5e1;text-decoration:none;padding:10px 12px;border-radius:8px}.side nav a:hover{background:#1e293b}.side nav a.actif{background:var(--bleu);color:#fff;font-weight:600}.contenu{flex:1 1;min-width:0}.demo{background:#fef3c7;color:#92400e;text-align:center;padding:8px 12px;font-size:.85rem;font-weight:600}.mbar{display:none}.grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:14px;gap:14px;margin-bottom:16px}.grille .carte{margin-bottom:0}.kpi small{color:var(--gris);display:block}.kpi b{font-size:1.6rem;display:block}.kpi span{color:var(--gris);font-size:.85rem}.barres{display:flex;gap:10px;height:180px;align-items:flex-end;margin-top:8px}.col{flex:1 1;height:100%;flex-direction:column;justify-content:flex-end;text-align:center}.col,.pair{display:flex}.pair{flex:1 1;align-items:flex-end;gap:3px}.pair i{flex:1 1;background:var(--bleu);border-radius:4px 4px 0 0;display:block}.pair i.c2{background:#94a3b8}.legende{font-size:.85rem;margin-top:10px}.legende span{display:inline-block;width:10px;height:10px;border-radius:2px;margin:0 4px 0 10px}.p1{background:var(--bleu)}.p2{background:#94a3b8}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:8px 6px;border-top:1px solid var(--ligne)}th{border-top:0;color:var(--gris);font-size:.85rem}.dom{margin-bottom:14px}.dom>div:first-child{display:flex;justify-content:space-between}.piste{height:8px;background:var(--ligne);border-radius:4px;overflow:hidden;margin-top:4px}.piste div{height:100%;background:var(--bleu)}.piste div.bas{background:#f59e0b}details summary{cursor:pointer}.doc{display:flex;justify-content:space-between;gap:10px}@media(max-width:800px){.app{display:block}.mbar{display:flex;justify-content:space-between;align-items:center;background:var(--noir);color:#fff;padding:10px 16px;position:-webkit-sticky;position:sticky;top:0;z-index:5}.side{display:none;position:fixed;inset:49px 0 0 0;width:auto;height:auto;z-index:4}.side.ouvert{display:flex}}.lg{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);min-height:100vh;font-family:Inter,system-ui,sans-serif;background:#fff}.lg h1,.lg h2{font-family:Plus Jakarta Sans,Inter,system-ui,sans-serif;letter-spacing:-.02em}.lg-gauche{position:relative;display:flex;align-items:center;padding:56px;color:#fff;overflow:hidden;background:radial-gradient(620px 460px at 0 0,rgba(59,130,246,.4),transparent 70%),radial-gradient(480px 380px at 100% 100%,rgba(31,86,224,.35),transparent 70%),linear-gradient(190deg,#0a1f55,#06122f)}.lg-gauche:before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.05) 1px,transparent 0),linear-gradient(90deg,rgba(255,255,255,.05) 1px,transparent 0);background-size:44px 44px;-webkit-mask-image:linear-gradient(180deg,transparent,#000 40%,transparent);mask-image:linear-gradient(180deg,transparent,#000 40%,transparent)}.lg-texte{position:relative;max-width:520px}.lg-pastille{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#a9c1f5;border:1px solid rgba(255,255,255,.2);border-radius:99px;padding:6px 14px}.lg-gauche h1{font-size:2.9rem;line-height:1.1;font-weight:800;margin:22px 0 18px}.lg-gauche p{font-size:1.1rem;line-height:1.6;color:#c7d5f2}.lg-gauche ul{list-style:none;margin-top:30px;display:grid;grid-gap:14px;gap:14px}.lg-gauche li{display:flex;gap:12px;align-items:center;color:#e6edfb;font-weight:500}.lg-gauche li:before{content:"";flex:none;width:22px;height:22px;border-radius:50%;background:#3b82f6 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 12.5l4 4 8-9'/%3E%3C/svg%3E") 50%/14px no-repeat}.lg-droite{display:flex;align-items:center;justify-content:center;padding:40px 24px;background:#fff}.lg-form{width:100%;max-width:400px}.lg-logo{display:block;width:210px;height:auto;margin:0 auto 34px}.lg-form h2{font-size:1.7rem;font-weight:800;color:#0b1b3b}.lg-sous{color:#5f6f8c;margin:4px 0 8px}.lg-form label{display:block;font-weight:600;font-size:.88rem;margin:18px 0 7px;color:#0b1b3b}.lg-form input{width:100%;padding:13px 14px;border:1.5px solid #dbe3f2;border-radius:12px;font:inherit;background:#f8fafd;transition:border-color .15s,box-shadow .15s}.lg-form input:focus{outline:0;border-color:#1f56e0;box-shadow:0 0 0 4px rgba(31,86,224,.14);background:#fff}.lg-btn{width:100%;margin-top:26px;padding:14px;border:0;border-radius:12px;font:inherit;font-weight:700;font-size:1rem;color:#fff;cursor:pointer;background:linear-gradient(135deg,#1f56e0,#3b82f6);box-shadow:0 12px 24px -12px rgba(31,86,224,.8);transition:transform .15s,box-shadow .15s}.lg-btn:hover{transform:translateY(-1px);box-shadow:0 16px 28px -12px rgba(31,86,224,.9)}.lg-aide{margin-top:22px;text-align:center;font-size:.85rem;color:#7a88a3}@media(max-width:860px){.lg{grid-template-columns:1fr}.lg-gauche{padding:32px 22px 36px}.lg-gauche h1{font-size:1.9rem;margin:16px 0 12px}.lg-gauche p{font-size:1rem}.lg-gauche ul{display:none}.lg-droite{padding:30px 20px 44px}.lg-logo{width:170px;margin-bottom:24px}}.lg-choix{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;padding:5px;background:#eef2f9;border-radius:14px;margin-bottom:26px}.lg-choix button{border:0;background:transparent;border-radius:10px;padding:11px 10px;font:inherit;cursor:pointer;color:#5f6f8c;text-align:center;transition:background .15s,color .15s,box-shadow .15s}.lg-choix button b{display:block;font-size:.95rem;color:inherit}.lg-choix button small{display:block;font-size:.75rem;margin-top:1px;opacity:.85}.lg-choix button.on{background:#fff;color:#0b1b3b;box-shadow:0 4px 12px -4px rgba(11,27,59,.25)}.lg-choix button:not(.on):hover{color:#0b1b3b}