/* ATLAS FRAMEWORK | VERSION: v-20260531-130431 | BUILD: Sun May 31 13:04:31 UTC 2026 */

/* ==========================================================================
   FILE: 01-atlas-core.css
   ROLE: Ядро фреймворка. CSS-переменные, изоляция от Wix, геометрия
         системных блоков. Подключается ПЕРВЫМ в сборке.
   ПОРЯДОК В МОНОЛИТЕ: 1 из 7
   ========================================================================== */

@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@300;400;700&display=swap');

/* ── СЕКЦИЯ A: RESET — Изоляция от стилей Wix/конструктора ──────────────── */
/* Единственное место где !important разрешён (подавление CMS-стилей)        */

.atlas-container,
.atlas-container * {
  box-sizing: border-box !important;
}

.atlas-container {
  font-family: 'JetBrains Mono', 'Courier New', monospace;
  color: #000000;
  width: 100%;
}

/* ── СЕКЦИЯ B: DESIGN TOKENS — Единый источник всех переменных ──────────── */
/* Все цвета, отступы и размеры шрифтов берутся ТОЛЬКО отсюда.              */
/* Добавление переменной: только в этот блок.                               */

:root {
  /* Цветовая схема */
  --atlas-bg:            rgb(230, 220, 210);
  --atlas-bg-alt:        rgba(0, 0, 0, 0.02);
  --atlas-ink:           #000000;
  --atlas-ink-muted:     rgba(0, 0, 0, 0.5);
  --atlas-ink-soft:      rgba(0, 0, 0, 0.85);
  --atlas-crit:          #8b0000;
  --atlas-warn:          #7a5200;
  --atlas-ok:            #1a4d1a;
  --atlas-border:        rgba(0, 0, 0, 0.15);
  --atlas-border-strong: rgba(0, 0, 0, 0.4);

  /* Отступы */
  --atlas-space-xs:      8px;
  --atlas-space-sm:      15px;
  --atlas-space-md:      25px;
  --atlas-space-xl:      60px;

  /* Шрифт */
  --atlas-font-mono:     'JetBrains Mono', 'Courier New', monospace;

  /* ── Типографическая шкала ──────────────────────────────────────────────
     Правило: менять размеры ТОЛЬКО здесь, не в компонентах.
     h1-h6 — иерархия заголовков документа
     body   — базовый текст абзацев
     code   — блоки кода, ячейки таблиц (td)
     table-th — заголовки колонок таблиц (th), чуть крупнее td
     meta   — паспорт, футер, подписи к медиа
     status — мелкие плашки, бейджи, UML-ромбы                            */
  --fs-h1:       28px;
  --fs-h2:       24px;
  --fs-h3:       20px;
  --fs-h4:       16px;
  --fs-h5:       14px;
  --fs-h6:       12.5px;
  --fs-body:     12.5px;
  --fs-code:     12px;
  --fs-table-th: 13px;
  --fs-meta:     10px;
  --fs-status:   9px;
}

/* ── СЕКЦИЯ C: СИСТЕМНЫЕ БЛОКИ — Общая геометрия контейнеров ───────────── */
/* Единая рамка, padding и псевдо-шапка для всех блочных компонентов.       */
/* Каждый компонент ПЕРЕОПРЕДЕЛЯЕТ content шапки в своём файле.             */

.atlas-container .comparison-matrix,
.atlas-container .atlas-callout,
.atlas-container .content-block .media-frame,
.atlas-container .content-block pre.atlas-code-block,
.atlas-container .content-block .atlas-math-block,
.atlas-container .content-block .atlas-table-frame {
  position: relative;
  background: transparent;
  border: 1px solid var(--atlas-border);
  margin: 24px 0;
  width: 100%;
  padding: 34px 16px 16px 16px; /* 34px top = 24px шапка + 10px зазор */
}

.atlas-container .comparison-matrix::before,
.atlas-container .atlas-callout::before,
.atlas-container .content-block .media-frame::before,
.atlas-container .content-block pre.atlas-code-block::before,
.atlas-container .content-block .atlas-math-block::before,
.atlas-container .content-block .atlas-table-frame::before {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 24px;
  line-height: 24px;
  padding-left: 16px;
  font-size: 9px;
  font-weight: 700;
  color: var(--atlas-ink-muted);
  background: rgba(0, 0, 0, 0.015);
  border-bottom: 1px solid var(--atlas-border);
  letter-spacing: 0.05em;
  font-family: var(--atlas-font-mono);
}

/* ── СЕКЦИЯ D: CALLOUT МОДИФИКАТОРЫ — Семантические варианты ────────────── */
/* content для базового .atlas-callout::before задан в 06-atlas-callout.css */

.atlas-container .atlas-callout--important {
  border-left: 4px solid var(--atlas-crit);
}
.atlas-container .atlas-callout--important::before {
  content: "[ IMPORTANT // WARNING ]";
  color: var(--atlas-crit);
}

.atlas-container .atlas-callout--warning {
  border-left: 4px solid var(--atlas-warn);
}
.atlas-container .atlas-callout--warning::before {
  content: "[ WARNING // CAUTION ]";
  color: var(--atlas-warn);
}

.atlas-container .atlas-callout--success {
  border-left: 4px solid var(--atlas-ok);
}
.atlas-container .atlas-callout--success::before {
  content: "[ STATUS // SUCCESS ]";
  color: var(--atlas-ok);
}

/* ── PATCH v3.8.0: НОВЫЕ ТОКЕНЫ ──────────────────────────────────────────── */
/* Добавлены при рефакторинге 09-atlas-shader-panel.css                     */
/* Запрещено использовать --atlas-accent вместо --atlas-crit в контенте:    */
/*   --atlas-crit   = #8b0000  — ошибки, маркеры, акценты КОНТЕНТА         */
/*   --atlas-accent = #0000AA  — UI-элементы: кнопки, слайдеры, switches    */

:root {
  /* UI-акцент: Volkov Commander Blue */
  --atlas-accent:   #0000AA;
  --atlas-accent-h: #0000DD;   /* hover-состояние accent */

  /* Типографика: математические формулы (MathJax) */
  /* Крупнее --fs-code (12px) но меньше --fs-h3 (20px)                     */
  /* MathJax рендерит собственные элементы — переменная задаёт             */
  /* font-size контейнера .atlas-math-block для масштабирования            */
  --fs-math: 15px;

  /* Dither SVG-паттерн: 4×4px шахматка для теней и OFF-состояний         */
  --atlas-dither: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4"><rect width="2" height="2" x="0" y="0" fill="black"/><rect width="2" height="2" x="2" y="2" fill="black"/></svg>');
}

/* Применяем --fs-math к math-блоку */
.atlas-container .content-block .atlas-math-block {
  font-size: var(--fs-math);
}


/* ==========================================================================
   FILE: 02-atlas-typography.css
   ROLE: Типографика. Раздача базовых стилей h1-h6, p, ul/ol на теги
         внутри .atlas-container. Классы-компоненты (.atlas-h1, .atlas-body
         и т.д.). Контентные заголовки .content-block. Списки CAD-стиля.
   ЗАВИСИМОСТИ: 01-atlas-core.css (переменные --fs-*, --atlas-*)
   ПОРЯДОК В МОНОЛИТЕ: 2 из 7
   ========================================================================== */

/* ── СЕКЦИЯ A: ГЛОБАЛЬНАЯ РАЗДАЧА — Базовые теги внутри контейнера ──────── */
/* Единственный источник font-size для тегов. Компоненты НЕ дублируют это.  */

.atlas-container {
  font-family: var(--atlas-font-mono);
  color: var(--atlas-ink);
  font-size: var(--fs-body);
}

/* Заголовки по тегам */
.atlas-container h1, .atlas-container .atlas-h1 { font-size: var(--fs-h1); font-weight: 700; margin-bottom: 16px; }
.atlas-container h2, .atlas-container .atlas-h2 { font-size: var(--fs-h2); font-weight: 700; margin-bottom: 14px; }
.atlas-container h3, .atlas-container .atlas-h3 { font-size: var(--fs-h3); font-weight: 700; margin-bottom: 12px; }
.atlas-container h4, .atlas-container .atlas-h4 { font-size: var(--fs-h4); font-weight: 700; margin-bottom: 10px; }
.atlas-container h5, .atlas-container .atlas-h5 { font-size: var(--fs-h5); font-weight: 700; margin-bottom: 8px; }
.atlas-container h6, .atlas-container .atlas-h6 { font-size: var(--fs-h6); font-weight: 700; margin-bottom: 8px; text-transform: uppercase; }

/* Параграфы, списки */
.atlas-container p,
.atlas-container ul,
.atlas-container ol {
  font-size: var(--fs-body);
  line-height: 1.6;
}

/* Таблицы */
.atlas-container table {
  width: 100%;
  border-collapse: collapse;
  font-family: var(--atlas-font-mono);
  font-size: var(--fs-code);
}
.atlas-container table th { font-size: var(--fs-table-th); }
.atlas-container table td { font-size: var(--fs-code); }

/* Мета-уровень: паспорт, футер, подписи */
.atlas-container #site-passport,
.atlas-container #atlas-footer,
.atlas-container .media-caption {
  font-size: var(--fs-meta);
}

/* Плашки STATUS и UML-ромбы */
.atlas-container .atlas-callout::before,
.atlas-container .atlas-uml-diag__node--decision span {
  font-size: var(--fs-status);
}

/* ── СЕКЦИЯ B: УТИЛИТАРНЫЕ КЛАССЫ ТИПОГРАФИКИ ───────────────────────────── */
/* Используются напрямую в HTML (class="atlas-h1"), не через теги.          */

.atlas-container .atlas-h1 {
  font-size: var(--fs-h1);
  font-weight: 700;
  line-height: 1.2;
  text-transform: uppercase;
  color: var(--atlas-ink);
  margin: 0 0 var(--atlas-space-sm) 0;
  letter-spacing: -0.01em;
}

.atlas-container .atlas-title {
  font-size: var(--fs-h2);
  font-weight: 700;
  line-height: 1.3;
  text-transform: uppercase;
  color: var(--atlas-ink);
  margin: 0 0 var(--atlas-space-xs) 0;
}

.atlas-container .atlas-body {
  font-size: var(--fs-body);
  font-weight: 400;
  line-height: 1.6;
  color: var(--atlas-ink-soft);
  margin: 0 0 var(--atlas-space-sm) 0;
}

.atlas-container .atlas-meta {
  font-size: var(--fs-meta);
  font-weight: 400;
  text-transform: uppercase;
  color: var(--atlas-ink-muted);
  letter-spacing: 0.05em;
}

.atlas-container .atlas-code-inline {
  font-size: var(--fs-code);
  color: var(--atlas-crit);
  background: var(--atlas-bg-alt);
  padding: 2px 4px;
  border: 1px solid var(--atlas-border);
}

/* ── СЕКЦИЯ C: КОНТЕНТНЫЙ БЛОК — Заголовки и разделители ───────────────── */
/* ВАЖНО: h2/h3/h4 внутри .content-block — это КОНТЕНТНЫЕ заголовки        */
/* (малые, с префиксами). Они НЕ конфликтуют с семантическими h2=24px      */
/* потому что применяются только глубоко внутри .content-block.            */
/* Если нужен семантический h2 в контенте — выноси его за .content-block.  */

.atlas-container .content-block {
  margin: 32px 0;
  counter-reset: l1-counter;
}

.atlas-container .content-block h2,
.atlas-container .content-block h3,
.atlas-container .content-block h4 {
  font-weight: 700;
  text-transform: uppercase;
  display: flex;
  align-items: center;
  margin: 0 0 12px 0;
  line-height: 1.2;
}

/* H2: Главный раздел контента (13px с красным префиксом ») */
.atlas-container .content-block h2 {
  font-size: 16px;
  letter-spacing: 0.08em;
  color: var(--atlas-ink);
}
.atlas-container .content-block h2::before {
  content: "» ";
  color: var(--atlas-crit);
  margin-right: 8px;
  font-weight: 400;
}

/* H3: Подраздел контента (12px с серым префиксом >) */
.atlas-container .content-block h3 {
  font-size: 12px;
  letter-spacing: 0.05em;
  color: var(--atlas-ink-soft);
  margin-top: 24px;
}
.atlas-container .content-block h3::before {
  content: "> ";
  color: var(--atlas-ink-muted);
  margin-right: 8px;
  font-weight: 400;
}

/* H4: Микро-заголовок (meta-size, с префиксом +) */
.atlas-container .content-block h4 {
  font-size: var(--fs-meta);
  letter-spacing: 0.05em;
  color: var(--atlas-ink-muted);
  margin-top: 16px;
}
.atlas-container .content-block h4::before {
  content: "+ ";
  color: var(--atlas-ink-muted);
  margin-right: 8px;
  font-weight: 400;
}

/* Параграф внутри контентного блока */
.atlas-container .content-block p {
  font-size: 12.5px;
  line-height: 1.65;
  color: var(--atlas-ink-soft);
  margin: 0 0 16px 0;
  text-align: justify;
}

/* ── СЕКЦИЯ D: РАЗДЕЛИТЕЛИ СЕКЦИЙ ───────────────────────────────────────── */

/* Горизонтальный разделитель с нумерованным индексом (data-index="§ 02") */
.atlas-container .atlas-section-break {
  position: relative;
  display: block;
  height: 1px;
  background: var(--atlas-border);
  margin: 4rem 0;
}
.atlas-container .atlas-section-break::before {
  content: attr(data-index);
  position: absolute;
  top: -9px;
  left: 24px;
  background: var(--atlas-bg);
  padding: 0 0.6rem;
  font-size: var(--fs-meta);
  font-weight: 700;
  color: var(--atlas-crit);
}

/* Финальный EOF-разделитель в конце статьи */
.atlas-container .atlas-eof-divider {
  display: flex;
  align-items: center;
  margin: 5.5rem 0 2rem 0;
  font-size: var(--fs-meta);
  color: var(--atlas-ink-muted);
  letter-spacing: 0.12em;
  width: 100%;
}
.atlas-container .atlas-eof-divider__line {
  flex: 1;
  border-bottom: 1px dashed var(--atlas-border);
}
.atlas-container .atlas-eof-divider__meta {
  padding: 0 1.2rem;
  font-weight: 700;
}

/* ── СЕКЦИЯ E: CAD-СПИСКИ — Двухуровневая система маркировки ─────────────── */
/* Уровень 1: сплошная вертикальная ось + маркер "+"                        */
/* Уровень 2: пунктирная ось + маркер "▪"                                   */

.atlas-container .content-block ul,
.atlas-container .content-block ol {
  list-style-type: none;
  padding: 0;
  margin: 0 0 16px 0;
}

/* Уровень 1 */
.atlas-container .content-block > ul,
.atlas-container .content-block > ol {
  margin-left: 24px;
  padding-left: 14px;
  border-left: 1px solid var(--atlas-border);
}

.atlas-container .content-block > ul > li,
.atlas-container .content-block > ol > li {
  font-size: 12.5px;
  line-height: 1.65;
  color: var(--atlas-ink-soft);
  position: relative;
  padding-left: 18px;
  margin-bottom: 8px;
}

.atlas-container .content-block > ul > li::before,
.atlas-container .content-block > ol > li::before {
  content: "+";
  position: absolute;
  left: 0;
  top: 0;
  color: var(--atlas-crit);
  font-weight: 700;
}

/* Уровень 2 */
.atlas-container .content-block ul ul,
.atlas-container .content-block ol ul,
.atlas-container .content-block ul ol,
.atlas-container .content-block ol ol {
  margin-left: 14px;
  margin-top: 8px;
  padding-left: 14px;
  border-left: 1px dashed var(--atlas-border);
}

.atlas-container .content-block ul ul > li,
.atlas-container .content-block ul ol > li {
  font-size: 12px;
  line-height: 1.6;
  color: var(--atlas-ink-soft);
  position: relative;
  padding-left: 16px;
  margin-bottom: 6px;
}

.atlas-container .content-block ul ul > li::before,
.atlas-container .content-block ul ol > li::before {
  content: "▪";
  position: absolute;
  left: 0;
  color: var(--atlas-ink-muted);
  font-size: 9px;
}



/* ==========================================================================
   FILE: 03-atlas-header.css
   ROLE: Паспорт документа (#site-passport) и системный футер (#atlas-footer).
         Сетка параметров, мета-строка, теги, навигационная матрица.
   ЗАВИСИМОСТИ: 01-atlas-core.css
   ПОРЯДОК В МОНОЛИТЕ: 3 из 7
   ========================================================================== */

/* ── СЕКЦИЯ A: PASSPORT — Инженерная шапка документа ────────────────────── */
/* Структура HTML:                                                           */
/*   #site-passport > .passport-bp                                          */
/*     > .passport-title-bar                                                */
/*     > .passport-main-title                                               */
/*     > .passport-grid > .passport-cell > .passport-cell-line[data-key]   */
/*     > .passport-meta > .passport-meta-item[data-meta]                   */
/*     > .passport-tags > .passport-tag                                     */

.atlas-container #site-passport .passport-bp {
  border: 2px solid var(--atlas-ink);
  padding: var(--atlas-space-sm);
  background: transparent;
  box-sizing: border-box;
  margin-bottom: var(--atlas-space-md);
  width: 100%;
}

/* Верхняя полоса: промпт системы + статус */
.atlas-container #site-passport .passport-title-bar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 2px solid var(--atlas-ink);
  padding-bottom: 6px;
  margin-bottom: var(--atlas-space-sm);
  font-size: var(--fs-meta);
  color: var(--atlas-ink);
  white-space: nowrap;
}
.atlas-container #site-passport .passport-title-bar b {
  font-weight: 700;
  color: var(--atlas-crit);
}

/* Главный заголовок */
.atlas-container #site-passport .passport-main-title {
  font-size: var(--fs-h1);
  font-weight: 700;
  text-transform: uppercase;
  margin-bottom: var(--atlas-space-sm);
  line-height: 1.1;
  color: var(--atlas-ink);
}

/* Сетка параметров 2 колонки */
.atlas-container #site-passport .passport-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 32px;
  padding: var(--atlas-space-sm) 0;
  border-top: 1px dashed var(--atlas-border);
  box-sizing: border-box;
  width: 100%;
}

.atlas-container #site-passport .passport-cell {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  align-items: flex-start;
  gap: 8px;
  box-sizing: border-box;
}

/* Строка параметра. Префикс генерируется через data-key */
.atlas-container #site-passport .passport-cell-line {
  display: block;
  font-size: var(--fs-code);
  line-height: 1.4;
  color: var(--atlas-ink-soft);
  margin: 0;
  padding: 0;
  white-space: nowrap;
}
.atlas-container #site-passport .passport-cell-line::before {
  font-weight: 700;
  color: var(--atlas-ink-muted);
  text-transform: uppercase;
  margin-right: 8px;
  display: inline-block;
}
.atlas-container #site-passport .passport-cell-line[data-key="project"]::before { content: "PROJECT:"; }
.atlas-container #site-passport .passport-cell-line[data-key="module"]::before  { content: "MODULE:"; }
.atlas-container #site-passport .passport-cell-line[data-key="version"]::before { content: "VERSION:"; }
.atlas-container #site-passport .passport-cell-line[data-key="log_id"]::before  { content: "LOG_ID:"; }

/* Мета-строка (AUTH, CREATED, MODIFIED, READ_TIME) */
.atlas-container #site-passport .passport-meta {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  gap: 16px;
  margin-top: var(--atlas-space-sm);
  padding-top: var(--atlas-space-xs);
  border-top: 1px solid var(--atlas-border);
}
.atlas-container #site-passport .passport-meta-item {
  font-size: var(--fs-meta);
  color: var(--atlas-ink-soft);
  display: flex;
  align-items: center;
  white-space: nowrap;
}
.atlas-container #site-passport .passport-meta-item:not(:last-child)::after {
  content: "//";
  margin-left: 16px;
  color: var(--atlas-border-strong);
  font-weight: 300;
}
.atlas-container #site-passport .passport-meta-item::before {
  font-weight: 700;
  color: var(--atlas-ink-muted);
  margin-right: 6px;
  text-transform: uppercase;
}
.atlas-container #site-passport .passport-meta-item[data-meta="auth"]::before     { content: "AUTH:"; }
.atlas-container #site-passport .passport-meta-item[data-meta="created"]::before  { content: "CREATED:"; }
.atlas-container #site-passport .passport-meta-item[data-meta="modified"]::before { content: "MODIFIED:"; }
.atlas-container #site-passport .passport-meta-item[data-meta="read"]::before     { content: "READ_TIME:"; }

/* Теги */
.atlas-container #site-passport .passport-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-top: 12px;
}
.atlas-container #site-passport .passport-tag {
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-crit);
  text-decoration: none;
  border: 1px solid var(--atlas-border);
  padding: 2px 6px;
  background: rgba(0, 0, 0, 0.02);
  transition: all 0.15s ease;
}
.atlas-container #site-passport .passport-tag:hover {
  background: var(--atlas-ink);
  color: var(--atlas-bg);
  border-color: var(--atlas-ink);
}

/* ── СЕКЦИЯ B: FOOTER — Системный подвал ────────────────────────────────── */
/* Структура HTML:                                                           */
/*   #atlas-footer > .atlas-footer-wrapper                                  */
/*     > .atlas-footer-block__support-header                                */
/*     > .atlas-footer-block__support-content                               */
/*       > .atlas-footer-block__support-text                                */
/*       > .atlas-footer-block__support-links > .atlas-blueprint-link       */
/*     > .atlas-footer-block__matrix-zone (3 колонки)                       */
/*       > .atlas-footer-block__matrix-column                               */
/*         > .atlas-footer-block__column-label                              */
/*         > .atlas-footer-block__column-items > .atlas-blueprint-link      */

.atlas-container #atlas-footer {
  margin-top: var(--atlas-space-xl);
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--atlas-border);
  padding: 16px;
  position: relative;
}

.atlas-container #atlas-footer .atlas-footer-wrapper {
  display: flex;
  flex-direction: column;
  gap: var(--atlas-space-md);
  width: 100%;
}

/* Верхняя статусная линия */
.atlas-container #atlas-footer .atlas-footer-block__support-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: var(--fs-meta);
  font-weight: 700;
  color: var(--atlas-ink);
  border-bottom: 1px solid var(--atlas-ink);
  padding-bottom: 6px;
  white-space: nowrap;
}
.atlas-container #atlas-footer .atlas-footer-block__kaomoji {
  color: var(--atlas-crit);
}

/* Средняя зона: текст + ссылки поддержки */
.atlas-container #atlas-footer .atlas-footer-block__support-content {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 24px;
  padding-bottom: var(--atlas-space-sm);
  border-bottom: 1px dashed var(--atlas-border);
}
.atlas-container #atlas-footer .atlas-footer-block__support-text {
  font-size: var(--fs-body);
  line-height: 1.5;
  color: var(--atlas-ink-soft);
  max-width: 60%;
}
.atlas-container #atlas-footer .atlas-footer-block__support-links {
  display: flex;
  align-items: center;
  gap: 12px;
  white-space: nowrap;
}
.atlas-container #atlas-footer .atlas-footer-block__support-divider {
  font-size: var(--fs-code);
  color: var(--atlas-border-strong);
}

/* Нижняя матрица навигации: строго 3 колонки */
.atlas-container #atlas-footer .atlas-footer-block__matrix-zone {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
  width: 100%;
  box-sizing: border-box;
}
.atlas-container #atlas-footer .atlas-footer-block__matrix-column {
  display: flex;
  flex-direction: column;
  background: transparent;
}
.atlas-container #atlas-footer .atlas-footer-block__column-label {
  display: block;
  font-size: var(--fs-meta);
  font-weight: 700;
  text-transform: uppercase;
  color: var(--atlas-ink-muted);
  margin-bottom: var(--atlas-space-sm);
  letter-spacing: 0.05em;
  border-bottom: 1px solid var(--atlas-border);
  padding-bottom: 4px;
  white-space: nowrap;
}
.atlas-container #atlas-footer .atlas-footer-block__column-items {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.atlas-container #atlas-footer .atlas-blueprint-link {
  font-size: var(--fs-code);
  color: var(--atlas-ink-soft);
  text-decoration: none;
  transition: color 0.15s ease;
  display: inline-block;
  white-space: nowrap;
}
.atlas-container #atlas-footer .atlas-blueprint-link:hover {
  color: var(--atlas-crit);
}

/* ── СЕКЦИЯ C: АДАПТИВНОСТЬ ──────────────────────────────────────────────── */
/* Порог 550px: узкие десктопные колонки блога (600-750px) не триггерят     */
/* мобильную верстку и не ломают сетку паспорта 2×2.                       */

@media (max-width: 550px) {
  .atlas-container #site-passport .passport-grid {
    grid-template-columns: 1fr;
    gap: 12px;
  }
  .atlas-container #site-passport .passport-meta {
    flex-wrap: wrap;
    gap: 10px;
  }
  .atlas-container #atlas-footer .atlas-footer-block__support-content {
    flex-direction: column;
    gap: 16px;
  }
  .atlas-container #atlas-footer .atlas-footer-block__support-text {
    max-width: 100%;
  }
  .atlas-container #atlas-footer .atlas-footer-block__matrix-zone {
    grid-template-columns: 1fr;
    gap: 24px;
  }
}



/* ==========================================================================
   FILE: 04-atlas-code.css
   ROLE: Блоки кода (pre.atlas-code-block) и математики (.atlas-math-block).
         Подсветка синтаксиса Prism.js (low-contrast палитра).
         Smart-coupling: математика вплотную сливается с кодом.
   ЗАВИСИМОСТИ: 01-atlas-core.css (системная геометрия блоков)
   ПОРЯДОК В МОНОЛИТЕ: 4 из 7
   ========================================================================== */

/* ── СЕКЦИЯ A: УНИКАЛЬНЫЕ ШАПКИ И ГРАНИЦЫ ───────────────────────────────── */
/* Геометрия (border, padding, position) задана в 01-atlas-core.css.        */
/* Здесь — только то, что отличает code и math от других блоков.            */

/* Красная левая полоса — фирменный идентификатор кодового блока */
.atlas-container .content-block pre.atlas-code-block {
  border-left: 3px solid var(--atlas-crit);
  overflow-x: auto;
}

/* Математика: пунктирная рамка вместо сплошной */
.atlas-container .content-block .atlas-math-block {
  border-style: dashed;
  overflow-x: auto;
}

/* Тексты псевдо-шапок */
.atlas-container .content-block pre.atlas-code-block::before {
  content: "[ CODE_LISTING // TRANSPILED_ALGORITHM ]";
}
.atlas-container .content-block .atlas-math-block::before {
  content: "[ MATH_MODEL // МАТЕМАТИЧЕСКИЙ АППАРАТ ]";
}

/* ── СЕКЦИЯ B: СТАБИЛИЗАЦИЯ ШРИФТОВ ─────────────────────────────────────── */
/* Защита от системных шрифтов Wix и text-shadow Prism тем.                */

.atlas-container .content-block pre.atlas-code-block,
.atlas-container .content-block pre.atlas-code-block code {
  font-size: var(--fs-code);
  line-height: 1.6;
  color: var(--atlas-ink-soft);
  background: transparent;
  text-shadow: none;
}

.atlas-container .content-block .atlas-math-block {
  font-size: var(--fs-code);
  line-height: 1.6;
  color: var(--atlas-ink-soft);
}

/* ── СЕКЦИЯ C: SMART COUPLING — Бесшовное слияние math + code ────────────── */
/* Когда .atlas-math-block стоит ПРЯМО перед pre.atlas-code-block,         */
/* нижняя граница math убирается и верхняя граница code становится          */
/* пунктирной — блоки визуально сливаются в одну единицу.                  */

.atlas-container .content-block .atlas-math-block:has(+ pre.atlas-code-block) {
  margin-bottom: 0;
  border-bottom: none;
}
.atlas-container .content-block .atlas-math-block + pre.atlas-code-block {
  margin-top: 0;
  border-top: 1px dashed var(--atlas-border);
}

/* ── СЕКЦИЯ D: PRISM.JS — Low-contrast синтаксис ────────────────────────── */
/* Палитра адаптирована под монохромную тему Atlas.                         */
/* Все фоны токенов обнуляются (Prism темы добавляют цветные подложки).    */

.atlas-container .content-block pre.atlas-code-block code .token {
  background: transparent;
  text-shadow: none;
}

.atlas-container .content-block pre.atlas-code-block code .token.comment    { color: var(--atlas-ink-muted); font-style: italic; }
.atlas-container .content-block pre.atlas-code-block code .token.punctuation { color: rgba(0, 0, 0, 0.4); }
.atlas-container .content-block pre.atlas-code-block code .token.number,
.atlas-container .content-block pre.atlas-code-block code .token.boolean    { color: var(--atlas-warn); }
.atlas-container .content-block pre.atlas-code-block code .token.string,
.atlas-container .content-block pre.atlas-code-block code .token.char       { color: var(--atlas-ok); }
.atlas-container .content-block pre.atlas-code-block code .token.keyword,
.atlas-container .content-block pre.atlas-code-block code .token.class-name { color: var(--atlas-ink); font-weight: 700; }
.atlas-container .content-block pre.atlas-code-block code .token.function   { color: var(--atlas-crit); font-weight: 700; }
.atlas-container .content-block pre.atlas-code-block code .token.operator   { color: var(--atlas-ink); }

/* ── СЕКЦИЯ E: OVERFLOW FIX — Код внутри составных компонентов ──────────── */
/* Проблема: pre.atlas-code-block внутри .comparison-matrix и              */
/* .atlas-table-frame имеет overflow:auto на РОДИТЕЛЕ, но сам pre          */
/* получает белое пространство без переноса — текст уходит за границу.     */
/*                                                                          */
/* Решение: явный overflow-x:auto + max-width:100% на pre в любом          */
/* контексте, плюс word-break для длинных идентификаторов в таблицах.      */

/* pre внутри comparison-matrix — код в ячейках сравнения */
.atlas-container .comparison-matrix pre.atlas-code-block {
  overflow-x: auto;
  max-width: 100%;
  box-sizing: border-box;
  /* Сброс margin который core задаёт системным блокам */
  margin: 8px 0;
  /* Шапка ::before не нужна внутри comparison-cell — убираем */
  padding-top: 12px;
}
.atlas-container .comparison-matrix pre.atlas-code-block::before {
  display: none;
}

/* pre внутри atlas-table-frame (ячейки таблиц td/th) */
.atlas-container .content-block .atlas-table-frame pre.atlas-code-block,
.atlas-container .content-block .atlas-table-frame td pre,
.atlas-container .content-block .atlas-table-frame th pre {
  overflow-x: auto;
  max-width: 100%;
  box-sizing: border-box;
  margin: 4px 0;
  padding: 6px 8px;
  border-left: 2px solid var(--atlas-crit);
  font-size: var(--fs-code);
  line-height: 1.5;
}
.atlas-container .content-block .atlas-table-frame pre.atlas-code-block::before {
  display: none;
}

/* atlas-code-inline в ячейках таблиц — предотвращаем растягивание столбца */
.atlas-container .content-block .atlas-table-frame td .atlas-code-inline,
.atlas-container .content-block .atlas-table-frame th .atlas-code-inline {
  display: inline;
  word-break: break-all;
  white-space: normal;
}

/* Глобальный фикс: код внутри любого .comp-col не разрывает layout */
.atlas-container .comp-col pre,
.atlas-container .comp-col code,
.atlas-container .comp-col .atlas-code-block {
  overflow-x: auto;
  max-width: 100%;
  box-sizing: border-box;
  white-space: pre;          /* сохраняем форматирование */
  word-break: normal;        /* не ломаем внутри слов */
}

/* Таблицы: длинные слова в td/th переносятся, не разрывают таблицу */
.atlas-container .content-block .atlas-table-frame td,
.atlas-container .content-block .atlas-table-frame th {
  word-break: break-word;    /* перенос по словам если не помещается */
  overflow-wrap: break-word; /* fallback для старых браузеров */
  min-width: 0;              /* позволяет flex/grid ужать ячейку */
}

/* Горизонтальный скролл на самом table-frame если таблица шире контейнера */
.atlas-container .content-block .atlas-table-frame {
  overflow-x: auto;
}


/* ==========================================================================
   FILE: 05-atlas-tables.css
   ROLE: Таблицы данных (.atlas-table-frame) и UML-диаграммы (.atlas-uml-diag).
         Два стиля таблиц: прозрачный (default) и с чёрной шапкой (--solid).
   ЗАВИСИМОСТИ: 01-atlas-core.css (системная геометрия .atlas-table-frame)
   ПОРЯДОК В МОНОЛИТЕ: 5 из 7
   ========================================================================== */

/* ── СЕКЦИЯ A: ТАБЛИЦА — Дефолтный прозрачный стиль ────────────────────── */
/* Геометрия и рамка .atlas-table-frame задана в 01-atlas-core.css.        */
/* Здесь: шапка, внутренняя таблица, зебра.                                */

/* Псевдо-шапка по умолчанию */
.atlas-container .content-block .atlas-table-frame::before {
  content: "[ DATA_TABLE // ДАННЫЕ И СПЕЦИФИКАЦИИ ]";
}

/* Внутренняя таблица */
.atlas-container .content-block .atlas-table-frame .atlas-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: var(--fs-code);
  line-height: 1.5;
  color: var(--atlas-ink-soft);
}

.atlas-container .content-block .atlas-table-frame .atlas-table thead th {
  text-align: left;
  padding: 10px;
  font-weight: 700;
  color: var(--atlas-ink);
  border-bottom: 2px solid var(--atlas-border-strong);
}
.atlas-container .content-block .atlas-table-frame .atlas-table tbody td {
  padding: 10px;
  border-bottom: 1px solid var(--atlas-border);
}

/* Зебра: чётные строки получают лёгкий фон */
.atlas-container .content-block .atlas-table-frame .atlas-table tbody tr:nth-child(even) {
  background: var(--atlas-bg-alt);
}

/* ── СЕКЦИЯ B: ТАБЛИЦА — Модификатор --solid (чёрная инженерная шапка) ─── */
/* Отличия от дефолта:                                                      */
/*   1. Псевдо-шапка core скрыта, заголовок вставляется в HTML             */
/*   2. .atlas-table-header-solid растягивается от края до края            */
/*   ИСПРАВЛЕНИЕ: margin рассчитан от реального padding-top = 34px         */
/*   (не 16px как в оригинале)                                              */

.atlas-container .content-block .atlas-table-frame--solid {
  padding-top: 0; /* Убираем зазор: шапка HTML занимает его сама */
}
.atlas-container .content-block .atlas-table-frame--solid::before {
  display: none; /* Псевдо-шапка core не нужна — есть HTML-элемент */
}

/* HTML-элемент заголовка: <div class="atlas-table-header-solid">TITLE</div> */
.atlas-container .content-block .atlas-table-header-solid {
  display: block;
  background: var(--atlas-ink);
  color: var(--atlas-bg);
  padding: 6px 10px;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  /* Растягиваем вплотную к рамке блока (padding у .atlas-table-frame = 16px по бокам) */
  margin: 0 -16px 16px -16px;
  border-bottom: 1px solid var(--atlas-ink);
}

/* Для --solid таблица получает собственную видимую рамку */
.atlas-container .content-block .atlas-table-frame--solid .atlas-table {
  border: 1px solid var(--atlas-border);
}

/* ── СЕКЦИЯ C: UML-ДИАГРАММЫ — Изолированный namespace ─────────────────── */
/* ВАЖНО: все правила обёрнуты в .atlas-container для изоляции от Wix.     */
/* CSS-переменные ссылаются на --atlas-* из 01-atlas-core.css.             */
/* Жёстко заданные цвета в оригинале заменены на переменные.               */

/* Корневой элемент диаграммы */
.atlas-container .atlas-uml-diag {
  font-family: var(--atlas-font-mono);
  width: 100%;
  box-sizing: border-box;
}

/* Виджет-обёртка */
.atlas-container .atlas-uml-diag__widget {
  border: 2px solid var(--atlas-ink);
  background: var(--atlas-bg);
}
.atlas-container .atlas-uml-diag__header {
  background: var(--atlas-ink);
  color: var(--atlas-bg);
  padding: 4px 10px;
  font-size: 10px;
  text-transform: uppercase;
}

/* Зоны (Scope) */
.atlas-container .atlas-uml-diag__scope {
  border: 1px dashed var(--atlas-ink);
  padding: 10px;
  margin-bottom: 15px;
}
.atlas-container .atlas-uml-diag__scope-label {
  font-size: 8px;
  color: var(--atlas-ink-muted);
  margin-bottom: 5px;
  text-transform: uppercase;
}

/* Узлы — базовый прямоугольник */
.atlas-container .atlas-uml-diag__node {
  border: 1px solid var(--atlas-ink);
  background: var(--atlas-bg);
  min-width: 120px;
  display: flex;
  flex-direction: column;
}
.atlas-container .atlas-uml-diag__node--dashed {
  border-style: dashed;
}
.atlas-container .atlas-uml-diag__node-title {
  padding: 6px 10px;
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  border-bottom: 1px solid var(--atlas-ink);
  text-align: center;
}
.atlas-container .atlas-uml-diag__node-body {
  padding: 6px 10px;
  font-size: 9px;
  line-height: 1.4;
  text-align: left;
}

/* Логика: Decision — инженерный ромб (rotate 45deg + фиксированный размер) */
.atlas-container .atlas-uml-diag__node--decision {
  transform: rotate(45deg);
  width: 64px;
  height: 64px;
  min-width: 64px;
  padding: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0 auto;
  border: 1px solid var(--atlas-ink);
  background: var(--atlas-bg);
}
.atlas-container .atlas-uml-diag__node--decision span {
  transform: rotate(-45deg);
  display: block;
  font-size: var(--fs-status);
  font-weight: 700;
  text-align: center;
  white-space: nowrap;
  line-height: 1;
}

/* Стрелки: горизонтальная линия + треугольный наконечник */
.atlas-container .atlas-uml-diag__arrow-wrapper {
  display: flex;
  align-items: center;
  margin: 0 -2px;
}
.atlas-container .atlas-uml-diag__arrow-line {
  flex: 1;
  height: 1px;
  background: var(--atlas-crit);
}
.atlas-container .atlas-uml-diag__arrow-head {
  width: 0;
  height: 0;
  border-top: 4px solid transparent;
  border-bottom: 4px solid transparent;
  border-left: 6px solid var(--atlas-crit);
}

/* Легенда */
.atlas-container .atlas-uml-diag__legend {
  border-top: 1px solid var(--atlas-ink);
  padding: 8px;
  font-size: 9px;
  display: flex;
  gap: 15px;
  color: var(--atlas-ink-muted);
}



/* ==========================================================================
   FILE: 06-atlas-callout.css
   ROLE: Информационные блоки (.atlas-callout) и матрица сравнения
         (.comparison-matrix). Семантические варианты через модификаторы.
   ЗАВИСИМОСТИ: 01-atlas-core.css (геометрия и модификаторы --important/
                --warning/--success уже там)
   ПОРЯДОК В МОНОЛИТЕ: 6 из 7
   ========================================================================== */

/* ── СЕКЦИЯ A: CALLOUT — Базовый и NOTE-вариант ─────────────────────────── */
/* Геометрия (border, padding, position, ::before position/height/size)    */
/* задана в 01-atlas-core.css через общий список системных блоков.         */
/* Здесь: фон, дефолтный content шапки, вариант --note и --quote.          */

/* Фон — нейтральный alt, не чистый белый */
.atlas-container .atlas-callout {
  background: var(--atlas-bg-alt);
}

/* Дефолтная шапка (переопределяет заглушку core.css если там была) */
.atlas-container .atlas-callout::before {
  content: "[ INFO // DOCUMENTATION ]";
}

/* NOTE: нейтральная системная заметка */
.atlas-container .atlas-callout--note::before {
  content: "[ SYSTEM_NOTE ]";
}

/* QUOTE: цитата с левой полосой */
.atlas-container .atlas-callout--quote {
  border-left: 4px solid var(--atlas-ink-muted);
}
.atlas-container .atlas-callout--quote::before {
  content: "[ REFERENCE_POINT ]";
}

/* Параграф внутри callout — изолированный сброс отступов */
.atlas-container .atlas-callout p {
  margin: 0;
  font-size: 13px;
  line-height: 1.6;
  color: var(--atlas-ink-soft);
}

/* ── СЕКЦИЯ B: COMPARISON MATRIX — Двухколоночное сравнение ─────────────── */
/* Геометрия (border, position, padding-top под шапку) задана здесь,       */
/* а не в core, потому что .comparison-matrix имеет display:grid           */
/* и нестандартные отступы отличные от остальных системных блоков.          */
/*                                                                           */
/* ИСПРАВЛЕНИЕ: padding-top унифицирован с core (34px) вместо 24px.        */
/* Если нужно вернуть 24px — убрать блок из core и задать здесь явно.      */

.atlas-container .comparison-matrix {
  margin: 24px;
  max-width: calc(100% - 48px);
  border: 1px solid var(--atlas-border);
  position: relative;
  display: grid;
  grid-template-columns: 1fr 1fr;
  padding-top: 34px; /* Синхронизировано с core: 24px шапка + 10px зазор */
  box-sizing: border-box;
  background: transparent;
}

/* Псевдо-шапка матрицы */
.atlas-container .comparison-matrix::before {
  content: "[ COMPARISON // DATA_MATRIX ]";
}

/* Колонки */
.atlas-container .comp-col {
  padding: 16px;
  display: flex;
  flex-direction: column;
}
.atlas-container .comp-col:first-child {
  border-right: 1px dashed var(--atlas-border);
}

/* Заголовок колонки */
.atlas-container .comp-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  color: var(--atlas-ink);
  margin-bottom: 8px;
  letter-spacing: 0.05em;
}

/* Тело колонки */
.atlas-container .comp-body {
  font-size: var(--fs-code);
  line-height: 1.5;
  color: var(--atlas-ink-soft);
}

/* ── OVERFLOW FIX (v3.8.1) — comparison-matrix scroll ───────────────────── */
/* .comparison-matrix — display:grid 1fr 1fr.                               */
/* Если содержимое ячейки (pre, длинная строка) шире 1fr,                  */
/* grid не ужимает её ниже min-content без явного min-width: 0.             */

.atlas-container .comparison-matrix {
  overflow-x: auto;    /* если вся матрица не помещается — скролл */
}

.atlas-container .comp-col {
  min-width: 0;        /* критично: разрешает grid ужать колонку */
  overflow: hidden;    /* контент не вылезает за границу ячейки */
}

/* pre внутри comp-col: скролл по коду, не разрыв layout */
.atlas-container .comp-col pre,
.atlas-container .comp-col pre.atlas-code-block {
  overflow-x: auto;
  max-width: 100%;
  box-sizing: border-box;
  /* Шапку ::before внутри comparison скрываем — дублирует comp-label */
  padding-top: 12px;
}
.atlas-container .comp-col pre.atlas-code-block::before {
  display: none;
}

/* Длинные слова в .comp-body (имена функций, URLs) */
.atlas-container .comp-body {
  word-break: break-word;
  overflow-wrap: break-word;
  min-width: 0;
}


/* ==========================================================================
   FILE: 07-atlas-media.css
   ROLE: Медиа-контейнеры (.media-frame) и галерейная сетка (.gallery-grid).
         Поддержка img, video, iframe (16:9 авто-пропорции для YouTube/Vimeo).
         Галерея автоматически активируется когда .gallery-grid
         является прямым потомком .media-frame.
   ЗАВИСИМОСТИ: 01-atlas-core.css (геометрия .media-frame)
   ПОРЯДОК В МОНОЛИТЕ: 7 из 7 (последний)
   ========================================================================== */

/* ── СЕКЦИЯ A: MEDIA FRAME — Инженерный визуальный контейнер ────────────── */
/* Геометрия (border, padding, ::before) задана в 01-atlas-core.css.        */

.atlas-container .content-block .media-frame {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

/* Псевдо-шапка: одиночный медиа-ассет */
.atlas-container .content-block .media-frame::before {
  content: "[ MEDIA_ASSET // VISUAL_DATA ]";
}

/* Когда внутри .media-frame находится .gallery-grid — шапка переключается */
.atlas-container .content-block .media-frame:has(.gallery-grid)::before {
  content: "[ GALLERY // IMAGE_SEQUENCE ]";
}

/* Одиночные медиа-элементы (не в галерее) */
.atlas-container .content-block .media-frame > img,
.atlas-container .content-block .media-frame > video,
.atlas-container .content-block .media-frame > iframe {
  display: block;
  max-width: 100%;
  height: auto;
  border: 1px solid var(--atlas-border);
  margin: 0 auto;
}

/* iframe (YouTube, Vimeo): авто-пропорция 16:9 */
.atlas-container .content-block .media-frame > iframe {
  width: 100%;
  aspect-ratio: 16 / 9;
}

/* Подпись — всегда по всей ширине, ниже контента */
.atlas-container .content-block .media-caption {
  font-family: var(--atlas-font-mono);
  font-size: var(--fs-status);
  color: var(--atlas-ink-muted);
  margin-top: 12px;
  text-align: center;
  width: 100%;
  align-self: center;
}

/* ── СЕКЦИЯ B: GALLERY GRID — Адаптивная сетка внутри media-frame ────────── */
/* Используется ВНУТРИ .media-frame для галерей.                             */
/* Auto-fit: 1 фото = full width, 2 = 2 col, 3+ = 2–3 col авто.            */
/* Отдельное использование за пределами .media-frame тоже поддерживается.  */

.atlas-container .content-block .gallery-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 8px;
  width: 100%;
}

/* Изображения внутри сетки: заполняют ячейку, сохраняют пропорции */
.atlas-container .content-block .gallery-grid img {
  display: block;
  width: 100%;
  height: 180px;           /* Фиксированная высота — все ячейки одного роста */
  object-fit: cover;       /* Обрезаем без искажения */
  border: 1px solid var(--atlas-border);
}

/* Когда .gallery-grid — прямой потомок .media-frame: убираем лишние отступы */
.atlas-container .content-block .media-frame > .gallery-grid {
  margin: 0;
}

/* Модификатор: высокие превью (портреты, иллюстрации) */
.atlas-container .content-block .gallery-grid--tall img {
  height: 260px;
}

/* Модификатор: маленькие миниатюры (спрайты, иконки, текстуры) */
.atlas-container .content-block .gallery-grid--thumb img {
  height: 100px;
}

/* Модификатор: принудительно 3 колонки независимо от ширины */
.atlas-container .content-block .gallery-grid--3col {
  grid-template-columns: repeat(3, 1fr);
}

/* Модификатор: принудительно 2 колонки */
.atlas-container .content-block .gallery-grid--2col {
  grid-template-columns: repeat(2, 1fr);
}

/* ── СЕКЦИЯ C: АДАПТИВНОСТЬ ──────────────────────────────────────────────── */

@media (max-width: 550px) {
  .atlas-container .content-block .gallery-grid,
  .atlas-container .content-block .gallery-grid--3col,
  .atlas-container .content-block .gallery-grid--2col {
    grid-template-columns: 1fr;
  }
  .atlas-container .content-block .gallery-grid img {
    height: 200px;
  }
}


/* ==========================================================================
   FILE: 08-atlas-interactive.css
   ROLE: Кнопки (.atlas-btn + модификаторы) и блок референсов (.atlas-refs).
         Кнопки вдохновлены эстетикой Volkov/Norton Commander:
         синяя заливка #0000AA, dithering-оверлей на hover, угловые рамки.
   ЗАВИСИМОСТИ: 01-atlas-core.css (переменные --atlas-*)
   ПОРЯДОК В МОНОЛИТЕ: 8 из 8 (последний)
   ========================================================================== */

/* ── СЕКЦИЯ A: КНОПКИ — База ─────────────────────────────────────────────── */
/* Volkov Commander palette: #0000AA fill, white text, dithering on hover.  */
/* Dithering реализован через CSS gradient pattern (4px шахматная сетка).  */
/* Семантика: используй .atlas-btn как <button> или <a class="atlas-btn">   */

.atlas-container .atlas-btn {
  -webkit-appearance: none;
  appearance: none;
  border-radius: 0;
  position: relative;
  display: inline-block;
  font-family: var(--atlas-font-mono);
  font-size: var(--fs-code);        /* 12px */
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: 6px 16px;
  border: none;
  cursor: pointer;
  color: #ffffff;
  background-color: #0000AA;        /* Volkov Commander синий */
  text-decoration: none;
  white-space: nowrap;
  overflow: hidden;
  outline: none;
  transition: background-color 0.1s;
  user-select: none;
  vertical-align: middle;
}

/* Dithering overlay — видим только на hover, через CSS pattern 4×4px */
.atlas-container .atlas-btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(45deg, rgba(0,0,170,.5) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(0,0,170,.5) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(0,0,170,.5) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(0,0,170,.5) 75%);
  background-size: 4px 4px;
  background-position: 0 0, 0 2px, 2px -2px, -2px 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity 0.1s;
}

.atlas-container .atlas-btn:hover::after {
  opacity: 1;
}

.atlas-container .atlas-btn:active {
  background-color: #00008B;
  transform: translateY(1px);
}

/* ── СЕКЦИЯ B: КНОПКИ — Семантические модификаторы ──────────────────────── */

/* Активное/выбранное состояние (например: выбранный таб, текущий фильтр) */
.atlas-container .atlas-btn--active {
  background-color: #00008B;
  box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.25);
}

/* Деструктивное действие (удаление, сброс) */
.atlas-container .atlas-btn--danger {
  background-color: var(--atlas-crit);
}
.atlas-container .atlas-btn--danger:active {
  background-color: #6a0000;
}

/* Подтверждение, успех */
.atlas-container .atlas-btn--ok {
  background-color: var(--atlas-ok);
}
.atlas-container .atlas-btn--ok:active {
  background-color: #123912;
}

/* Ghost: прозрачный фон, рамка, бордовый текст — для вторичных действий */
.atlas-container .atlas-btn--ghost {
  border-radius: 0;
  background: transparent;
  color: var(--atlas-crit);
  border: 1px solid var(--atlas-border);
}
.atlas-container .atlas-btn--ghost::after {
  display: none; /* Dithering не нужен для ghost */
}
.atlas-container .atlas-btn--ghost:hover {
  background: var(--atlas-bg-alt);
}
.atlas-container .atlas-btn--ghost:active {
  transform: translateY(1px);
}

/* ── СЕКЦИЯ C: КНОПКИ — Структурный модификатор --bracket ───────────────── */
/* Текстовые кнопки-ссылки в стиле [ACTION]. Без заливки, скобки через CSS. */
/* HTML: <button class="atlas-btn atlas-btn--bracket">Read More</button>     */

.atlas-container .atlas-btn--bracket {
  border-radius: 0;
  background: transparent;
  color: var(--atlas-ink);
  border: none;
  padding: 4px 8px;
  letter-spacing: 0.04em;
  font-weight: 700;
}

/* Скобки генерируются через ::before и перезаписывают dithering ::after */
.atlas-container .atlas-btn--bracket::before {
  content: '[';
  margin-right: 3px;
  color: var(--atlas-ink-muted);
  font-weight: 400;
}
.atlas-container .atlas-btn--bracket::after {
  content: ']';
  /* Переопределяем dithering-стили из базовой кнопки */
  position: static;
  background-image: none;
  background-size: auto;
  background-position: 0 0;
  pointer-events: auto;
  opacity: 1;
  transition: none;
  margin-left: 3px;
  color: var(--atlas-ink-muted);
  font-weight: 400;
  inset: auto;
}

.atlas-container .atlas-btn--bracket:hover {
  color: var(--atlas-crit);
}
.atlas-container .atlas-btn--bracket:hover::before,
.atlas-container .atlas-btn--bracket:hover::after {
  color: var(--atlas-crit);
}
.atlas-container .atlas-btn--bracket:active {
  transform: translateY(1px);
}

/* ── СЕКЦИЯ D: КНОПКИ — Размерный модификатор ───────────────────────────── */

/* Малый: для строк таблиц, мета-зон */
.atlas-container .atlas-btn--sm {
  font-size: var(--fs-status);     /* 9px */
  padding: 3px 10px;
  letter-spacing: 0.08em;
}

/* ── СЕКЦИЯ E: ГРУППА КНОПОК ─────────────────────────────────────────────── */
/* HTML: <div class="atlas-btn-group"><button class="atlas-btn">A</button>... */

.atlas-container .atlas-btn-group {
  display: inline-flex;
  align-items: center;
  gap: 0;
}

/* Разделитель между кнопками в группе */
.atlas-container .atlas-btn-group .atlas-btn + .atlas-btn {
  border-left: 1px solid rgba(255, 255, 255, 0.2);
}

/* ── СЕКЦИЯ F: REFERENCE BLOCK ───────────────────────────────────────────── */
/* Блок библиографических ссылок и источников в конце статьи.               */
/* Структура:                                                                */
/*   .atlas-refs                                                             */
/*     > ul.atlas-ref-list                                                  */
/*       > li.atlas-ref-item                                                */
/*           .atlas-ref-num   — порядковый номер [01]                       */
/*           .atlas-ref-body                                                */
/*             .atlas-ref-tag — тип: [PAPER] [DOCS] [CODE] [VIDEO]         */
/*             .atlas-ref-author — авторы                                   */
/*             .atlas-ref-title — название (опционально)                    */
/*             a.atlas-ref-link — URL с автопрефиксом →                     */

/* Геометрия блока — в стиле системных блоков, но без core-списка */
.atlas-container .content-block .atlas-refs {
  position: relative;
  border: 1px solid var(--atlas-border);
  padding: 34px 16px 16px 16px;
  margin: 24px 0;
  width: 100%;
}

.atlas-container .content-block .atlas-refs::before {
  content: "[ REFERENCES // ИСТОЧНИКИ ]";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 24px;
  line-height: 24px;
  padding-left: 16px;
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-ink-muted);
  background: rgba(0, 0, 0, 0.015);
  border-bottom: 1px solid var(--atlas-border);
  letter-spacing: 0.05em;
  font-family: var(--atlas-font-mono);
}

/* Список */
.atlas-container .content-block .atlas-ref-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* Строка: номер + тело */
.atlas-container .content-block .atlas-ref-item {
  display: grid;
  grid-template-columns: 28px 1fr;
  gap: 0;
  align-items: baseline;
  font-size: var(--fs-code);
  line-height: 1.55;
  color: var(--atlas-ink-soft);
  padding-bottom: 10px;
  border-bottom: 1px dashed var(--atlas-border);
}
.atlas-container .content-block .atlas-ref-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

/* Номер */
.atlas-container .content-block .atlas-ref-num {
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-crit);
  letter-spacing: 0.04em;
  padding-top: 2px;
}

/* Тело */
.atlas-container .content-block .atlas-ref-body {
  font-size: var(--fs-code);
}

/* Тег типа источника: [PAPER] [DOCS] [CODE] [VIDEO] [TALK] */
.atlas-container .content-block .atlas-ref-tag {
  display: inline-block;
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-ink-muted);
  border: 1px solid var(--atlas-border);
  padding: 0 5px;
  margin-right: 6px;
  vertical-align: middle;
  letter-spacing: 0.04em;
}

/* Авторы */
.atlas-container .content-block .atlas-ref-author {
  color: var(--atlas-ink-muted);
  font-size: var(--fs-code);
}

/* URL-ссылка с автопрефиксом → */
.atlas-container .content-block .atlas-ref-link {
  display: inline-block;
  margin-top: 3px;
  font-size: var(--fs-meta);
  color: var(--atlas-crit);
  text-decoration: none;
  border-bottom: 1px solid rgba(139, 0, 0, 0.25);
  transition: border-color 0.15s;
}
.atlas-container .content-block .atlas-ref-link::before {
  content: '→ ';
  font-weight: 700;
}
.atlas-container .content-block .atlas-ref-link:hover {
  border-bottom-color: var(--atlas-crit);
}



/* ==========================================================================
   FILE: 09-atlas-shader-panel.css
   ROLE: Интерактивная панель управления параметрами шейдера (.atlas-shader-panel).
         Стиль: Volkov/Norton Commander — DOS-терминал, пиксельная эстетика.
         Используется внутри постов рядом с интерактивными WebGL/iframe блоками.

   НОВАЯ ПЕРЕМЕННАЯ: --atlas-accent (#0000AA) — UI-акцент (кнопки, слайдеры,
         переключатели). НЕ путать с --atlas-crit (#8b0000) — это семантика
         ошибок, предупреждений и маркеров в контенте.

   ЗАВИСИМОСТИ: 01-atlas-core.css (--atlas-*, --fs-*, --atlas-font-mono)
   ПОРЯДОК В МОНОЛИТЕ: 9 из 9
   ========================================================================== */

/* ── СЕКЦИЯ A: НОВЫЕ ТОКЕНЫ — Добавить в 01-atlas-core.css :root ─────────
   --atlas-accent:   #0000AA   Volkov Commander blue — UI кнопки, слайдеры
   --atlas-accent-h: #0000DD   Hover-состояние accent
   --fs-math:        14px      MathJax формулы (крупнее кода, но меньше h3)
   Здесь продублированы как fallback если core ещё не обновлён.           */

:root {
  --atlas-accent:   #0000AA;
  --atlas-accent-h: #0000DD;
  --fs-math:        14px;
  /* Dither-паттерн: 4×4px шахматка, чёрная — для теней и OFF-состояний */
  --atlas-dither: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="4" height="4"><rect width="2" height="2" x="0" y="0" fill="black"/><rect width="2" height="2" x="2" y="2" fill="black"/></svg>');
}

/* ── СЕКЦИЯ B: ПАНЕЛЬ — Контейнер и тень ─────────────────────────────────
   .atlas-shader-panel — корневой элемент панели.
   Тень: 8px solid black — строгий пиксельный сдвиг, без blur, без radius.
   HTML: <div class="atlas-shader-panel"> ... </div>                       */

.atlas-container .atlas-shader-panel {
  font-family: var(--atlas-font-mono);
  font-size: var(--fs-body);
  color: var(--atlas-ink-soft);
  width: 100%;
  position: relative;
  box-sizing: border-box;

  background: var(--atlas-bg);
  border: 2px solid var(--atlas-ink);
  /* Пиксельная тень: смещение 8px вправо + 8px вниз, без blur */
  box-shadow: 8px 8px 0 0 var(--atlas-ink);
  /* Компенсируем тень — иначе правый и нижний край обрезается */
  margin-bottom: 12px;
  margin-right: 8px;
}

/* ── СЕКЦИЯ C: ШАПКА ПАНЕЛИ ─────────────────────────────────────────────── */

.atlas-container .atlas-shader-panel__header {
  background: var(--atlas-ink);
  color: var(--atlas-bg);
  padding: 8px 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 2px solid var(--atlas-ink);
}

.atlas-container .atlas-shader-panel__title {
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--atlas-bg);
}

/* Статус: мигающий квадратный диод + метка ACTIVE/IDLE */
.atlas-container .atlas-shader-panel__status {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-bg);
  letter-spacing: 0.1em;
  opacity: 0.85;
}

/* Диод: строгий квадрат, никаких border-radius */
.atlas-container .atlas-shader-panel__led {
  width: 7px;
  height: 7px;
  background: var(--atlas-bg);
  border-radius: 0;
  flex-shrink: 0;
  animation: atlas-led-pulse 2s infinite steps(2, end);
}

@keyframes atlas-led-pulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ── СЕКЦИЯ D: ТЕЛО ПАНЕЛИ ───────────────────────────────────────────────── */

.atlas-container .atlas-shader-panel__body {
  padding: 16px;
  display: flex;
  flex-direction: column;
  gap: 20px;
}

/* Блок параметров внутри панели */
.atlas-container .atlas-shader-panel__block {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* Заголовок блока параметров */
.atlas-container .atlas-shader-panel__block-title {
  font-size: var(--fs-status);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.1em;
  color: var(--atlas-ink-muted);
  border-bottom: 1px solid var(--atlas-border);
  padding-bottom: 5px;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
}

.atlas-container .atlas-shader-panel__block-hint {
  font-weight: 400;
  color: var(--atlas-ink-muted);
  font-size: var(--fs-status);
  letter-spacing: 0.04em;
}

/* ── СЕКЦИЯ E: УПРАВЛЯЮЩАЯ СЕТКА (3 колонки: prefix | label | control) ─── */

.atlas-container .atlas-sp-grid {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  column-gap: 8px;
  row-gap: 10px;
  align-items: center;
}

/* Префикс: val_ / bool_ / col_ */
.atlas-container .atlas-sp-prefix {
  font-size: var(--fs-status);
  color: var(--atlas-ink-muted);
  text-align: right;
  white-space: nowrap;
}

/* Имя параметра */
.atlas-container .atlas-sp-label {
  font-size: var(--fs-code);
  font-weight: 700;
  color: var(--atlas-ink);
  letter-spacing: -0.01em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Числовое значение (выводится через JS) */
.atlas-container .atlas-sp-value {
  font-size: var(--fs-code);
  font-weight: 700;
  color: var(--atlas-accent);
  min-width: 40px;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

/* Слайдер занимает всю строку — grid-column: 1/-1 */
.atlas-container .atlas-sp-row-full {
  grid-column: 1 / -1;
}

/* ── СЕКЦИЯ F: СЛАЙДЕР — Инженерная шкала без стандартных контролов ─────── */

.atlas-container .atlas-sp-slider-wrap {
  position: relative;
  height: 22px;
  display: flex;
  align-items: center;
}

/* Центральная ось прибора */
.atlas-container .atlas-sp-slider-wrap::before {
  content: '';
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 1px;
  background: var(--atlas-ink);
  z-index: 0;
}

/* Засечки измерительной шкалы: повторяющийся градиент */
.atlas-container .atlas-sp-slider-wrap::after {
  content: '';
  position: absolute;
  left: 0; right: 0; top: 50%;
  height: 7px;
  margin-top: -3px;
  background: repeating-linear-gradient(
    90deg,
    var(--atlas-ink) 0,
    var(--atlas-ink) 1px,
    transparent 1px,
    transparent 10%
  );
  z-index: 0;
  opacity: 0.2;
}

.atlas-container .atlas-sp-slider {
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  height: 100%;
  width: 100%;
  outline: none;
  cursor: ew-resize;
  position: relative;
  z-index: 1;
}

/* Маркер-ползунок: строгий прямоугольник, цвет --atlas-accent */
.atlas-container .atlas-sp-slider::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 6px;
  height: 18px;
  background: var(--atlas-accent);
  border: 1px solid var(--atlas-ink);
  border-radius: 0;
  box-shadow: none;
  cursor: ew-resize;
  transition: transform 0.1s;
}
.atlas-container .atlas-sp-slider::-moz-range-thumb {
  width: 6px;
  height: 18px;
  background: var(--atlas-accent);
  border: 1px solid var(--atlas-ink);
  border-radius: 0;
  box-shadow: none;
  cursor: ew-resize;
  transition: transform 0.1s;
}
.atlas-container .atlas-sp-slider::-webkit-slider-thumb:hover { transform: scaleY(1.25); }
.atlas-container .atlas-sp-slider::-moz-range-thumb:hover     { transform: scaleY(1.25); }

/* ── СЕКЦИЯ G: ПЕРЕКЛЮЧАТЕЛЬ BOOLEAN ────────────────────────────────────── */

/* Обёртка: скрытый input + видимый switch-статус */
.atlas-container .atlas-sp-switch {
  position: relative;
  width: 56px;
  height: 20px;
  cursor: pointer;
  display: block;
  flex-shrink: 0;
}

.atlas-container .atlas-sp-switch input {
  opacity: 0;
  width: 0; height: 0;
  position: absolute;
}

/* OFF-состояние: dither-паттерн = "выключено", текст OFF */
.atlas-container .atlas-sp-switch__track {
  position: absolute;
  inset: 0;
  border: 1px solid var(--atlas-ink);
  border-radius: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: var(--fs-status);
  font-weight: 700;
  letter-spacing: 0.06em;

  /* Dither-фон = выключено */
  background: var(--atlas-dither) repeat;
  background-size: 4px 4px;
  background-color: var(--atlas-bg);
}
.atlas-container .atlas-sp-switch__track::after {
  content: 'OFF';
  color: var(--atlas-ink-muted);
  background: var(--atlas-bg);
  padding: 0 3px;
  position: relative;
  z-index: 1;
}

/* ON-состояние: сплошной accent, текст ON */
.atlas-container .atlas-sp-switch input:checked + .atlas-sp-switch__track {
  background: var(--atlas-accent);
  background-image: none;
}
.atlas-container .atlas-sp-switch input:checked + .atlas-sp-switch__track::after {
  content: 'ON';
  color: #ffffff;
  background: transparent;
}

/* ── СЕКЦИЯ H: КНОПКИ ПАНЕЛИ — dither-тень под блоком ───────────────────── */
/* Архитектура: .atlas-sp-btn-wrap — позиционирует dither-тень.             */
/* .atlas-sp-btn — сама кнопка, смещена translate(-4px,-4px) над тенью.    */
/* :active — кнопка опускается на 0,0 — эффект физического нажатия.        */

.atlas-container .atlas-sp-actions {
  display: flex;
  gap: 16px;
  padding-top: 4px;
}

/* Обёртка — содержит dither-тень позади кнопки */
.atlas-container .atlas-sp-btn-wrap {
  flex: 1;
  position: relative;
  display: inline-block;
  /* КРИТИЧНО: overflow никогда не hidden — тень должна вылезать за блок */
}

/* Тень = ::after на обёртке, z-index: 0 — строго ПОД кнопкой.
   Архитектура: тень и кнопка в одном stacking context,
   z-index решает порядок без конфликта с background родителя.     */
.atlas-container .atlas-sp-btn-wrap::after {
  content: '';
  position: absolute;
  /* Смещение тени: 4px вправо + 4px вниз от позиции кнопки */
  top: 4px; left: 4px;
  right: -4px; bottom: -4px;
  /* Dither-паттерн: 4×4px шахматка */
  background-image:
    linear-gradient(45deg, rgba(0,0,0,.75) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(0,0,0,.75) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(0,0,0,.75) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(0,0,0,.75) 75%);
  background-size: 4px 4px;
  background-position: 0 0, 0 2px, 2px -2px, -2px 0;
  z-index: 0;   /* ПОД кнопкой */
  pointer-events: none;
}

/* Сама кнопка — z-index: 1, всегда поверх тени */
.atlas-container .atlas-sp-btn {
  width: 100%;
  position: relative;
  z-index: 1;   /* НАД ::after тенью */
  background: var(--atlas-bg);
  border: 1px solid var(--atlas-ink);
  border-radius: 0;
  -webkit-appearance: none;
  appearance: none;
  color: var(--atlas-ink);
  font-family: var(--atlas-font-mono);
  font-size: var(--fs-code);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.05em;
  padding: 8px 12px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  /* Кнопка смещена вверх-влево — тень выглядывает снизу-справа */
  transform: translate(-4px, -4px);
  transition: transform 0.05s linear;
  white-space: nowrap;
}

/* Нажатие: кнопка "проваливается" на тень */
.atlas-container .atlas-sp-btn:active {
  transform: translate(0, 0);
}

/* Модификатор: синяя акцентная кнопка (EXECUTE, PRIMARY) */
.atlas-container .atlas-sp-btn--accent {
  background: var(--atlas-accent);
  color: #ffffff;
  border-color: var(--atlas-ink);
}
.atlas-container .atlas-sp-btn--accent:hover {
  background: var(--atlas-accent-h);
}

/* Модификатор: деструктивная (FLUSH, RESET) — сохраняет светлый фон */
.atlas-container .atlas-sp-btn--reset {
  color: var(--atlas-ink-soft);
}
.atlas-container .atlas-sp-btn--reset:hover {
  background: rgba(0, 0, 0, 0.04);
}

/* Иконка-символ внутри кнопки */
.atlas-container .atlas-sp-btn__icon {
  font-size: 13px;
  font-weight: 400;
  line-height: 1;
}

/* ── СЕКЦИЯ I: ФУТЕР ПАНЕЛИ ──────────────────────────────────────────────── */

.atlas-container .atlas-shader-panel__footer {
  border-top: 2px solid var(--atlas-ink);
  background: rgba(0, 0, 0, 0.03);
  padding: 8px 14px;
  display: flex;
  justify-content: space-between;
  font-size: var(--fs-status);
}

.atlas-container .atlas-shader-panel__footer-col {
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.atlas-container .atlas-shader-panel__footer-col--right {
  text-align: right;
}

.atlas-container .atlas-sp-meta-line {
  color: var(--atlas-ink-soft);
  font-weight: 700;
}

.atlas-container .atlas-sp-meta-key {
  color: var(--atlas-ink-muted);
  font-weight: 400;
  margin-right: 4px;
}


/* ==========================================================================
   FILE: 10-atlas-toc.css
   ROLE: Содержание поста (.atlas-toc) с якорной навигацией по H2/H3/H4.
         Автоматически генерируется JS (см. ниже) или пишется вручную.
         Стилистически идентичен .atlas-refs — те же рамки, псевдо-шапка,
         пунктирные разделители, — но клик ведёт на секцию, а не на URL.

   JS-АВТОГЕНЕРАЦИЯ:
     Вставь <div id="atlas-toc"></div> в начало поста.
     Подключи скрипт atlas-toc.js — он найдёт все h2/h3/h4 внутри
     .content-block, назначит им id и заполнит #atlas-toc.

   ЗАВИСИМОСТИ: 01-atlas-core.css
   ПОРЯДОК В МОНОЛИТЕ: 10 из 10
   ========================================================================== */

/* ── СЕКЦИЯ A: КОНТЕЙНЕР ─────────────────────────────────────────────────── */

.atlas-container .content-block .atlas-toc {
  position: relative;
  border: 1px solid var(--atlas-border);
  padding: 34px 0 8px 0;   /* top = 24px шапка + 10px зазор; sides = 0 (у items своих) */
  margin: 24px 0;
  width: 100%;
}

/* Псевдо-шапка — идентична системным блокам */
.atlas-container .content-block .atlas-toc::before {
  content: "[ TABLE_OF_CONTENTS // NAVIGATION ]";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 24px;
  line-height: 24px;
  padding-left: 16px;
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-ink-muted);
  background: rgba(0, 0, 0, 0.015);
  border-bottom: 1px solid var(--atlas-border);
  letter-spacing: 0.06em;
  font-family: var(--atlas-font-mono);
}

/* ── СЕКЦИЯ B: СПИСОК ЭЛЕМЕНТОВ ──────────────────────────────────────────── */

.atlas-container .content-block .atlas-toc__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
}

/* Каждый элемент = 3-колоночная сетка: номер | заголовок | точки */
.atlas-container .content-block .atlas-toc__item {
  display: grid;
  grid-template-columns: 32px 1fr;
  align-items: center;
  border-bottom: 1px dashed var(--atlas-border);
  transition: background 0.1s;
}
.atlas-container .content-block .atlas-toc__item:last-child {
  border-bottom: none;
}
.atlas-container .content-block .atlas-toc__item:hover {
  background: rgba(0, 0, 0, 0.02);
}

/* Ссылка растягивается на весь элемент через display:contents */
.atlas-container .content-block .atlas-toc__item a {
  display: contents;
  text-decoration: none;
  color: inherit;
}

/* Hover: номер и заголовок краснеют */
.atlas-container .content-block .atlas-toc__item:hover .atlas-toc__num,
.atlas-container .content-block .atlas-toc__item:hover .atlas-toc__title {
  color: var(--atlas-crit);
}

/* ── СЕКЦИЯ C: ЯЧЕЙКИ ────────────────────────────────────────────────────── */

/* Номер секции: [01] / [—] / [·] */
.atlas-container .content-block .atlas-toc__num {
  font-size: var(--fs-status);
  font-weight: 700;
  color: var(--atlas-ink-muted);
  padding: 7px 0 7px 16px;
  letter-spacing: 0.04em;
  align-self: center;
  transition: color 0.1s;
}

/* Строка заголовка + точки через flex */
.atlas-container .content-block .atlas-toc__row {
  display: flex;
  align-items: center;
  gap: 4px;
  padding: 7px 16px 7px 8px;
  overflow: hidden;
}

/* Заголовок */
.atlas-container .content-block .atlas-toc__title {
  font-size: var(--fs-code);
  font-weight: 700;
  color: var(--atlas-ink);
  white-space: nowrap;
  flex-shrink: 0;
  transition: color 0.1s;
}

/* Точки-заполнитель между заголовком и краем */
.atlas-container .content-block .atlas-toc__dots {
  flex: 1;
  border-bottom: 1px dotted var(--atlas-border);
  min-width: 12px;
  height: 0;
  align-self: center;
  margin-bottom: 2px;
}

/* ── СЕКЦИЯ D: УРОВНИ ВЛОЖЕННОСТИ ────────────────────────────────────────── */

/* H2: основной раздел — без отступа, жирный */
.atlas-container .content-block .atlas-toc__item--h2 .atlas-toc__title {
  font-size: var(--fs-code);
  font-weight: 700;
}

/* H3: подраздел — отступ 20px, обычный вес, приглушённый */
.atlas-container .content-block .atlas-toc__item--h3 .atlas-toc__title {
  font-size: 11px;
  font-weight: 400;
  color: var(--atlas-ink-soft);
  padding-left: 14px;
}
.atlas-container .content-block .atlas-toc__item--h3 .atlas-toc__num {
  color: rgba(0, 0, 0, 0.2);
}

/* H4: микро-заголовок — двойной отступ, мелкий, совсем приглушённый */
.atlas-container .content-block .atlas-toc__item--h4 .atlas-toc__title {
  font-size: 10px;
  font-weight: 400;
  color: var(--atlas-ink-muted);
  padding-left: 28px;
}
.atlas-container .content-block .atlas-toc__item--h4 .atlas-toc__num {
  color: rgba(0, 0, 0, 0.15);
}


