/* ============================================================
   Fonts — vendored, no CDN. JetBrains Mono only ever renders
   digits, ASCII labels and Plus Codes, so its latin subset is
   enough. Nunito renders place names straight from
   Nominatim, which return local spellings, so it also carries
   latin-ext — without it "İstanbul" loses its İ to a fallback
   font mid-word.
   ============================================================ */
@font-face {
  font-family: "Nunito";
  src: url("../vendor/fonts/nunito-latin.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
    U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193,
    U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Nunito";
  src: url("../vendor/fonts/nunito-latin-ext.woff2") format("woff2");
  font-weight: 100 900;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF,
    U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020,
    U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "JetBrains Mono";
  src: url("../vendor/fonts/jetbrains-mono.woff2") format("woff2");
  font-weight: 100 800;
  font-display: swap;
}

/* ============================================================
   Tokens
   ============================================================ */
:root {
  --bg: #111318;
  --bg-sunken: #0e1014;
  --bg-raised: #1a1c22;
  --line: #2a2d35;
  --line-strong: #3a3d45;

  --text: #e6e6e6;
  --text-soft: #c7cad1;
  --text-dim: #9a9da5;
  --text-faint: #6e727b;

  --accent: #4c6ef5;
  --accent-soft: #7a94f8;
  --ok-bg: #1d3a24;
  --ok-fg: #8aff9e;
  --off-bg: #3a1d1d;
  --off-fg: #ff8a8a;

  --font-sans: "Nunito", system-ui, -apple-system, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, Menlo, monospace;

  --radius-sm: 6px;
  --radius-md: 10px;
  --radius-pill: 999px;

  --panel-bg: rgb(17 19 24 / 0.9);
  --panel-shadow: 0 6px 24px rgb(0 0 0 / 0.45);

  --gap-inset: 20px;

  color-scheme: dark;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

body {
  /* The instrument panel is a full-height surface: the map takes whatever the
     top bar leaves rather than a guessed viewport fraction. */
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-sans);
  /* Numbers must not reflow as they tick between rounds. */
  font-variant-numeric: tabular-nums;
}

.hidden {
  display: none !important;
}

/* The document keeps one h1 for structure, but it isn't shown on screen. */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
