/* error.css — the standalone failure page (backend/templates/errors/error.html).
 *
 * Not a screen the SPA ever draws: it is served on its own, without the shell,
 * when the app could not be reached or the address does not exist. It is linked
 * from index.html anyway because every stylesheet in this directory has to be
 * (tests/tokens.test.mjs), and because the two documents share a palette.
 *
 * Its media query lives here rather than in responsive.css for the same reason
 * the page loads its own short list of stylesheets: nothing about this page may
 * depend on a file that a broken deploy might be missing. */

.errorpage{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background-image:radial-gradient(1100px 520px at 50% -12%,var(--accent-soft),transparent)}
.errorpage-card{width:100%;max-width:540px;padding:44px 40px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r-2xl);box-shadow:var(--shadow-sm);text-align:center}

.errorpage-brand{display:flex;align-items:center;justify-content:center;gap:10px;margin-bottom:26px}
.errorpage-mark{width:28px;height:28px;border-radius:var(--r-sm);background:var(--accent);color:var(--on-accent);font-size:13px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}
.errorpage-name{font-size:13.5px;font-weight:600;letter-spacing:-.01em;color:var(--ink-2)}

/* Large but quiet: the number is what tells a reader at a glance which failure
   this is, and it should not shout over the sentence that explains it. */
.errorpage-status{font-size:68px;line-height:1;font-weight:700;color:var(--error-figure);letter-spacing:-.04em;font-variant-numeric:tabular-nums}

.errorpage-title{margin:16px 0 0;font-size:20px;font-weight:600;line-height:1.3;letter-spacing:-.028em;color:var(--ink)}
.errorpage-body{margin:12px auto 0;max-width:42ch;font-size:14.5px;line-height:1.6;color:var(--ink-3);text-wrap:pretty}
.errorpage-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:26px}
.errorpage-actions .btn:hover{text-decoration:none;color:var(--on-accent)}
.errorpage-actions .btn.ghost:hover{color:var(--ink-2)}
.errorpage-code{margin:20px 0 0;font-family:var(--font-mono);font-size:11.5px;letter-spacing:.02em;color:var(--faint)}

.errorpage-langs{display:flex;flex-wrap:wrap;gap:4px;justify-content:center;margin-top:24px;padding-top:18px;border-top:1px solid var(--line-soft)}
.errorpage-lang{height:30px;padding:0 12px;border:0;border-radius:var(--r-pill);background:transparent;color:var(--muted);font-size:12.5px;font-weight:500;cursor:pointer;transition:background-color var(--t),color var(--t)}
.errorpage-lang:hover{background:var(--hover);color:var(--ink-3)}
.errorpage-lang[aria-pressed="true"]{background:var(--accent-soft);color:var(--accent);font-weight:600}

@media (max-width:480px){
  .errorpage{padding:16px;align-items:flex-start;padding-top:56px}
  .errorpage-card{padding:30px 24px;border-radius:var(--r-xl)}
  .errorpage-status{font-size:52px}
  .errorpage-title{font-size:17px}
  .errorpage-actions .btn{width:100%}
}

@media (prefers-reduced-motion:reduce){
  .errorpage-card,.errorpage-lang,.errorpage-actions .btn{transition:none}
}
