/* ════════════════════════════════════════════════════════════
   NML Auth — Base (shared tokens + primitives)
   Loaded on all auth pages BEFORE the page-specific css.
   Design system: NML Visual System v2.
════════════════════════════════════════════════════════════ */

:root{
  /* Brand */
  --nml-blue:#2F6BFF;
  --nml-blue-600:#1D4ED8;
  --nml-blue-700:#1E40AF;
  --nml-green:#22C55E;     /* used by JS (pwd strength) */
  --green:#22C55E;         /* JS alias */
  --gold:#F59E0B;          /* JS alias (pwd medium) */
  --red:#EF4444;

  /* Neutral */
  --t-primary:#0F172A;
  --t-secondary:#475569;
  --t-muted:#94A3B8;
  --bg-white:#FFFFFF;
  --bg-surface:#F8FAFC;
  --border:#E2E8F0;

  /* Geometry */
  --radius:16px;
  --radius-sm:12px;
  --radius-pill:999px;
  --field-h:50px;

  /* Elevation */
  --shadow-sm:0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.06);
  --shadow-md:0 4px 6px rgba(15,23,42,.04), 0 10px 24px rgba(15,23,42,.06);
  --shadow-lg:0 16px 40px rgba(15,23,42,.12), 0 2px 8px rgba(15,23,42,.06);

  /* Motion */
  --ease:cubic-bezier(.16,1,.3,1);
}

*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{
  font-family:'Plus Jakarta Sans',system-ui,-apple-system,'Segoe UI',sans-serif;
  color:var(--t-primary);
  background:linear-gradient(180deg,#FBFCFE,#EEF3FA);
  line-height:1.5;
  min-height:100vh;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
a{color:var(--nml-blue);text-decoration:none;transition:color .15s var(--ease)}
a:hover{color:var(--nml-blue-600)}
img{max-width:100%;display:block}

/* ── Calm background: soft blue glow + faint dot-grid. No motion. ── */
/* ── About-demo background: light gradient + soft blurred orbs ── */
.bg{position:fixed;inset:0;z-index:0;overflow:hidden;background:transparent;pointer-events:none}
.orb{position:absolute;border-radius:50%;filter:blur(80px)}
.o1{width:640px;height:640px;background:radial-gradient(circle,rgba(47,107,255,.40),transparent 65%);top:-160px;right:-120px}
.o2{width:560px;height:560px;background:radial-gradient(circle,rgba(34,197,94,.30),transparent 65%);bottom:-180px;left:-120px}
.o3{width:440px;height:440px;background:radial-gradient(circle,rgba(124,92,255,.22),transparent 65%);top:42%;left:44%}
/* Kill legacy noisy nodes if any template still has them */
.bg-mesh,.bg-grid,.bg-noise,.bg-words,.bg-word{display:none!important}

/* ── Brand mark ── */
.logo,.logo-row{display:flex;align-items:center;gap:12px}
.logo-icon{
  width:42px;height:42px;border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(47,107,255,.10);border:1px solid rgba(47,107,255,.18);
  color:var(--nml-blue);flex-shrink:0;
}
.logo-icon svg path,.logo-icon svg rect{stroke:var(--nml-blue);fill:none}
.logo-icon svg rect[height="2.5"],.logo-icon svg rect[width="24"]{fill:var(--nml-blue);stroke:none}
.logo-name{font-size:15px;font-weight:700;color:var(--t-primary);letter-spacing:-.01em}
.logo-sub{font-size:12px;font-weight:500;color:var(--t-muted)}
.logo-img{height:38px;width:auto;display:block}

/* ── Form heading ── */
.form-hd{margin-bottom:22px}
.form-title{font-size:28px;font-weight:700;letter-spacing:-.02em;color:var(--t-primary)}
.form-reg,.form-login{font-size:14px;color:var(--t-secondary);margin-top:6px}
.form-reg a,.form-login a{font-weight:600}

/* ── Social button ── */
.socials{margin-bottom:18px}
.btn-soc{
  width:100%;height:var(--field-h);
  display:flex;align-items:center;justify-content:center;gap:10px;
  background:var(--bg-white);color:var(--t-primary);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  font-family:inherit;font-size:14.5px;font-weight:600;cursor:pointer;
  transition:background .15s var(--ease),border-color .15s var(--ease),box-shadow .15s var(--ease),transform .15s var(--ease);
}
.btn-soc:hover{background:var(--bg-surface);border-color:#CBD5E1;box-shadow:var(--shadow-sm);transform:translateY(-1px)}
.btn-soc:active{transform:translateY(0)}

/* ── Divider ── */
.divider{display:flex;align-items:center;gap:14px;margin:18px 0}
.div-line{flex:1;height:1px;background:var(--border)}
.div-txt{font-size:12px;font-weight:500;color:var(--t-muted);white-space:nowrap}

/* ── Fields ── */
.fields{display:flex;flex-direction:column;gap:16px}
.fields-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.field{display:flex;flex-direction:column;gap:7px}
.field-label{font-size:13px;font-weight:600;color:var(--t-secondary)}
.field-wrap{position:relative;display:flex;align-items:center}
.field-input{
  width:100%;height:var(--field-h);
  padding:0 16px;
  background:var(--bg-white);
  border:1px solid var(--border);border-radius:var(--radius-sm);
  font-family:inherit;font-size:16px;color:var(--t-primary);
  transition:border-color .15s var(--ease),box-shadow .15s var(--ease),background .15s var(--ease);
}
.field-wrap .field-input{padding-right:46px}
.field-input::placeholder{color:var(--t-muted)}
.field-input:focus{
  outline:none;border-color:var(--nml-blue);background:var(--bg-white);
  box-shadow:0 0 0 4px rgba(47,107,255,.12);
}
.field-input.error{border-color:var(--red);box-shadow:0 0 0 4px rgba(239,68,68,.12)}

.pwd-toggle{
  position:absolute;right:8px;top:50%;transform:translateY(-50%);
  width:40px;height:40px;display:flex;align-items:center;justify-content:center;
  background:none;border:none;cursor:pointer;color:var(--t-muted);border-radius:8px;
  transition:color .15s var(--ease),background .15s var(--ease);
}
.pwd-toggle:hover{color:var(--t-secondary);background:var(--bg-surface)}

/* ── Password strength (register) ── */
.pwd-strength{margin-top:10px}
.pwd-bars{display:flex;gap:6px;margin-bottom:6px}
.pwd-bar{flex:1;height:4px;border-radius:var(--radius-pill);background:var(--border);transition:background .25s var(--ease)}
.pwd-bar.weak{background:var(--red)}
.pwd-bar.medium{background:var(--gold)}
.pwd-bar.strong{background:var(--nml-green)}
.pwd-hint{font-size:12px;font-weight:500;color:var(--t-muted)}

/* ── Remember / forgot row ── */
.form-row{display:flex;align-items:center;justify-content:space-between;margin:18px 0;gap:12px}
.remember{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13.5px;color:var(--t-secondary)}
.remember input,.terms-row input{
  width:17px;height:17px;accent-color:var(--nml-blue);cursor:pointer;flex-shrink:0;
}
.forgot{font-size:13.5px;font-weight:600}

/* ── Terms (register) ── */
.terms-row{display:flex;align-items:flex-start;gap:10px;margin:18px 0}
.terms-txt{font-size:13px;color:var(--t-secondary);line-height:1.55}
.terms-txt a{font-weight:600}

/* ── Submit button ── */
.btn-submit{
  position:relative;width:100%;height:52px;
  display:flex;align-items:center;justify-content:center;
  background:var(--nml-blue);color:#fff;
  border:none;border-radius:var(--radius-sm);
  font-family:inherit;font-size:15.5px;font-weight:600;letter-spacing:-.01em;cursor:pointer;
  box-shadow:0 6px 16px rgba(47,107,255,.28);
  transition:background .15s var(--ease),box-shadow .15s var(--ease),transform .15s var(--ease);
}
.btn-submit:hover{background:var(--nml-blue-600);box-shadow:0 8px 22px rgba(47,107,255,.34);transform:translateY(-1px)}
.btn-submit:active{transform:translateY(0)}
.btn-submit.loading{pointer-events:none;background:var(--nml-blue-600)}
.btn-submit.loading .btn-txt{opacity:0}
.btn-submit .spinner{
  display:none;position:absolute;width:20px;height:20px;border-radius:50%;
  border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;
  animation:nml-spin .7s linear infinite;
}
.btn-submit.loading .spinner{display:block}
@keyframes nml-spin{to{transform:rotate(360deg)}}

/* ── Error / message ── */
.error-msg,.msg{
  display:none;
  font-size:13.5px;font-weight:500;line-height:1.5;
  padding:11px 14px;border-radius:var(--radius-sm);margin-bottom:16px;
  background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.22);color:#B91C1C;
}
.error-msg.show,.msg.show{display:block;animation:nml-fade .25s var(--ease)}

/* ── Fine print ── */
.form-note{font-size:12.5px;color:var(--t-muted);line-height:1.6;margin-top:18px;text-align:center}
.form-note a{font-weight:600;color:var(--t-secondary)}

/* ── Centered card (forgot / reset) ── */
.card{
  position:relative;z-index:1;width:100%;max-width:440px;
  margin:0 auto;
  background:rgba(255,255,255,.72);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid rgba(255,255,255,.85);
  border-radius:var(--radius);
  box-shadow:var(--shadow-lg);
  padding:36px 34px;
  animation:nml-rise .5s var(--ease) both;
}
.card .logo{margin-bottom:26px}
.icon-wrap{
  width:54px;height:54px;border-radius:14px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(47,107,255,.10);border:1px solid rgba(47,107,255,.18);
  margin-bottom:18px;
}
.icon-wrap svg path,.icon-wrap svg rect,.icon-wrap svg circle{stroke:var(--nml-blue)}
.icon-wrap svg circle[fill]{fill:var(--nml-blue);stroke:none}
.card-title{font-size:23px;font-weight:700;letter-spacing:-.02em;color:var(--t-primary)}
.card-sub{font-size:14px;color:var(--t-secondary);line-height:1.6;margin:8px 0 22px}

.back-link{
  display:inline-flex;align-items:center;gap:7px;
  font-size:13.5px;font-weight:600;color:var(--t-secondary);
  margin-top:20px;transition:color .15s var(--ease)
}
.back-link:hover{color:var(--nml-blue)}

/* ── Success state (forgot / reset) ── */
.success-state{display:none;text-align:center}
.success-state.show{display:block;animation:nml-fade .35s var(--ease)}
.success-icon{
  width:64px;height:64px;border-radius:50%;margin:0 auto 18px;
  display:flex;align-items:center;justify-content:center;
  background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.28);
}
.success-icon svg path{stroke:var(--nml-green)}
.success-title{font-size:21px;font-weight:700;color:var(--t-primary)}
.success-sub{font-size:14px;color:var(--t-secondary);line-height:1.65;margin:8px 0 4px}

/* ── Motion keyframes ── */
@keyframes nml-fade{from{opacity:0}to{opacity:1}}
@keyframes nml-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}
@keyframes nml-rise-sm{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}

@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition:none!important}
}

/* ── Mobile shared tuning ── */
@media (max-width:640px){
  .orb{filter:blur(60px)}
  .o1{width:380px;height:380px;top:-110px;right:-90px}
  .o2{width:340px;height:340px;bottom:-120px;left:-90px}
  .o3{width:280px;height:280px}
  .pwd-toggle{width:44px;height:44px}      /* >=44px touch target */
  .btn-soc,.field-input{font-size:16px}
  .remember input,.terms-row input{width:20px;height:20px}  /* easier tap */
  .form-row{flex-wrap:wrap;gap:10px}
  .card{padding:26px 20px}
}
