/* =========================================================================
   tokens.css — единственное место, где живут значения оформления.
   Правило: в base.css и components.css НЕТ цветовых литералов. Только var().
   Стилевая тема фазы 5 переопределяет переменные, а не воюет с правилами.

   Соглашение об именах (его понимает tools/contrast.py и выводит пары сам):
     --X-text / --X-muted / --X-label / --X-link  — цвет текста
     --X-bg / --X-soft                            — подложка под этим текстом
     --color-text* на --color-canvas* / --color-surface*  — общие пары
   Завели компонент с собственным фоном — заведите пару --X-text / --X-bg,
   и tools/contrast.py подхватит её без правки конфига.
   Фон transparent допустим: скрипт проверит такой текст на фоне страницы.
   ========================================================================= */

:root {
  /* ---------- палитра: сырые ступени, в разметке не используются ---------- */
  --p-navy-900: #0a1622;
  --p-navy-800: #0f2438;
  --p-navy-700: #16324c;
  --p-navy-600: #1c4166;
  --p-navy-500: #245685;
  --p-blue-700: #10406f;
  --p-blue-600: #14508a;
  --p-blue-400: #6ba7de;
  --p-blue-300: #9cc6ec;
  --p-steel-050: #f5f8fb;
  --p-steel-100: #eaeff6;
  --p-steel-200: #d9e2ed;
  --p-steel-300: #bcc9d9;
  --p-steel-400: #8b9cb1;
  --p-steel-500: #64748b;
  --p-steel-600: #4a586b;
  --p-steel-700: #35424f;
  --p-ink-900: #0d151d;
  --p-white: #ffffff;

  /* ---------- общие поверхности и текст (светлая тема) ---------- */
  --color-canvas: #ffffff;
  --color-surface: #f5f8fb;
  --color-surface-soft: #eaeff6;
  --color-text: #0d151d;
  --color-text-muted: #45536a;
  --color-text-subtle: #4d5b70;
  --color-border: #d9e2ed;
  --color-border-strong: #bcc9d9;
  --color-accent: #14508a;
  --color-focus: #b4530a;
  --color-selection-bg: #cfe0f2;

  /* ---------- тёмная фирменная полоса (первый экран, врезки) ---------- */
  --band-bg: #0f2438;
  --band-text: #eef4fa;
  --band-muted: #b8c9dc;
  --band-link: #cfe0f2;
  --band-border: #24405d;

  /* ---------- ссылки ---------- */
  --link-bg: transparent;
  --link-text: #10406f;
  --link-hover-bg: transparent;
  --link-hover-text: #0a2d4f;
  --link-visited-bg: transparent;
  --link-visited-text: #4a3577;

  /* ---------- шапка ---------- */
  --header-bg: #ffffff;
  --header-text: #0d151d;
  --header-muted: #45536a;
  --header-border: #d9e2ed;

  /* ---------- навигация ---------- */
  --nav-bg: #ffffff;
  --nav-text: #16324c;
  --nav-muted: #45536a;
  --nav-current-bg: #eaeff6;
  --nav-current-text: #0f2438;

  /* ---------- подвал ---------- */
  --footer-bg: #0f2438;
  --footer-text: #e9eff7;
  --footer-muted: #b3c3d6;
  --footer-link: #cfe0f2;
  --footer-border: #24405d;

  /* ---------- кнопки ---------- */
  --btn-primary-bg: #14508a;
  --btn-primary-text: #ffffff;
  --btn-primary-hover-bg: #0f3d69;
  --btn-primary-hover-text: #ffffff;
  --btn-secondary-bg: #eaeff6;
  --btn-secondary-text: #10406f;
  --btn-secondary-hover-bg: #d9e2ed;
  --btn-secondary-hover-text: #0a2d4f;
  --btn-ghost-bg: transparent;
  --btn-ghost-text: #10406f;

  /* ---------- карточка ---------- */
  --card-bg: #ffffff;
  --card-text: #0d151d;
  --card-muted: #45536a;
  --card-border: #d9e2ed;

  /* ---------- подпись под схемой и мелкий служебный текст ---------- */
  --figcap-bg: transparent;
  --figcap-text: #45536a;

  /* ---------- статусные чипы карты «требование ↔ функция» ---------- */
  --chip-ok-bg: #dcf0e2;
  --chip-ok-text: #14562f;
  --chip-ok-dot: #1a7a41;

  --chip-part-bg: #fbedcf;
  --chip-part-text: #64400a;
  --chip-part-dot: #96620d;

  --chip-no-bg: #fadfdf;
  --chip-no-text: #86201f;
  --chip-no-dot: #ad2a2a;

  --chip-out-bg: #e5e9ef;
  --chip-out-text: #3b4450;
  --chip-out-dot: #64748b;

  /* ---------- акцентный блок правила ---------- */
  --rule-bg: #eaeff6;
  --rule-text: #16324c;
  --rule-label: #10406f;
  --rule-accent: #14508a;

  --warn-bg: #fbedcf;
  --warn-text: #57370a;
  --warn-label: #64400a;
  --warn-accent: #96620d;

  /* ---------- информационная плашка (юридические оговорки) ---------- */
  --info-bg: #f5f8fb;
  --info-text: #35424f;
  --info-label: #45536a;
  --info-accent: #8b9cb1;

  /* ---------- цитата нормы ---------- */
  --quote-bg: #f5f8fb;
  --quote-text: #1d2733;
  --quote-label: #45536a;
  --quote-accent: #16324c;

  /* ---------- таблицы ---------- */
  --table-bg: #ffffff;
  --table-text: #0d151d;
  --table-muted: #45536a;
  --table-border: #d9e2ed;
  --table-head-bg: #eaeff6;
  --table-head-text: #16324c;
  --table-zebra-bg: #f8fafd;
  --table-zebra-text: #0d151d;

  /* ---------- подсказка ---------- */
  --tip-bg: #0f2438;
  --tip-text: #f2f6fb;

  /* ---------- моноширинный фрагмент, ссылка на норму ---------- */
  --code-bg: #eaeff6;
  --code-text: #26313d;

  /* ---------- поиск по сайту ---------- */
  --search-bg: #ffffff;
  --search-text: #0d151d;
  --search-muted: #45536a;
  --search-border: #bcc9d9;
  --search-hit-bg: #eaeff6;
  --search-hit-text: #0f2438;

  /* ---------- хлебные крошки ---------- */
  --crumb-bg: transparent;
  --crumb-text: #45536a;
  --crumb-link: #10406f;

  /* ---------- схемы (assets/diagrams/*.svg, инлайнятся в страницу) ---------- */
  --diagram-bg: transparent;
  --diagram-label: #45536a;
  --diagram-line: #64748b;
  --diagram-node-bg: #eaeff6;
  --diagram-node-text: #16324c;
  --diagram-node-border: #bcc9d9;
  --diagram-accent-bg: #0f2438;
  --diagram-accent-text: #eef4fa;
  --diagram-accent-border: #0f2438;

  /* ---------- служебные ---------- */
  --progress-bg: #d9e2ed;
  --progress-fill: #14508a;
  --totop-bg: #0f2438;
  --totop-text: #f2f6fb;
  --skip-bg: #14508a;
  --skip-text: #ffffff;
  --error-bg: #ffffff;
  --error-text: #0d151d;
  --error-muted: #45536a;

  /* ---------- типографика ---------- */
  --font-sans: "Lancelot Sans", "Liberation Sans", "Helvetica Neue", Arial, sans-serif;
  --font-serif: "Lancelot Serif", "Liberation Serif", Georgia, serif;
  --font-mono: "Lancelot Mono", "Liberation Mono", "SFMono-Regular", Consolas, monospace;

  --font-body: var(--font-sans);
  --font-heading: var(--font-sans);

  --fs-3xs: 0.75rem;
  --fs-2xs: 0.8125rem;
  --fs-xs: 0.875rem;
  --fs-s: 0.9375rem;
  --fs-m: 1rem;
  --fs-l: 1.125rem;
  --fs-xl: 1.3125rem;
  --fs-2xl: 1.5rem;
  --fs-3xl: 1.875rem;
  --fs-4xl: 2.25rem;
  --fs-5xl: 2.75rem;

  --lh-tight: 1.2;
  --lh-heading: 1.28;
  --lh-base: 1.65;
  --lh-loose: 1.75;

  --fw-regular: 400;
  --fw-bold: 700;

  /* ---------- ритм и размеры ---------- */
  --sp-1: 0.25rem;
  --sp-2: 0.5rem;
  --sp-3: 0.75rem;
  --sp-4: 1rem;
  --sp-5: 1.5rem;
  --sp-6: 2rem;
  --sp-7: 2.75rem;
  --sp-8: 3.5rem;
  --sp-9: 4.5rem;

  --container: 78rem;
  --container-narrow: 52rem;
  --measure: 42rem;

  --radius-s: 3px;
  --radius-m: 6px;
  --radius-l: 10px;
  --radius-pill: 999px;

  --border-w: 1px;
  --accent-bar-w: 4px;

  --shadow-s: 0 1px 2px rgba(13, 21, 29, 0.06), 0 1px 3px rgba(13, 21, 29, 0.08);
  --shadow-m: 0 2px 6px rgba(13, 21, 29, 0.08), 0 8px 24px rgba(13, 21, 29, 0.08);
  --shadow-l: 0 8px 32px rgba(13, 21, 29, 0.16);

  --dur-fast: 120ms;
  --dur-base: 200ms;
  --dur-slow: 320ms;
  --ease: cubic-bezier(0.2, 0, 0.2, 1);

  --header-h: 4.25rem;
  --header-h-compact: 3.375rem;
  --tap-min: 44px;

  --z-progress: 60;
  --z-header: 50;
  --z-nav: 55;
  --z-tip: 70;
  --z-totop: 40;
}

/* =========================================================================
   ТЁМНАЯ ТЕМА — переопределяются только значения, ни одного нового правила.
   ========================================================================= */
:root[data-theme="dark"] {
  --color-canvas: #0c1219;
  --color-surface: #141c26;
  --color-surface-soft: #1b2531;
  --color-text: #e8eef6;
  --color-text-muted: #a9b8c9;
  --color-text-subtle: #a3b2c4;
  --color-border: #2a3644;
  --color-border-strong: #3b4a5c;
  --color-accent: #7fb6e8;
  --color-focus: #f0a355;
  --color-selection-bg: #1f4568;

  --band-bg: #08121c;
  --band-text: #e8eef6;
  --band-muted: #a9b8c9;
  --band-link: #a8cdee;
  --band-border: #1e3149;

  --link-bg: transparent;
  --link-text: #8dc0ec;
  --link-hover-bg: transparent;
  --link-hover-text: #b0d5f5;
  --link-visited-bg: transparent;
  --link-visited-text: #c0aeea;

  --header-bg: #0f1620;
  --header-text: #e8eef6;
  --header-muted: #a9b8c9;
  --header-border: #2a3644;

  --nav-bg: #141c26;
  --nav-text: #dbe6f2;
  --nav-muted: #a9b8c9;
  --nav-current-bg: #1f2b39;
  --nav-current-text: #f0f5fa;

  --footer-bg: #080e15;
  --footer-text: #dfe8f2;
  --footer-muted: #9fb0c3;
  --footer-link: #a8cdee;
  --footer-border: #1e2a37;

  --btn-primary-bg: #2b6fb0;
  --btn-primary-text: #ffffff;
  --btn-primary-hover-bg: #3579b8;
  --btn-primary-hover-text: #ffffff;
  --btn-secondary-bg: #1f2b39;
  --btn-secondary-text: #b6d6f2;
  --btn-secondary-hover-bg: #293849;
  --btn-secondary-hover-text: #cfe4f7;
  --btn-ghost-bg: transparent;
  --btn-ghost-text: #8dc0ec;

  --card-bg: #141c26;
  --card-text: #e8eef6;
  --card-muted: #a9b8c9;
  --card-border: #2a3644;

  --figcap-bg: transparent;
  --figcap-text: #a9b8c9;

  --chip-ok-bg: #12301f;
  --chip-ok-text: #8fdcaa;
  --chip-ok-dot: #4fbf7d;

  --chip-part-bg: #33260c;
  --chip-part-text: #f2c877;
  --chip-part-dot: #d9a13c;

  --chip-no-bg: #38161a;
  --chip-no-text: #f4a3a3;
  --chip-no-dot: #dc6a6a;

  --chip-out-bg: #212a35;
  --chip-out-text: #b9c5d4;
  --chip-out-dot: #7d8da0;

  --rule-bg: #17202b;
  --rule-text: #dbe6f2;
  --rule-label: #9fc9ed;
  --rule-accent: #4f92cc;

  --warn-bg: #2c2109;
  --warn-text: #f3d59a;
  --warn-label: #f2c877;
  --warn-accent: #d9a13c;

  --info-bg: #131b24;
  --info-text: #c4d1de;
  --info-label: #a9b8c9;
  --info-accent: #4b5a6c;

  --quote-bg: #131b24;
  --quote-text: #dae4ef;
  --quote-label: #a9b8c9;
  --quote-accent: #4f92cc;

  --table-bg: #0f1620;
  --table-text: #e8eef6;
  --table-muted: #a9b8c9;
  --table-border: #2a3644;
  --table-head-bg: #1b2531;
  --table-head-text: #dbe6f2;
  --table-zebra-bg: #131b24;
  --table-zebra-text: #e8eef6;

  --tip-bg: #e8eef6;
  --tip-text: #0c1219;

  --code-bg: #1b2531;
  --code-text: #cbd8e6;

  --search-bg: #141c26;
  --search-text: #e8eef6;
  --search-muted: #a9b8c9;
  --search-border: #3b4a5c;
  --search-hit-bg: #1f2b39;
  --search-hit-text: #f0f5fa;

  --crumb-bg: transparent;
  --crumb-text: #a9b8c9;
  --crumb-link: #8dc0ec;

  --diagram-bg: transparent;
  --diagram-label: #a9b8c9;
  --diagram-line: #7d8da0;
  --diagram-node-bg: #1b2531;
  --diagram-node-text: #dbe6f2;
  --diagram-node-border: #3b4a5c;
  --diagram-accent-bg: #cfe0f2;
  --diagram-accent-text: #0c1219;
  --diagram-accent-border: #cfe0f2;

  --progress-bg: #2a3644;
  --progress-fill: #4f92cc;
  --totop-bg: #e8eef6;
  --totop-text: #0c1219;
  --skip-bg: #2b6fb0;
  --skip-text: #ffffff;
  --error-bg: #0c1219;
  --error-text: #e8eef6;
  --error-muted: #a9b8c9;

  --shadow-s: 0 1px 2px rgba(0, 0, 0, 0.4);
  --shadow-m: 0 2px 6px rgba(0, 0, 0, 0.45), 0 8px 24px rgba(0, 0, 0, 0.35);
  --shadow-l: 0 8px 32px rgba(0, 0, 0, 0.55);
}
