/* ============================================================
   Auth funnel — standalone stylesheet (login, signup, MFA,
   magic link, password reset, invitations, email verification).
   Thème navy/teal naoshift — ne dépend pas de Bootstrap.
   ============================================================ */

*{margin:0;padding:0;box-sizing:border-box}
/* Utilitaire masqué (gabarits partagés avec les pages Bootstrap : zone SSO). */
.d-none{display:none!important}
:root{
  --teal:#2FA9C6;--teal-l:#4cc3de;
  --navy:#0a1220;--navy2:#0e1728;--panel:#101b2e;
  --line:rgba(148,163,184,.14);
  --txt:#e6edf5;--mut:#8ba3bd;--dim:#5c7391;
  --ok:#4ade80;--warn:#fbbf24;--err:#f87171;
}
html,body{min-height:100vh}
body{font-family:'Poppins',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--navy);color:var(--txt);-webkit-font-smoothing:antialiased;display:flex}
a{color:var(--teal);text-decoration:none;font-weight:600}
a:hover{color:var(--teal-l)}

/* ================= LEFT — BRAND PANEL (50%) ================= */
.brand{width:50%;position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:48px 5%;background:
  radial-gradient(900px 600px at 30% 20%,rgba(47,169,198,.16) 0%,transparent 55%),
  radial-gradient(700px 500px at 80% 90%,rgba(31,134,165,.12) 0%,transparent 55%),
  linear-gradient(rgba(148,163,184,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.045) 1px,transparent 1px),
  var(--navy2);
  background-size:auto,auto,44px 44px,44px 44px;border-right:1px solid var(--line)}
.brand::before{content:'';position:absolute;width:520px;height:520px;border:1px solid rgba(47,169,198,.14);border-radius:50%;top:-160px;left:-140px}
.brand::after{content:'';position:absolute;width:340px;height:340px;border:1px solid rgba(47,169,198,.1);border-radius:50%;bottom:-120px;right:-100px}
.brand-logo{width:118px;height:auto;object-fit:contain;margin-bottom:14px;filter:drop-shadow(0 10px 34px rgba(47,169,198,.28))}
.brand h2{font-size:26px;font-weight:700;letter-spacing:-.01em;line-height:1.3;max-width:460px}
.brand h2 .hl{color:var(--teal-l)}
.brand-in{max-width:540px;width:100%;text-align:left;position:relative;z-index:1}
.brand p.para{color:var(--mut);font-size:14px;margin:12px 0 0;line-height:1.7}
.brand p.para b{color:var(--txt);font-weight:600}

/* --- graphic mockup stack --- */
.mock{position:relative;max-width:520px;width:100%;text-align:left}
.mcard{background:rgba(16,27,46,.9);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 60px rgba(0,0,0,.45)}
.m1{padding:16px 18px;transform:rotate(-.6deg);animation:authfloat 8s ease-in-out infinite}
.m2{padding:12px 16px;margin:10px 0 0 30px;transform:rotate(.5deg);animation:authfloat 8s ease-in-out 1s infinite}
@keyframes authfloat{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-7px) rotate(-.6deg)}}
.mt{font-size:10.5px;font-weight:700;letter-spacing:.07em;color:var(--dim);margin-bottom:12px;text-transform:uppercase}
.mrow{display:flex;align-items:center;gap:10px;font-size:12px;padding:5px 0;color:var(--mut)}
.mrow b{margin-left:auto;color:var(--txt)}
.mdot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.mono{font-family:'SF Mono',Consolas,monospace;font-size:11px;color:var(--txt)}
.mbar{flex:1;height:6px;border-radius:3px;background:rgba(148,163,184,.15);overflow:hidden}
.mbar i{display:block;height:100%;border-radius:3px}
.tag{font-size:10px;font-weight:700;border-radius:6px;padding:2px 8px;white-space:nowrap}
.tag-r{background:rgba(220,38,38,.16);color:#f87171}
.tag-a{background:rgba(245,158,11,.16);color:#fbbf24}
.tag-g{background:rgba(22,163,74,.18);color:#4ade80}
.brand-foot{display:flex;gap:12px;align-items:center;justify-content:flex-start;margin-top:20px;flex-wrap:wrap;font-size:11.5px;color:var(--dim)}
.bb{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);border-radius:8px;padding:5px 11px}
.flag-fr{width:15px;height:10px;border-radius:2px;background:linear-gradient(90deg,#0055A4 33%,#fff 33% 66%,#EF4135 66%);display:inline-block}

/* ================= RIGHT — AUTH (50%) ================= */
.auth{width:50%;min-height:100vh;display:flex;flex-direction:column;padding:36px 6%;position:relative;z-index:2;background:linear-gradient(rgba(148,163,184,.03) 1px,transparent 1px),linear-gradient(90deg,rgba(148,163,184,.03) 1px,transparent 1px),var(--navy);background-size:40px 40px}
.auth-top{display:flex;justify-content:space-between;align-items:center;font-size:13px;color:var(--dim)}
.lang{display:flex;align-items:center;gap:5px}
.lang button{background:none;border:none;cursor:pointer;font-family:inherit;font-size:13px;color:var(--dim);padding:0}
.lang button:hover{color:var(--txt)}
.lang button.active{color:var(--txt);font-weight:700;cursor:default}
.auth-mid{flex:1;display:flex;flex-direction:column;justify-content:center;max-width:360px;margin:0 auto;width:100%;padding:24px 0}
.auth-wide .auth-mid{max-width:460px}
.auth h1{font-size:25px;font-weight:700;letter-spacing:-.01em;text-align:center}
.sub{color:var(--mut);font-size:14px;text-align:center;margin:8px 0 28px}

/* --- buttons --- */
.btn{display:flex;align-items:center;justify-content:center;gap:10px;border-radius:10px;padding:12px 16px;font-size:14px;font-weight:600;cursor:pointer;transition:.15s;border:1px solid var(--line);background:var(--panel);color:var(--txt);font-family:inherit;width:100%;text-align:center}
.btn:hover{border-color:rgba(148,163,184,.35);transform:translateY(-1px);color:var(--txt)}
.btn-primary{background:linear-gradient(135deg,var(--teal),#1f86a5);border:none;color:#04121f;font-weight:700;box-shadow:0 4px 18px rgba(47,169,198,.3)}
.btn-primary:hover{filter:brightness(1.1);color:#04121f}
.btn svg{flex-shrink:0}
.btn-sm{width:auto;display:inline-flex;padding:8px 14px;font-size:13px}

.divider{display:flex;align-items:center;gap:14px;margin:20px 0;color:var(--dim);font-size:12.5px}
.divider::before,.divider::after{content:'';flex:1;height:1px;background:var(--line)}

/* --- form fields --- */
.field{margin-bottom:12px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--mut);margin-bottom:6px}
.field-row{display:flex;gap:10px}
.field-row .field{flex:1}
.inp{position:relative}
.inp input,.inp select{width:100%;background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:12px 14px;color:var(--txt);font-size:14.5px;font-family:inherit;transition:.15s}
.inp input::placeholder{color:var(--dim)}
.inp input:focus,.inp select:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(47,169,198,.18)}
.inp input:-webkit-autofill{-webkit-box-shadow:0 0 0 100px var(--panel) inset;-webkit-text-fill-color:var(--txt);caret-color:var(--txt)}
.inp .eye{position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--dim);cursor:pointer;background:none;border:none;padding:0;display:flex}
.inp .eye:hover{color:var(--txt)}
.field .hint{font-size:12px;color:var(--dim);margin-top:5px;line-height:1.5}
.field .errors,.form-errors{font-size:12.5px;color:var(--err);margin-top:5px;line-height:1.5}
.form-errors{background:rgba(220,38,38,.1);border:1px solid rgba(220,38,38,.3);border-radius:10px;padding:10px 12px;margin-bottom:14px}
.form-errors ul{list-style:none}
.field .errors ul{list-style:none}
.row-between{display:flex;justify-content:space-between;align-items:center;font-size:13px;margin:4px 0 16px}

.magic{text-align:center;margin-top:16px;font-size:13.5px}
.signup{text-align:center;font-size:13.5px;color:var(--mut);margin-top:24px;border-top:1px solid var(--line);padding-top:20px}
.backlink{text-align:center;margin-top:18px;font-size:13.5px}
.backlink a{color:var(--dim);font-weight:500}
.backlink a:hover{color:var(--txt)}
.auth-foot{display:flex;justify-content:center;gap:14px;font-size:12px;color:var(--dim);flex-wrap:wrap}
.auth-foot span{display:flex;align-items:center;gap:5px}
.auth-foot svg{color:var(--teal)}
.auth-foot a{color:var(--dim);font-weight:500}

/* --- alerts (Django messages + maintenance) --- */
.alert{display:flex;gap:10px;align-items:flex-start;border-radius:10px;padding:11px 14px;font-size:13.5px;line-height:1.5;margin-bottom:14px;border:1px solid}
.alert svg{flex-shrink:0;margin-top:1px}
.alert-success{background:rgba(22,163,74,.12);border-color:rgba(22,163,74,.35);color:#86efac}
.alert-error,.alert-danger{background:rgba(220,38,38,.12);border-color:rgba(220,38,38,.35);color:#fca5a5}
.alert-warning{background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.35);color:#fcd34d}
.alert-info{background:rgba(47,169,198,.12);border-color:rgba(47,169,198,.35);color:#7dd3e8}

/* --- status pages (success / error / sent) --- */
.status-ico{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 18px}
.status-ico.ok{background:rgba(22,163,74,.14);color:var(--ok);border:1px solid rgba(22,163,74,.35)}
.status-ico.ko{background:rgba(220,38,38,.14);color:var(--err);border:1px solid rgba(220,38,38,.35)}
.status-ico.mail{background:rgba(47,169,198,.14);color:var(--teal-l);border:1px solid rgba(47,169,198,.35)}
.status-txt{text-align:center;color:var(--mut);font-size:14px;line-height:1.7;margin-bottom:20px}
.status-txt b{color:var(--txt)}

/* --- MFA digit inputs --- */
.digits{display:flex;justify-content:center;gap:8px;margin:6px 0 14px}
.digit-input{width:40px;height:52px;text-align:center;font-size:1.35rem;font-weight:700;padding:0;background:var(--panel);border:1px solid var(--line);border-radius:10px;color:var(--txt);font-family:inherit;transition:.15s}
.digit-input:focus{outline:none;border-color:var(--teal);box-shadow:0 0 0 3px rgba(47,169,198,.18)}

/* --- info card (invitation summary, etc.) --- */
.auth-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px;font-size:13.5px}
.auth-card .krow{display:flex;justify-content:space-between;gap:12px;padding:4px 0;color:var(--mut)}
.auth-card .krow b{color:var(--txt);font-weight:600;text-align:right}

/* --- signup brand panel (register, register_done, register_complete) --- */
.eyebrow{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--teal-l);margin-bottom:10px}
.signup-brand .brand-logo{width:92px;margin-bottom:10px}
.signup-brand h2{font-size:28px}
.steps-title{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);margin:26px 0 10px}
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.step{background:rgba(16,27,46,.9);border:1px solid var(--line);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:6px;font-size:12.5px;color:var(--mut);line-height:1.5}
.step b{color:var(--txt);font-size:13.5px;font-weight:600}
.step .num{width:24px;height:24px;border-radius:50%;background:var(--teal);color:#04121f;font-weight:700;font-size:12px;display:flex;align-items:center;justify-content:center}
.scope{display:flex;gap:10px;align-items:flex-start;background:rgba(47,169,198,.1);border:1px solid rgba(47,169,198,.3);border-radius:12px;padding:12px 14px;font-size:12.5px;line-height:1.55;color:var(--mut);margin-top:18px}
.scope svg{flex-shrink:0;color:var(--teal-l);margin-top:2px}
.scope b{color:var(--txt);display:block;margin-bottom:2px}
.brand-foot a.bb{color:var(--mut);font-weight:500}
.brand-foot a.bb:hover{color:var(--txt)}
.signup-intro{display:none}
.signup-scope-mobile{display:none}
.hint.center{text-align:center;margin-top:12px;font-size:12px;color:var(--dim);line-height:1.5}

@media(max-width:980px){
  .brand{display:none}
  .auth{width:100%}
  .signup-intro{display:block;text-align:center;margin-bottom:8px}
  .signup-intro p{color:var(--mut);font-size:13.5px;line-height:1.6}
  .signup-scope-mobile{display:block;margin-top:18px}
}

/* Écrans peu hauts : compacter le panneau brand pour éviter la coupe
   (le panneau est en overflow:hidden, sans scroll) */
@media(max-height:960px){
  .brand{padding:32px 5%}
  .brand-logo{width:92px;margin-bottom:8px}
  .brand h2{font-size:23px}
  .brand p.para{margin:10px 0 0}
  .m1{padding:12px 16px}
  .m2 svg{display:none}
  .brand-foot{margin-top:14px}
  .signup-brand .steps{gap:8px}
  .signup-brand .step{padding:10px}
  .signup-brand .scope{margin-top:12px}
}
