/* =============================================================
   tokens.css · Дизайн-система «АС:ВОЛГА» v4 «Сегодня» (тёплая бумага, синий акцент, мятный успех, коралловая срочность, светлое меню)
   ЕДИНСТВЕННОЕ место с hex-цветами, радиусами, тенями и шкалами.
   Источник значений: ТЗ дизайнера, docs/tz/tz2.md §2, docs/tz/pic/1.
   Слои архитектуры styles.css: tokens -> base -> layout -> components.
   ============================================================= */

/* =============================================================
   @font-face · IBM Plex Sans/Mono (D0 §3.2)
   Только local(): файлов шрифтов в проекте пока нет, ссылки url('/static/fonts/…')
   давали 404 на каждой странице и убраны. Когда файлы появятся, вернуть
   url('/static/fonts/IBMPlex….woff2') format('woff2') вторым источником.
   Без CDN и внешних запросов (CSP).
   ============================================================= */
@font-face {
  font-family: 'IBM Plex Sans';
  src:
    local('IBM Plex Sans');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: 'IBM Plex Sans';
  src:
    local('IBM Plex Sans Medium');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

@font-face {
  font-family: 'IBM Plex Sans';
  src:
    local('IBM Plex Sans SemiBold');
  font-style: normal;
  font-weight: 600;
  font-display: swap;
}

@font-face {
  font-family: 'IBM Plex Mono';
  src:
    local('IBM Plex Mono');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
}

@font-face {
  font-family: 'IBM Plex Mono';
  src:
    local('IBM Plex Mono Medium');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
}

/* Noto Sans и Noto Sans Mono: локальные файлы /static/fonts (SIL OFL 1.1, LICENSE-OFL.txt); CSP: font-src 'self'.
   Figtree и Plus Jakarta Sans из ТЗ не содержат кириллицу, поэтому основной шрифт — Noto Sans (кириллица и цифры в одном начертании). */
@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-cyrillic-400.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-latin-400.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-cyrillic-500.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-latin-500.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-cyrillic-600.woff2') format('woff2');
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-latin-600.woff2') format('woff2');
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-cyrillic-700.woff2') format('woff2');
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans';
  src: url('/static/fonts/noto-sans-latin-700.woff2') format('woff2');
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Noto Sans Mono';
  src: url('/static/fonts/noto-sans-mono-cyrillic-400.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans Mono';
  src: url('/static/fonts/noto-sans-mono-latin-400.woff2') format('woff2');
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Noto Sans Mono';
  src: url('/static/fonts/noto-sans-mono-cyrillic-500.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
}

@font-face {
  font-family: 'Noto Sans Mono';
  src: url('/static/fonts/noto-sans-mono-latin-500.woff2') format('woff2');
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
  /* ---------- База (фон, поверхности, границы, тексты) ---------- */
  --t-bg: #FCFCF8;        /* фон страницы (D0) */
  --t-surface: #FEFEFC;   /* карточки, сайдбар, топбар, таблицы */
  --t-line: #DBDBD5;      /* разделители и обычные границы (D0) */
  --t-ink: #191814;       /* основной текст, заголовки (D0) */
  --t-text: #191814;      /* основной текст (D0) */
  --t-gray: #43433C;      /* вторичный текст (D0) */
  --t-text-muted: #595851; /* третичный текст (D0) */
  --t-faint: #595851;     /* плейсхолдеры, disabled-текст, метки (D0) */

  /* ---------- 7 акцентов: насыщенный + soft-подложка ---------- */
  --t-primary: #00539B;      --t-primary-soft: #E3EEFC;  /* кнопки, активный пункт, чат «пользователь», ссылки */
  --t-violet: #6C44A4;       --t-violet-soft: #EEE7FD;   /* Анализ, drop-зона Конвертера, ИИ-функции */
  --t-teal: #00539B;         --t-teal-soft: #E3EEFC;     /* Сметы, итоговые панели */
  --t-green: #2E6B31;        --t-green-soft: #DBFBBB;    /* ТОЛЬКО статус «успех», ИИ-панель Договоров, «готово/оплачено» */
  --t-amber: #6C4302;        --t-amber-soft: #FEEDC9;    /* предупреждения, «горит», «требуют действия» */
  --t-red: #A12B42;          --t-red-soft: #FFE2E4;      /* ошибки, расхождения сверки, деструктивные действия */
  --t-blue: #00539B;         --t-blue-soft: #E3EEFC;     /* информационные бейджи; отдельный зелёный акцент убран (D0) */

  /* Контрастные уточнения */
  --t-amber-strong: #6C4302;   /* только мелкий текст на --t-amber-soft */
  --t-on-accent: #FFFFFF;      /* текст/иконка на насыщенном акценте */
  --t-primary-hover: #004383;  /* hover основной кнопки (D0) */
  --t-primary-active: #003A73; /* активная основная кнопка (D0) */
  /* Контрастные токены рамок (ТЗ §2, §4, §5) */
  --t-border: #BEBEB7;          /* стандартная рамка (линия сильнее) */
  --t-border-strong: #818179;   /* рамка полей и кнопок, hover нейтральных элементов */
  --t-line-strong: #BEBEB7;     /* рамка карточек и таблиц */
  --t-border-subtle: #DBDBD5;   /* разделитель строк */
  --t-text-secondary: #43433C;  /* вторичный текст (D0) */
  --t-focus-ring: #00539B;      /* внешний фокус */
  --t-shadow-1: 0 1px 2px rgba(23, 33, 43, 0.06);
  --t-shadow-2: 0 8px 24px rgba(23, 33, 43, 0.10);
  --t-btn-disabled-bg: #EEEEE8;
  --t-btn-disabled-border: #DBDBD5;
  --t-btn-disabled-text: #5A5A53;   /* контраст на --t-btn-disabled-bg ≈ 6:1 (WCAG AA) */
  --t-primary-line: #A2C8F0;   /* бордер на primary-soft */
  --t-secondary: #FEFEFC;              /* фон вторичной кнопки (ТЗ §5.3) */
  --t-secondary-hover: #F3F2EB;       /* hover вторичной кнопки */
  --t-secondary-active: #E8E8E0;      /* active вторичной кнопки */
  --t-surface-muted: #F3F2EB;          /* вторичные блоки, заголовки таблиц, disabled (ТЗ §2) */
  --t-error: #A12B42;                  /* ошибки и деструктивные действия (D0: единый красный) */
  --t-error-soft: #FFE2E4;             /* фон сообщения об ошибке */
  --t-green-text: #214723;     /* текст «успех» на светлом */
  --t-red-text: #882838;       /* текст «ошибка» на светлом */

  /* Производные поверхности (используются текущими шаблонами) */
  --t-surface-2: #F7F7F1;
  --t-surface-3: #F3F2EB;
  --t-line-soft: #E8E8E2;

  /* Логотип (единственное исключение на градиент в фазе) */
  --t-logo-from: #00539B;
  --t-logo-to: #00539B;

  /* Акцент рабочих действий: единый синий (D0). Зелёный остаётся
     только для статуса «успех». Градиент в default не используется. */
  --t-accent: #00539B;
  --t-accent-hover: #004383;
  --t-accent-active: #003A73;
  --t-accent-focus: #00539B;
  --t-accent-shadow: 0 1px 2px rgba(23, 33, 43, 0.12);
  --t-accent-shadow-hover: 0 2px 4px rgba(23, 33, 43, 0.16);
  --t-focus-glow: 0 0 0 3px rgba(0, 83, 155, 0.25);
  /* Совместимость с прежним именем: сплошной синий вместо градиента */
  --t-accent-gradient: #00539B;

  /* ---------- Боковое меню (тёмное) ---------- */
  --t-side-bg: #F3F2EB;
  --t-side-line: #DBDBD5;
  --t-side-text: #2B2A25;
  --t-side-muted: #595851;
  --t-side-group: #6B6A63;
  --t-side-hover: rgba(25, 24, 20, 0.06);
  --t-side-active: #C9DFFF;
  --t-side-field: #FEFEFC;
  --t-side-mark: #00539B;

  /* ---------- Тени (rgba, не hex) ---------- */
  --t-shadow-card: 0 1px 2px rgba(15, 23, 42, .04);
  --t-shadow-card-hover: 0 1px 2px rgba(15, 23, 42, .06);
  --t-shadow-drawer: 0 24px 80px -24px rgba(15, 23, 42, .35);
  --t-shadow-menu: 0 12px 40px -12px rgba(15, 23, 42, .35);
  --t-scrim: rgba(15, 23, 42, .5);
  --t-on-accent-line: rgba(255, 255, 255, .4);

  /* ---------- Типографика ---------- */
  /* Шрифты D0: IBM Plex Sans/Mono (D0 §2). Файлы поставляются позже,
     ссылки объявлены по контракту путей; внешних/CDN-запросов нет. */
  --t-font-sans: 'Noto Sans', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --t-font-heading: 'Noto Sans', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --t-font-mono: 'Noto Sans Mono', ui-monospace, 'Cascadia Mono', Consolas, monospace;
  --t-font: var(--t-font-sans); /* совместимое прежнее имя */

  --t-fs-h1: 32px;        --t-lh-h1: 1.2;         /* H1 страницы (ТЗ §3) */
  --t-fs-sub: 15px;       --t-lh-sub: 1.4;        /* подзаголовок страницы */
  --t-fs-h2: 22px;        --t-lh-h2: 1.25;        /* H2 раздела (ТЗ §3) */
  --t-fs-h3: 18px;        --t-lh-h3: 1.35;        /* H3 (ТЗ §3) */
  --t-fs-card-title: 16px; --t-lh-card-title: 1.4;/* заголовок карточки (ТЗ §3) */
  --t-fs-body: 16px;      --t-lh-body: 1.5;       /* основной текст (ТЗ §3) */
  --t-fs-label: 13px;     --t-lh-label: 1.4;      /* подпись/input label (ТЗ §3) */
  --t-fs-helper: 13px;    --t-lh-helper: 1.45;    /* вспомогательный текст (ТЗ §3) */
  --t-fs-btn: 14px;       --t-fw-btn: 600;        /* текст кнопки (ТЗ §3) */
  --t-fs-table: 14px;     --t-lh-table: 1.4;      /* табличный текст (ТЗ §3) */
  --t-fs-caption: 12.5px; --t-lh-caption: 1.4;/* caption/метаданные (D0: микротекст ≥12.5px) */
  --t-lh-tight: 1.2;      /* заголовки */
  --t-fs-meta: 12.5px;    --t-lh-meta: 16px;      /* подпись/мета (D0) */
  --t-fs-group: 12.5px;   --t-lh-group: 16px;     /* капс-группы сайдбара (D0) */
  --t-fs-badge: 12.5px;   --t-lh-badge: 16px;     /* бейджи (D0) */
  --t-fs-logo: 15px;      --t-fs-logo-mark: 14px; /* логотип: текст и буква «Т» */
  --t-fs-kbd: 12.5px;     /* «⌘K» в поиске сайдбара (D0) */

  --t-fw-regular: 400;
  --t-fw-medium: 500;
  --t-fw-semibold: 600;
  --t-fw-bold: 700;
  --t-ls-group: 0.08em;   /* letter-spacing капс-групп */
  --t-ls-th: 0.04em;      /* letter-spacing заголовков таблиц */
  --t-tt-group: uppercase; /* text-transform капс-групп */
  --t-tr: 150ms ease;     /* единый переход для будущих компонентов */
  --t-ring: 0 0 0 3px var(--t-primary-soft); /* фокус-кольцо */

  /* ---------- Семантические алиасы (без новых hex, только var()) ---------- */
  --t-success: #2E6B31;               /* успешные статусы, ТОЛЬКО успех (D0) */
  --t-success-soft: #DBFBBB;         /* фон успешного статуса (D0) */
  --t-warning: #6C4302;               /* предупреждения (D0) */
  --t-warning-soft: #FEEDC9;          /* фон предупреждения (D0) */
  --t-danger: var(--t-red);
  --t-danger-soft: var(--t-red-soft);
  --t-ai: #6C44A4;                    /* маркировка ИИ (D0) */
  --t-ai-bg: #EEE7FD;                 /* фон маркировки ИИ (D0) */
  --t-ai-soft: var(--t-ai-bg);        /* совместимое прежнее имя */
  --t-info: var(--t-sky);
  --t-info-soft: var(--t-sky-soft);
  --t-sky: var(--t-blue);    --t-sky-soft: var(--t-blue-soft); /* совместимость: прежнее имя blue-акцента */

  /* ---------- Радиусы ---------- */
  --t-r-lg: 10px;    /* карточки, панели */
  --t-r-md: 6px;     /* кнопки, инпуты, логотип */
  --t-r-sm: 5px;     /* мелкие поля и служебные элементы (ТЗ §4) */
  --t-r-pill: 999px; /* бейджи, активный пункт меню, чипы */
  /* канонические имена радиусов (ссылки на значения выше) */
  --t-radius-lg: var(--t-r-lg);
  --t-radius-md: var(--t-r-md);
  --t-radius-pill: var(--t-r-pill);

  /* ---------- Отступы (шкала ритма) ---------- */
  --t-space-1: 4px;
  --t-space-2: 8px;
  --t-space-3: 12px;
  --t-space-4: 16px;
  --t-space-5: 20px;
  --t-space-6: 24px;
  --t-space-7: 32px;
  --t-space-8: 48px;

  /* ---------- Раскладка ---------- */
  --t-sidebar-w: 248px;
  --t-topbar-h: 56px;
  --t-content-pad: 24px;   /* отступ контента по краям */
  --t-content-max: 1400px; /* максимальная ширина контентной колонки (ТЗ §4) */
  --t-nav-item-h: 32px;    /* пункт меню сайдбара (ТЗ §5) */
  --t-btn-h: 44px;         /* высота кнопки/инпута (ТЗ §5.1/§9) */
  --t-avatar: 32px;        /* аватар пользователя */
  --t-logo-size: 28px;     /* логотип-квадрат */
  --t-icon: 16px;          /* иконка пункта меню */
  --t-metric-bar: 4px;     /* цветная полоса метрик (pic/5) */
  --t-accent-bar: 3px;     /* левая цветная полоса .card--accent-* */

  /* ---------- Адаптив (ориентиры) ---------- */
  --t-bp-desktop: 1280px;
  --t-bp-tablet: 768px;
  --t-bp-mobile: 360px;
  --t-sidebar-compact: 56px; /* сайдбар-иконки на 768px */

  /* ---------- Анимации ---------- */
  --t-ease: ease;
  --t-t-fast: .15s;   /* hover-переходы */
  --t-t-drawer: .25s; /* off-canvas сайдбар (transform ease-out) */

  /* =============================================================
     Совместимые алиасы прежних имён переменных.
     Старые стили продолжают работать на новых значениях токенов.
     ============================================================= */
  --bg: var(--t-bg);
  --surface: var(--t-surface);
  --line: var(--t-line);
  --ink: var(--t-ink);
  --text: var(--t-text);
  --gray: var(--t-gray);
  --faint: var(--t-faint);
  --primary: var(--t-primary);
  --primary-soft: var(--t-primary-soft);
  /* состояния акцентной кнопки (единый контракт default/hover/active/focus) */
  --primary-hover: var(--t-primary-hover);
  --primary-active: var(--t-primary-active);
  --focus-ring: var(--t-focus-ring);
  --accent-text: var(--t-on-accent);
  --btn-disabled-bg: var(--t-btn-disabled-bg);
  --btn-disabled-text: var(--t-btn-disabled-text);
  --violet: var(--t-violet);
  --violet-soft: var(--t-violet-soft);
  --teal: var(--t-teal);
  --teal-soft: var(--t-teal-soft);
  --green: var(--t-green);
  --green-soft: var(--t-green-soft);
  --amber: var(--t-amber);
  --amber-soft: var(--t-amber-soft);
  --red: var(--t-red);
  --red-soft: var(--t-red-soft);
  --sky: var(--t-sky);
  --sky-soft: var(--t-sky-soft);
  /* нейтральные тона поверхностей (прежние surface-2/3, line-soft) */
  --surface-2: color-mix(in srgb, var(--t-bg) 60%, var(--t-surface));
  --surface-3: color-mix(in srgb, var(--t-line) 55%, var(--t-surface));
  --line-soft: color-mix(in srgb, var(--t-line) 55%, var(--t-surface));
  /* производные от primary (hover/active/линии) */
  --accent-hover: var(--t-primary-hover);
  --accent-active: color-mix(in srgb, var(--t-primary) 80%, var(--t-ink));
  --accent-line: color-mix(in srgb, var(--t-primary) 30%, var(--t-surface));
  /* тёмные варианты акцентов для мелкого текста */
  --green-text: color-mix(in srgb, var(--t-green) 80%, var(--t-ink));
  --orange-text: var(--t-amber-strong);
  --red-text: color-mix(in srgb, var(--t-red) 85%, var(--t-ink));
  /* шрифты и радиусы прежних имён */
  --font: var(--t-font);
  --font-mono: var(--t-font-mono);
  --font-heading: var(--t-font-heading);
  --radius-card: var(--t-r-lg);
  --radius-btn: var(--t-r-md);
  --radius-input: var(--t-r-md);
  --radius-pill: var(--t-r-pill);
  --shadow-card: var(--t-shadow-card);
  --shadow-pop: var(--t-shadow-pop);
  /* определение ранее использовавшихся, но не заданных токенов */
  --t-shadow-pop: 0 8px 24px rgba(23, 33, 43, 0.14);
  --gray-soft: var(--t-surface-muted);
  --fs-caption: var(--t-fs-caption);
  /* алиасы, используемые proposals.css */
  --fs-h3: var(--t-fs-h3);
  --radius-sm: var(--t-r-sm);
}

/* =============================================================
   Брендовые токены страницы входа (login.css): светлая тема.
   HEX задаются только здесь; login.css использует var(--color-*).
   ============================================================= */
:root,
:root[data-theme="light"] {
  --color-bg: #F5F7FA;
  --color-surface: #FFFFFF;
  --color-surface-raised: #FBFCFE;
  --color-surface-muted: #F1F4F8;
  --color-surface-inverse: #1E293B;
  --color-surface-inverse-2: #131C2B;
  --color-text-primary: #172033;
  --color-text-secondary: #46546A;
  --color-text-inverse: #FFFFFF;
  --color-text-inverse-secondary: #46546A;
  --color-border: #C7D0DE;
  --color-border-strong: #8D9AAF;
  --color-accent: #174EA6;
  --color-accent-hover: #0F3C85;
  --color-accent-soft: #EFF6FF;
  --color-success: #126B45;
  --color-error: #B42318;
  --color-error-soft: #FEF2F2;
  --color-warning: #7A4B00;
  --color-warning-soft: #FFFBEB;
  --color-focus-ring: rgba(23, 78, 166, 0.25);
  --login-shadow-card: 0 1px 2px rgba(16, 24, 40, 0.04), 0 8px 24px rgba(16, 24, 40, 0.08);
  /* Полоса компактной «спецификации» Стеллажа: свои токены, чтобы фон и
     текст не зависели от темы карточек (контраст ≥ 4.5:1 в обеих темах).
     Тёмные значения задаются в блоках тёмной темы ниже. */
  --shelf-spec-bg: #FFFFFF;
  --shelf-spec-ink: #172033;
}

/* Шкала отступов (общая для обеих тем, не переопределяется в темах) */
:root {
  --space-1: 4px;
  --space-2: 8px;
  --space-3: 12px;
  --space-4: 16px;
  --space-5: 24px;
  --space-6: 32px;
  --space-7: 48px;
}

/* =============================================================
   Брендовые токены страницы входа (login.css): тёмная тема.
   ============================================================= */
:root[data-theme="dark"] {
  --color-bg: #0B1220;
  --color-surface: #111B2E;
  --color-surface-raised: #17233A;
  --color-surface-muted: #1B2740;
  --color-surface-inverse: #F5F7FA;
  --color-surface-inverse-2: #FFFFFF;
  --color-text-primary: #F2F5FA;
  --color-text-secondary: #C3CCDB;
  --color-text-inverse: #0B1220;
  --color-text-inverse-secondary: #0B1220;
  --color-border: #3A465C;
  --color-border-strong: #64748B;
  --color-accent: #72A7FF;
  --color-accent-hover: #A8C7FF;
  --color-accent-soft: #1B2E4D;
  --color-success: #62D6A4;
  --color-error: #FF8A80;
  --color-error-soft: #3A1D1D;
  --color-warning: #FBBF24;
  --color-warning-soft: #3A2E13;
  --color-focus-ring: rgba(59, 130, 246, 0.35);
  --login-shadow-card: 0 1px 2px rgba(0, 0, 0, 0.6), 0 8px 24px rgba(0, 0, 0, 0.5);
  --shelf-spec-bg: #111B2E;
  --shelf-spec-ink: #F2F5FA;
}

@media (prefers-color-scheme: dark) and (min-width: 99999px) {
  :root:not([data-theme="light"]) {
    color-scheme: dark;
    --color-bg: #0B1220;
    --color-surface: #111B2E;
    --color-surface-raised: #17233A;
    --color-surface-muted: #1B2740;
    --color-surface-inverse: #F5F7FA;
    --color-surface-inverse-2: #FFFFFF;
    --color-text-primary: #F2F5FA;
    --color-text-secondary: #C3CCDB;
    --color-text-inverse: #0B1220;
    --color-text-inverse-secondary: #0B1220;
    --color-border: #3A465C;
    --color-border-strong: #64748B;
    --color-accent: #72A7FF;
    --color-accent-hover: #A8C7FF;
    --color-accent-soft: #1B2E4D;
    --color-success: #62D6A4;
    --color-error: #FF8A80;
    --color-error-soft: #3A1D1D;
    --color-warning: #F4C15D;
    --color-warning-soft: #3A2E13;
    --color-focus-ring: rgba(114, 167, 255, 0.35);
    --login-shadow-card: 0 1px 2px rgba(0, 0, 0, 0.6), 0 8px 24px rgba(0, 0, 0, 0.5);
    --shelf-spec-bg: #111B2E;
    --shelf-spec-ink: #F2F5FA;
  }
}

/* =============================================================
   Компоненты: кнопки (единый контракт .btn / .btn-accent / .btn-secondary)
   ============================================================= */

.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 18px;
  border: 1px solid var(--t-border-strong);
  border-radius: var(--t-r-md);
  background: var(--t-surface);
  color: var(--t-ink);
  font: 600 14px/1.2 var(--t-font);
  white-space: nowrap;
  cursor: pointer;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.btn:hover {
  background: var(--t-secondary-hover);
  border-color: var(--t-text-secondary);
}

.btn:active {
  background: var(--t-border-subtle);
  border-color: var(--t-text-secondary);
}

.btn:focus-visible {
  outline: 2px solid var(--t-focus-ring);
  outline-offset: 2px;
  box-shadow: var(--t-focus-glow);
}

.btn:disabled,
.btn[aria-disabled="true"] {
  background: var(--t-btn-disabled-bg);
  color: var(--t-btn-disabled-text);
  border-color: var(--t-btn-disabled-border);
  opacity: 1;
  cursor: not-allowed;
}

/* Акцентная кнопка: градиент в default, сплошной контрастный фон в hover/active */
.btn-accent {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 18px;
  border: 1px solid transparent;
  border-radius: var(--t-r-md);
  background: var(--t-accent);
  color: #FFFFFF;
  font: 600 var(--t-fs-btn)/1.2 var(--t-font-sans);
  white-space: nowrap;
  cursor: pointer;
  box-shadow: var(--t-accent-shadow);
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.btn-accent:hover {
  background: var(--t-accent-hover);
  border-color: var(--t-accent-hover);
  color: #FFFFFF;
  box-shadow: var(--t-accent-shadow-hover);
}

.btn-accent:active {
  background: var(--t-accent-active);
  border-color: var(--t-accent-active);
  color: #FFFFFF;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.18);
}

.btn-accent:focus-visible {
  outline: 3px solid var(--t-accent-focus);
  outline-offset: 2px;
  box-shadow: var(--t-focus-glow);
  color: #FFFFFF;
}

.btn-accent:disabled,
.btn-accent[aria-disabled="true"],
.btn-accent.proposals-action--disabled {
  background: var(--t-btn-disabled-bg);
  border-color: var(--t-btn-disabled-border);
  color: var(--t-btn-disabled-text);
  box-shadow: none;
  opacity: 1;
  cursor: not-allowed;
}

/* Вторичная кнопка: светлая поверхность и тёплая рамка, hover — лёгкая подложка */
.btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  min-height: 44px;
  padding: 10px 18px;
  border: 1px solid var(--t-border-strong);
  border-radius: var(--t-r-md);
  background: var(--t-secondary);
  color: var(--t-ink);
  font: 600 14px/1.2 var(--t-font);
  white-space: nowrap;
  cursor: pointer;
  transition: background 120ms ease, color 120ms ease, border-color 120ms ease, box-shadow 120ms ease;
}

.btn-secondary:hover {
  background: var(--t-secondary-hover);
  border-color: var(--t-text-secondary);
  color: var(--t-ink);
}

.btn-secondary:active {
  background: var(--t-secondary-active);
  border-color: var(--t-text-secondary);
  color: var(--t-ink);
}

.btn-secondary:focus-visible {
  outline: 2px solid var(--t-focus-ring);
  outline-offset: 2px;
  box-shadow: var(--t-focus-glow);
}

.btn-secondary:disabled,
.btn-secondary[aria-disabled="true"] {
  background: var(--t-btn-disabled-bg);
  color: var(--t-btn-disabled-text);
  border-color: var(--t-btn-disabled-border);
  opacity: 1;
  cursor: not-allowed;
}

/* ============================================
   D1b — токены страницы входа «АС:ВОЛГА»
   Значения зафиксированы по итогам браузерной приёмки:
   контраст всех пар «текст/фон» ≥ 4.5:1 в обеих темах.
   ============================================ */

/* Плейсхолдер — отдельный токен (полупрозрачный основной цвет запрещён). */
:root,
:root[data-theme="light"] {
  --color-text-placeholder: #4b5b76;
  --login-panel-bg: #131c2b;
  --login-panel-bg-2: #0c1421;
  --login-panel-text: #ffffff;
  --login-panel-text-muted: #a8b6cc;
  --login-panel-accent: #8eabfb;
  --login-panel-on-accent: #08101f;
}

:root[data-theme="dark"] {
  --color-text-placeholder: #a8b6cc;
  --login-panel-bg: #0b1220;
  --login-panel-bg-2: #101b30;
  --login-panel-text: #f2f5fa;
  --login-panel-text-muted: #a8b6cc;
  --login-panel-accent: #8eabfb;
  --login-panel-on-accent: #08101f;
}

/* Единая шкала отступов страницы входа (дефект 5 «отступы неравномерны»):
   заголовок → подзаголовок → поля ступенями общей шкалы. */
:root {
  --login-space-heading: var(--space-3);
  --login-space-subheading: var(--space-6);
  --login-space-field: var(--space-4);
}

@media (prefers-color-scheme: dark) and (min-width: 99999px) {
  :root:not([data-theme="light"]) {
    --color-text-placeholder: #a8b6cc;
    --login-panel-bg: #0b1220;
    --login-panel-bg-2: #101b30;
    --login-panel-text: #f2f5fa;
    --login-panel-text-muted: #a8b6cc;
    --login-panel-accent: #8eabfb;
    --login-panel-on-accent: #08101f;
  }
}
