/* Self-hosted IBM Plex Mono (SIL OFL, see fonts/LICENSE.txt). */
@font-face { font-family: "IBM Plex Mono"; font-weight: 400; font-style: normal; font-display: swap; src: url("../fonts/IBMPlexMono-Regular.woff2") format("woff2"); }
@font-face { font-family: "IBM Plex Mono"; font-weight: 600; font-style: normal; font-display: swap; src: url("../fonts/IBMPlexMono-SemiBold.woff2") format("woff2"); }

:root {
  --cell-w: 7.2px;
  --cell-h: 13px;
  --ease: cubic-bezier(0.23, 1, 0.32, 1);
  --mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;
}

* { box-sizing: border-box; margin: 0; padding: 0; }

html { background: #0c0c0c; }

/* Default theme ("ink"); theme.js overrides these on <body>. */
body {
  --bg: #0c0c0c; --ink: #d8d4b4; --accent: #d8d4b4;
  --dim: #8a8770; --chrome: #5c5a4b; --line: #1a1a17;
  --kw: #689e80; --str: #2a593f; --fn: #c9b37e; --ty: #8fb5a0; --num: #d8785b; --cmt: #6b6a58;
  --link: #7fb0d0;
  background: var(--bg);
  color: var(--ink);
  font: 400 12px/var(--cell-h) var(--mono);
  min-height: 100vh;
  -webkit-font-smoothing: antialiased;
  transition: background-color 420ms var(--ease), color 420ms var(--ease);
}

a { color: inherit; }
button { font: inherit; color: inherit; background: none; border: 0; cursor: pointer; }

:focus-visible { outline: 1px dashed var(--accent); outline-offset: 2px; }

.sr-only {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* ?still and prefers-reduced-motion: no animation at all. */
html.still *, html.still *::before, html.still *::after {
  animation: none !important;
  transition: none !important;
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* 404 page */
.nf { padding: calc(var(--cell-h) * 3) calc(var(--cell-w) * 4); color: var(--dim); }
.nf a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
