/* THE DOOR'S PAGES (Q-312 stage 2): sign in and the first run.
   Standalone pages served before there is a session or a shell, so they do not load style.css;
   static files are on the door's exceptions list, so this loads signed out. */
:root {
  color-scheme: light dark;
  --door-bg: #f3f4f6; --door-card: #ffffff; --door-line: #e5e7eb; --door-text: #111827;
  --door-soft: #4b5563; --door-faint: #6b7280; --door-accent: #2563eb; --door-accent-ink: #ffffff;
  --door-field: #ffffff; --door-bad-bg: #fef2f2; --door-bad-line: #fecaca; --door-bad-ink: #991b1b;
  --door-ok-bg: #f0fdf4; --door-ok-line: #bbf7d0; --door-ok-ink: #166534;
}
@media (prefers-color-scheme: dark) {
  :root {
    --door-bg: #0f172a; --door-card: #111827; --door-line: #374151; --door-text: #f3f4f6;
    --door-soft: #d1d5db; --door-faint: #9ca3af; --door-accent: #3b82f6; --door-field: #0b1220;
    --door-bad-bg: #2a1215; --door-bad-line: #7f1d1d; --door-bad-ink: #fecaca;
    --door-ok-bg: #0f2a1a; --door-ok-line: #166534; --door-ok-ink: #bbf7d0;
  }
}
* { box-sizing: border-box; }
html { height: 100%; } body { margin: 0; }
body {
  min-height: 100%; display: flex; align-items: center; justify-content: center;
  padding: 24px 16px; background: var(--door-bg); color: var(--door-text);
  font: 15px/1.5 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
}
.door { width: 100%; max-width: 400px; }
.door-brand { font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase;
              color: var(--door-faint); margin: 0 0 14px 4px; }
/* WHICH COPY THIS DOOR OPENS (Q-344, Q-346): a Staging names itself before a password is typed, so a password is never
   typed into the wrong copy. Production and Development carry no marker, as on every other screen. */
.door-env { margin-left: 8px; padding: 1px 8px; border-radius: 999px; letter-spacing: .04em;
            color: var(--door-text); background: var(--door-line); }
.door-card { background: var(--door-card); border: 1px solid var(--door-line); border-radius: 14px;
             padding: 28px 24px; box-shadow: 0 10px 30px rgba(0,0,0,.06); }
h1 { font-size: 20px; line-height: 1.3; margin: 0 0 6px; }
.door-lede { margin: 0 0 20px; color: var(--door-soft); font-size: 14px; }
label { display: block; font-size: 13px; font-weight: 600; margin: 0 0 6px; }
.door-field { margin: 0 0 16px; }
input[type=email], input[type=password], select {
  width: 100%; min-height: 44px; padding: 10px 12px; font: inherit; color: var(--door-text);
  background: var(--door-field); border: 1px solid var(--door-line); border-radius: 8px;
}
input:focus, select:focus, button:focus-visible { outline: 2px solid var(--door-accent); outline-offset: 1px; }
button[type=submit] {
  width: 100%; min-height: 44px; margin-top: 4px; border: 0; border-radius: 8px; cursor: pointer;
  background: var(--door-accent); color: var(--door-accent-ink); font: inherit; font-weight: 600;
}
.door-msg { border-radius: 8px; padding: 10px 12px; margin: 0 0 16px; font-size: 14px; }
.door-msg.bad { background: var(--door-bad-bg); border: 1px solid var(--door-bad-line); color: var(--door-bad-ink); }
.door-msg.ok { background: var(--door-ok-bg); border: 1px solid var(--door-ok-line); color: var(--door-ok-ink); }
.door-foot { margin: 14px 4px 0; font-size: 12.5px; color: var(--door-faint); }

/* PASSKEYS (Q-312 stage 3): the passkey leads, the password follows. */
.door-btn {
  display: block; width: 100%; min-height: 44px; margin-top: 4px; border-radius: 8px; cursor: pointer;
  font: inherit; font-weight: 600; text-align: center; text-decoration: none; padding: 10px 12px;
}
.door-btn.primary { border: 0; background: var(--door-accent); color: var(--door-accent-ink); }
.door-btn.secondary { border: 1px solid var(--door-line); background: var(--door-field); color: var(--door-text); }
.door-btn[disabled] { opacity: .6; cursor: progress; }
.door-or { display: flex; align-items: center; gap: 10px; margin: 20px 0 16px; color: var(--door-faint); font-size: 13px; }
.door-or::before, .door-or::after { content: ""; flex: 1; border-top: 1px solid var(--door-line); }
.door-link { display: inline-block; min-height: 40px; padding: 10px 0; color: var(--door-accent); font-size: 14px; }
.door-note { margin: 0 0 16px; color: var(--door-soft); font-size: 13.5px; }
[hidden] { display: none !important; }

/* TWO STEPS FOR EVERYONE (Q-312 stage 4): the code field, the authenticator's QR code and key,
   recovery codes shown once, and the door's small hint lines. */
input[type=text] {
  width: 100%; min-height: 44px; padding: 10px 12px; font: inherit; color: var(--door-text);
  background: var(--door-field); border: 1px solid var(--door-line); border-radius: 8px;
}
.door-totp { margin: 4px 0 8px; }
.door-qr { display: block; width: 200px; height: 200px; max-width: 100%; margin: 0 auto 12px;
           border-radius: 8px; background: #ffffff; }
.door-secret { margin: 0 0 16px; padding: 8px 10px; border: 1px dashed var(--door-line); border-radius: 8px;
               font: 14px/1.5 ui-monospace, monospace; letter-spacing: .04em;
               word-break: break-all; text-align: center; }
.door-codes { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6px 16px;
              margin: 0 0 16px; padding: 12px 12px 12px 34px; border: 1px solid var(--door-line);
              border-radius: 8px; font: 15px/1.6 ui-monospace, monospace; }
.door-codes code { font: inherit; }
