:root{--bn:#000A37;--fu:#FF4B91;--bp:#5000FF;--bp20:#DCCCFF;--me:#00BE96;--me20:#CCF2EA;--or:#FF9650;--or20:#FFEADC;--g1:#FCFCF9;--g2:#F5F5F0;--g3:#D8DBD1;--g4:#A4A49C;--g5:#63635E}
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--bn);background:var(--g2)}
[hidden]{display:none!important}
header{background:var(--bn);color:#fff;display:flex;align-items:center;gap:12px;padding:0 24px;height:60px;position:sticky;top:0;z-index:10}
header .logo{display:flex;align-items:center;gap:14px;white-space:nowrap}header .logo img{height:40px;display:block}
header .logo span{font-size:17px;font-weight:bold;padding:0 14px;border-left:1px solid rgba(255,255,255,.35);border-right:1px solid rgba(255,255,255,.35);line-height:28px}
nav{display:flex;gap:2px;flex:1}
nav button{background:none;border:0;color:#fff;opacity:.7;padding:20px 7px;font-size:13px;border-bottom:3px solid transparent;white-space:nowrap;cursor:pointer;font-family:inherit}
nav button.actif{opacity:1;border-bottom-color:var(--fu);font-weight:bold}
nav .compteur{background:var(--fu);color:#fff;border-radius:3px;padding:1px 6px;font-size:11px;font-weight:bold;margin-left:4px}
header .user{font-size:13px;white-space:nowrap;opacity:.9}
.menu-admin{position:relative;display:flex}
.deroulant{display:none;position:absolute;top:60px;right:0;background:#fff;border-radius:3px;box-shadow:0 4px 14px rgba(0,10,55,.18);min-width:190px;z-index:20;overflow:hidden}
.deroulant.ouvert{display:block}
.deroulant a{display:block;padding:11px 16px;color:var(--bn);text-decoration:none;font-size:13.5px;border-bottom:1px solid var(--g2);cursor:pointer}
.deroulant a:hover{background:var(--g2)}
.deroulant a.deco{color:var(--fu);font-weight:bold;border-bottom:0}
main{max-width:1180px;margin:0 auto;padding:22px 16px}
.ecran{display:none}.ecran.actif{display:block}
h2{font-size:20px;margin:0 0 4px}
.sous{color:var(--g5);font-size:13px;margin:0 0 18px}
.cartes{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:14px;margin-bottom:20px}
.carte{background:#fff;border-radius:3px;padding:16px;border-top:4px solid var(--fu);box-shadow:0 1px 3px rgba(0,10,55,.08)}
.carte .v{font-size:26px;font-weight:bold;margin-top:6px}
.carte .l{font-size:12px;color:var(--g5);text-transform:uppercase;letter-spacing:.5px}
.carte.b{border-top-color:var(--bp)}.carte.m{border-top-color:var(--me)}.carte.o{border-top-color:var(--or)}
.bloc{background:#fff;border-radius:3px;margin-bottom:18px;box-shadow:0 1px 3px rgba(0,10,55,.08);overflow:hidden}
.bloc>*:not(h3){margin-left:18px;margin-right:18px}.bloc>table{width:calc(100% - 36px);margin-bottom:14px}
.bloc h3{margin:0 0 12px;font-size:12px;background:var(--bn);color:#fff;padding:10px 18px;text-transform:uppercase;letter-spacing:1px;border-radius:3px 3px 0 0}
.bloc h3.rose{background:var(--fu)}
.bloc .cartes{margin-top:4px;margin-bottom:12px}
.deux{display:grid;grid-template-columns:1fr 1fr;gap:18px}
table{width:100%;border-collapse:collapse;font-size:13px}
th{text-align:left;color:var(--g5);font-weight:normal;border-bottom:1px solid var(--g3);padding:8px 6px}
td{padding:8px 6px;border-bottom:1px solid var(--g2)}
td.n,th.n{text-align:right}td.c,th.c{text-align:center}
td.nw{white-space:nowrap}
.vide{color:var(--g5);font-style:italic;padding:14px 6px}
.barre{height:10px;background:var(--g2);border-radius:3px;overflow:hidden;min-width:80px}
.barre span{display:block;height:100%;background:var(--fu)}
.filtres{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;align-items:center}
select,input{border:1px solid var(--g3);border-radius:3px;padding:8px 10px;font-size:13px;color:var(--bn);background:#fff;font-family:inherit}
.btn{background:var(--bp);color:#fff;border:0;border-radius:3px;padding:10px 18px;font-size:13px;font-weight:bold;text-transform:uppercase;letter-spacing:.8px;cursor:pointer;font-family:inherit}
.btn.sec{background:#fff;color:var(--bn);border:1px solid var(--g3)}
.btn.petit{padding:6px 10px;font-size:11px}
.btn:disabled{opacity:.5;cursor:default}
.note{background:var(--or20);border-left:4px solid var(--or);padding:10px 14px;border-radius:3px;font-size:13px;margin-bottom:16px}
.note.ok{background:var(--me20);border-left-color:var(--me)}
.note.info{background:var(--bp20);border-left-color:var(--bp)}
.pastille{display:inline-block;padding:3px 9px;border-radius:3px;font-size:11.5px;font-weight:bold;white-space:nowrap}
.p-signale{background:var(--bp);color:#fff}.p-auto{background:var(--g3);color:var(--bn)}.p-admin{background:var(--fu);color:#fff}.p-lecture{background:var(--bp20);color:var(--bn)}
.jours{display:flex;align-items:flex-end;gap:6px;height:170px;padding-top:22px}
.jours div{flex:1;background:var(--bp);border-radius:3px 3px 0 0;position:relative;min-width:6px}
.jours div span{position:absolute;top:-17px;left:0;right:0;text-align:center;font-size:11px;color:var(--g5)}
.axe{display:flex;gap:6px;font-size:10px;color:var(--g5);margin:4px 18px 14px}.axe span{flex:1;text-align:center;overflow:hidden}
.periode{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;padding:4px 0 12px}
.periode .lab{color:var(--g5);text-transform:uppercase;letter-spacing:.8px;font-size:11.5px;font-weight:bold}
.periode .fl{background:#fff;border:1px solid var(--g3);border-radius:3px;width:34px;height:34px;cursor:pointer;color:var(--bn);font-weight:bold}
.periode select{font-weight:bold}
.periode .info{margin-left:auto;color:var(--g5);font-size:12px}
.lien{color:var(--bp);cursor:pointer;text-decoration:underline;background:none;border:0;font:inherit;padding:0}
input.traite{width:20px;height:20px;accent-color:var(--me);cursor:pointer}
tr.fait td{color:var(--g4)}
#erreurs td:not(.msg){white-space:nowrap}
/* connexion */
.ecran-cx{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.login{width:100%;max-width:400px;background:#fff;border-radius:3px;padding:28px;box-shadow:0 1px 3px rgba(0,10,55,.08)}
.login .logo-cx{display:flex;align-items:center;gap:14px;font-size:18px;font-weight:bold;margin-bottom:18px}
.login .logo-cx img{height:46px}.login .logo-cx span{padding-left:14px;border-left:1px solid var(--g3);line-height:34px}
.login label{display:block;font-size:12px;color:var(--g5);margin:14px 0 4px}
.login input{width:100%}
.login .code{font-size:22px;letter-spacing:6px;text-align:center}
.login .btn{width:100%;margin-top:18px}
.erreur{color:var(--fu);font-size:13px;font-weight:bold;margin-top:12px;min-height:16px}
.qr{display:flex;justify-content:center;margin:12px 0}.qr img{width:200px;height:200px}
.secret{font-family:monospace;font-size:13px;background:var(--g2);padding:8px;border-radius:3px;word-break:break-all;text-align:center}
.prov{font-family:monospace;font-size:16px;font-weight:bold;background:var(--g2);padding:10px;border-radius:3px;text-align:center;margin:10px 0}
@media(max-width:900px){.deux{grid-template-columns:1fr}header{height:auto;flex-wrap:wrap;padding:8px 16px}nav{flex-wrap:wrap}.deroulant{top:40px}}
