/* Portail de sécurité — thème assorti à l'état (marine + laiton) */
:root{
  --navy-950:#0a1c30; --navy-900:#0e2a47; --navy-800:#153a5e; --navy-700:#1e4d78;
  --brass-700:#8a6524; --brass-600:#a9803a; --brass-500:#c49a52; --brass-300:#e3c584; --brass-100:#f3e6c8;
  --cream-50:#faf8f2; --cream-100:#f2ede0; --cream-200:#e9e1cc;
  --ink-900:#221f1a; --ink-700:#4a453a; --ink-500:#7a7466;
  --line:#e4ddc9; --white:#fff;
  --ok:#3f7a4e; --ok-bg:#eaf3ec; --danger:#a13a3a; --danger-bg:#f9eaea; --warn:#b5622a; --warn-bg:#fbeee5;
  --radius:14px; --radius-sm:8px;
  --shadow:0 18px 50px -22px rgba(10,28,48,.45);
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Tajawal','Segoe UI',-apple-system,sans-serif;
  background:
    radial-gradient(1200px 600px at 50% -10%, rgba(196,154,82,.10), transparent 60%),
    linear-gradient(160deg,var(--navy-900),var(--navy-950) 75%);
  color:var(--ink-900);
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:24px;
}
.card{
  width:100%; max-width:440px; background:var(--white);
  border-radius:var(--radius); box-shadow:var(--shadow);
  border:1px solid var(--line); overflow:hidden;
}
.card.wide{max-width:960px}
.card-head{
  background:linear-gradient(160deg,var(--navy-800),var(--navy-950));
  color:var(--cream-50); padding:26px 30px; text-align:center; position:relative;
}
.card-head::after{content:"";position:absolute;left:0;right:0;bottom:0;height:4px;
  background:linear-gradient(90deg,var(--brass-700),var(--brass-300),var(--brass-700))}
.card-head h1{font-family:'Cairo','Tajawal',sans-serif;font-size:1.25rem;margin:0 0 4px}
.card-head p{margin:0;font-size:.85rem;color:var(--brass-300)}
.card-body{padding:28px 30px 32px}
label{display:block;font-weight:600;font-size:.85rem;color:var(--ink-700);margin:14px 0 6px}
input[type=text],input[type=email],input[type=password],input[type=tel],select{
  width:100%;padding:12px 13px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  font-size:1rem;font-family:inherit;background:var(--cream-50);transition:border .15s,box-shadow .15s;
}
input:focus,select:focus{outline:none;border-color:var(--brass-500);box-shadow:0 0 0 3px rgba(196,154,82,.20);background:#fff}
.code-input{letter-spacing:.5em;text-align:center;font-size:1.5rem;font-weight:700}
button,.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  width:100%;margin-top:20px;padding:13px 18px;border:0;border-radius:var(--radius-sm);
  background:linear-gradient(160deg,var(--navy-700),var(--navy-900));color:#fff;
  font-size:1rem;font-weight:700;font-family:inherit;cursor:pointer;transition:transform .08s,filter .15s;
}
button:hover,.btn:hover{filter:brightness(1.08)}
button:active{transform:translateY(1px)}
.btn-brass{background:linear-gradient(160deg,var(--brass-600),var(--brass-700))}
.btn-danger{background:linear-gradient(160deg,#b5484a,var(--danger))}
.btn-sm{width:auto;margin:0;padding:8px 14px;font-size:.85rem;font-weight:600}
.btn-ghost{background:transparent;color:var(--navy-700);border:1.5px solid var(--line)}
.alert{padding:12px 14px;border-radius:var(--radius-sm);font-size:.9rem;margin-bottom:6px;border:1px solid transparent}
.alert-error{background:var(--danger-bg);color:var(--danger);border-color:#e9c9c9}
.alert-ok{background:var(--ok-bg);color:var(--ok);border-color:#c9e2cf}
.alert-info{background:var(--brass-100);color:var(--brass-700);border-color:var(--brass-300)}
.alert-warn{background:var(--warn-bg);color:var(--warn);border-color:#eccdb6}
.muted{color:var(--ink-500);font-size:.82rem;line-height:1.6}
.center{text-align:center}
.mt{margin-top:16px}
a{color:var(--navy-700);font-weight:600}
hr{border:0;border-top:1px solid var(--line);margin:22px 0}

/* Enrôlement 2FA */
.qr-box{display:flex;flex-direction:column;align-items:center;gap:14px;margin:18px 0}
#qrcode{background:#fff;padding:12px;border:1px solid var(--line);border-radius:var(--radius-sm)}
.secret{font-family:'Courier New',monospace;font-weight:700;font-size:1.05rem;letter-spacing:.12em;
  background:var(--cream-100);border:1px dashed var(--brass-500);border-radius:var(--radius-sm);
  padding:10px 14px;word-break:break-all;text-align:center;color:var(--navy-900)}
.steps{counter-reset:s;list-style:none;padding:0;margin:8px 0 0}
.steps li{position:relative;padding:8px 0 8px 34px;font-size:.9rem;color:var(--ink-700);line-height:1.5}
.steps li::before{counter-increment:s;content:counter(s);position:absolute;left:0;top:6px;
  width:24px;height:24px;border-radius:50%;background:var(--brass-500);color:#fff;font-weight:700;
  display:flex;align-items:center;justify-content:center;font-size:.8rem}

/* Admin */
.admin-shell{align-items:flex-start;padding:0}
.admin-wrap{width:100%;max-width:1100px;margin:0 auto;padding:24px}
.topnav{display:flex;align-items:center;justify-content:space-between;gap:16px;
  background:var(--white);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 22px;box-shadow:var(--shadow);margin-bottom:22px}
.topnav h1{font-family:'Cairo',sans-serif;font-size:1.15rem;margin:0;color:var(--navy-900)}
.topnav .who{font-size:.82rem;color:var(--ink-500)}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:22px;overflow:hidden}
.panel-head{padding:16px 22px;border-bottom:1px solid var(--line);font-weight:700;color:var(--navy-900);
  font-family:'Cairo',sans-serif;background:var(--cream-50)}
.panel-body{padding:20px 22px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line)}
th{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-500);background:var(--cream-50)}
tr:hover td{background:var(--cream-50)}
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:.72rem;font-weight:700}
.badge-admin{background:var(--navy-800);color:#fff}
.badge-user{background:var(--brass-100);color:var(--brass-700)}
.badge-ok{background:var(--ok-bg);color:var(--ok)}
.badge-off{background:var(--danger-bg);color:var(--danger)}
.badge-wait{background:var(--warn-bg);color:var(--warn)}
.badge-edit{background:#e7f0e9;color:#2f6b40;border:1px solid #bcd9c4}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.actions{display:flex;gap:8px;flex-wrap:wrap}
.inline-form{display:inline}
@media(max-width:640px){.grid2{grid-template-columns:1fr}table{font-size:.8rem}th,td{padding:8px 6px}}
.temp-pass{font-family:'Courier New',monospace;font-weight:700;background:var(--cream-100);
  padding:2px 8px;border-radius:6px;border:1px dashed var(--brass-500)}

/* Portail documents */
.doc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:18px}
.doc-card{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;text-decoration:none;color:var(--ink-900);
  transition:transform .1s,box-shadow .15s,border-color .15s}
.doc-card:hover{transform:translateY(-3px);border-color:var(--brass-500);box-shadow:0 22px 55px -24px rgba(10,28,48,.5)}
.doc-icon{font-size:2rem}
.doc-title{font-family:'Cairo',sans-serif;font-weight:700;color:var(--navy-900);font-size:1.05rem;line-height:1.4}
.doc-open{color:var(--brass-700);font-weight:700;font-size:.85rem;margin-top:auto}
/* cases d'accès aux documents (admin) */
.doc-checks{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:8px}
.doc-check{display:flex;align-items:center;gap:8px;background:var(--cream-50);border:1px solid var(--line);
  border-radius:var(--radius-sm);padding:9px 12px;font-size:.9rem}
.doc-check input{width:auto}
