:root {
  /* light "paper / manpage" palette */
  --bg: #f4f1ea;          /* warm paper */
  --bg-card: #fbfaf6;     /* slightly lighter card stock */
  --ink: #1c1a17;         /* near-black ink */
  --ink-dim: #4a463f;     /* secondary ink */
  --ink-faint: #807a6f;   /* labels / muted */
  --accent: #7a2e1e;      /* manpage red-brown, for headings/prompt */
  --link: #1f4e79;        /* deep ink blue */
  --link-hover: #7a2e1e;
  --border: #d9d3c6;      /* hairline rules */
  --gate: #7a2e1e;        /* castle doorway accent */

  --mono: "DejaVu Sans Mono", "Cascadia Code", "Fira Mono", "SFMono-Regular",
          Consolas, "Liberation Mono", Menlo, monospace;
  --serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Times New Roman",
           Georgia, serif;
  --px: 6px; /* pixel size for the castle */
}

* { box-sizing: border-box; }

html, body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--ink);
  font-family: var(--serif);
  font-size: 16px;
  line-height: 1.6;
}

body { min-height: 100vh; }

.wrap {
  max-width: 820px;
  margin: 0 auto;
  padding: 2.5rem 1.25rem 4rem;
}

/* The terminal build had a scanline overlay; paper doesn't get one. */
.scanlines { display: none; }

/* ---------- banner + castle ---------- */
.banner {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  flex-wrap: wrap;
  border-bottom: 2px solid var(--ink);
  padding-bottom: 1.1rem;
  margin-bottom: 1.5rem;
}

.title h1 {
  margin: 0;
  font-family: var(--serif);
  font-size: 2.5rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--ink);
}

.tagline {
  margin: 0.25rem 0 0;
  color: var(--ink-dim);
  font-family: var(--mono);
  font-size: 0.95rem;
}

.blink { color: var(--accent); font-weight: bold; }
/* steady, no blink — this is paper, not a CRT */

/*
  Pixel castle, box-shadow pixels. Recolored for a light background:
  dark ink stone, red-brown gate.
*/
.castle { width: calc(var(--px) * 13); height: calc(var(--px) * 11); flex: 0 0 auto; }
.pixel-castle {
  width: var(--px);
  height: var(--px);
  background: transparent;
  box-shadow:
    /* battlements (top row, crenellated) */
    0 0 var(--ink), calc(var(--px)*2) 0 var(--ink),
    calc(var(--px)*4) 0 var(--ink), calc(var(--px)*6) 0 var(--ink),
    calc(var(--px)*8) 0 var(--ink), calc(var(--px)*10) 0 var(--ink),
    calc(var(--px)*12) 0 var(--ink),

    /* wall row 2 */
    0 var(--px) var(--ink), calc(var(--px)*1) var(--px) var(--ink),
    calc(var(--px)*2) var(--px) var(--ink), calc(var(--px)*3) var(--px) var(--ink),
    calc(var(--px)*4) var(--px) var(--ink), calc(var(--px)*5) var(--px) var(--ink),
    calc(var(--px)*6) var(--px) var(--ink), calc(var(--px)*7) var(--px) var(--ink),
    calc(var(--px)*8) var(--px) var(--ink), calc(var(--px)*9) var(--px) var(--ink),
    calc(var(--px)*10) var(--px) var(--ink), calc(var(--px)*11) var(--px) var(--ink),
    calc(var(--px)*12) var(--px) var(--ink),

    /* towers + body rows 3-6 */
    0 calc(var(--px)*2) var(--ink), calc(var(--px)*12) calc(var(--px)*2) var(--ink),
    calc(var(--px)*2) calc(var(--px)*2) var(--ink), calc(var(--px)*6) calc(var(--px)*2) var(--ink),
    calc(var(--px)*10) calc(var(--px)*2) var(--ink),
    calc(var(--px)*1) calc(var(--px)*2) var(--ink-dim), calc(var(--px)*3) calc(var(--px)*2) var(--ink-dim),
    calc(var(--px)*4) calc(var(--px)*2) var(--ink-dim), calc(var(--px)*5) calc(var(--px)*2) var(--ink-dim),
    calc(var(--px)*7) calc(var(--px)*2) var(--ink-dim), calc(var(--px)*8) calc(var(--px)*2) var(--ink-dim),
    calc(var(--px)*9) calc(var(--px)*2) var(--ink-dim), calc(var(--px)*11) calc(var(--px)*2) var(--ink-dim),

    0 calc(var(--px)*3) var(--ink), calc(var(--px)*1) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*2) calc(var(--px)*3) var(--ink), calc(var(--px)*3) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*4) calc(var(--px)*3) var(--ink-dim), calc(var(--px)*5) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*6) calc(var(--px)*3) var(--ink-dim), calc(var(--px)*7) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*8) calc(var(--px)*3) var(--ink-dim), calc(var(--px)*9) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*10) calc(var(--px)*3) var(--ink-dim), calc(var(--px)*11) calc(var(--px)*3) var(--ink-dim),
    calc(var(--px)*12) calc(var(--px)*3) var(--ink),

    0 calc(var(--px)*4) var(--ink), calc(var(--px)*1) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*2) calc(var(--px)*4) var(--ink), calc(var(--px)*3) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*4) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*6) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*8) calc(var(--px)*4) var(--ink-dim), calc(var(--px)*9) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*10) calc(var(--px)*4) var(--ink), calc(var(--px)*11) calc(var(--px)*4) var(--ink-dim),
    calc(var(--px)*12) calc(var(--px)*4) var(--ink),
    calc(var(--px)*5) calc(var(--px)*4) var(--gate), calc(var(--px)*7) calc(var(--px)*4) var(--gate),

    0 calc(var(--px)*5) var(--ink), calc(var(--px)*1) calc(var(--px)*5) var(--ink-dim),
    calc(var(--px)*2) calc(var(--px)*5) var(--ink), calc(var(--px)*3) calc(var(--px)*5) var(--ink-dim),
    calc(var(--px)*4) calc(var(--px)*5) var(--ink-dim),
    calc(var(--px)*8) calc(var(--px)*5) var(--ink-dim), calc(var(--px)*9) calc(var(--px)*5) var(--ink-dim),
    calc(var(--px)*10) calc(var(--px)*5) var(--ink), calc(var(--px)*11) calc(var(--px)*5) var(--ink-dim),
    calc(var(--px)*12) calc(var(--px)*5) var(--ink),
    calc(var(--px)*5) calc(var(--px)*5) var(--gate), calc(var(--px)*6) calc(var(--px)*5) var(--gate),
    calc(var(--px)*7) calc(var(--px)*5) var(--gate),

    0 calc(var(--px)*6) var(--ink), calc(var(--px)*1) calc(var(--px)*6) var(--ink-dim),
    calc(var(--px)*2) calc(var(--px)*6) var(--ink), calc(var(--px)*3) calc(var(--px)*6) var(--ink-dim),
    calc(var(--px)*4) calc(var(--px)*6) var(--ink-dim),
    calc(var(--px)*8) calc(var(--px)*6) var(--ink-dim), calc(var(--px)*9) calc(var(--px)*6) var(--ink-dim),
    calc(var(--px)*10) calc(var(--px)*6) var(--ink), calc(var(--px)*11) calc(var(--px)*6) var(--ink-dim),
    calc(var(--px)*12) calc(var(--px)*6) var(--ink),
    calc(var(--px)*5) calc(var(--px)*6) var(--gate), calc(var(--px)*6) calc(var(--px)*6) var(--gate),
    calc(var(--px)*7) calc(var(--px)*6) var(--gate);
}

/* ---------- text blocks ---------- */
.motd {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-left: 3px solid var(--accent);
  padding: 1rem 1.25rem;
  white-space: pre-wrap;
  margin: 0 0 1.5rem;
  color: var(--ink-dim);
  font-family: var(--mono);
  font-size: 0.9rem;
  line-height: 1.5;
  overflow-x: auto;
}
.motd strong { color: var(--ink); }

.card {
  background: var(--bg-card);
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 1.1rem 1.25rem 1.25rem;
  margin: 0 0 1.5rem;
}
.card h2 {
  margin: 0 0 0.75rem;
  font-family: var(--mono);
  font-size: 1rem;
  font-weight: 700;
  color: var(--accent);
  border-bottom: 1px solid var(--border);
  padding-bottom: 0.5rem;
  letter-spacing: 0.01em;
}
.prompt { color: var(--accent); }

.muted { color: var(--ink-faint); }
.small { font-size: 0.82rem; }

code { font-family: var(--mono); color: var(--ink); word-break: break-word; }

/* key/value table */
.kv { width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 0.9rem; }
.kv td { padding: 0.22rem 0.5rem 0.22rem 0; vertical-align: top; }
.kv td:first-child { color: var(--ink-faint); white-space: nowrap; width: 11rem; }
.kv code { color: var(--link); }
.kv .ua { font-size: 0.78rem; color: var(--ink-dim); }

/* services list */
.services, .news { list-style: none; margin: 0; padding: 0; }
.services li {
  padding: 0.5rem 0;
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
  font-family: var(--mono);
  font-size: 0.9rem;
}
.services li:last-child { border-bottom: 0; }
.services code { color: var(--link); }
.dot { width: 0.6rem; height: 0.6rem; border-radius: 50%; flex: 0 0 auto; }
.dot.pending { background: var(--accent); }
.dot.ok { background: #2e7d32; }
.svc-desc { color: var(--ink-faint); flex: 1 1 200px; font-family: var(--serif); }
.badge {
  font-size: 0.72rem;
  font-family: var(--mono);
  border: 1px solid var(--accent);
  color: var(--accent);
  padding: 0.05rem 0.45rem;
  border-radius: 3px;
}
.badge.ok-badge { border-color: #2e7d32; color: #2e7d32; }

/* news */
.news li { padding: 0.65rem 0; border-bottom: 1px solid var(--border); }
.news li:last-child { border-bottom: 0; }
.news-meta { font-family: var(--mono); font-size: 0.88rem; }
.news-date { color: var(--ink-faint); }
.news-title { color: var(--ink); font-weight: bold; margin-left: 0.5rem; }
.news-body { margin: 0.35rem 0 0; color: var(--ink-dim); }

/* footer + links */
.footer {
  margin-top: 2rem;
  text-align: center;
  color: var(--ink-faint);
  font-family: var(--mono);
  font-size: 0.82rem;
  border-top: 1px solid var(--border);
  padding-top: 1.25rem;
}
a { color: var(--link); text-decoration: none; border-bottom: 1px solid var(--border); }
a:hover { color: var(--link-hover); border-color: var(--link-hover); }

@media (max-width: 560px) {
  .title h1 { font-size: 1.9rem; }
  .kv td:first-child { width: auto; }
}
