/* Шрифты кабинета: самохостинг, OFL, кириллица нативная (план 2026-09-26, волна E).
   Onest - заголовки и KPI-цифры, Golos Text - интерфейс и таблицы,
   JetBrains Mono - коды МКБ, visit_id, версии. Variable-шрифты: вес любой от 400 до 800,
   синтез жирности браузером не нужен. Файлы в frontend/web/shared/vendor/fonts/. */
@font-face {
  font-family: "Onest"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("/vendor/fonts/onest-var-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Onest"; font-style: normal; font-weight: 100 900; font-display: swap;
  src: url("/vendor/fonts/onest-var-latin.woff2") format("woff2");
  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: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("/vendor/fonts/golos-text-var-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "Golos Text"; font-style: normal; font-weight: 400 900; font-display: swap;
  src: url("/vendor/fonts/golos-text-var-latin.woff2") format("woff2");
  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: "JetBrains Mono"; font-style: normal; font-weight: 100 800; font-display: swap;
  src: url("/vendor/fonts/jetbrains-mono-var-cyrillic.woff2") format("woff2");
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}
@font-face {
  font-family: "JetBrains Mono"; font-style: normal; font-weight: 100 800; font-display: swap;
  src: url("/vendor/fonts/jetbrains-mono-var-latin.woff2") format("woff2");
  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;
}

:root {
  color-scheme: light;
  --font-display: "Onest", "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
  --font-ui: "Golos Text", "Avenir Next", "Segoe UI", "Helvetica Neue", sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, Consolas, monospace;
  /* Шкала размеров 12 / 13 / 14 / 16 / 20 / 24 / 32 / 44 (план, раздел 4.1). */
  --type-page: clamp(26px, 3vw, 32px);
  --type-card: 20px;
  --type-kpi: clamp(28px, 2.6vw, 44px);
  --type-body: 14px;
  --type-control: 13px;
  --type-label: 12px;
  --type-table: 13px;
  --type-chart: 12px;
  --type-meta: 12px;
  --type-mono: 12.5px;
  --tracking-kpi: -0.02em;
  --tracking-label: 0.04em;
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 20px;
  --space-6: 24px;
  --space-8: 32px;
  --bg: #eef3f1;
  --bg-glow: radial-gradient(1100px 460px at 10% -8%, rgba(15, 122, 104, .14), transparent 58%),
    radial-gradient(860px 400px at 90% 0%, rgba(47, 99, 178, .10), transparent 52%),
    radial-gradient(700px 320px at 70% 100%, rgba(196, 120, 48, .06), transparent 50%),
    linear-gradient(180deg, #f7faf8 0%, #eef3f1 100%);
  --surface: rgba(255, 255, 255, .90);
  --surface-solid: #ffffff;
  --surface-2: #f2f7f5;
  --surface-raised: #ffffff;
  --ink: #142824;
  --muted: #56706a;
  --line: #cfdcd7;
  --line-soft: #e4eeea;
  --control-line: #b7c9c2;
  --accent: #0f7a68;
  --accent-dark: #0b5f51;
  --accent-soft: #dff3ee;
  --focus: #2f63b2;
  --sev-p0: #c0455a;
  --sev-p1: #c47830;
  --sev-p2: #8a7a3a;
  --sev-p3: #5b6f8f;
  --good: #0f7a68;
  --warn: #c47830;
  --bad: #c0455a;
  --neutral: #56706a;
  --mo-band-ok: #0f7a68;
  --mo-band-warn: #c47830;
  --mo-band-bad: #c0455a;
  --danger: var(--bad);
  --warning: var(--warn);
  --chart-1: #0f7a68;
  --chart-2: #2f63b2;
  --chart-3: #c47830;
  --chart-4: #9a5b8a;
  --chart-5: #5b6f8f;
  --zone-1: #0f7a68;
  --zone-2a: #2f63b2;
  --zone-2b: #b8892f;
  /* Цифры дашборда: умеренно яркие природные, не чёрный 850. */
  --num-moss: #2d7a64;
  --num-lake: #3a6d8c;
  --num-clay: #a87438;
  --num-heather: #7a5e7d;
  --num-rose: #a85a62;
  --num-slate: #4a635c;
  --radius-sm: 10px;
  --radius: 16px;
  --radius-lg: 22px;
  --shadow: 0 10px 28px rgba(22, 40, 36, .08);
  --shadow-soft: 0 1px 0 rgba(255,255,255,.65) inset, 0 8px 22px rgba(22, 40, 36, .06);
  --control-height: 44px;
  --table-pad-block: 11px;
  --chart-height: 300px;
  --sidebar: #12352e;
  --sidebar-ink: #e8f2ef;
}

:root[data-theme="dark"] {
  color-scheme: dark;
  --bg: #0c1412;
  --bg-glow: radial-gradient(1000px 420px at 10% -8%, rgba(79, 170, 150, .18), transparent 55%),
    radial-gradient(800px 360px at 90% 0%, rgba(90, 140, 210, .12), transparent 50%),
    linear-gradient(180deg, #121c19 0%, #0c1412 100%);
  --surface: rgba(18, 30, 27, .90);
  --surface-solid: #13201d;
  --surface-2: #182622;
  --surface-raised: #1a2a26;
  --ink: #e6f1ed;
  --muted: #9aafa8;
  --line: #2a3f39;
  --line-soft: #213430;
  --control-line: #3a524b;
  --accent: #4ec4ae;
  --accent-dark: #8fd9c8;
  --accent-soft: #1a332e;
  --focus: #7eb0e6;
  --good: #4ec4ae;
  --warn: #e0a85a;
  --bad: #e08a98;
  --neutral: #9aafa8;
  --sev-p0: #e08a98;
  --sev-p1: #e0a85a;
  --sev-p2: #c4b06a;
  --sev-p3: #8f9aab;
  --mo-band-ok: #4ec4ae;
  --mo-band-warn: #e0a85a;
  --mo-band-bad: #e08a98;
  --chart-1: #4ec4ae;
  --chart-2: #7eb0e6;
  --chart-3: #e0a85a;
  --chart-4: #c89ab0;
  --chart-5: #8f9aab;
  --zone-1: #4ec4ae;
  --zone-2a: #7eb0e6;
  --zone-2b: #d4b45a;
  --num-moss: #5eb89f;
  --num-lake: #7eafd0;
  --num-clay: #d4a05a;
  --num-heather: #c4a0c0;
  --num-rose: #e08a94;
  --num-slate: #9aafa8;
  --shadow: 0 14px 34px rgba(0, 0, 0, .36);
  --shadow-soft: 0 8px 22px rgba(0, 0, 0, .26);
  --sidebar: #0a1714;
  --sidebar-ink: #e6f1ed;
}

:root[data-density="compact"] {
  --control-height: 40px;
  --table-pad-block: 8px;
  --chart-height: 240px;
}

@media (prefers-color-scheme: dark) {
  :root:not([data-theme]) {
    color-scheme: dark;
    --bg: #0c1412;
    --bg-glow: radial-gradient(1000px 420px at 10% -8%, rgba(79, 170, 150, .18), transparent 55%),
      radial-gradient(800px 360px at 90% 0%, rgba(90, 140, 210, .12), transparent 50%),
      linear-gradient(180deg, #121c19 0%, #0c1412 100%);
    --surface: rgba(18, 30, 27, .90);
    --surface-solid: #13201d;
    --surface-2: #182622;
    --surface-raised: #1a2a26;
    --ink: #e6f1ed;
    --muted: #9aafa8;
    --line: #2a3f39;
    --line-soft: #213430;
    --control-line: #3a524b;
    --accent: #4ec4ae;
    --accent-dark: #8fd9c8;
    --accent-soft: #1a332e;
    --focus: #7eb0e6;
    --good: #4ec4ae;
    --warn: #e0a85a;
    --bad: #e08a98;
    --neutral: #9aafa8;
    --sev-p0: #e08a98;
    --sev-p1: #e0a85a;
    --sev-p2: #c4b06a;
    --mo-band-ok: #4ec4ae;
    --mo-band-warn: #e0a85a;
    --mo-band-bad: #e08a98;
    --chart-1: #4ec4ae;
    --chart-2: #7eb0e6;
    --chart-3: #e0a85a;
    --chart-4: #c89ab0;
    --chart-5: #8f9aab;
    --zone-1: #4ec4ae;
    --zone-2a: #7eb0e6;
    --zone-2b: #d4b45a;
    --num-moss: #5eb89f;
    --num-lake: #7eafd0;
    --num-clay: #d4a05a;
    --num-heather: #c4a0c0;
    --num-rose: #e08a94;
    --num-slate: #9aafa8;
    --sidebar: #0a1714;
    --sidebar-ink: #e6f1ed;
  }
}

/* Базовая типографика поверх токенов: табличные цифры везде, моноширинный для кодов. */
:root { font-variant-numeric: tabular-nums; }
.id-cell, .mono, code, kbd, .icd-code, .visit-id, .build-version, [data-mono] {
  font-family: var(--font-mono); font-size: var(--type-mono); font-variant-numeric: tabular-nums;
  letter-spacing: 0;
}
.kpi-value, .kpi-num, .score-ring-meta, .tile-value { font-family: var(--font-display); letter-spacing: var(--tracking-kpi); font-variant-numeric: tabular-nums; }
h1, h2, h3, .card h2, .section-title { font-family: var(--font-display); }
th, .kpi-label, .card-sub, .filter > span, .panel-help { letter-spacing: var(--tracking-label); }
