/* Sign-in pages use the same brand tokens as the admin. */
* { box-sizing:border-box; }
html,body { min-width:320px; min-height:100%; }
body { margin:0; color:var(--ink); background:var(--paper); font:16px/1.5 var(--body); -webkit-font-smoothing:antialiased; }
button,input { font:inherit; }
a { color:inherit; text-decoration:none; }
svg { display:block; fill:currentColor; }
:focus-visible { outline:3px solid var(--focus); outline-offset:3px; }
.auth-shell,.denied-shell { display:grid; min-height:100dvh; place-items:center; padding:32px 20px; }
.auth-form-side { width:min(100%,440px); }
.form-panel,.denied-card { padding:32px; background:var(--paper-light); border:1px solid var(--line); border-radius:8px; }
.auth-brand { display:inline-flex; align-items:center; gap:12px; margin-bottom:24px; }
.auth-brand strong { display:block; font-size:22px; }
.auth-brand small { display:block; margin-top:4px; color:var(--muted); font-size:14px; }
.form-panel header { margin-bottom:24px; }
.form-panel h1,.denied-card h1 { margin:0; font-size:26px; font-weight:650; line-height:1.4; }
.form-panel header p { margin:8px 0 0; color:var(--muted); font-size:14px; }
.login-form { display:grid; gap:20px; }
.field-group > span:first-child { display:block; margin-bottom:8px; font-weight:600; }
.field-group > input,.password-field { display:flex; width:100%; min-height:44px; align-items:center; border:1px solid var(--line); border-radius:6px; background:#fff; }
.field-group > input,.password-field input { width:100%; min-width:0; padding:10px 12px; color:var(--ink); font-size:16px; }
.password-field input { flex:1; border:0; background:transparent; outline:0; }
.field-group input::placeholder { color:var(--muted); }
.field-group > input:focus,.password-field:focus-within { border-color:var(--focus); outline:2px solid var(--focus); outline-offset:2px; }
.password-field button { align-self:stretch; padding:0 12px; color:var(--link); border:0; border-radius:6px; background:transparent; cursor:pointer; font-size:14px; }
.remember-field { display:flex; gap:10px; align-items:center; cursor:pointer; font-size:14px; }
.remember-field input { width:18px; height:18px; margin:0; accent-color:var(--blue); }
.remember-field i { display:none; }
.login-button { display:flex; width:100%; min-height:44px; align-items:center; justify-content:center; gap:12px; padding:10px 16px; color:var(--action-text); background:var(--accent); border:1px solid var(--accent); border-radius:6px; cursor:pointer; font-weight:600; }
.login-button:hover { background:var(--accent-hover); border-color:var(--accent-hover); }
.login-button svg { width:18px; }
.login-button:disabled { opacity:.65; cursor:wait; }
.form-footnote { margin-top:24px; padding-top:16px; border-top:1px solid var(--line); color:var(--muted); font-size:14px; }
.form-footnote p { margin:6px 0 0; }
.auth-alert { display:flex; gap:10px; align-items:start; margin:0 0 20px; padding:12px 14px; border:1px solid; border-radius:6px; font-size:14px; }
.auth-alert p { margin:0; }
.auth-alert.is-error { color:var(--danger); background:var(--danger-soft); border-color:var(--danger-line); }
.auth-alert.is-success { color:var(--success); background:var(--success-soft); border-color:var(--success-line); }
.denied-card { width:min(100%,540px); }
.denied-code { display:block; margin-bottom:16px; color:var(--danger); font-size:14px; }
.denied-mark { display:none; }
.denied-card > p { color:var(--muted); margin:16px 0 24px; }
@media(max-width:600px) { .form-panel,.denied-card { padding:24px; } .auth-shell,.denied-shell { padding:20px 16px; } }
