.h0{height:0%}.h5{height:5%}.h10{height:10%}.h15{height:15%}.h20{height:20%}.h25{height:25%}.h30{height:30%}.h35{height:35%}.h40{height:40%}.h45{height:45%}.h50{height:50%}.h55{height:55%}.h60{height:60%}.h65{height:65%}.h70{height:70%}.h75{height:75%}.h80{height:80%}.h85{height:85%}.h90{height:90%}.h95{height:95%}.h100{height:100%}
:root{--fond:#0b0b0b;--fond2:#141414;--encre:#f4f4f4;--trait:#3a3a3a;--trait2:#262626;--pale:#9a9a9a;--jaune:#ffc500;--rouge:#ff8a80;--f-titre:ui-monospace,Menlo,monospace;--f-texte:-apple-system,"Helvetica Neue",Arial,sans-serif;color-scheme:dark}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--fond);color:var(--encre);font:15px/1.5 var(--f-texte);overflow-wrap:break-word}
a{color:var(--encre);text-underline-offset:3px;text-decoration-color:var(--trait)}
a:hover{text-decoration-color:var(--jaune)}
a:focus-visible,button:focus-visible,summary:focus-visible{outline:2px solid var(--jaune);outline-offset:2px}
h1,h2,h3{font-family:var(--f-titre);margin:0}
p{margin:0 0 10px}
.seul{max-width:420px;margin:12vh auto;padding:0 16px;display:grid;gap:16px}
.logo{font:700 15px/1.15 var(--f-titre);letter-spacing:.04em}
.logo span{display:block;color:var(--jaune);font-size:11px;letter-spacing:.12em;font-weight:400}
.seul .logo{font-size:18px}
.alerte{color:var(--rouge)}
.alerte:empty{display:none}
.toast{display:inline-block;background:var(--jaune);color:#0b0b0b;font:12px var(--f-titre);padding:8px 12px;margin:0 0 12px}
.mono{font-family:var(--f-titre);font-size:12px}
.sous{color:var(--pale);font-size:13px;margin:0 0 16px}

.btn{display:inline-block;border:1px solid var(--jaune);color:var(--jaune);background:none;padding:10px 14px;min-height:40px;font:12px var(--f-titre);text-decoration:none;cursor:pointer;text-align:center}
.btn:hover{background:#1c1c1c}
.btn.plein{background:var(--jaune);color:#0b0b0b}
.btn.plein:hover{background:#ffd23f}
.btn.danger{border-color:var(--rouge);color:var(--rouge)}
.btn:focus-visible{outline:2px solid #fff;outline-offset:2px}
input,select,textarea{background:var(--fond2);color:var(--encre);border:1px solid #4a4a4a;border-radius:0;padding:8px 10px;font:13px var(--f-titre);width:100%;min-width:0}
input[type=checkbox]{width:auto;accent-color:var(--jaune);vertical-align:-2px}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--jaune);outline-offset:0}
textarea{resize:vertical}
label{display:block;font:10px/1.4 var(--f-titre);letter-spacing:.08em;color:var(--pale);margin:0 0 4px}
label input,label select,label textarea{margin-top:4px;letter-spacing:0}
.recherche{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.recherche input{flex:1 1 200px;width:auto}
.recherche select{flex:0 1 170px;width:auto}
.action{display:grid;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--trait2)}
.action .btn{justify-self:start}

.bo{display:grid;grid-template-columns:220px minmax(0,1fr);min-height:100vh}
.bo aside{border-right:1px solid var(--trait);padding:16px 0;display:flex;flex-direction:column;gap:2px}
.bo aside .logo{padding:0 16px 14px;border-bottom:1px solid var(--trait);margin-bottom:8px}
.bo nav{display:flex;flex-direction:column}
.bo nav a{display:block;padding:9px 16px;font:12px var(--f-titre);color:#d8d8d8;text-decoration:none}
.bo nav a:hover{background:#1c1c1c}
.bo nav a:focus-visible{outline:2px solid var(--jaune);outline-offset:-2px}
.bo nav a[aria-current=page]{background:var(--jaune);color:#0b0b0b}
.bo .bas{margin-top:auto;display:grid;gap:8px;padding:12px 16px 0;border-top:1px solid var(--trait);font:12px var(--f-titre);color:var(--pale)}
.bo .bas button{justify-self:start;background:none;border:1px solid var(--trait);color:#d8d8d8;padding:8px 10px;font:11px var(--f-titre);cursor:pointer}
.bo .bas button:hover{border-color:var(--jaune);color:var(--jaune)}
.bo main{padding:20px 22px 48px;min-width:0}
.bo h1{font-size:18px;font-weight:700;margin:0 0 4px}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));border:1px solid var(--trait);margin:12px 0 18px;overflow:hidden}
.kpi{padding:12px 14px;border-right:1px solid var(--trait);border-bottom:1px solid var(--trait);margin:0 -1px -1px 0;display:flex;flex-direction:column;gap:2px;min-width:0}
.kpi span{font:10px var(--f-titre);letter-spacing:.08em;color:var(--pale)}
.kpi b{font:400 24px var(--f-titre);font-variant-numeric:tabular-nums}
.kpi b.j,.kpi b.j a{color:var(--jaune)}
.kpi b.r,.kpi b.r a{color:var(--rouge)}
.kpi small{font-size:12px;color:var(--pale)}
.panneau{border:1px solid var(--trait);padding:12px 14px;min-width:0;margin:0 0 16px}
.panneau h2{font:400 11px var(--f-titre);letter-spacing:.08em;color:#cfcfcf;margin:0 0 10px}
.fiche{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.fiche .panneau{margin:0}
.solde{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--trait2);padding:6px 0;margin:0}
.solde span{font:10px var(--f-titre);letter-spacing:.08em;color:var(--pale)}
.solde b{font:400 22px var(--f-titre);color:var(--jaune);font-variant-numeric:tabular-nums}
.examen{border-top:1px solid var(--trait2);padding-top:10px;margin-top:10px}
.examen:first-of-type{border-top:0;margin-top:0;padding-top:0}
.graph{height:150px;display:flex;align-items:flex-end;gap:5px;border-bottom:1px solid var(--trait);padding-top:8px}
.graph .col{flex:1;height:100%;display:flex;flex-direction:column-reverse;justify-content:flex-start;gap:1px;min-width:0}
.graph .col i{display:block}
.graph .cree{background:var(--jaune)}
.graph .det{background-image:radial-gradient(#f4f4f4 .8px,transparent 1px);background-size:3px 3px;border:1px solid #f4f4f4}
.graph .col i.h0{border-width:0}
.legende{display:flex;gap:14px;flex-wrap:wrap;font-size:12px;color:var(--pale);margin:8px 0 0}
.legende i{display:inline-block;width:10px;height:10px;margin-right:5px;vertical-align:-1px}
.legende .cree{background:var(--jaune)}
.legende .det{background-image:radial-gradient(#f4f4f4 .8px,transparent 1px);background-size:3px 3px;border:1px solid #f4f4f4}

.table{overflow-x:auto;border:1px solid var(--trait);margin:0 0 14px;max-width:100%}
.panneau .table{margin-bottom:0}
table{border-collapse:collapse;width:100%;font-size:13px}
th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--trait2);vertical-align:top}
th{font:400 11px var(--f-titre);letter-spacing:.06em;color:var(--pale);border-bottom:1px solid var(--trait);white-space:nowrap}
tr:last-child td{border-bottom:0}
td.n,th.n{text-align:right;font:13px var(--f-titre);font-variant-numeric:tabular-nums;white-space:nowrap}
.plus{color:var(--jaune)}
.moins{color:var(--rouge)}
.tag{display:inline-block;font:10px var(--f-titre);letter-spacing:.04em;border:1px solid #6b6b6b;padding:0 5px;white-space:nowrap}
.tag.j{border-color:var(--jaune);color:var(--jaune)}
.tag.r{border-color:var(--rouge);color:var(--rouge)}
.tag.p{background:var(--jaune);color:#0b0b0b;border-color:var(--jaune)}

@media (max-width:760px){
  .bo{grid-template-columns:minmax(0,1fr);min-height:0}
  .bo aside{border-right:0;border-bottom:1px solid var(--trait);padding:12px 0 0}
  .bo nav{flex-direction:row;flex-wrap:wrap;gap:0 4px;padding:0 12px}
  .bo nav a{padding:9px 10px}
  .bo .bas{margin-top:8px;padding:10px 16px;grid-template-columns:1fr auto;align-items:center}
  .bo main{padding:16px 14px 40px}
  .fiche{grid-template-columns:minmax(0,1fr)}
  .kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
