:root{
  --text:#17171C;--text-2:#5B5B66;--text-3:#9B9BA6;--accent:#0071A9;--accent-2:#5E5CE6;
  --teal:#2AA7A0;--green:#1D9440;--red:#D70015;--orange:#C93400;
  --glass:rgba(255,255,255,0.66);--glass-strong:rgba(255,255,255,0.86);
  --glass-border:rgba(255,255,255,0.7);--glass-blur:blur(24px) saturate(1.45);
  --shadow:0 1px 2px rgba(30,30,60,0.05),0 6px 24px rgba(30,30,60,0.07);
  --shadow-h:0 2px 6px rgba(30,30,60,0.08),0 12px 38px rgba(30,30,60,0.13);
}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  color:var(--text);font-size:15px;line-height:1.45;min-height:100vh;background:#EEF1F7}
body::before{content:"";position:fixed;inset:0;z-index:-1;background:
  radial-gradient(52% 44% at 12% 8%,rgba(94,92,230,.13),transparent 70%),
  radial-gradient(46% 40% at 88% 12%,rgba(42,167,160,.17),transparent 70%),
  radial-gradient(58% 48% at 75% 92%,rgba(0,113,169,.11),transparent 70%),
  linear-gradient(180deg,#F2F4FB 0%,#E9EEF6 100%)}
a{color:var(--accent)}
.topbar{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:12px;padding:12px 28px;
  background:rgba(255,255,255,.5);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border-bottom:1px solid var(--glass-border)}
.tb-logo{width:30px;height:30px;object-fit:contain;filter:drop-shadow(0 2px 7px rgba(94,92,230,.3))}
.back{display:inline-flex;align-items:center;gap:7px;color:var(--accent);text-decoration:none;font-weight:600;
  font-size:14px;padding:7px 12px;border-radius:10px}
.back:hover{background:rgba(0,113,169,.08)}
.topbar h1{font-size:17px;font-weight:700;letter-spacing:-.3px}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:10px}
.avatar-mini{width:34px;height:34px;border-radius:50%;background:linear-gradient(135deg,#5856D6,#AF52DE);
  color:#fff;display:grid;place-items:center;font-size:12.5px;font-weight:700;text-decoration:none;
  border:2px solid rgba(255,255,255,.8)}
.wrap{max-width:960px;margin:0 auto;padding:22px 28px 80px}
.panel{background:var(--glass);backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);
  border:1px solid var(--glass-border);border-radius:18px;box-shadow:var(--shadow);padding:22px 24px;margin-bottom:16px}
.panel h2{font-size:16px;font-weight:700;margin-bottom:3px;display:flex;align-items:center;gap:9px}
.panel .hint{font-size:12.5px;color:var(--text-2);margin-bottom:14px}
.ic{width:26px;height:26px;border-radius:8px;display:grid;place-items:center;font-size:13px;color:#fff;flex-shrink:0}
.c-blue{background:linear-gradient(135deg,#0A84C1,#30B0C7)}
.c-purple{background:linear-gradient(135deg,#AF52DE,#BF5AF2)}
.c-teal{background:linear-gradient(135deg,#30B0C7,#34C759)}
.c-red{background:linear-gradient(135deg,#FF3B30,#FF6961)}
.c-gray{background:linear-gradient(135deg,#8E8E93,#AEAEB2)}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:620px){.grid{grid-template-columns:1fr}}
.full{grid-column:1/-1}
.fld label{font-size:12px;font-weight:600;color:var(--text-2);display:block;margin-bottom:4px}
.fld input,.fld select,.fld textarea{width:100%;padding:10px 12px;border:1px solid rgba(0,0,0,.13);border-radius:10px;
  font-family:inherit;font-size:14px;background:rgba(255,255,255,.9);outline:none}
.fld input:focus,.fld select:focus{box-shadow:0 0 0 3px rgba(0,113,169,.22);background:#fff}
.fld input:disabled{background:rgba(0,0,0,.04);color:var(--text-2)}
.btn{display:inline-flex;align-items:center;gap:7px;border:none;cursor:pointer;font-family:inherit;font-size:14px;
  font-weight:600;border-radius:11px;padding:10px 18px;text-decoration:none;transition:transform .1s,box-shadow .2s}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn-primary{background:linear-gradient(135deg,#0A84C1,#5E5CE6);color:#fff;box-shadow:0 4px 16px rgba(94,92,230,.3)}
.btn-outline{background:rgba(255,255,255,.85);color:var(--accent);border:1px solid rgba(0,113,169,.35)}
.btn-danger{background:rgba(215,0,21,.1);color:var(--red);border:1px solid rgba(215,0,21,.3)}
.btn-sm{font-size:13px;padding:7px 13px;border-radius:9px}
.alert{padding:11px 14px;border-radius:11px;font-size:13.5px;margin-bottom:14px;display:flex;gap:9px;align-items:flex-start}
.alert-ok{background:rgba(52,199,89,.14);border:1px solid rgba(52,199,89,.35);color:#1D7A33}
.alert-err{background:rgba(215,0,21,.1);border:1px solid rgba(215,0,21,.3);color:#B4160C}
.alert-info{background:rgba(0,113,169,.08);border:1px solid rgba(0,113,169,.22);color:var(--text-2)}
.alert-warn{background:rgba(255,149,0,.14);border:1px solid rgba(255,149,0,.3);color:#8A5200}
table.tbl{width:100%;border-collapse:collapse;font-size:13.5px}
table.tbl th,table.tbl td{border-bottom:1px solid rgba(0,0,0,.08);padding:9px 10px;text-align:left}
table.tbl th{font-size:12px;color:var(--text-2);text-transform:uppercase;letter-spacing:.03em}
.badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px}
.b-admin{background:rgba(94,92,230,.15);color:#4B49B8}
.b-ok{background:rgba(52,199,89,.16);color:#1D7A33}
.b-off{background:rgba(120,120,140,.16);color:#6E6E7A}

/* ---- Connexion ---- */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:24px}
.login{width:min(420px,100%);background:var(--glass-strong);backdrop-filter:var(--glass-blur);
  -webkit-backdrop-filter:var(--glass-blur);border:1px solid var(--glass-border);border-radius:22px;
  box-shadow:0 12px 50px rgba(30,30,60,.16);padding:34px 32px}
.login .brand{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:22px}
.login .brand img{width:66px;height:66px;object-fit:contain;filter:drop-shadow(0 5px 16px rgba(94,92,230,.35))}
.login .brand .t{font-size:19px;font-weight:700;letter-spacing:-.3px;text-align:center;line-height:1.2}
.login .brand .t span{color:var(--accent)}
.login .brand .s{font-size:12.5px;color:var(--text-2);text-align:center}
.login .fld{margin-bottom:12px}
.login .btn{width:100%;justify-content:center;margin-top:6px}
.login .links{margin-top:16px;text-align:center;font-size:13px}
.login .links a{color:var(--accent);text-decoration:none;font-weight:600}
.login .links a:hover{text-decoration:underline}
.login .foot{margin-top:20px;padding-top:14px;border-top:1px solid rgba(0,0,0,.07);
  font-size:11.5px;color:var(--text-3);text-align:center;line-height:1.5}
.code-input{letter-spacing:.35em;font-size:19px!important;font-weight:700;text-align:center;font-variant-numeric:tabular-nums}
