/* -- Base ---------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
html,body{height:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',Arial,sans-serif;
  background:#f8fafc;
  color:#1e293b;
  display:flex;align-items:center;justify-content:center;
  min-height:100vh;padding:24px;padding-bottom:56px;
}

/* -- Subtle grid background ---------------------------------------------- */
.grid-bg{
  position:fixed;top:0;left:0;width:100%;height:100%;
  pointer-events:none;z-index:0;opacity:.35;
}

/* -- Card ---------------------------------------------------------------- */
.card{
  position:relative;z-index:1;
  width:100%;max-width:420px;
  background:#ffffff;
  border:1px solid #e2e8f0;
  border-radius:16px;
  padding:32px 30px;
  box-shadow:0 4px 24px rgba(0,0,0,.06),0 1px 3px rgba(0,0,0,.04);
  animation:slide-up .4s ease both;
}
@keyframes slide-up{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}

/* -- Logo ---------------------------------------------------------------- */
.logo{display:flex;align-items:center;gap:12px;margin-bottom:24px}
.logo-mark{
  width:42px;height:42px;
  background:linear-gradient(135deg,#2563eb,#4f46e5);
  border-radius:11px;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 2px 12px rgba(37,99,235,.3);
  flex-shrink:0;
}
.logo-mark svg{width:22px;height:22px;color:#fff}
.logo-name{font-size:1.15rem;font-weight:700;color:#1e293b;letter-spacing:-.3px}
.logo-tagline{font-size:.68rem;color:#94a3b8;margin-top:1px;letter-spacing:.2px}

/* -- Headings ------------------------------------------------------------ */
h1{font-size:1.2rem;font-weight:700;color:#1e293b;margin-bottom:4px;letter-spacing:-.3px}
.subtitle{font-size:.8rem;color:#64748b;margin-bottom:20px;line-height:1.45}

/* -- Form elements ------------------------------------------------------- */
.form-group{margin-bottom:14px}
label{display:block;font-size:.76rem;font-weight:500;color:#475569;margin-bottom:5px}
label .req{color:#ef4444;font-weight:700;margin-left:2px}
input,select{
  width:100%;
  padding:10px 13px;
  background:#f8fafc;
  border:1px solid #e2e8f0;
  border-radius:8px;
  color:#1e293b;
  font-size:.85rem;
  font-family:inherit;
  outline:none;
  transition:border-color .15s,box-shadow .15s;
}
select{
  appearance:none;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='%2394a3b8' viewBox='0 0 16 16'%3E%3Cpath d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
  padding-right:32px;
  cursor:pointer;
}
select option{background:#fff;color:#1e293b}
input:focus,select:focus{
  border-color:#2563eb;
  box-shadow:0 0 0 3px rgba(37,99,235,.1);
  background:#ffffff;
}
input::placeholder{color:#94a3b8}
input:disabled{opacity:.5;cursor:not-allowed}

/* -- Buttons ------------------------------------------------------------- */
.btn{
  display:block;width:100%;
  padding:11px 18px;
  border:none;border-radius:8px;
  font-size:.85rem;font-weight:600;
  font-family:inherit;cursor:pointer;
  transition:all .15s;
  position:relative;overflow:hidden;
  margin-top:4px;
}
.btn-primary{
  background:linear-gradient(135deg,#2563eb,#4f46e5);
  color:#fff;
  box-shadow:0 2px 8px rgba(37,99,235,.25);
}
.btn-primary:hover{
  box-shadow:0 4px 16px rgba(37,99,235,.35);
  transform:translateY(-1px);
}
.btn-primary:active{transform:translateY(0);box-shadow:0 2px 8px rgba(37,99,235,.25)}
.btn-primary:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}

/* -- Message boxes ------------------------------------------------------- */
.msg{
  display:none;
  padding:10px 13px;
  border-radius:8px;
  font-size:.78rem;
  margin-bottom:14px;
  line-height:1.4;
}
.msg.visible{display:block}
.msg.error{
  background:rgba(239,68,68,.06);
  border:1px solid rgba(239,68,68,.2);
  color:#dc2626;
}
.msg.success{
  background:rgba(34,197,94,.06);
  border:1px solid rgba(34,197,94,.2);
  color:#16a34a;
}

/* -- Spinner ------------------------------------------------------------- */
.spinner{
  display:inline-block;
  width:13px;height:13px;
  border:2px solid rgba(255,255,255,.3);
  border-top-color:#fff;
  border-radius:50%;
  animation:spin .6s linear infinite;
  margin-right:6px;
  vertical-align:middle;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* -- Links --------------------------------------------------------------- */
.link-row{text-align:center;margin-top:16px;font-size:.76rem;color:#94a3b8}
.link-row .lnk{color:#2563eb;cursor:pointer;text-decoration:none;font-weight:500;transition:color .15s}
.link-row .lnk:hover{color:#1d4ed8;text-decoration:underline}
.link-row .sep{color:#cbd5e1;margin:0 6px}

/* -- Divider ------------------------------------------------------------- */
.divider{border:none;border-top:1px solid #e2e8f0;margin:20px 0}

/* -- Hint text ----------------------------------------------------------- */
.hint{font-size:.7rem;color:#94a3b8;margin-top:4px;line-height:1.35}

/* -- Footer -------------------------------------------------------------- */
.footer{
  text-align:center;
  margin-top:20px;
  font-size:.72rem;
  color:#94a3b8;
}
.footer span{
  background:linear-gradient(90deg,#2563eb,#4f46e5);
  -webkit-background-clip:text;
  -webkit-text-fill-color:transparent;
  background-clip:text;
  font-weight:600;
}

/* -- View switching ------------------------------------------------------ */
.view{display:none}
.view.active{display:block;animation:slide-up .25s ease both}

/* -- Badge --------------------------------------------------------------- */
.step-badge{
  display:inline-flex;align-items:center;
  padding:3px 10px;
  background:rgba(37,99,235,.06);
  border:1px solid rgba(37,99,235,.15);
  color:#2563eb;
  border-radius:999px;
  font-size:.66rem;font-weight:700;
  letter-spacing:.4px;
  margin-bottom:12px;
}

/* -- Fixed site footer --------------------------------------------------- */
.site-footer{
  position:fixed;bottom:0;left:0;right:0;z-index:100;
  background:#ffffff;
  border-top:1px solid #e2e8f0;
  padding:10px 20px;
  display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 22px;
  font-size:.72rem;color:#94a3b8;
}
.site-footer a{color:#2563eb;text-decoration:none;transition:color .15s}
.site-footer a:hover{color:#1d4ed8}
.footer-links{display:flex;flex-wrap:wrap;align-items:center;gap:5px 16px}
.footer-links span{display:inline-flex;align-items:center;gap:4px}
.footer-links svg{width:13px;height:13px;flex-shrink:0;opacity:.5}
.footer-copy{opacity:.6}

/* -- Mobile -------------------------------------------------------------- */
@media(max-width:768px){
  body{padding:16px 14px;align-items:center;padding-top:20px}
  .card{padding:24px 22px;max-width:100%;border-radius:14px}
  .logo{margin-bottom:20px;gap:10px}
  .logo-mark{width:38px;height:38px;border-radius:9px}
  .logo-name{font-size:1.1rem}
  h1{font-size:1.15rem}
  .subtitle{font-size:.82rem;margin-bottom:16px}
  .form-group{margin-bottom:12px}
  label{font-size:.78rem;margin-bottom:4px}
  input,select{padding:10px 12px;font-size:.88rem}
  .btn{padding:11px 18px;font-size:.88rem}
  .hint{font-size:.72rem}
  .step-badge{font-size:.68rem}
  .link-row{margin-top:14px;font-size:.78rem}
  .footer{margin-top:16px;font-size:.7rem}
  .msg{padding:9px 12px;font-size:.8rem;margin-bottom:10px}
  .site-footer{padding:8px 12px;gap:4px 12px;font-size:.65rem}
  body{padding-bottom:48px}
}
@media(max-width:480px){
  input,select{font-size:16px}
  .card{padding:22px 18px}
}
