:root {
  --bg: #fbfaf7;
  --surface: #ffffff;
  --text: #1f2328;
  --muted: #656d76;
  --border: #d8dee4;
  --accent: #2f5bb7;
  --accent-text: #ffffff;
  --danger: #b42318;
  --ok: #1a7f37;
  --radius: 8px;
  color-scheme: light;
}

/* Dark: the system's setting unless the reader chose light, or an explicit
   dark choice (data-theme, set by theme-boot.js before the first paint). */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #14161a;
    --surface: #1c1f24;
    --text: #e6e8eb;
    --muted: #9aa3ad;
    --border: #30363d;
    --accent: #7ea2f0;
    --accent-text: #0d1117;
    --danger: #f2877b;
    --ok: #6bc98a;
    color-scheme: dark;
  }
}

:root[data-theme="dark"] {
  --bg: #14161a;
  --surface: #1c1f24;
  --text: #e6e8eb;
  --muted: #9aa3ad;
  --border: #30363d;
  --accent: #7ea2f0;
  --accent-text: #0d1117;
  --danger: #f2877b;
  --ok: #6bc98a;
  color-scheme: dark;
}

* { box-sizing: border-box; }

/* .stack and .row set display, which would otherwise win over the attribute. */
[hidden] { display: none !important; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font: 16px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif;
}

a { color: var(--accent); }

header.top {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.75rem 1.25rem;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
header.top .brand { font-weight: 600; color: var(--text); text-decoration: none; }
header.top nav { display: flex; gap: 1rem; }
header.top .spacer { flex: 1; }
header.top .who { color: var(--muted); }

main { max-width: 64rem; margin: 2rem auto; padding: 0 1.25rem; }
main.narrow { max-width: 28rem; }

h1 { font-size: 1.5rem; margin: 0 0 1rem; }
h2 { font-size: 1.15rem; margin: 2rem 0 0.75rem; }
p.muted, .muted { color: var(--muted); }

.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 1.5rem;
}

.stack { display: flex; flex-direction: column; gap: 0.75rem; }
.row { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: end; }

button, .button {
  font: inherit;
  padding: 0.5rem 1rem;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
button.primary, .button.primary { background: var(--accent); border-color: var(--accent); color: var(--accent-text); }
button.link { border: none; background: none; padding: 0; color: var(--accent); }
button.danger { color: var(--danger); }
button:disabled { opacity: 0.6; cursor: default; }

input, select {
  font: inherit;
  padding: 0.45rem 0.6rem;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
}
label { display: flex; flex-direction: column; gap: 0.25rem; font-size: 0.9rem; color: var(--muted); }

.notice { padding: 0.75rem 1rem; border-radius: var(--radius); border: 1px solid var(--border); }
.notice.error { border-color: var(--danger); color: var(--danger); }
.notice.ok { border-color: var(--ok); color: var(--ok); }

.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; background: var(--surface); }
th, td { text-align: left; padding: 0.5rem 0.75rem; border-bottom: 1px solid var(--border); vertical-align: top; }
th { font-weight: 600; font-size: 0.85rem; color: var(--muted); }

.tag { display: inline-block; padding: 0 0.4rem; border-radius: 4px; border: 1px solid var(--border); font-size: 0.8rem; }
.tag.ok { color: var(--ok); border-color: var(--ok); }
.tag.danger { color: var(--danger); border-color: var(--danger); }

.signin { display: flex; flex-direction: column; gap: 1rem; align-items: stretch; }
.signin .tg { min-height: 40px; }
.signin .or { margin: 0; text-align: center; }

@media (max-width: 40rem) {
  header.top { flex-wrap: wrap; }
  header.top .who { display: none; }
}
