/* Длинный текст: статьи базы знаний и кейсы.
   Модуль темы v2 — своих цветов и шрифтов нет, всё через переменные v2.css.

   Зачем отдельный файл. Тело статьи приходит из markdown, тело кейса — из
   data/cases/*.html. Разметку мы не контролируем: там голые <h2>, <table>,
   <blockquote>, <hr>. В v2.css правил для них не было, поэтому статья
   доставалась браузеру со стилями по умолчанию — отсюда «разные шрифты»,
   «огромные промежутки» и отсутствие смысловой иерархии.

   Всё заскоуплено под .prose / .case: голых правил на теги здесь нет,
   иначе поедут шапка, подвал и остальные страницы. */

/* ═══ Статья базы знаний ═══════════════════════════════════ */

.prose{max-width:var(--measure)}
.prose > :first-child{margin-top:0}
.prose > :last-child{margin-bottom:0}

/* Первый абзац — вводка: тем же кеглем, что .lead на других страницах,
   чтобы вход в текст читался, а не начинался с середины. */
.prose > p:first-of-type{font-size:1.0625rem;line-height:1.55;color:var(--muted-2)}

.prose p{margin:0 0 .875rem;line-height:1.6}
.prose strong{font-weight:600;color:var(--ink)}
.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:.2em}
.prose a:hover{color:var(--accent-ink)}

/* Заголовки. Раньше h2 в статье был 20px, h3 — 17px, то есть ровно кегль
   текста: уровни между собой не различались. Разница задаётся кеглем и
   разделителем, а не «ещё одним шрифтом». */
.prose h2{font-size:1.5rem;line-height:1.25;font-weight:500;letter-spacing:-.015em;
  color:var(--ink);margin:2rem 0 .75rem;max-width:34ch}
/* A1: было 1.125rem/600 — третье значение h3 на сайте (система даёт
   1.1875rem/500, .doc давал 1.0625rem). Сводим к системному. */
.prose h3{font-size:1.1875rem;line-height:1.3;font-weight:500;
  color:var(--ink);margin:1.5rem 0 .5rem;max-width:40ch}
.prose h4{font-family:var(--font-mono);font-size:.6875rem;letter-spacing:.16em;
  text-transform:uppercase;font-weight:400;color:var(--muted);margin:1.25rem 0 .5rem}

/* Разделитель разделов приходит из markdown как <hr> и стоит ровно перед h2.
   Пока у h2 была своя верхняя черта, на стыке получались две линии и двойной
   отступ — тот самый «то огромный промежуток, то никакого». Черта одна: hr. */
.prose hr{border:0;border-top:1px solid var(--rule);margin:2rem 0 0}
.prose hr + h2{margin-top:1.25rem}

/* Списки. Маркер — акцентная черта: она же отличает перечисление от абзаца
   на просмотре по диагонали. */
.prose ul{list-style:none;padding-left:1.25rem;margin:0 0 .875rem}
.prose ul > li{position:relative;padding-left:.25rem}
.prose ul > li::before{content:"—";position:absolute;left:-1.25rem;color:var(--accent)}
.prose ol{padding-left:1.5rem;margin:0 0 .875rem}
.prose ol > li::marker{color:var(--muted);font-variant-numeric:tabular-nums}
/* A1: пункт списка наследовал 16px от .doc li, тогда как абзац рядом —
   17px. Один кегль тела текста на статью. */
.prose li{margin-bottom:.375rem;font-size:1.0625rem;line-height:1.6}
.prose li > ul,.prose li > ol{margin-top:.375rem;margin-bottom:.25rem}

/* Таблица — тот же язык, что table.data в системе: тонкие линейки,
   моношрифтовая шапка. Ячейки переносятся, чтобы на 375px таблица
   не утаскивала страницу в горизонтальную прокрутку. */
.prose table{width:100%;border-collapse:collapse;margin:0 0 var(--stack);
  font-size:.9375rem}
.prose th{font-family:var(--font-mono);font-size:.625rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);font-weight:400;text-align:left;
  padding:.625rem .75rem .625rem 0;border-bottom:1px solid var(--rule);
  vertical-align:bottom}
.prose td{padding:.625rem .75rem .625rem 0;border-bottom:1px solid var(--rule);
  color:var(--text);vertical-align:top;overflow-wrap:anywhere}
.prose tr:last-child td{border-bottom:0}
.prose th:last-child,.prose td:last-child{padding-right:0}

/* Цитата-врезка — оформлена как .note в системе: акцентная грань слева. */
.prose blockquote{margin:var(--stack) 0;padding:.875rem 1.125rem;
  border-left:3px solid var(--accent);background:var(--paper-2);
  border-radius:0 var(--r-sm) var(--r-sm) 0;font-size:.9375rem;line-height:1.55}
.prose blockquote > :last-child{margin-bottom:0}

.prose pre{margin:0 0 var(--stack)}
.prose img{max-width:100%;height:auto;border-radius:var(--r);
  border:1px solid var(--rule);margin:0 0 var(--stack)}

/* Частые вопросы. Готовая .disclose не подходит: её summary набрана
   моношрифтом в верхнем регистре — это годится для ярлыка «что входит»,
   но не для вопроса предложением. */
.faq-item{border-top:1px solid var(--rule);max-width:var(--measure)}
.faq-item:last-of-type{border-bottom:1px solid var(--rule)}
.faq-item > summary{list-style:none;cursor:pointer;position:relative;
  padding:.875rem 2rem .875rem 0;font-size:1rem;line-height:1.45;color:var(--ink)}
.faq-item > summary::-webkit-details-marker{display:none}
.faq-item > summary::after{content:"+";position:absolute;right:0;top:.75rem;
  font-family:var(--font-mono);font-size:1rem;color:var(--muted)}
.faq-item[open] > summary::after{content:"–"}
.faq-item > summary:hover{color:var(--accent)}
.faq-item > p{margin:0 0 1rem;font-size:.9375rem;line-height:1.6;color:var(--text)}

/* ═══ Кейс ═════════════════════════════════════════════════
   data/cases/*.html и static/cases.css — вёрстка предыдущего поколения:
   свой синий (#1d6cf3), Inter 800, радиус 14px, жёлтая плашка предупреждения.
   Рядом с остальным сайтом это читалось как чужая страница.

   Тело кейса — юридически выверенный текст с разметкой, править его нельзя,
   а cases.css нужен другим шаблонам. Поэтому не переписываем, а переопределяем:
   локальные переменные .case переводим на палитру v2, дальше правила cases.css
   сами дают системные цвета. Селекторы с .doc — специфичность выше cases.css. */

.doc .case{
  /* Значения продублированы литералами намеренно: --crit/--warn/--ok из v2.css
     переопределяются самим cases.css внутри .case, и var(--crit) здесь дал бы
     циклическую ссылку. Источник значений — блок «Серьёзность нарушений» v2.css. */
  --ink-950:#0e0e10; --ink-900:#0e0e10; --ink-700:#2b2b2b; --ink-500:#6b6b70;
  --ink-300:#a8a8ad; --ink-50:#f4f4f2;
  --accent-500:#0b84e0; --accent-600:#0a6ab5; --accent-50:#eef6fd;
  --crit:#c2372c; --warn:#9a6a12; --ok:#2f7a4d;
  --line:rgba(14,14,16,.12);
  --line-strong:rgba(14,14,16,.2);
  --radius:12px;
  font-family:var(--font);font-size:1.0625rem;line-height:1.5;
}
/* Кейс уже лежит в .wrap-narrow страницы: собственный контейнер обнуляем,
   иначе получается контейнер в контейнере с двойными полями. */
.doc .case .wrap,.doc .case .wrap-narrow{max-width:none;margin:0;padding:0}

/* Кегли и насыщенности — по шкале v2 (там нет ни 800, ни 700). */
.doc .case h1{font-size:clamp(2.125rem,4.4vw,3.5rem);line-height:1.05;
  font-weight:400;letter-spacing:-.015em;margin:0 0 1rem;max-width:26ch}
/* Остатки веса 700 из cases.css: Inter подключён 400/500/600, 700-й браузер
   синтезирует — внутри страницы это читается как другая гарнитура. */
.doc .case .when,.doc .case svg text{font-weight:600}
.doc .case h2{font-size:1.5rem;line-height:1.25;font-weight:500;
  letter-spacing:-.015em;margin:0 0 .625rem;max-width:34ch}
/* A1: h3 и тело кейса шли на собственных значениях (1.125rem/600 и 16px).
   Приводим к той же шкале длинного текста, что .doc и .prose. */
.doc .case h3{font-size:1.1875rem;line-height:1.3;font-weight:500;margin:0 0 .5rem}
.doc .case p{font-size:1.0625rem;line-height:1.55;margin:0 0 .75rem;max-width:var(--measure)}
.doc .case .lead{font-size:1.0625rem;line-height:1.5;color:var(--muted-2);max-width:var(--measure)}
.doc .case strong,.doc .case b{font-weight:600}

/* Надрубрика секции — та же .eyebrow, что на всех страницах системы. */
.doc .case .sec-num{font-family:var(--font-mono);font-size:.6875rem;font-weight:400;
  letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:.625rem}
/* Плашка в шапке кейса: в системе это капсула-чип, а не залитая кнопка. */
.doc .case .eyebrow{display:inline-flex;align-items:center;gap:.5rem;
  font-family:var(--font-mono);font-size:.6875rem;font-weight:400;
  letter-spacing:.16em;text-transform:uppercase;background:none;
  color:var(--muted);border:1px solid var(--rule);border-radius:var(--r-pill);
  padding:.3125rem .75rem;margin-bottom:1.25rem}
.doc .case .eyebrow .dot{width:6px;height:6px;background:var(--accent)}
.doc .case .hl{color:var(--accent)}

/* Вертикальный ритм: у секций кейса было 44px сверху и снизу — 88px на стык
   при 56px у всего остального сайта. Сводим к --section-y. */
.doc .case .hero{padding:0 0 .5rem}
.doc .case section{padding:var(--section-y) 0}
.doc .case section + section{border-top:1px solid var(--rule)}

/* Один радиус на все блоки кейса (было 14px у карточек и 12px у находок). */
.doc .case .metric,.doc .case .finding,.doc .case .callout,.doc .case .card,
.doc .case .econ,.doc .case .honest,.doc .case .policy,.doc .case .warning,
.doc .case .figure .scroller{border-radius:var(--r)}

.doc .case .metric .val{font-size:1.75rem;font-weight:400;letter-spacing:-.03em}
.doc .case .metric .val small{font-weight:400}
.doc .case .metric.accent{background:var(--paper-2);border-color:var(--rule)}
.doc .case .metric.accent .val{color:var(--accent)}
.doc .case .finding .sev,.doc .case .steps .score{font-family:var(--font-mono);
  font-weight:400;letter-spacing:.14em;border-radius:var(--r-pill)}
.doc .case .finding .ttl{font-size:1rem;font-weight:600}
.doc .case .callout .k,.doc .case .card .kk,.doc .case .honest .k{
  font-family:var(--font-mono);font-weight:400;letter-spacing:.16em}
.doc .case .chip{font-family:var(--font-mono);font-size:.625rem;font-weight:400;
  letter-spacing:.16em;text-transform:uppercase;border-radius:var(--r-pill);
  background:none;color:var(--muted-2)}
.doc .case .econ .amt{font-weight:400;letter-spacing:-.03em}

/* Плашка предупреждения была единственным жёлтым блоком на сайте и кричала
   громче заголовка. Оставляем её выделенной, но в языке системы. */
.doc .case .warning{border-width:1px;border-color:var(--warn);background:var(--paper-2)}
.doc .case .warning .wh{font-weight:600;font-size:1rem;color:var(--warn)}
.doc .case .warning p,.doc .case .warning ul{color:var(--text);font-size:1rem}
.doc .case .warning .stamp{color:var(--muted)}

/* ── График в статье кейса: прокрутка только там, где она нужна ──────
   cases.css задаёт SVG min-width:720px на всех ширинах, а колонка статьи —
   710px. График помещался бы целиком, но из-за тридцати лишних пикселей под
   ним висела полоса прокрутки. На широком экране снимаем минимум и вписываем
   график в колонку; на узком он остаётся прокручиваемым — иначе подписи оси
   сжимаются в нечитаемую кашу, и там же показывается подсказка про свайп. */
@media (min-width: 701px) {
  .doc .case .figure .scroller{overflow-x:visible}
  .doc .case .figure .scroller > svg{min-width:0;width:100%;height:auto}
  .doc .case .swipe-hint{display:none}
}
