:root{
  --primary:#1a472a; --accent:#ffd700; --bg:#f4f6f3; --card:#ffffff;
  --text:#26302a; --text2:#6b7a70; --border:#dfe6e0; --danger:#dc3545;
  --shadow:0 8px 32px rgba(26,71,42,.10);
}
body.sombre{
  --bg:#0e1512; --card:#16211b; --text:#e8efe9; --text2:#93a598; --border:#24332a;
  --shadow:0 8px 32px rgba(0,0,0,.4);
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Segoe UI',system-ui,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;transition:background .3s,color .3s;}

.voile-login{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;padding:20px;z-index:50;}
.boite-login{width:100%;max-width:380px;background:var(--card);border:1px solid var(--border);border-radius:20px;padding:32px 26px;text-align:center;box-shadow:var(--shadow);}
.boite-enroll{max-width:360px;}
.logo-login{font-size:40px;}
.boite-login h1{font-size:20px;color:var(--primary);margin-top:8px;}
.sous{font-size:12px;color:var(--text2);margin-top:6px;}
.boite-login form{margin-top:20px;display:flex;flex-direction:column;gap:10px;}
.boite-login input{padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:13px;}
.boite-login input:focus{outline:none;border-color:var(--accent);}
.btn-primaire{padding:12px;border:none;border-radius:10px;background:linear-gradient(120deg,var(--primary),#2d5a3d);color:#fff;font-weight:700;cursor:pointer;margin-top:4px;}
.erreur{margin-top:10px;font-size:12px;color:var(--danger);}

.enroll-qr{display:flex;justify-content:center;margin:14px 0;}
.enroll-qr img{border-radius:10px;border:1px solid var(--border);}
.enroll-secret{font-size:11px;color:var(--text2);margin-bottom:6px;word-break:break-all;}
.enroll-secret code{background:var(--bg);padding:2px 6px;border-radius:6px;}

.etiquette{display:block;text-align:left;font-size:11px;color:var(--text2);margin-top:14px;margin-bottom:4px;}
#enroll-nom{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);font-size:13px;}

.mfa-choix{display:flex;flex-direction:column;gap:8px;margin:14px 0;text-align:left;}
.facteur-btn{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);color:var(--text);cursor:pointer;font-size:13px;width:100%;text-align:left;}
.facteur-btn:hover{border-color:var(--accent);}
.facteur-btn.choisi{border-color:var(--primary);background:rgba(26,71,42,.06);font-weight:700;}
body.sombre .facteur-btn.choisi{background:rgba(255,215,0,.08);border-color:var(--accent);}
.sous-facteur{font-size:12px;color:var(--text2);margin:4px 0 2px;}

.voile-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;padding:20px;z-index:60;}
.boite-auth{max-width:420px;max-height:84vh;overflow-y:auto;}
#auth-liste{display:flex;flex-direction:column;gap:8px;margin:14px 0;text-align:left;}
.auth-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--border);border-radius:10px;background:var(--bg);font-size:13px;}
.auth-item .auth-nom{font-weight:700;color:var(--primary);}
body.sombre .auth-item .auth-nom{color:var(--accent);}
.auth-item .auth-quand{font-size:10.5px;color:var(--text2);display:block;}
.btn-supprimer{background:none;border:1px solid var(--danger);color:var(--danger);border-radius:8px;padding:5px 9px;font-size:11px;cursor:pointer;flex-shrink:0;}

.sous-carte{font-size:11.5px;color:var(--text2);margin-bottom:12px;margin-top:-6px;}
.diag-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 0;border-bottom:1px dashed var(--border);font-size:13px;flex-wrap:wrap;}
.diag-item:last-child{border-bottom:none;}
.diag-texte{flex:1;min-width:180px;}
.diag-niveau{font-size:10px;font-weight:800;padding:2px 7px;border-radius:99px;margin-right:6px;white-space:nowrap;}
.diag-niveau.attention{background:rgba(220,53,69,.1);color:var(--danger);border:1px solid rgba(220,53,69,.3);}
.diag-niveau.info{background:rgba(26,71,42,.08);color:var(--primary);border:1px solid rgba(26,71,42,.2);}
body.sombre .diag-niveau.info{color:var(--accent);background:rgba(255,215,0,.08);}
.btn-filtrer{background:linear-gradient(120deg,var(--primary),#2d5a3d);color:#fff;border:none;border-radius:8px;padding:6px 12px;font-size:11.5px;font-weight:700;cursor:pointer;flex-shrink:0;}

.lien-securite{color:var(--danger);}
.lien-securite.arme{background:var(--danger);color:#fff;padding:2px 8px;border-radius:99px;font-weight:800;}
#securite-statut.ok{color:var(--primary);}
body.sombre #securite-statut.ok{color:var(--accent);}
#securite-statut.alerte{color:var(--danger);font-weight:700;}

.entete{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:linear-gradient(120deg,var(--primary),#2d5a3d);position:sticky;top:0;z-index:10;}
.entete-titre{color:#fff;font-weight:800;font-size:16px;}
.entete-titre span{color:var(--accent);}
.entete-actions{display:flex;gap:8px;}
.btn-icone{background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.3);color:#fff;border-radius:10px;padding:6px 10px;cursor:pointer;font-size:14px;}

main{max-width:900px;margin:0 auto;padding:18px 16px 60px;}
.bandeau{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px;font-size:12px;color:var(--text2);}
.lien{background:none;border:none;color:var(--primary);font-weight:700;cursor:pointer;font-size:12px;}
body.sombre .lien{color:var(--accent);}

.stats-grille{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:18px;}
.stat-tile{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:14px;text-align:center;box-shadow:var(--shadow);}
.stat-tile .n{font-size:24px;font-weight:800;color:var(--primary);}
body.sombre .stat-tile .n{color:var(--accent);}
.stat-tile .l{font-size:11px;color:var(--text2);margin-top:2px;}

.carte{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;margin-bottom:16px;box-shadow:var(--shadow);}
.carte h2{font-size:14px;color:var(--primary);margin-bottom:12px;}
body.sombre .carte h2{color:var(--accent);}

.filtres{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.filtres input[type="search"],.filtres select{padding:8px 10px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--text);font-size:12.5px;flex:1;min-width:140px;}

.graphique{margin-bottom:16px;}
.graphique:last-child{margin-bottom:0;}
.graphique h3{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:8px;}
.barre-stat{display:flex;align-items:center;gap:8px;padding:4px 0;font-size:12px;}
.barre-label{width:110px;flex-shrink:0;color:var(--text2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.barre-piste{flex:1;height:10px;background:var(--border);border-radius:99px;overflow:hidden;}
.barre-valeur{height:100%;background:linear-gradient(90deg,var(--primary),var(--accent));border-radius:99px;}
.barre-nombre{width:28px;text-align:right;font-weight:700;color:var(--primary);}
body.sombre .barre-nombre{color:var(--accent);}

.groupe-type{margin-bottom:12px;}
.groupe-type h3{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--text2);margin-bottom:6px;}
.liste-item{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:8px 0;border-bottom:1px dashed var(--border);font-size:13px;}
.liste-item:last-child{border-bottom:none;}
.badge-statut{font-size:10px;padding:2px 8px;border-radius:99px;background:rgba(255,215,0,.15);color:#8a6d00;border:1px solid rgba(255,215,0,.4);white-space:nowrap;}
body.sombre .badge-statut{color:var(--accent);}

.edge-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-bottom:1px dashed var(--border);font-size:12.5px;flex-wrap:wrap;}
.edge-row:last-child{border-bottom:none;}
.edge-type{font-size:10px;font-weight:800;padding:2px 7px;border-radius:99px;background:rgba(26,71,42,.08);color:var(--primary);}
body.sombre .edge-type{color:var(--accent);background:rgba(255,215,0,.08);}

.journal-row{padding:8px 0;border-bottom:1px dashed var(--border);font-size:12px;color:var(--text2);}
.journal-row:last-child{border-bottom:none;}
.journal-row .quand{font-size:10px;opacity:.7;display:block;margin-top:2px;}

.pied{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding-top:16px;border-top:1px solid var(--border);font-size:10.5px;color:var(--text2);}
.vide{font-size:12px;color:var(--text2);}
