/* Aivorize ID — shared auth pages stylesheet (login.html, signup.html, reset-password.html) */
:root{
  --blue:#0D0A08; --near-black:#0D0A08; --medium-gray:#6b7280;
  --light-gray:#F5F3EF; --border-gray:#f3f4f6; --white:#ffffff;
  --bad:#b23b3b; --good:#3e7a52;
}
*{box-sizing:border-box;margin:0;padding:0;}
body{
  background:var(--light-gray); color:var(--near-black);
  font-family:'General Sans',system-ui,sans-serif;
  min-height:100vh; display:flex; align-items:center; justify-content:center;
  padding:24px;
}
.card{
  width:100%; max-width:400px; background:var(--white);
  border:1px solid var(--border-gray); border-radius:16px;
  padding:40px 36px;
  box-shadow:0 1px 2px rgba(13,10,8,0.03), 0 12px 32px -12px rgba(13,10,8,0.08);
}
.brand{ display:flex; align-items:center; gap:9px; justify-content:center; margin-bottom:32px; }
.brand span{ font-size:16px; font-weight:600; letter-spacing:-0.01em; }
h1{ font-size:20px; font-weight:600; text-align:center; margin-bottom:6px; letter-spacing:-0.01em; }
.sub{ font-size:13px; color:var(--medium-gray); text-align:center; margin-bottom:28px; line-height:1.5; }

form{ display:flex; flex-direction:column; gap:14px; }
form[hidden]{ display:none; }

.field{ display:flex; flex-direction:column; gap:6px; }
.field label{ font-size:12.5px; font-weight:500; color:var(--near-black); }
.row-2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
input{
  border:1px solid var(--border-gray); border-radius:8px; padding:10px 12px;
  font-family:inherit; font-size:13.5px; color:var(--near-black); outline:none;
  transition:border-color .15s; width:100%;
}
input:focus{ border-color:var(--near-black); }
input.invalid{ border-color:var(--bad); }

/* Honeypot — hidden from real users, only bots that auto-fill every field trip it */
.hp-field{ position:absolute !important; left:-9999px !important; top:-9999px !important; width:1px; height:1px; overflow:hidden; }

.pw-wrap{ position:relative; }
.pw-toggle{
  position:absolute; right:10px; top:50%; transform:translateY(-50%);
  background:none; border:none; font-size:11.5px; color:var(--medium-gray); cursor:pointer;
  font-family:inherit;
}

.pw-rules{ display:flex; flex-direction:column; gap:4px; margin-top:2px; }
.pw-rule{ display:flex; align-items:center; gap:6px; font-size:11.5px; color:var(--medium-gray); }
.pw-rule .dot{ width:5px; height:5px; border-radius:50%; background:var(--border-gray); flex-shrink:0; }
.pw-rule.met{ color:var(--good); }
.pw-rule.met .dot{ background:var(--good); }

.strength-bar{ height:3px; background:var(--border-gray); border-radius:2px; overflow:hidden; margin-top:4px; }
.strength-fill{ height:100%; width:0%; background:var(--bad); transition:width .2s, background .2s; }

.error-text{ font-size:11.5px; color:var(--bad); display:none; }
.error-text.visible{ display:block; }

.info-text{ font-size:11.5px; color:var(--good); display:none; }
.info-text.visible{ display:block; }

.age-note{ font-size:11px; color:var(--medium-gray); }

.btn{
  margin-top:6px; padding:11px; border:none; border-radius:8px;
  background:var(--near-black); color:var(--white); font-family:inherit;
  font-size:13.5px; font-weight:600; cursor:pointer; transition:opacity .15s;
}
.btn:hover{ opacity:0.88; }
.btn:disabled{ opacity:0.4; cursor:not-allowed; }

.btn-secondary{
  margin-top:0; padding:10px; border:1px solid var(--border-gray); border-radius:8px;
  background:none; color:var(--near-black); font-family:inherit;
  font-size:12.5px; font-weight:500; cursor:pointer; text-align:center;
}
.btn-secondary:hover{ background:var(--light-gray); }

.link-btn{
  background:none;border:none;color:var(--medium-gray);font-size:12px;
  cursor:pointer;text-decoration:underline;font-family:inherit;padding:0;
}
.link-btn:disabled{ opacity:.5; cursor:not-allowed; text-decoration:none; }

.switch-note{ font-size:12.5px; color:var(--medium-gray); text-align:center; margin-top:18px; }
.switch-note a{ color:var(--near-black); font-weight:600; text-decoration:none; }
.switch-note a:hover{ text-decoration:underline; }

.divider{ display:flex; align-items:center; gap:10px; margin:20px 0; }
.divider::before, .divider::after{ content:''; flex:1; height:1px; background:var(--border-gray); }
.divider span{ font-size:11px; color:var(--medium-gray); }

.identity-note{
  font-size:11.5px; color:var(--medium-gray); text-align:center; line-height:1.6;
  margin-top:16px; padding-top:16px; border-top:1px solid var(--border-gray);
}
.identity-note b{ color:var(--near-black); font-weight:600; }

.security-note{
  display:flex; align-items:flex-start; gap:8px; margin-top:20px; padding:12px;
  background:var(--light-gray); border-radius:8px; font-size:11.5px; color:var(--medium-gray); line-height:1.5;
}
.security-note svg{ width:14px; height:14px; flex-shrink:0; margin-top:1px; color:var(--medium-gray); }

.device-note{
  display:flex; align-items:center; gap:8px; margin-bottom:20px; padding:10px 12px;
  background:var(--light-gray); border-radius:8px; font-size:11px; color:var(--medium-gray);
}
.device-note svg{ width:13px; height:13px; flex-shrink:0; }
.device-note b{ color:var(--near-black); }

.lockout-note{
  font-size:11.5px; color:var(--bad); background:rgba(178,59,59,0.06);
  border:1px solid rgba(178,59,59,0.15); border-radius:8px; padding:10px 12px;
  display:none; line-height:1.5;
}
.lockout-note.visible{ display:block; }

.config-warning{
  font-size:11px; color:var(--bad); background:rgba(178,59,59,0.06);
  border:1px solid rgba(178,59,59,0.15); border-radius:8px; padding:10px 12px;
  margin-bottom:16px; display:none; line-height:1.5;
}
.config-warning.visible{ display:block; }

.captcha-box{
  display:flex; align-items:center; gap:12px; padding:14px 16px;
  border:1px solid var(--border-gray); border-radius:11px; background:var(--white);
  cursor:pointer; user-select:none;
  transition:border-color .2s cubic-bezier(0.16,1,0.3,1), box-shadow .2s cubic-bezier(0.16,1,0.3,1), background .2s;
  box-shadow:0 1px 2px rgba(13,10,8,0.02);
}
.captcha-box:hover{ border-color:#ddd9d0; box-shadow:0 2px 8px rgba(13,10,8,0.05); }
.captcha-box:active{ transform:scale(0.995); }
.captcha-box.verified{
  border-color:rgba(62,122,82,0.35); background:rgba(62,122,82,0.04);
  box-shadow:0 1px 2px rgba(62,122,82,0.06);
}
.captcha-checkbox{
  width:22px; height:22px; border:1.5px solid var(--medium-gray); border-radius:6px;
  flex-shrink:0; display:flex; align-items:center; justify-content:center;
  background:var(--white); position:relative; overflow:hidden;
  transition:background .25s cubic-bezier(0.16,1,0.3,1), border-color .25s cubic-bezier(0.16,1,0.3,1), transform .2s cubic-bezier(0.34,1.56,0.64,1);
}
.captcha-box:hover .captcha-checkbox{ border-color:#a8a29a; }
.captcha-box.verified .captcha-checkbox{
  background:var(--good); border-color:var(--good); transform:scale(1.04);
}
.captcha-box.checking .captcha-checkbox{ border-color:var(--medium-gray); }
.captcha-checkbox svg{
  width:13px; height:13px; color:var(--white); display:block;
  stroke-dasharray:20; stroke-dashoffset:20; opacity:0;
  transition:stroke-dashoffset .35s cubic-bezier(0.16,1,0.3,1) .05s, opacity .1s .05s;
}
.captcha-box.verified .captcha-checkbox svg{ stroke-dashoffset:0; opacity:1; }
.captcha-spinner{
  position:absolute; width:13px; height:13px; border:1.5px solid rgba(107,114,128,0.2);
  border-top-color:var(--medium-gray); border-radius:50%; opacity:0;
  transition:opacity .15s;
}
.captcha-box.checking .captcha-spinner{ opacity:1; animation:captcha-spin 0.8s linear infinite; }
.captcha-box.checking .captcha-checkbox svg{ opacity:0; }
@keyframes captcha-spin{ to{ transform:rotate(360deg); } }
.captcha-label{
  font-size:13px; font-weight:500; color:var(--near-black); flex:1;
  transition:color .2s;
}
.captcha-box.verified .captcha-label{ color:var(--good); }
.captcha-meta{ display:flex; flex-direction:column; align-items:flex-end; gap:1px; }
.captcha-badge{ font-size:9px; font-weight:600; letter-spacing:0.04em; text-transform:uppercase; color:#c4bfb5; }
.captcha-provider{ font-size:8.5px; color:#d4d0c7; }

.legal{ font-size:11px; color:var(--medium-gray); text-align:center; margin-top:18px; line-height:1.6; }
.legal a{ color:var(--near-black); text-decoration:underline; }

.otp-code-input{ text-align:center;font-size:22px;letter-spacing:8px;font-family:'Courier New',monospace; }
