/* normedit sign-in pages (2026-10-20): the tristate web gate at /auth/web/*. */
:root { --ink: #222; --muted: #666; --line: #d0d7de; --accent: #2e7d32; --error: #b71c1c; --bg: #fafafa; }
* { box-sizing: border-box; }
body { margin: 0; min-height: 100vh; background: var(--bg); color: var(--ink);
  font: 15px/1.55 system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; display: flex; align-items: flex-start; justify-content: center; }
.card { width: 100%; max-width: 420px; margin: 10vh 16px 0; padding: 24px 28px; background: #fff; border: 1px solid var(--line); border-radius: 8px; }
h1 { margin: 0 0 12px; font-size: 20px; }
.brand { color: var(--ink); text-decoration: none; }
.lead { font-weight: 600; }
label { display: block; margin: 12px 0 4px; font-size: 13px; color: var(--muted); }
input { width: 100%; padding: 8px 10px; font: inherit; border: 1px solid var(--line); border-radius: 4px; }
input:focus { outline: 2px solid #90caf9; border-color: #90caf9; }
button { margin-top: 14px; width: 100%; padding: 9px 12px; font: inherit; color: #fff; background: var(--accent); border: none; border-radius: 4px; cursor: pointer; }
button:disabled { opacity: .55; cursor: default; }
.hint { font-size: 13px; color: var(--muted); }
.notice { padding: 8px 10px; background: #fff3cd; border: 1px solid #ffe08a; border-radius: 4px; font-size: 13px; }
.field-error, .message.error { color: var(--error); font-size: 13px; }
.message.success, .field-ok { color: var(--accent); font-size: 13px; }
.hidden { display: none; }
