/* Извлечено из admin.html <style> (шаг 9 плана Астры, 11.09.2026) — переменные
   и палитры, ничего больше. Порядок подключения важен: до components.css. */

  :root {
    /* v111 (09.09.2026) — шкала шрифтов (аудит графического дизайна, P1
       п.6). Было 19-20 разных px-размеров, включая половинные шаги
       (9.5/10.5/11.5/12.5/13.5/14.5/19.5px) — механически округлены до 8
       ступеней ниже, весь файл переведён на них через var(). */
    --fs-micro: 11px;    /* UPPERCASE-метки, шапки таблиц */
    --fs-caption: 12px;  /* подсказки, мета-строки */
    --fs-sm: 13px;       /* вторичный текст, мелкие кнопки */
    --fs-base: 14px;     /* основной текст, поля, таблицы */
    --fs-md: 16px;       /* заголовки карточек */
    --fs-lg: 20px;       /* заголовки разделов */
    --fs-xl: 26px;       /* крупные суммы в плитках */
    --fs-hero: 36px;     /* герой-цифра */

    /* v111 — шкала радиусов (P1 п.7). Было 16 разных значений (1px…10px
       плюс 50%/999px), включая соседние элементы одной формы, скруглённые
       на 0.5px по-разному (кнопка 4.5px рядом с полем 4px). Правило: чем
       крупнее контейнер — тем мягче угол (поле < кнопка < карточка < модалка). */
    --r-xs: 4px;    /* поля, мелкие кнопки, чипы */
    --r-sm: 6px;    /* кнопки, плитки, вкладки */
    --r-md: 8px;    /* карточки */
    --r-lg: 12px;   /* модалки, поповеры */
    --r-pill: 999px; /* пилюли */

    /* тёмная зона — сайдбар и верхние карточки сводки. Цвет задаётся через
       data-palette на <html>, значение приходит из настроек клиники (раздел
       «Клиника» → «Цвет панели»), сохраняется в БД (clinics.theme_color).

       25.09.2026 — БАЗОВЫЕ значения (без data-palette вообще) раньше были
       буквально захардкожены цифрами бежевой палитры (см. git-историю —
       те же #4a3a26/#e0ac5c и т.п., что и в :root[data-palette="beige"]
       ниже). Это создавало ложное впечатление, что "нейтральный экран без
       клиники" — это бежевая тема, а не отдельный нейтральный цвет платформы
       (комментарий в shell.js, applyClinicBrandingFromSlug(), явно говорит
       "остаёмся на нейтральном Anexis", когда slug/клиника не определены).

       Первая попытка (тем же днём) взяла цвета из старого черновика
       claude/anexis-brand-identity.md (тёмно-синий/коралл) — пользователь
       поправил: по умолчанию (без выбранной клиники) должен быть ЗЕЛЁНЫЙ,
       как на самом сайте anexis.uz (маркетинговый лендинг) — там тёмный
       фон с зеленью #0e1a19/#132b25 и мятный акцент #a9d6c7/#57b3a6, а не
       синий/коралл из черновика (тот дизайн лендинга не отражён, устарел).
       Ниже — значения из уже существующей и проверенной на контраст палитры
       клиники :root[data-palette="darkgreen"] (та же зелёная гамма, что и
       на лендинге), а не новые самодельные — переиспользование готовой,
       уже аудированной темы безопаснее, чем считать контраст с нуля.
       Реальные клиники это не затрагивает: у них data-palette выставляется
       явно (см. applyClinicBrandingFromSlug()/applyThemeColor()) почти
       сразу после первой отрисовки. */
    --dark-bg: #223a2b;
    --dark-bg-soft: #2c4735;
    --dark-text: #f0f6ec;
    --dark-border: rgba(240,246,236,0.12);

    --accent: #6fb59a;
    --accent-strong: #4f9982;
    --accent-ink: #0f2016;

    /* 25.09.2026 — раньше не было базового значения ВООБЩЕ (--action-bg
       объявлялся только внутри каждого :root[data-palette=...] блока ниже),
       поэтому кнопка входа (.login-submit, background:var(--action-bg))
       без выбранной палитры оставалась без фона — белый текст (--action-fg)
       на светлой карточке, кнопка визуально пропадала. Базовое значение —
       та же зелёная гамма, что и выше (см. комментарий). */
    --action-bg: #38654d;
    --action-hover: #2b513c;
    --selection-bg: #dfebdd;
    --border-control: #829576;

    /* v111 (09.09.2026) — аудит графического дизайна (Opus), P0: было 58%,
       давало 3.26–4.44:1 в beige/blue/cream (неактивные пункты меню
       пропадали). 72% проходит WCAG AA (4.5:1) во всех 7 палитрах. */
    --dark-text-soft: color-mix(in srgb, var(--dark-text) 72%, var(--dark-bg));

    /* светлая зона — обычные карточки/таблицы/модалки, не зависит от палитры */
    --paper: #faf7f0;
    --card: #fffdf8;
    --border: #ece0c9;
    --ink: #3a2f24;
    --ink-soft: #7c6b54;
    /* v111 — было #ab9b7d (2.68:1 на --card, ниже нормы 4.5:1 везде, где
       используется как текст: подсказки, шапки таблиц). Новое значение
       даёт ≥4.5:1 в обеих палитрах, которые берут этот цвет из :root
       (beige и cream — см. комментарий у их блоков ниже). */
    --ink-faint: #827254;

    /* смысловые цвета данных — фиксированы, не зависят от выбранной палитры.
       v111 — добавлены "-ink" варианты: money-good/bad/info/warn остаются
       маркерами (заливка графиков/полосок/точек, где нужен яркий цвет), а
       -ink версии — для ТЕКСТА (пилюли статусов, button.danger, суммы),
       потому что маркерные цвета на своей же -soft подложке давали
       2.4–3.5:1 (ниже нормы 4.5:1 для мелкого текста). -soft подложки не
       меняются, меняется только `color:` в местах, где эти токены красят
       текст, а не заливку/обводку. */
    --money-good: #5f9d6c;  --money-good-soft: #e5f0e3;  --money-good-ink: #467450;
    --money-bad: #cf6259;   --money-bad-soft: #f7e3e0;   --money-bad-ink: #b43e34;
    --money-info: #6f74b8;  --money-info-soft: #e6e6f4;  --money-info-ink: #5a5fad;
    --money-warn: #c98a3f;  --money-warn-soft: #f5e9d5;  --money-warn-ink: #8d5f28;

    /* v111 — тени сведены к трём тонированным (P1 п.8). Раньше были
       захардкожены под цвет бежевой темы (rgba(58,47,36,…)) — в остальных
       6 палитрах тень всё равно оставалась коричневатой. color-mix с
       var(--ink) даёт правильный оттенок в любой палитре. */
    --shadow-sm: 0 1px 2px color-mix(in srgb, var(--ink) 8%, transparent);
    --shadow-md: 0 16px 30px -16px color-mix(in srgb, var(--ink) 28%, transparent),
                 0 3px 8px color-mix(in srgb, var(--ink) 10%, transparent);
    --shadow-lg: 0 24px 48px -24px color-mix(in srgb, var(--ink) 40%, transparent);

    --font-heading: "Nunito", Arial, "Helvetica Neue", sans-serif;
    --font-body: Arial, "Helvetica Neue", "Segoe UI", sans-serif;

    /* v113 (09.09.2026) — шкала отступов (аудит графического дизайна, P2
       п.12). Было 17 разных значений gap (2px…24px), большинство соседних
       неразличимы на глаз (2/3/4/5, 6/7/8/9). Шаг 4, семь ступеней. */
    --sp-1: 4px; --sp-2: 8px; --sp-3: 12px; --sp-4: 16px;
    --sp-5: 20px; --sp-6: 24px; --sp-8: 32px;

    /* v113 — три веса шрифта вместо шести (P2 п.13). Было 700×41, 800×37,
       600×14, плюс единичные 900 и 500 — расставлены не по смыслу, а
       вперемешку. 800/900 слиты в --fw-bold, 500 — в --fw-medium. */
    --fw-normal: 400;
    --fw-medium: 600;
    --fw-bold: 700;

    /* v113 — токен для явной высоты элементов управления (P2 п.14),
       ПОКА НЕ ПРИМЕНЁН. Причина: базовый `button {}` в файле — не
       единственный размер кнопки, есть `button.small` (5px/10px паддинг)
       и другие компактные варианты, которые не переопределяют height —
       если добавить height:var(--control-h) в базовый `button`, они
       унаследуют 36px и перестанут быть маленькими (проверено при
       попытке применить — button.small сломался бы). Нужен отдельный
       проход по всем компактным вариантам кнопок/полей, не сделан. */
    --control-h: 36px;

    /* v113 — прикладной цвет одонтограммы вынесен в токен (P2 п.18, частично).
       #8a6fb8 (имплант) использовался как голый hex в CSS в двух местах —
       теперь один токен. JS-объекты (карты цветов статусов зуба для рендера
       легенды/пилюль) намеренно не тронуты — это данные, а не стили, перевод
       на var() потребовал бы getComputedStyle в JS; вне текущего объёма. */
    --tooth-implant: #8a6fb8;

    /* v135 — токены из дизайн-предложения Астры (11.09.2026), слой 1
       («только токены», без изменения текущего вида — см. project doc
       claude/tdi-clinic-astra-mockup-*.md). Пока НИГДЕ не используются в
       существующих селекторах ниже — добавлены, чтобы будущие экраны могли
       на них ссылаться, сами по себе визуально ничего не меняют. */
    --tooth-implant-ink: #65458b;
    --tooth-crown: #c28a3e;
    --tooth-crown-ink: #815a24;
    --tooth-missing: #74695f;
    --tooth-missing-ink: #574f48;

    --control-h-sm: 28px;
    --control-h-touch: 44px;
    --row-h: 56px;
    --sidebar-w: 224px;
    --calendar-hour-h: 96px;

    --font-brand: "Manrope", var(--font-heading);
    --action-fg: #ffffff;
    --focus: #0b2a4a;

    --avatar-1-bg: #e5f0e3; --avatar-1-ink: #467450;
    --avatar-2-bg: #e6e6f4; --avatar-2-ink: #5a5fad;
    --avatar-3-bg: #f5e9d5; --avatar-3-ink: #8d5f28;
    --avatar-4-bg: #f7e3e0; --avatar-4-ink: #b43e34;

    --brand-navy: #0b2a4a; --brand-coral: #e86054; --brand-coral-dark: #ff8770;
    --brand-paper: #f7f5f1; --brand-night: #0e1f35; --brand-on-night: #f5f7fa;

    --motion-fast: 120ms;
    --motion-base: 180ms;
  }

  /* v135 — Onest (текст интерфейса) и Manrope (бренд-надпись «Anexis»),
     самостоятельно захостены как woff2 (переменные шрифты, все начертания
     в одном файле — 84 КБ и 54 КБ). Лицензия OFL — файлы лицензий
     web/fonts/OFL-Onest.txt и web/fonts/OFL-Manrope.txt. Пока НЕ подключены
     как --font-body/--font-heading (это видимое изменение типографики —
     решаем отдельно, при переносе конкретных экранов), только объявлены. */
  /* url() в CSS-файле считается от ПОЛОЖЕНИЯ ЭТОГО ФАЙЛА (web/css/), а не
     от admin.html — поэтому "../fonts/..." вместо "fonts/...", как было в
     инлайновом <style> внутри admin.html (11.09.2026, шаг 9 плана Астры). */
  @font-face { font-family: "Onest"; src: url("../fonts/Onest.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }
  @font-face { font-family: "Manrope"; src: url("../fonts/Manrope.woff2") format("woff2"); font-weight: 100 900; font-style: normal; font-display: swap; }

  /* Бежевый и коричневый — без изменений, используют общие --paper/--card/--border/--ink из :root выше
     (--ink-faint уже поднят там же, v111). */
  :root[data-palette="beige"]     { --dark-bg: #4a3a26; --dark-bg-soft: #5a4830; --accent: #e0ac5c; --accent-strong: #c28a3e; --accent-ink: #2a1c0d;
    /* v135 (Астра) — новые роли, слой 1, ничем пока не используются: */
    --action-bg: #805b43; --action-hover: #694a36; --selection-bg: #eee3d9; --border-control: #9b8878;
    --nav-bg: #382d27; --nav-ink: #f6eee8; --nav-muted: #d1c1b5; }
  /* v111 — акцент был #a97c3c: белый текст кнопки на нём давал 3.52:1, а
     активный пункт меню — 2.85:1 (норма 4.5 и 3.0). Кремовая была
     единственной палитрой, где не читалась основная кнопка. Новое значение
     темнее — 4.60:1 и 3.72:1 соответственно. */
  :root[data-palette="cream"]     { --dark-bg: #ece0c5; --dark-bg-soft: #e3d4ac; --dark-text: #3a2f1f; --dark-border: rgba(58,47,31,0.14); --accent: #916a33; --accent-strong: #7a5829; --accent-ink: #fdf8ef;
    --action-bg: #805d2f; --action-hover: #694a25; --selection-bg: #eee4d1; --border-control: #998568;
    --nav-bg: #f0e9db; --nav-ink: #3a3024; --nav-muted: #736049; }

  /* Остальные палитры — у каждой свой фон страницы/карточки/текст (--paper/--card/--border/--ink*),
     а не общий тёплый бежевый. "green" заменён на тёмно-синий (новый цвет, не оттенок).
     --ink-faint у каждой поднят в v111 — было 2.5–3.1:1 на --card, стало ≥4.5:1. */
  :root[data-palette="green"]     { --dark-bg: #1e3346; --dark-bg-soft: #28425a; --dark-text: #eef5f5; --dark-border: rgba(238,245,245,0.12); --accent: #6fb8c4; --accent-strong: #4a97a4; --accent-ink: #0d1f28;
    --paper: #f2f6f6; --card: #fbfefe; --border: #d7e4e3; --ink: #223333; --ink-soft: #5c7373; --ink-faint: #607878;
    --action-bg: #326d77; --action-hover: #285862; --selection-bg: #dbebec; --border-control: #789495;
    --nav-bg: #1e3346; --nav-ink: #eef5f5; --nav-muted: #bdcdd1; }
  /* v111 — акцент был #7cc28d, почти совпадал с --money-good #5f9d6c
     (пилюля «оплачено» и кнопка «Сохранить» читались как один цвет).
     Новый акцент сдвинут в сторону бирюзы/шалфея, дальше от money-good. */
  /* v113 (09.09.2026) — граница на грани видимости (аудит, P2 п.15): --border
     на --card давал 1.26:1 в darkgreen и 1.28:1 в blue — карточки и строки
     таблиц почти растворялись. Затемнили на 3-4% в этих двух палитрах. */
  :root[data-palette="darkgreen"] { --dark-bg: #223a2b; --dark-bg-soft: #2c4735; --accent: #6fb59a; --accent-strong: #4f9982; --accent-ink: #0f2016;
    --paper: #f3f6f2; --card: #fbfdf9; --border: #d2e0cb; --ink: #263320; --ink-soft: #647a5c; --ink-faint: #64795b;
    --action-bg: #38654d; --action-hover: #2b513c; --selection-bg: #dfebdd; --border-control: #829576;
    --nav-bg: #223a2b; --nav-ink: #f0f6ec; --nav-muted: #c3d0ba; }
  :root[data-palette="blue"]      { --dark-bg: #2c4157; --dark-bg-soft: #375069; --accent: #7bb0e6; --accent-strong: #5590c9; --accent-ink: #14232f;
    --paper: #f2f5fa; --card: #fbfcfe; --border: #cfdae7; --ink: #263542; --ink-soft: #62717f; --ink-faint: #627684;
    --action-bg: #3e648b; --action-hover: #315273; --selection-bg: #e0e9f4; --border-control: #7a8ea6;
    --nav-bg: #2c4157; --nav-ink: #f1f5fa; --nav-muted: #c5d2e0; }
  /* v111 — акцент был #e79184, почти совпадал с --money-bad #cf6259
     (пилюля «долг» и кнопка «Сохранить» читались как один цвет — плохо
     именно для клиники, где красный означает «пациент должен денег»).
     Новый акцент сдвинут в терракоту/оранжевый, дальше от money-bad. */
  :root[data-palette="red"]       { --dark-bg: #55322c; --dark-bg-soft: #664036; --accent: #d98168; --accent-strong: #bf6a51; --accent-ink: #2c1611;
    --paper: #faf4f1; --card: #fffbf9; --border: #ecd9d2; --ink: #3a2621; --ink-soft: #8a6a60; --ink-faint: #916a5c;
    --action-bg: #914d37; --action-hover: #783d2a; --selection-bg: #f1dfd7; --border-control: #ac8170;
    --nav-bg: #55322c; --nav-ink: #fbf0ea; --nav-muted: #e3c6b9; }
  :root[data-palette="burgundy"]  { --dark-bg: #472530; --dark-bg-soft: #59303d; --accent: #d99cae; --accent-strong: #bd7b90; --accent-ink: #2a151b;
    --paper: #f8f3f4; --card: #fffafb; --border: #e8d6da; --ink: #382025; --ink-soft: #7d5b62; --ink-faint: #926771;
    --action-bg: #82485d; --action-hover: #69384b; --selection-bg: #eedde3; --border-control: #a67d8b;
    --nav-bg: #472530; --nav-ink: #faeff3; --nav-muted: #dfc2ce; }
