:root {
  color-scheme: light;
  --ink: #17253a;
  --ink-soft: #3d4f66;
  --muted: #5c6c80;
  --navy: #0f2740;
  --navy-soft: #17395e;
  --brand: #2166d1;
  --brand-hover: #1a55b4;
  --accent-bg: #d3e4f9;
  --accent-bg-hover: #bfd7f3;
  --accent-bg-soft: #e7f0ff;
  --accent-ink: #14477e;
  --surface: #ffffff;
  --canvas: #edf1f6;
  --map-bg: #dce7ef;
  --tint: #f2f6fb;
  --tint-strong: #e7eef7;
  --line: #e3e9f0;
  --line-strong: #ccd7e2;
  --ok: #22773e;
  --warn: #8a5c00;
  --danger: #b3282d;
  --focus: #3ea0ff;
  --shadow-sm: 0 1px 3px rgb(15 39 64 / 10%);
  --shadow-md: 0 8px 28px rgb(15 39 64 / 16%);
  --shadow-lg: 0 18px 48px rgb(9 27 45 / 26%);
  --shadow-float: 0 10px 32px rgb(20 42 74 / 18%);
  --shadow-sheet: 0 -18px 52px rgb(14 31 54 / 24%);
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius-lg: 18px;
  --radius-xl: 20px;
  --radius-sheet: 30px;
  --radius-pill: 999px;
  /* Статусные заливки вердикта и чек-листа. */
  --status-danger-bg: #fbe9ea;
  --status-danger-ink: #8f1d26;
  --status-warn-bg: #fdeedd;
  --status-warn-ink: #7d4304;
  --status-check-bg: #faf3d7;
  --status-check-ink: #6d5200;
  --status-ok-bg: #e4f4ea;
  --status-ok-ink: #1f6b39;
  /* Маркеры покрытия и свежести источников. */
  --marker-ok: #2f9e57;
  --marker-part: #d99a06;
  --marker-miss: #d64545;
  /* Шапка. */
  --header-from: #f2f7fd;
  --header-to: #e8f0fa;
  /* Векторная подложка. Читаются site/js/basemap.js и переопределяют палитру
     protomaps. Ориентир — привычная карта openstreetmap.org: пользователь
     ожидает её вид, а слишком бледные тона делали дома неразличимыми. */
  --map-earth: #f2efe9;
  --map-water: #aad3df;
  --map-green: #cfe3c4;
  --map-green-strong: #add19e;
  --map-building: #d9d0c9;
  --map-road: #ffffff;
  --map-road-casing: #c9c2b7;
  --map-road-minor: #fbf9f6;
  --map-rail: #b8b8b8;
  --map-boundary: #b0a8b8;
  /* Ландшафт на малых зумах. Базовая палитра protomaps слишком насыщенная:
     страна выглядела зелёной и спорила с оранжевыми и красными зонами. */
  --map-land-grass: #dff0d5;
  --map-land-farm: #eef0d5;
  --map-land-scrub: #e8e6cd;
  --map-land-urban: #e7e5e0;
  --map-land-barren: #f5f2e8;
  --map-label: #33342e;
  --map-label-soft: #5c5d56;
  --map-halo: #ffffff;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
html { background: var(--canvas); }
body {
  display: flex;
  flex-direction: column;
  overflow: hidden;
  background: var(--canvas);
  color: var(--ink);
  font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Noto Sans", sans-serif;
  font-size: 15px;
  line-height: 1.45;
  height: 100dvh;
}

button, input, select { font: inherit; }
button { color: inherit; }
a { color: var(--brand); }
a:hover { color: var(--brand-hover); }
svg { display: block; }

button:focus-visible,
input:focus-visible,
select:focus-visible,
summary:focus-visible,
a:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

.small { font-size: 12.5px; line-height: 1.5; }
.muted { color: var(--muted); }
.sep { height: 9px; }
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    scroll-behavior: auto !important;
    transition-duration: .01ms !important;
    animation-duration: .01ms !important;
  }
}
