:root{
  --bg:#0f1115; --carte:#1a1d24; --bord:#2a2e37; --txt:#e7e9ee; --doux:#9aa0ad;
  --accent:#4c8bf5; --ok:#2ecc71; --ko:#e74c3c; --warn:#f39c12;
}
*{box-sizing:border-box}
body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--txt);line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}

/* Barre de navigation */
.barre{display:flex;align-items:center;gap:1.5rem;padding:.8rem 1.2rem;background:var(--carte);border-bottom:1px solid var(--bord)}
.marque{font-weight:700;font-size:1.1rem;color:var(--txt)}
.barre nav{display:flex;gap:1rem}
.barre-droite{margin-left:auto;color:var(--doux);font-size:.9rem}
.contenu{max-width:1000px;margin:1.5rem auto;padding:0 1.2rem}
.pied{max-width:1000px;margin:2rem auto;padding:1rem 1.2rem;color:var(--doux);font-size:.85rem;border-top:1px solid var(--bord)}

/* Pages nues (login/install) */
body.nu{display:flex;min-height:100vh;align-items:center;justify-content:center}
.centre{width:100%;max-width:460px;padding:1.2rem}
.carte{background:var(--carte);border:1px solid var(--bord);border-radius:12px;padding:1.5rem}

h1{font-size:1.5rem;margin:.2rem 0 1rem}
h2{font-size:1.15rem;margin:1.4rem 0 .6rem}
h3{font-size:1rem;margin:1.2rem 0 .5rem}
.note{color:var(--doux);font-size:.9rem}
code{background:#000;padding:.1rem .35rem;border-radius:4px;font-size:.85em}

/* Formulaires */
label{display:block;margin:.7rem 0}
input,select,textarea{width:100%;padding:.55rem .6rem;background:#0d0f13;border:1px solid var(--bord);border-radius:8px;color:var(--txt);font-size:1rem}
.btn{display:inline-block;margin-top:1rem;padding:.6rem 1.1rem;background:var(--accent);color:#fff;border:0;border-radius:8px;font-size:1rem;cursor:pointer}
.btn:hover{filter:brightness(1.08);text-decoration:none}
.btn-danger{background:var(--ko)}
.btn-ok{background:var(--ok)}
.btn-fantome{background:transparent;border:1px solid var(--bord);color:var(--txt)}

/* Tableau clients */
table{width:100%;border-collapse:collapse;margin-top:1rem}
th,td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--bord);font-size:.92rem}
th{color:var(--doux);font-weight:600}
tr:hover td{background:rgba(255,255,255,.02)}

/* Pastilles de statut */
.pastille{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600}
.pastille.active{background:rgba(46,204,113,.15);color:var(--ok)}
.pastille.suspendu{background:rgba(231,76,60,.15);color:var(--ko)}

/* Flash */
.flash{padding:.7rem .9rem;border-radius:8px;margin-bottom:1rem;font-size:.92rem}
.flash.info{background:rgba(76,139,245,.12);color:var(--accent)}
.flash.succes{background:rgba(46,204,113,.12);color:var(--ok)}
.flash.erreur{background:rgba(231,76,60,.12);color:var(--ko)}
.ok{color:var(--ok)} .ko{color:var(--ko)}

/* Interrupteurs de modules */
.modules-grille{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:.6rem;margin-top:.8rem}
.module-ligne{display:flex;align-items:center;gap:.6rem;padding:.5rem .7rem;background:#0d0f13;border:1px solid var(--bord);border-radius:8px}
.module-ligne input{width:auto}
