:root{
  --bg:#0f1115; --bg2:#171a21; --card:#1d212b; --card2:#232834;
  --txt:#e7eaf0; --muted:#9aa3b2; --accent:#5b8cff; --accent2:#3fd9a0;
  --border:#2b313d; --danger:#ff6b6b; --warn:#ffb13f;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:linear-gradient(160deg,var(--bg),var(--bg2));color:var(--txt);min-height:100vh}
a{color:var(--accent);text-decoration:none}
.wrap{max-width:1000px;margin:0 auto;padding:24px 18px 60px}
header.top{display:flex;align-items:center;justify-content:space-between;
  padding:18px 0;margin-bottom:10px;border-bottom:1px solid var(--border)}
header.top h1{font-size:1.25rem;margin:0;letter-spacing:.3px}
header.top .sub{color:var(--muted);font-size:.8rem;margin-top:2px}
.nav{display:flex;gap:14px;align-items:center;font-size:.9rem}
.nav a{color:var(--muted)} .nav a:hover{color:var(--txt)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:16px;margin-top:22px}
.card{background:var(--card);border:1px solid var(--border);border-radius:14px;
  padding:18px;display:flex;flex-direction:column;gap:10px;transition:.15s}
.card:hover{border-color:var(--accent);transform:translateY(-2px)}
.card .ico{font-size:1.8rem}
.card h3{margin:0;font-size:1.02rem}
.card p{margin:0;color:var(--muted);font-size:.86rem;line-height:1.45;flex:1}
.badge{display:inline-block;font-size:.68rem;padding:2px 8px;border-radius:20px;
  border:1px solid var(--border);color:var(--muted)}
.badge.sso{color:var(--accent2);border-color:var(--accent2)}
.badge.auto{color:var(--warn);border-color:var(--warn)}
.badge.libre{color:var(--muted)}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.btn{display:inline-block;background:var(--accent);color:#fff;border:none;
  padding:9px 14px;border-radius:9px;font-size:.88rem;cursor:pointer;font-weight:600}
.btn:hover{filter:brightness(1.1)} .btn.ghost{background:transparent;border:1px solid var(--border);color:var(--txt)}
.btn.sm{padding:6px 10px;font-size:.8rem}
.btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger)}
.center{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}
.box{background:var(--card);border:1px solid var(--border);border-radius:16px;
  padding:30px;max-width:380px;width:100%}
.box h2{margin:0 0 6px} .box .muted{color:var(--muted);font-size:.85rem;margin-bottom:18px}
label{display:block;font-size:.82rem;color:var(--muted);margin:12px 0 5px}
input[type=text],input[type=password]{width:100%;padding:11px 12px;border-radius:9px;
  border:1px solid var(--border);background:var(--bg2);color:var(--txt);font-size:.95rem}
input:focus{outline:none;border-color:var(--accent)}
.err{background:rgba(255,107,107,.12);border:1px solid var(--danger);color:#ffc9c9;
  padding:10px 12px;border-radius:9px;font-size:.85rem;margin-bottom:12px}
table{width:100%;border-collapse:collapse;margin-top:18px}
th,td{text-align:left;padding:10px;border-bottom:1px solid var(--border);font-size:.88rem}
th{color:var(--muted);font-weight:600}
.tag-ok{color:var(--accent2)} .tag-no{color:var(--muted)}
.hint{color:var(--muted);font-size:.8rem;margin-top:4px}
.theme-titre{margin:30px 0 4px;font-size:1.05rem;letter-spacing:.4px;
  color:var(--txt);padding-bottom:8px;border-bottom:1px solid var(--border)}
.theme-titre:first-of-type{margin-top:18px}
