/* core.css — СОБРАНО scripts/build-css.py из: src/fonts.css, css/base.css, src/theme.css. Не править руками: правьте исходники и запускайте скрипт. */

/* ===== src/fonts.css ===== */
/**
 * Шрифты движка — только локальные файлы темы (никаких обращений к Google Fonts).
 * Inter (переменный, латиница + кириллица + греческий) для текста и заголовков.
 * Сайт может заменить: скопируйте файл в корень сайта рядом с index.php (официальный способ Mercury).
 */
@font-face {
  font-family: "Inter";
  font-style: normal;
  font-weight: 100 900;
  font-display: swap;   /* шрифт свой и предзагружается (includes/preload.twig); чтобы подмена не сдвигала текст, запасной шрифт подогнан под метрики Inter (ниже) */
  src: url(../../fonts/Inter/InterVariable.woff2) format("woff2");
}

/* Запасной шрифт с метриками Inter: пока Inter не загрузился, текст занимает то же место, и подмена не сдвигает страницу (сдвиг макета). */
@font-face {
  font-family: "Inter Fallback";
  src: local("Arial"), local("Helvetica"), local("Liberation Sans");
  size-adjust: 107.4%;
  ascent-override: 90.2%;
  descent-override: 22.5%;
  line-gap-override: 0%;
}


/* ===== css/base.css ===== */
/**
 * @file base.css — базовая типографика и ритм движка (то, что Tailwind-сброс Mercury обнуляет и не возвращает).
 *
 * Зачем файл. Скомпилированный CSS Mercury (build/main.min.css) начинается со «сброса» Tailwind: у заголовков нет размера,
 * у абзацев и списков — отступов и маркеров, у таблиц и цитат — вида. Возвращают это только классы-утилиты внутри
 * собственных компонентов Mercury. Всё, что выводят Views, поля и текстовые форматы Drupal (обычная разметка без классов),
 * без этого файла плоское. Здесь — единая основа для такой разметки.
 *
 * Как устроено. Всё внутри `@layer base`: слой ниже утилит Tailwind (компоненты Mercury с классами не меняются)
 * и выше сброса (наши правила его перебивают). Размеры, цвета, радиусы, ритм — только через токены (src/theme.css:
 * --ee-*, --foreground, --border и др.): сайт меняет токены, а не этот файл. Правила «по компонентам» (карточки, шапка,
 * шторки, формы заявок) — в css/engine.css и components/*; они не в слое и выигрывают у этого файла.
 * Область применения: main, подвал и класс .ee-prose; тело меню и шапки не затрагивается.
 */
@layer base {
  /* ---------- страница ---------- */
  html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }   /* scrollbar-gutter: stable уже стоит в engine.css (найдено при проверке — не дублирую) */
  body {
    margin: 0;   /* НАЙДЕНО 2026-09-29 при подгонке 4-колоночной сетки: браузерный дефолт 8px по бокам никогда не
                    обнулялся здесь (обнулял Tailwind-сброс Mercury, убран 2026-09-27 как источник 404 — вместе
                    с ним пропал и этот сброс, base.css восстанавливал типографику, но не базовый reset margin/
                    box-sizing). Раньше незаметно (контейнеры всегда были у́же вьюпорта с запасом), проявилось
                    только когда сетка карточек придвинулась вплотную к ширине экрана — съедало 16px без следа. */
    font-family: var(--font-body);
    font-size: var(--ee-text);
    line-height: var(--ee-leading);
    color: var(--foreground);
    background: var(--background);
    overflow-wrap: break-word;
    text-rendering: optimizeLegibility;
  }
  ::selection { background: var(--accent); color: var(--accent-foreground); }
  main { display: block; min-width: 0; }
  .ee-container { max-width: var(--ee-container); margin-inline: auto; padding-inline: var(--ee-gutter); }
  .ee-section { position: relative; margin-block: var(--ee-section-gap); }
  .ee-section--tight { margin-block: calc(var(--ee-section-gap) / 2); }
  /* фон секции (картинка) — только позиционирование, не задевает раскладку колонок (--ee-section__grid намеренно
     не стилизован: та самая многоколоночная сетка, что уже один раз конфликтовала со старой вёрсткой, см. decisions.md
     — оставлена простым блоком, безопасный откат, а не повторная попытка общей сетки). */
  .ee-section__bg { position: absolute; inset: 0; z-index: 0; overflow: hidden; }
  .ee-section__bg img { display: block; width: 100%; height: 100%; object-fit: cover; }
  .ee-section > .ee-container { position: relative; z-index: 1; }

  /* ---------- заголовки ---------- */
  main :is(h1, h2, h3, h4, h5, h6), footer :is(h1, h2, h3, h4, h5, h6), .ee-prose :is(h1, h2, h3, h4, h5, h6) {
    font-family: var(--ee-font-heading, var(--font-sans));
    font-weight: var(--ee-heading-weight);
    line-height: var(--ee-heading-leading);
    letter-spacing: -0.01em;
    text-wrap: balance;
    color: var(--foreground);
    margin-block: 1.6em 0.5em;
    scroll-margin-top: calc(var(--ee-header-height) + 1rem);
  }
  main h1, .ee-prose h1 { font-size: var(--ee-h1); letter-spacing: -0.02em; }
  main h2, footer h2, .ee-prose h2 { font-size: var(--ee-h2); letter-spacing: -0.015em; }
  main h3, footer h3, .ee-prose h3 { font-size: var(--ee-h3); }
  main h4, footer h4, .ee-prose h4 { font-size: var(--ee-h4); }
  main h5, footer h5, .ee-prose h5 { font-size: var(--ee-h5); }
  main h6, footer h6, .ee-prose h6 { font-size: var(--ee-h6); text-transform: uppercase; letter-spacing: 0.06em; color: var(--muted-foreground); }
  :is(main, footer, .ee-prose) :is(h1, h2, h3, h4, h5, h6):first-child { margin-top: 0; }
  :is(h1, h2, h3, h4, h5, h6) + :is(h1, h2, h3, h4, h5, h6) { margin-top: 0.5em; }
  /* заголовок единственный в обёртке-шапке секции (Canvas: <header class="mb-6…">): отступ задаёт обёртка */
  :is(main, footer) header > :is(h1, h2, h3, h4, h5, h6):only-child { margin: 0; }

  /* Малая надпись-рубрика над заголовком секции и подзаголовок (как «eyebrow» в макете) */
  .ee-eyebrow { display: block; margin: 0 0 0.5rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--primary); }
  .ee-section-head { max-width: 40rem; margin: 0 0 clamp(1.25rem, 1rem + 1.2vw, 2rem); }
  .ee-section-head > :is(h1, h2, h3) { margin: 0; }
  .ee-section-head > p { margin: 0.5rem 0 0; color: var(--muted-foreground); font-size: 1.0625rem; }
  .ee-lead, .ee-text-lead { font-size: 1.1875rem; line-height: 1.55; color: var(--muted-foreground); }
  .ee-text-meta { font-size: 0.875rem; color: var(--muted-foreground); }
  /* модификаторы выравнивания/цвета компонентов Canvas «Заголовок»/«Текст» (components/heading,text): найдены QA-агентом
     как безымянные классы после восстановления этих 2 компонентов из 0ddd236 (нужны, чтобы grep «ноль mercury» не ломал
     рендер, см. pm/decisions.md) — без токенов отменённой системы оформления, только уже существующие переменные темы. */
  .ee-heading--center { text-align: center; }
  .ee-heading--right { text-align: right; }
  .ee-text--primary { color: var(--primary); }
  .ee-text--accent { color: var(--ee-btn-accent); }
  .ee-text--muted { color: var(--muted-foreground); }
  .ee-text--inverted { color: var(--background); }

  /* ---------- текст: то, что пишет редактор и выводят поля (без классов) ---------- */
  :is(.ee-prose, .field__item, .field-content, .text-formatted, .font-body, .view-header, .view-footer, .view-empty, .messages) p {
    margin-block: 0 var(--ee-space);
  }
  :is(.ee-prose, .field__item, .field-content, .text-formatted, .font-body) > :is(p, ul, ol, dl, blockquote):last-child { margin-bottom: 0; }
  :is(.ee-prose, .text-formatted, .field--type-text-long .field__item, .field--type-text-with-summary .field__item, .layout-content .font-body) > :is(p, ul, ol, dl, blockquote, h2, h3, h4, h5, h6) { max-width: var(--ee-measure); }
  strong, b { font-weight: 700; }
  small, .ee-small { font-size: 0.875rem; }
  mark { background: var(--accent); color: var(--accent-foreground); padding: 0 0.2em; border-radius: 0.2em; }
  abbr[title] { text-decoration: underline dotted; text-underline-offset: 0.2em; cursor: help; }
  sub, sup { font-size: 0.75em; line-height: 0; }
  :is(main, footer, .ee-prose) a:not([class]) { text-decoration: underline; text-decoration-thickness: 1px; }
  :is(main, footer, .ee-prose) a:not([class]):hover { text-decoration-thickness: 2px; }

  /* ---------- списки (у «классных» списков — меню, пагинация, чипы — сброс остаётся) ---------- */
  :is(main, footer, .ee-prose) :is(ul, ol):not([class]) { margin-block: 0 var(--ee-space); padding-left: 1.4em; }
  :is(main, footer, .ee-prose) ul:not([class]) { list-style: disc; }
  :is(main, footer, .ee-prose) ol:not([class]) { list-style: decimal; }
  :is(main, footer, .ee-prose) :is(ul, ol):not([class]) :is(ul, ol):not([class]) { margin-block: 0.35em 0; }
  :is(main, footer, .ee-prose) ul:not([class]) ul:not([class]) { list-style: circle; }
  :is(main, footer, .ee-prose) ul:not([class]) ul:not([class]) ul:not([class]) { list-style: square; }
  :is(main, footer, .ee-prose) :is(ul, ol):not([class]) > li { margin-bottom: 0.35em; padding-left: 0.2em; }
  :is(main, footer, .ee-prose) li::marker { color: var(--muted-foreground); }
  :is(main, footer, .ee-prose) dl:not([class]) { margin-block: 0 var(--ee-space); }
  :is(main, footer, .ee-prose) dl:not([class]) dt { font-weight: 700; margin-top: 0.75em; }
  :is(main, footer, .ee-prose) dl:not([class]) dd { margin: 0.15em 0 0; color: var(--muted-foreground); }

  /* ---------- цитата, линия, код ---------- */
  :is(main, footer, .ee-prose) blockquote:not([class]) {
    margin: 1.75rem 0; padding: 0.25rem 0 0.25rem 1.25rem; border-left: 4px solid var(--primary);
    font-size: 1.1875rem; line-height: 1.55; color: var(--foreground); font-style: italic;
  }
  :is(main, footer, .ee-prose) blockquote > :last-child { margin-bottom: 0; }
  :is(main, footer, .ee-prose) blockquote cite, :is(main, footer, .ee-prose) blockquote footer { display: block; margin-top: 0.5rem; font-size: 0.875rem; font-style: normal; color: var(--muted-foreground); }
  :is(main, footer, .ee-prose) hr { margin-block: 2rem; border: 0; border-top: 1px solid var(--border); height: 0; }
  code, kbd, samp, pre { font-family: var(--font-mono); font-size: 0.9em; }
  :not(pre) > code, kbd, samp { padding: 0.12em 0.4em; border-radius: 0.35em; background: var(--muted); border: 1px solid var(--border); }
  kbd { box-shadow: 0 1px 0 var(--border); font-weight: 600; }
  pre {
    margin-block: 0 var(--ee-space); padding: 1rem 1.15rem; overflow-x: auto; max-width: 100%;
    background: var(--muted); border: 1px solid var(--border); border-radius: var(--radius); line-height: 1.5; tab-size: 2;
  }
  pre code { padding: 0; background: none; border: 0; font-size: inherit; }

  /* ---------- картинки и подписи ---------- */
  :is(main, footer, .ee-prose) img, :is(main, footer, .ee-prose) video { max-width: 100%; height: auto; }
  :is(.ee-prose, .field__item, .text-formatted, .font-body) :is(img, video):not([class]) { border-radius: var(--radius); }
  :is(main, footer, .ee-prose) figure { margin: 1.5rem 0; max-width: 100%; }
  :is(main, footer, .ee-prose) figure img { display: block; }
  :is(main, footer, .ee-prose) figcaption { padding-top: 0.5rem; font-size: 0.875rem; color: var(--muted-foreground); }

  /* ---------- таблицы: границы, зебра, прокрутка на узких экранах ---------- */
  :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) {
    width: 100%; margin-block: 1.5rem; border-collapse: collapse; font-size: 0.9375rem;
  }
  /* на узких экранах таблица прокручивается сама (обёртки в разметке Drupal нет) */
  @media (max-width: 47.99rem) {
    :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) { display: block; max-width: 100%; overflow-x: auto; }
  }
  :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) :is(th, td) { padding: 0.65rem 0.9rem; text-align: left; vertical-align: top; border-bottom: 1px solid var(--border); }
  :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) thead th { background: var(--muted); border-bottom: 1px solid var(--input); font-weight: 700; white-space: nowrap; }
  :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) tbody tr:nth-child(even) { background: color-mix(in oklab, var(--muted) 55%, transparent); }
  :is(.ee-prose, .field__item, .text-formatted, .font-body, .view-content, .view-header) table:not(.ee-table) caption { caption-side: top; padding: 0 0 0.5rem; text-align: left; font-weight: 700; }

  /* ---------- формы: подписи, поля, состояния (основа полей и кнопки — в engine.css) ---------- */
  fieldset { margin: 0 0 1.25rem; padding: 1rem 1.15rem 0.5rem; border: 1px solid var(--border); border-radius: var(--radius); min-width: 0; }
  legend { padding: 0 0.5rem; font-weight: 700; }
  fieldset.form-composite > legend, fieldset > legend.fieldset-legend { font-size: 1rem; }
  input, select, textarea, button { font: inherit; color: inherit; }
  select { appearance: none; padding-right: 2.5rem; }   /* стрелка списка — в engine.css (там фон полей, вне слоя) */
  textarea { resize: vertical; }
  input::placeholder, textarea::placeholder { color: var(--muted-foreground); opacity: 1; }
  input[type="file"] { max-width: 100%; }
  input:hover:not(:disabled):not(:focus), select:hover:not(:disabled):not(:focus), textarea:hover:not(:disabled):not(:focus) { border-color: var(--foreground); }
  input:disabled, select:disabled, textarea:disabled, button:disabled, .is-disabled { opacity: 0.55; cursor: not-allowed; background-color: var(--muted); }
  input.error, select.error, textarea.error, [aria-invalid="true"] { border-color: var(--ee-danger); box-shadow: 0 0 0 1px var(--ee-danger); }
  .form-item--error-message, .form-item__error-message, .error-message { margin-top: 0.35rem; font-size: 0.875rem; color: var(--ee-danger); font-weight: 600; }
  .form-item__label.has-error, label.error { color: var(--ee-danger); }
  .form-item .description, .form-item__description { margin-top: 0.3rem; }
  .form-actions { display: flex; flex-wrap: wrap; gap: 0.75rem; align-items: center; margin-top: 1.25rem; }
  .form-actions .button, .form-actions input[type="submit"] { margin: 0; }
  /* кнопки: основная (по умолчанию в engine.css), вторичная, контурная, опасная */
  /* вторая и контурная кнопки — css/buttons.css */
  .button--danger, .ee-btn--danger { background: var(--ee-danger) !important; color: var(--destructive-foreground) !important; }
  .button:disabled, input[type="submit"]:disabled, .button.is-disabled { filter: none; transform: none; }

  /* ---------- аккордеон: details / summary ---------- */
  :is(main, footer, .ee-prose) details:not([class]) { margin: 0 0 0.6rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--background); }
  :is(main, footer, .ee-prose) details:not([class]) > summary { cursor: pointer; padding: 0.85rem 1.1rem; font-weight: 600; list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
  :is(main, footer, .ee-prose) details:not([class]) > summary::-webkit-details-marker { display: none; }
  :is(main, footer, .ee-prose) details:not([class]) > summary::after { content: ""; flex: none; width: 0.6rem; height: 0.6rem; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(45deg); transition: transform 0.2s; margin-top: -0.2rem; }
  :is(main, footer, .ee-prose) details:not([class])[open] > summary::after { transform: rotate(-135deg); margin-top: 0.2rem; }
  :is(main, footer, .ee-prose) details:not([class])[open] > summary { border-bottom: 1px solid var(--border); }
  :is(main, footer, .ee-prose) details:not([class]) > :not(summary) { margin-inline: 1.1rem; }
  :is(main, footer, .ee-prose) details:not([class]) > summary + * { margin-top: 0.85rem; }
  :is(main, footer, .ee-prose) details:not([class]) > :last-child { margin-bottom: 1rem; }

  /* ---------- сообщения (встроенные блоки, .messages; плавающие сообщения Drupal остаются как у Mercury) ---------- */
  /* варианты .messages--status/warning/error — в engine.css (там же базовое правило .messages; оно вне слоя и перебило бы эти) */
  .messages ul { margin: 0.25rem 0 0; padding-left: 1.2rem; list-style: disc; }

  /* ---------- бейджи и теги ---------- */
  .ee-badge {
    display: inline-flex; align-items: center; gap: 0.35em; padding: 0.15rem 0.7rem; border-radius: var(--ee-radius-pill);
    background: var(--secondary); color: var(--secondary-foreground); font-size: 0.8125rem; font-weight: 600; line-height: 1.4; text-decoration: none; white-space: nowrap;
  }
  .ee-badge--ok { background: color-mix(in oklab, var(--ee-status-ok) 12%, var(--background)); color: var(--ee-status-ok); }
  .ee-badge--warn { background: color-mix(in oklab, var(--ee-status-warn) 12%, var(--background)); color: var(--ee-status-warn); }
  .ee-badge--bad { background: color-mix(in oklab, var(--ee-status-bad) 10%, var(--background)); color: var(--ee-status-bad); }
  .ee-badge--done { background: var(--muted); color: var(--ee-status-done); }
  .ee-badge--solid { background: var(--primary); color: var(--primary-foreground); }
  a.ee-badge:hover { background: var(--accent); color: var(--accent-foreground); }

  /* ---------- карточки (для ручной вёрстки; карточки Views оформлены в engine.css теми же токенами) ---------- */
  .ee-card { display: flex; flex-direction: column; min-width: 0; overflow: hidden; background: var(--ee-card-bg); border: 1px solid var(--ee-card-border); border-radius: var(--ee-radius-card); box-shadow: var(--ee-card-shadow); }
  .ee-card__body { display: flex; flex-direction: column; gap: 0.35rem; padding: var(--ee-card-pad); }
  .ee-card__title { margin: 0; font-size: 1.05rem; font-weight: 600; line-height: 1.3; }
  .ee-card__meta { margin: 0; font-size: 0.9rem; color: var(--muted-foreground); }
  .ee-card__media { position: relative; background: var(--muted); }
  .ee-card__media img { display: block; width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
  .ee-card__media .ee-badge { position: absolute; top: 0.75rem; left: 0.75rem; }
  .ee-grid { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); }
  @media (min-width: 40rem) { .ee-grid { gap: 1.5rem; } }
  /* ИСПРАВЛЕНО 2026-09-29: см. докблок в css/cards.css — жёсткие 4 колонки игнорировали --ee-card-min. */
  @media (min-width: 80rem) { .ee-grid { grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--ee-card-min)), 1fr)); } }

  /* широкая полоса призыва к действию */
  .ee-cta { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem 2rem; padding: clamp(1.5rem, 1rem + 2vw, 2.5rem); border-radius: var(--ee-radius-card); background: var(--accent); color: var(--accent-foreground); }
  .ee-cta > :first-child { flex: 1 1 18rem; min-width: 0; }
  .ee-cta :is(h2, h3) { margin: 0 0 0.35rem; }
  .ee-cta p { margin: 0; color: var(--muted-foreground); max-width: 34rem; }
  .ee-cta a.button, .ee-cta .ee-btn { flex: none; }

  /* ---------- хлебные крошки и пагинация (см. также engine.css) ---------- */
  nav[aria-label="Breadcrumb"] ol, .breadcrumb ol { display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; list-style: none; margin: 0; padding: 0; }
}


/* ===== src/theme.css ===== */
/**
 * @file theme.css — цветовые и размерные токены движка (CSS-переменные).
 *
 * Нейтральная белая тема. Сайт переопределяет значения так: копирует этот файл в корень сайта (рядом с index.php)
 * и меняет нужные строки — очищать кэш Drupal, пересборка CSS не нужна (официальный способ Mercury).
 * Токены --ee-* — наши; остальные (--primary и др.) — из Mercury/shadcn.
 * Цвета подобраны под контраст WCAG AA (текст на фоне >= 4.5:1): проверено скриптом contrast.py (pm/docs).
 */
:root {
  --background: oklch(1 0 0);
  --foreground: oklch(0.2 0.02 265);
  --card: oklch(0.975 0.004 265);
  --card-foreground: oklch(0.2 0.02 265);
  --primary: oklch(0.42 0.14 265);
  --primary-foreground: oklch(1 0 0);
  --secondary: oklch(0.94 0.006 265);
  --secondary-foreground: oklch(0.25 0.03 265);
  --muted: oklch(0.965 0.004 265);
  --muted-foreground: oklch(0.42 0.02 265);
  --accent: oklch(0.94 0.03 265);
  --accent-foreground: var(--foreground);
  --destructive: oklch(0.52 0.2 27);
  --destructive-foreground: oklch(1 0 0);
  --border: oklch(0.9 0.006 265);
  --input: oklch(0.62 0.012 265);
  --font-sans: "Inter", "Inter Fallback", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --font-body: "Inter", "Inter Fallback", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  /* шрифты по роли (дочерняя тема сайта переопределяет только эти токены): заголовки и название сайта */
  --ee-font-heading: var(--font-sans);
  --ee-font-brand: var(--ee-font-heading);
  --ee-brand-transform: none;
  --ee-brand-tracking: normal;
  --ee-brand-weight: inherit;
  --font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif;
  --font-mono: ui-monospace, "Menlo", "Consolas", "Liberation Mono", monospace;
  --radius: 0.75rem;
  --shadow-2xs: 0 1px 2px 0 hsl(0 0% 0% / 0.04);
  --shadow-xs: 0 1px 2px 0 hsl(0 0% 0% / 0.05);
  --shadow-sm: 0 1px 3px 0 hsl(0 0% 0% / 0.08), 0 1px 2px -1px hsl(0 0% 0% / 0.08);
  --shadow: 0 1px 3px 0 hsl(0 0% 0% / 0.08), 0 1px 2px -1px hsl(0 0% 0% / 0.08);
  --shadow-md: 0 4px 12px -2px hsl(0 0% 0% / 0.1);
  --shadow-lg: 0 10px 24px -6px hsl(0 0% 0% / 0.12);
  --shadow-xl: 0 16px 36px -8px hsl(0 0% 0% / 0.14);
  --shadow-2xl: 0 24px 48px -12px hsl(0 0% 0% / 0.18);
  --tracking-normal: 0em;
  --spacing: 0.25rem;
  --navbar-height: calc(var(--spacing) * 15);

  /* Токены движка */
  --ee-container: 1260px;         /* ширина содержимого (текста): вместе с боковым полем 10+10 = контейнер 1280 = 4 ячейки сетки по 320 (оператор 29.09: (10+300+10)×4 + 20 на полосу прокрутки = окно 1300; было 1200) */
  --ee-gutter: 10px;              /* боковое поле = поле карточки (оператор 29.09: 10px; край текста, шапки, подвала и карточек — одна линия) */
  --ee-radius-card: 1rem;         /* скругление карточек */
  --ee-radius-pill: 999px;        /* кнопки и плашки */
  --ee-card-border: var(--border);
  --ee-card-bg: var(--background);
  --ee-card-shadow: var(--shadow-sm);
  --ee-focus: oklch(0.55 0.2 265); /* кольцо фокуса */
  --ee-overlay: oklch(0.15 0.03 265 / 0.45); /* затемнение под шторкой */
  --ee-shutter-width: 22rem;      /* ширина шторки */
  --ee-header-height: 4rem;
  /* шапка: цвета и шрифт названия (по умолчанию как у остальной темы; сайт задаёт свои, ничего в шаблонах не правя) */
  --ee-header-bg: var(--background);          /* фон шапки и шторок */
  --ee-header-fg: var(--foreground);          /* цвет текста шапки */
  --ee-header-border: transparent;            /* тонкая линия под шапкой */
  --ee-header-accent: var(--primary);         /* заливка главной кнопки, контур второй, линия текущего пункта */
  --ee-header-accent-fg: var(--primary-foreground);
  --ee-header-font: var(--font-sans);         /* шрифт названия сайта */
  --ee-header-field-bg: var(--ee-field-bg);   /* поле поиска в шапке */
  --ee-header-field-border: var(--ee-field-border);
  /* поля форм: рамка контрастнее 3:1 к фону (WCAG 1.4.11), фон поля отличается от фона страницы */
  --ee-field-border: oklch(0.55 0.02 265);
  --ee-field-bg: oklch(1 0 0);
  --ee-field-radius: 0.625rem;
  --ee-field-focus: var(--ee-focus);
  --ee-heading-weight: 700;
  --ee-status-ok: oklch(0.42 0.11 155);      /* «Регистрация открыта» */
  --ee-status-warn: oklch(0.45 0.12 70);     /* «Анонс», «Перенесено» */
  --ee-status-bad: oklch(0.45 0.16 27);      /* «Отменено» */
  --ee-status-done: oklch(0.4 0.02 265);     /* «Завершено», «Идёт» — нейтральный */

  /* Базовая типографика и ритм (css/base.css). Сайт меняет значения здесь, файлы не правит. */
  --ee-text: 1rem;                            /* размер основного текста */
  --ee-leading: 1.6;                          /* интерлиньяж текста */
  --ee-heading-leading: 1.2;                  /* интерлиньяж заголовков */
  --ee-measure: 68ch;                         /* предел длины строки в текстах */
  --ee-h1: clamp(2rem, 1.45rem + 2.4vw, 3rem);
  --ee-h2: clamp(1.5rem, 1.25rem + 1.2vw, 2.125rem);
  --ee-h3: clamp(1.25rem, 1.1rem + 0.7vw, 1.5rem);
  --ee-h4: 1.125rem;
  --ee-h5: 1rem;
  --ee-h6: 0.8125rem;
  --ee-space: 1rem;                           /* базовый шаг отступов */
  --ee-section-gap: clamp(2.5rem, 2rem + 2.5vw, 4.5rem); /* вертикальный ритм секций */
  --ee-card-margin: 10px;                     /* поле вокруг карточки в сетке: между карточками 20, по краям блока 10 (оператор 29.09, было 16/8) */
  --ee-cell: calc(var(--ee-card-min) + 2 * var(--ee-card-margin));   /* ячейка сетки = 320 px */
  --ee-card-min: 300px;                       /* минимальная ширина карточки в сетках (оператор 28.09: 300px, было 15rem/240px) */
  --ee-header-control-h: 2.5rem;              /* единая высота элементов управления шапки: поиск, «Спросить», «Записаться», значки (форм это не касается — у полей форм 2.75rem) */
  --ee-logo-h: 2.75rem;                      /* высота значка логотипа в шапке (дочерняя тема может задать свою) */
  --ee-card-pad: 10px;                        /* внутренний отступ текста карточки (оператор 28.09: 10px везде, было 1rem/16px по-разному в .ee-card__body и .views-view-grid) */
  --ee-cta-bg: var(--accent);                 /* фон широкой полосы призыва */
  --ee-ask-bar-bg: var(--background);         /* фон нижней полосы «Записаться / Спросить» */
  /* кнопки (css/buttons.css): три уровня — основная, вторая, третья. По умолчанию берут акцент шапки; сайт может задать свои. */
  --ee-btn-accent: var(--ee-header-accent);    /* заливка основной, контур второй, текст третьей */
  --ee-btn-accent-fg: var(--ee-header-accent-fg);   /* текст на заливке */
  --ee-btn-hover: color-mix(in oklab, var(--ee-btn-accent) 78%, black);   /* заливка при наведении, цвет текста второй и третьей */
  --ee-btn-soft: color-mix(in oklab, var(--ee-btn-accent) 10%, transparent);   /* мягкий фон при наведении на вторую и третью */
  /* основная кнопка (2026-09-29, запрос оператора «видимая рамка у кнопок»): у заливной кнопки рамка того же
     цвета, что и заливка, визуально не читалась как рамка вообще (рамка есть в коде, не видна глазами) — рамка
     чуть темнее заливки, свой оттенок на каждом состоянии (обычное/наведение), не общий с заливкой токен. */
  --ee-btn-border: color-mix(in oklab, var(--ee-btn-accent) 82%, black);      /* рамка основной кнопки — обычное состояние */
  --ee-btn-border-hover: color-mix(in oklab, var(--ee-btn-hover) 82%, black);  /* рамка основной кнопки — наведение */
  --ee-btn-radius: 999px;                      /* скругление, как у кнопок шапки */
  --ee-btn-height: 2.75rem;                    /* высота не меньше 44 px */
  --ee-danger: var(--destructive);
  --ee-success: var(--ee-status-ok);
  --ee-warning: var(--ee-status-warn);
  --ee-dir-1: oklch(0.5 0.12 265);            /* цвета верхней линии плашек направлений (по кругу) */
  --ee-dir-2: oklch(0.5 0.12 30);
  --ee-dir-3: oklch(0.5 0.1 145);
  --ee-dir-4: oklch(0.5 0.09 190);
  --ee-dir-5: oklch(0.5 0.08 60);
  --ee-dir-6: oklch(0.5 0.1 320);
}

.dark {
  --background: oklch(0.16 0.02 265);
  --foreground: oklch(0.96 0.005 265);
  --card: oklch(0.21 0.02 265);
  --card-foreground: var(--foreground);
  --primary: oklch(0.72 0.13 265);
  --primary-foreground: oklch(0.16 0.02 265);
  --secondary: oklch(0.3 0.02 265);
  --secondary-foreground: var(--foreground);
  --muted: oklch(0.26 0.02 265);
  --muted-foreground: oklch(0.8 0.01 265);
  --accent: oklch(0.3 0.03 265);
  --accent-foreground: var(--foreground);
  --border: oklch(0.34 0.02 265);
  --input: oklch(0.4 0.02 265);
}

