* { box-sizing: border-box; }
body {
    margin: 0;
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: system-ui, -apple-system, Segoe UI, Roboto, sans-serif;
    background: linear-gradient(145deg, #0f172a 0%, #1e3a5f 100%);
    color: #e2e8f0;
}
.card {
    width: min(420px, 92vw);
    background: #fff;
    color: #1e293b;
    border-radius: 14px;
    padding: 28px 26px;
    box-shadow: 0 20px 50px rgba(0,0,0,.35);
}
h1 { margin: 0 0 6px; font-size: 1.35rem; }
p.sub { margin: 0 0 20px; color: #64748b; font-size: .9rem; line-height: 1.45; }
label { display: block; font-size: .8rem; font-weight: 600; margin-bottom: 6px; color: #475569; }
input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    font-size: 1rem;
    margin-bottom: 14px;
}
input:focus { outline: 2px solid #0ea5e9; border-color: #0ea5e9; }
button[type="submit"], .btn-primary {
    width: 100%;
    padding: 11px;
    border: none;
    border-radius: 8px;
    background: #0ea5e9;
    color: #fff;
    font-weight: 600;
    font-size: 1rem;
    cursor: pointer;
}
button:disabled { opacity: .6; cursor: wait; }
.err, .ok {
    display: none;
    margin-bottom: 12px;
    padding: 10px 12px;
    border-radius: 8px;
    font-size: .85rem;
}
.err { background: #fef2f2; color: #b91c1c; }
.ok { background: #f0fdf4; color: #15803d; }
.err.show, .ok.show { display: block; }
.logo { font-size: 1.8rem; margin-bottom: 8px; }
.link-row { margin-top: 14px; text-align: center; font-size: .88rem; }
.link-row a { color: #0ea5e9; text-decoration: none; }
.link-row a:hover { text-decoration: underline; }
.hint { font-size: .8rem; color: #64748b; margin: -8px 0 14px; }
