/* The sessionless token projection — keep in lockstep with src/app/styles/design-system.css :root.
   Served straight from public/ (no bundler) to /auth/login, /auth/register, /cli-success and
   error.html. tests/unit/app/publicDoorStyles.test.ts pins that every token auth.css uses is
   declared here and that .app-btn matches the SPA's geometry — b324fe55 deleted the button
   rules and the door shipped with browser-default buttons and nobody noticed. */

@font-face {
  font-family: 'Geist';
  src: url('/fonts/geist-sans-latin-400-normal.woff2') format('woff2');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: 'Geist';
  src: url('/fonts/geist-sans-latin-500-normal.woff2') format('woff2');
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: 'Geist';
  src: url('/fonts/geist-sans-latin-600-normal.woff2') format('woff2');
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: 'Geist Fallback';
  src: local('Arial');
  size-adjust: 104.76%;
  ascent-override: 95.94%;
  descent-override: 28.16%;
  line-gap-override: 0%;
}

:root {
  --ui-bg: #F7F4EF;
  --ui-surface: #FFFEF9;
  --ui-surface-2: #f1ece4;
  --ui-text: #22252E;
  --ui-text-2: #4b535d;
  --ui-text-3: #616873;
  --ui-line: rgba(34, 37, 46, 0.10);
  --ui-line-strong: rgba(34, 37, 46, 0.18);
  --ui-brand: #2540A0;
  --ui-brand-ink: #2540A0;
  --ui-focus: #2540A0;
  --ui-pass-ink: #246b43;
  --ui-fail-ink: #C43D2F;
  --ui-shadow: 0 1px 2px rgba(34, 37, 46, 0.04), 0 8px 24px rgba(34, 37, 46, 0.05);
  --ui-font: 'Geist', 'Geist Fallback', system-ui, sans-serif;
  --ui-mono: 'Geist Mono', 'Geist Mono Fallback', ui-monospace, Menlo, monospace;
}
body{font-family:var(--ui-font);margin:0;background:var(--ui-bg);color:var(--ui-text);line-height:1.5}
a{color:var(--ui-brand)} header,footer{padding:14px 24px;border-bottom:1px solid var(--ui-line);background:var(--ui-surface)}
footer{border-top:1px solid var(--ui-line);border-bottom:0;font-size:12px;color:var(--ui-text-3)}
main{max-width:900px;margin:0 auto;padding:32px 24px 64px}
h1{letter-spacing:-.02em} h2{margin-top:1.6em;font-size:1.1rem}
pre{background:var(--ui-surface-2);padding:12px;overflow:auto;font-size:12px}
code{font-family:var(--ui-mono);font-size:12px}
table{border-collapse:collapse;width:100%;font-size:14px}
td,th{border-top:1px solid var(--ui-line);padding:8px;text-align:left}
.nav a{margin-right:14px;text-decoration:none;color:var(--ui-text-2)}

/* .app-btn — the same primitive as the SPA's (design-system.css), copied not imported:
   the door must render when the client bundle does not. Geometry is pinned equal by test. */
.app-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: none;
  padding: 9px 18px;
  border: 1px solid transparent;
  border-radius: 9px;
  background: var(--ui-brand);
  color: #ffffff;
  font-family: inherit;
  font-size: 15px;
  font-weight: 600;
  line-height: 1.4;
  text-decoration: none;
  cursor: pointer;
  appearance: none;
  transition: transform 140ms cubic-bezier(0.16, 1, 0.3, 1), opacity 140ms, border-color 140ms;
}
.app-btn:hover:not(:disabled) { transform: translateY(-1px); opacity: 0.9; }
.app-btn:active { transform: none; }
.app-btn:focus-visible { outline: 2px solid var(--ui-focus); outline-offset: 2px; }
.app-btn:disabled { opacity: 0.4; cursor: default; }
.app-btn.is-quiet {
  background: var(--ui-surface);
  color: var(--ui-text-2);
  border-color: var(--ui-line-strong);
}
.app-btn.is-quiet:hover:not(:disabled) { color: var(--ui-text); opacity: 1; }

/* error.html */
.error-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px}
.error-card{background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:12px;padding:2rem;max-width:500px;width:90%;text-align:center;box-shadow:var(--ui-shadow)}
.error-icon{font-size:28px;color:var(--ui-fail-ink);margin-bottom:.5rem}
.error-card h1{color:var(--ui-fail-ink);margin:0 0 1rem;font-size:1.5rem}
.error-card p{color:var(--ui-text-2);margin:.5rem 0;line-height:1.6}
