:root{
  --blue:#2F7EEC; --blue-dark:#1E62C6; --sky:#9BC1F3; --pale:#EAF2FD; --mist:#F5F9FF;
  --ink:#0A0C10; --muted:#5C6879; --line:#D9E5F7; --white:#fff;
  --ok:#1C8C5A; --okbg:#E6F6EE; --err:#C0392B; --errbg:#FCEBE9;
  --radius:14px;
  --font:'Outfit',system-ui,-apple-system,'Segoe UI',Roboto,sans-serif;
  --serif:'Fraunces',Georgia,'Times New Roman',serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font:400 16px/1.55 var(--font);color:var(--ink);background:linear-gradient(180deg,var(--mist),var(--white) 280px) no-repeat,var(--white);min-height:100vh;display:flex;flex-direction:column}
a{color:var(--blue-dark)}
h1{font-size:1.5rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;margin:0 0 1.4rem}
h2{font-size:1.05rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;margin:0 0 1rem}
code{background:var(--pale);padding:.1em .4em;border-radius:6px;font-size:.88em;word-break:break-all}

/* Barre du haut */
.topbar{background:var(--white);border-bottom:3px solid var(--blue);position:sticky;top:0;z-index:5}
.topbar-in{max-width:1120px;margin:auto;padding:.6rem 1.2rem;display:flex;align-items:center;gap:1.4rem;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;color:var(--ink)}
.brand img{width:40px;height:40px}
.brand span{font-weight:700;letter-spacing:.2em;line-height:1.1;font-size:.95rem}
.brand small{display:block;font-weight:500;letter-spacing:.3em;color:var(--blue);font-size:.62rem}
nav{display:flex;gap:.3rem;flex:1;flex-wrap:wrap}
nav a{padding:.45rem .85rem;border-radius:999px;text-decoration:none;color:var(--ink);font-weight:500;font-size:.92rem}
nav a:hover{background:var(--pale)}
nav a.on{background:var(--blue);color:#fff}
.logout{display:flex;align-items:center;gap:.8rem;margin:0}
.who{color:var(--muted);font-size:.9rem}

.wrap{max-width:1120px;width:100%;margin:2rem auto;padding:0 1.2rem;flex:1}
.foot{text-align:center;padding:1.6rem;color:var(--muted);font-family:var(--serif)}

/* Cartes */
.card{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:1.4rem;box-shadow:0 6px 24px rgba(47,126,236,.07);margin-bottom:1.4rem}
.grid{display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}
.stats{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));margin-bottom:1.4rem}
.stat{background:var(--pale);border-radius:var(--radius);padding:1.1rem 1.3rem;border-left:5px solid var(--blue)}
.stat b{display:block;font-size:2rem;line-height:1.1}
.stat span{color:var(--muted);font-size:.88rem}
.tile{display:flex;flex-direction:column;gap:.4rem;background:var(--white);border:1px solid var(--line);border-top:4px solid var(--blue);border-radius:var(--radius);padding:1.2rem;text-decoration:none;color:var(--ink);transition:.15s}
.tile:hover{transform:translateY(-3px);box-shadow:0 10px 26px rgba(47,126,236,.18);background:var(--mist)}
.tile strong{font-size:1.05rem}
.tile p{margin:0;color:var(--muted);font-size:.9rem}

/* Formulaires */
label{display:block;font-weight:500;font-size:.88rem;margin:0 0 .3rem}
input[type=text],input[type=password],input[type=email],input[type=url],select,textarea{width:100%;padding:.65rem .8rem;border:1.5px solid var(--line);border-radius:10px;font:inherit;background:#fff;color:var(--ink)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(47,126,236,.16)}
textarea{min-height:110px;font-family:ui-monospace,Menlo,monospace;font-size:.85rem}
.field{margin-bottom:1rem}
.row{display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.hint{color:var(--muted);font-size:.82rem;margin-top:.25rem}
.check{display:flex;align-items:center;gap:.5rem;font-weight:500;margin-bottom:.6rem}
.check input{width:18px;height:18px;accent-color:var(--blue)}
.checks{max-height:200px;overflow:auto;border:1.5px solid var(--line);border-radius:10px;padding:.7rem .9rem}
fieldset{border:1.5px dashed var(--sky);border-radius:var(--radius);padding:1rem 1.2rem;margin:0 0 1rem}
legend{padding:0 .5rem;font-weight:600;color:var(--blue-dark);letter-spacing:.06em;text-transform:uppercase;font-size:.8rem}

/* Boutons */
.btn{display:inline-block;border:0;border-radius:999px;padding:.65rem 1.4rem;font:600 .95rem var(--font);background:var(--blue);color:#fff;cursor:pointer;text-decoration:none;transition:.15s}
.btn:hover{background:var(--blue-dark)}
.btn.ghost{background:transparent;color:var(--blue-dark);border:1.5px solid var(--sky)}
.btn.ghost:hover{background:var(--pale)}
.btn.danger{background:var(--err)}
.btn.sm{padding:.35rem .9rem;font-size:.82rem}
.btn.block{width:100%}
.actions{display:flex;gap:.4rem;flex-wrap:wrap;align-items:center}
.actions form{margin:0}

/* Tableaux */
.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.93rem}
th{text-align:left;font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);padding:.6rem .7rem;border-bottom:2px solid var(--sky)}
td{padding:.7rem;border-bottom:1px solid var(--line);vertical-align:top}
tr:hover td{background:var(--mist)}
details summary{cursor:pointer;color:var(--blue-dark);font-weight:500;font-size:.85rem}
details[open]{padding:.6rem 0}

.badge{display:inline-block;padding:.12rem .6rem;border-radius:999px;font-size:.72rem;font-weight:600;letter-spacing:.05em;background:var(--pale);color:var(--blue-dark)}
.badge.ok{background:var(--okbg);color:var(--ok)}
.badge.off{background:#EEF0F3;color:#6B7280}
.badge.cas{background:var(--sky);color:#0B2A57}
.badge.saml{background:var(--blue);color:#fff}

.flash{padding:.8rem 1rem;border-radius:10px;margin-bottom:1rem;font-weight:500}
.flash.ok{background:var(--okbg);color:var(--ok)}
.flash.err{background:var(--errbg);color:var(--err)}

/* Page de connexion */
body.auth{align-items:center;justify-content:center;padding:1.5rem;background:radial-gradient(circle at 20% 10%,var(--sky) 0,transparent 38%),radial-gradient(circle at 90% 90%,var(--pale) 0,transparent 45%),var(--white)}
.auth-card{width:100%;max-width:420px;background:var(--white);border:1px solid var(--line);border-top:5px solid var(--blue);border-radius:18px;padding:1.6rem 2rem 2rem;box-shadow:0 18px 50px rgba(47,126,236,.18)}
.auth-logo{display:block;width:100%;max-width:300px;margin:0 auto 1rem}
.auth-card h1{text-align:center;font-size:1.05rem;margin-bottom:1.2rem}
.kv{display:grid;grid-template-columns:minmax(150px,220px) 1fr;gap:.5rem 1rem;font-size:.92rem}
.kv dt{font-weight:600;color:var(--muted)} .kv dd{margin:0}
@media(max-width:700px){.kv{grid-template-columns:1fr}.who{display:none}}
