:root {
  --fond: #f4f5f7; --carte: #fff; --texte: #1c2230; --doux: #5b6577;
  --accent: #1f5fd6; --accent-fonce: #1649a8; --erreur: #b3261e; --ok: #1b7a3e; --bord: #d8dce4;
}
@media (prefers-color-scheme: dark) {
  :root { --fond: #12161f; --carte: #1b212e; --texte: #eef1f6; --doux: #a3adbf;
    --accent: #5b92f5; --accent-fonce: #82aaf8; --erreur: #ff8a80; --ok: #6fd18f; --bord: #2f384a; }
}
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: var(--fond); color: var(--texte);
  font: 17px/1.5 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  display: flex; align-items: center; justify-content: center; padding: 16px; }
main { width: 100%; max-width: 420px; background: var(--carte); border: 1px solid var(--bord);
  border-radius: 16px; padding: 28px 22px; }
h1 { font-size: 1.5rem; margin: 0 0 6px; }
p { margin: 0 0 18px; color: var(--doux); }
label { display: block; font-weight: 600; margin-bottom: 6px; }
input { width: 100%; font: inherit; padding: 14px; border-radius: 10px; border: 1px solid var(--bord);
  background: var(--fond); color: var(--texte); margin-bottom: 14px; }
input:focus { outline: 3px solid var(--accent); outline-offset: 1px; }
input.code { font-size: 1.8rem; letter-spacing: .5em; text-align: center; }
button { width: 100%; font: inherit; font-weight: 600; padding: 14px; border: 0; border-radius: 10px;
  background: var(--accent); color: #fff; cursor: pointer; }
button:disabled { opacity: .6; cursor: wait; }
button.lien { background: none; color: var(--accent-fonce); font-weight: 500; margin-top: 8px; padding: 10px; }
.message { min-height: 1.4em; margin: 0 0 12px; font-size: .95rem; }
.message.erreur { color: var(--erreur); }
.message.ok { color: var(--ok); }
[hidden] { display: none !important; }
