*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --primary:#4f46e5;--primary-hover:#4338ca;--bg:#f9fafb;--surface:#ffffff;
  --text:#111827;--text-muted:#6b7280;--border:#e5e7eb;--error:#dc2626;
  --radius:8px
}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}
.app{display:flex;min-height:100vh;align-items:center;justify-content:center;padding:1.5rem}
.card{background:var(--surface);border-radius:12px;box-shadow:0 1px 3px rgba(0,0,0,.08),0 8px 24px rgba(0,0,0,.06);padding:2.5rem;width:100%;max-width:400px}
.logo{display:flex;align-items:center;gap:.625rem;margin-bottom:2rem}
.logo img{width:32px;height:32px}
.logo-text{font-size:1.25rem;font-weight:700;letter-spacing:-.01em;color:var(--text)}
.heading{font-size:1.5rem;font-weight:700;letter-spacing:-.02em;margin-bottom:.375rem}
.subheading{color:var(--text-muted);font-size:.9375rem;margin-bottom:1.75rem;line-height:1.5}
label{display:block;font-size:.875rem;font-weight:500;color:var(--text);margin-bottom:.375rem}
input[type=email],input[type=password]{width:100%;padding:.625rem .875rem;border:1.5px solid var(--border);border-radius:var(--radius);font-size:1rem;line-height:1.5;color:var(--text);background:#fff;outline:none;transition:border-color .15s,box-shadow .15s}
input[type=email]:focus,input[type=password]:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(79,70,229,.12)}
input::placeholder{color:#9ca3af}
.field{margin-bottom:1.25rem}
.field-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:.375rem}
.field-row label{margin-bottom:0}
.forgot{font-size:.8125rem;color:var(--primary);text-decoration:none;font-weight:500}
.forgot:hover{text-decoration:underline}
.btn{display:flex;align-items:center;justify-content:center;gap:.5rem;width:100%;padding:.6875rem 1rem;background:var(--primary);color:#fff;font-size:1rem;font-weight:600;line-height:1.5;border:none;border-radius:var(--radius);cursor:pointer;transition:background .15s,transform .1s;margin-top:.25rem}
.btn:hover:not(:disabled){background:var(--primary-hover)}
.btn:active:not(:disabled){transform:scale(.99)}
.btn:disabled{opacity:.65;cursor:not-allowed}
.spinner{width:18px;height:18px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:spin .65s linear infinite;flex-shrink:0}
@keyframes spin{to{transform:rotate(360deg)}}
.error-banner{display:flex;align-items:flex-start;gap:.625rem;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--radius);padding:.75rem 1rem;color:var(--error);font-size:.875rem;line-height:1.5;margin-bottom:1.25rem}
.error-banner svg{flex-shrink:0;margin-top:1px}
.divider{position:relative;text-align:center;color:var(--text-muted);font-size:.8125rem;margin:1.5rem 0}
.divider::before,.divider::after{content:'';position:absolute;top:50%;width:42%;height:1px;background:var(--border)}
.divider::before{left:0}.divider::after{right:0}
.signup-link{text-align:center;font-size:.875rem;color:var(--text-muted)}
.signup-link a{color:var(--primary);text-decoration:none;font-weight:500}
.signup-link a:hover{text-decoration:underline}
@media(max-width:480px){.card{padding:2rem 1.5rem;border-radius:0;box-shadow:none;min-height:100vh;display:flex;flex-direction:column;justify-content:center}}
