/* Hallmark · macrostructure: Long Document (страница разбора) + Index-First (список раздела)
 * genre: editorial-instrument · theme: custom · «Ночь» главной (DESIGN.md v2), перенос 28.09.2026
 * theme_axes: dark / geometric-sans Unbounded 600 + Golos Text /
 *   warm brass accent: кнопка Telegram и выноска подписи
 * enrichment: none (ноль изображений: носитель страницы — сам текст)
 * motion: свой не заводится, .rise и .amb приходят из core.css; пары
 *   длительность×кривая только --t-micro/--t-press × --e-out
 * pre-emit critique: P5 H5 E5 S5 R5 V4 + соразмерность: мера мерена знаками
 *
 * ВОЛНА 6, шаг 5. Слой раздела /razbor/ поверх core.css, подключается ПОСЛЕ.
 * Форма сменилась с Letter на Long Document: Letter — письмо от первого лица
 * с приветствием, а разбор открывается задачей читателя и течёт главами; плюс
 * Letter занят дважды (кейс калькулятора, хвост лендинга), Long Document — ни
 * разу. Ритм не повторяет пять кейсов: одна колонка, узкая мера, ни одной
 * кнопки в первом экране, главы отбиваются разлиновкой бланка.
 * Своих токенов, кеглей, пар моушена и изображений здесь нет.
*/

/* Мера мерена: Golos 16px съедает 8,7px на знак кириллицы (рендер 06.09.2026),
   39rem = 624px = 64 знака при вилке 62–66. Широкая — таблицам и коду.*/
:root{ --rz-measure:39rem; --rz-measure-wide:52rem; }

/* ─── Полотно: фон-стек §5 на обёртке, а не на секциях (швы). Декоративен ──*/
.page{position:relative; z-index:1; isolation:isolate;}
.page__bg{position:fixed; inset:0; z-index:-1; pointer-events:none;}
.page__bg i{position:absolute; inset:0; display:block;}
.page__base{
  /* шёлк «Ночи»: поле главы главной, полоса --paper 6% под 115° и зерно (noch.css .ch).
     Статично; тёплое пятно лампы сверху справа осталось, свет кадра фолда */
  background:
    var(--grain-18) 0 0 / 220px 220px,
    radial-gradient(52% 44% at 74% 12%, color-mix(in oklab,var(--glow) 9%,transparent), transparent 72%),
    linear-gradient(115deg, transparent 20%, color-mix(in oklab, var(--ink), var(--paper) 6%) 45%, transparent 70%),
    var(--ink);
  background-blend-mode:overlay, normal, normal;
}
/* гравировка-сетка и кипящее зерно старого сайта сняты: зерно уже в шёлке */
.page__etch,.page__grain{display:none;}

/* Колонка документа*/
.doc{
  position:relative; z-index:1; padding:0 var(--pad);
  max-width:calc(var(--rz-measure-wide) + var(--pad) * 2); margin-inline:auto;
}

/* ВХОД тише, чем у кейса: там роль несёт показание под стеклом, здесь —
 * заголовок: человек пришёл из поиска с готовым вопросом.*/
.rz-head{
  padding-block:clamp(var(--sp-lg),5vw,72px) clamp(var(--sp-lg),4vw,var(--sp-2xl));
  display:grid; gap:var(--sp-md);
}
/* Музейная подпись «РАЗБОР · ниша · месяц год» тем же моно и той же латунной
   выноской, что таблички экспонатов: выноска — wildcard проекта.*/
.razbor__mark,.rz-group__niche,.bridge__what,.way__k{
  margin:0; display:flex; flex-wrap:wrap; align-items:center;
  gap:var(--sp-2xs) var(--sp-xs);
  font-family:var(--ff-body); font-size:.875rem; line-height:1.5; color:var(--paper-62);
}
.razbor__mark b{font-weight:400; color:var(--paper);}
.razbor__mark i,.razbor__mark s,.rz-group__niche i{
  flex:0 0 auto; width:var(--sp-md); height:1px; background:var(--paper-38);
}
.razbor__mark i{background:var(--brass);}   /* латунная выноска — wildcard проекта*/
/* Возврат в опись из подписи: тач-цель 44px, домой ведёт логотип*/
.razbor__mark a{
  display:inline-flex; align-items:center; min-height:44px; color:var(--paper-62);
  text-decoration:underline; text-decoration-color:var(--paper-16); text-underline-offset:4px;
}
@media (hover:hover){ .razbor__mark a:hover{text-decoration-color:var(--paper);} }
.razbor__mark a:active{text-decoration-color:var(--paper);}

.razbor__title{
  margin:0; max-width:22ch; overflow-wrap:anywhere; min-width:0;
  font-family:var(--ff-display); font-weight:600;   /* как шапки главной (DESIGN.md v2) */
  font-size:clamp(28px,1.9vw + 17px,44px); line-height:1.12; letter-spacing:-.025em;
  color:var(--paper); text-wrap:balance;
}
/* 320: слово на 14 букв при 28 px рвалось посреди себя; 26 px как у H1 кейса */
@media (max-width:359px){ .razbor__title{font-size:26px;} }
/* Лид — вводный абзац, а не второй заголовок: display 28px под display 46px
   давал прыжок 1,64x, вход читался двумя заголовками. Шкала 46 → 22 → 16
   плюс смена гарнитуры, как в фолде кейсов.*/
.razbor__lede{
  margin:0; max-width:46ch; overflow-wrap:anywhere; min-width:0;
  font-family:var(--ff-body); font-size:clamp(19px,1.9vw,22px);
  line-height:1.5; letter-spacing:-.01em;
  color:color-mix(in oklab, var(--paper) 88%, transparent);
}

/*  ТЕЛО. Голые теги markdown: без правил ниже дефолт браузера даёт на
 * антраците Times и ссылки #0000EE.*/
.razbor__body{padding-bottom:clamp(var(--sp-xl),5vw,72px); max-width:var(--rz-measure-wide);}
/* голый URL не имеет права вытолкнуть страницу вбок на 320*/
.razbor__body p,.razbor__body ul,.razbor__body ol{
  max-width:var(--rz-measure); overflow-wrap:anywhere;
  font-family:var(--ff-body); font-size:1rem; line-height:1.7;
  color:color-mix(in oklab, var(--paper) 88%, transparent);
}
.razbor__body p{margin:0 0 var(--sp-md);}
.razbor__body > *:first-child{margin-top:0;}

/* Линия растёт ОТ заголовка вправо, как строка бланка, и стоит ПОД ним:
   заголовки приходят из markdown любой длины, а боковая линия на двухстрочном
   висит оторванным куском. Третий уровень — без линии и кеглем ниже.*/
.razbor__body h2,.razbor__body h3{
  max-width:var(--rz-measure); color:var(--paper);
  font-family:var(--ff-display); font-weight:600;
  overflow-wrap:anywhere; min-width:0; text-wrap:balance;
}
.razbor__body h2{
  margin:clamp(var(--sp-xl),4vw,var(--sp-2xl)) 0 var(--sp-md);
  font-size:clamp(22px,1.2vw + 16px,32px); line-height:1.2; letter-spacing:-.02em;
}
.razbor__body h2::after{
  content:""; display:block; width:clamp(2.5rem,18%,8rem); height:1px;
  margin-top:.5em; background:var(--paper-16);
}
.razbor__body h3{
  margin:clamp(var(--sp-lg),3vw,var(--sp-xl)) 0 var(--sp-2xs);
  font-size:clamp(19px,.45vw + 17px,23px); line-height:1.3; letter-spacing:-.01em;
}
.razbor__body h2 + h3{margin-top:var(--sp-md);}

/* list-style НЕ снимаем: в Safari `none` отбирает у списка роль в дереве
   доступности, VoiceOver перестаёт объявлять «список, N пунктов».*/
.razbor__body ul,.razbor__body ol{margin:0 0 var(--sp-md); padding-left:1.35em;}
.razbor__body li{margin-bottom:var(--sp-2xs); overflow-wrap:anywhere;}
.razbor__body li:last-child{margin-bottom:0;}
.razbor__body li > ul,
.razbor__body li > ol{margin:var(--sp-2xs) 0 0;}
/* Маркер — точка гравировки, нумерация — приборное число тем же моно.
   Латуни нет: список в тексте не действие, а акцент от него растекается (A3).*/
.razbor__body ul > li::marker{color:var(--paper-38); font-size:.8em;}
.razbor__body ol > li::marker{
  font-family:var(--ff-body); font-variant-numeric:tabular-nums;
  font-size:.875rem; color:var(--dim);   /* номер пункта это текст: 14 px и второй голос */
}

/* italic Golos не подключён, а синтетический наклон — признак небрежности:
   em работает цветом, как strong.*/
.razbor__body strong{color:var(--paper); font-weight:500;}
.razbor__body em{color:var(--paper); font-style:normal;}

/* Латунь только в подчёркивании: крашеный текст на статье с десятком
   ссылок выводит акцент за 1–3% (A3).*/
.razbor__body a,.razbor__sources a{
  color:var(--paper); text-decoration:underline;
  text-decoration-thickness:1px; text-underline-offset:.2em;
  transition:color var(--t-micro) var(--e-out);
}
.razbor__body a{text-decoration-color:var(--brass);}
@media (hover:hover){ .razbor__body a:hover{text-decoration-thickness:2px;} }
.razbor__body a:active{text-decoration-thickness:2px;}

/* Цитата — не «полоска слева», а латунная насечка сверху*/
.razbor__body blockquote{
  margin:clamp(var(--sp-lg),3vw,var(--sp-xl)) 0; padding-top:var(--sp-sm);
  border-top:1px solid var(--brass); max-width:var(--rz-measure);
}
.razbor__body blockquote p{max-width:none; color:var(--paper); line-height:1.6;}
.razbor__body blockquote p:last-child{margin-bottom:0;}

/* Код: метка на приборе (инлайн) и колодец по содержимому (блок): во всю
   меру он оставлял бы справа поле пустой заливки.*/
.razbor__body code{
  font-family:var(--ff-body); font-size:.9em; color:var(--paper);
  background:var(--paper-07); border:1px solid var(--paper-16);
  border-radius:0; padding:.1em .35em; overflow-wrap:anywhere;   /* A5: радиус 0*/
}
.razbor__body pre{
  margin:clamp(var(--sp-lg),3vw,var(--sp-xl)) 0; padding:var(--sp-sm);
  width:fit-content; max-width:100%;
  background:var(--ink-deep); border:1px solid var(--paper-16); overflow-x:auto;
}
.razbor__body pre code{
  background:none; border:0; padding:0; font-size:.875rem; line-height:1.6;
  color:var(--paper); overflow-wrap:normal;
}

/* Разделитель — третья ступень ритма после абзаца и главы*/
.razbor__body hr{
  margin:clamp(var(--sp-xl),4vw,var(--sp-2xl)) 0; border:0;
  max-width:var(--rz-measure); height:1px; background:var(--paper-16);
}
.razbor__body hr + h2,.razbor__body hr + h3{margin-top:0;}
/* Изображений в разборах нет: правило под них появится вместе с первым*/
.razbor__body img{display:block; max-width:100%; height:auto;}

/* ТАБЛИЦА приёмами сводки со страницы рекламы: табличные цифры, волосяные
 * линии вместо заливки строк, шапка моно. Своё только предел сжатия колонки:
 * ячейка жмётся до 4rem и не читается «показа-тель», а таблица шире предела
 * уезжает в прокрутку внутри обёртки, не таща вбок страницу.*/
.razbor__body table{
  width:100%; max-width:var(--rz-measure-wide);
  margin:clamp(var(--sp-lg),3vw,var(--sp-xl)) 0;
  border-collapse:collapse; text-align:left;
  font-family:var(--ff-body); font-variant-numeric:tabular-nums;
  font-size:.875rem; line-height:1.4;
}
.razbor__body th,.razbor__body td{
  padding:var(--sp-sm) var(--sp-2xs); border-top:1px solid var(--paper-16);
  vertical-align:baseline; text-align:left; font-weight:400;
  overflow-wrap:anywhere; hyphens:auto; min-width:4rem;
}
.razbor__body tbody th{min-width:6rem; color:var(--paper); padding-right:var(--sp-xs);}
/* Шапку по слогам НЕ рвём: на 390 «смена 8 часов» вставала «СМЕ-НА ЧА-СОВ»
   в четыре строки (снимок 06.09). Колонке честнее уехать в прокрутку.*/
.razbor__body thead th{
  padding-block:var(--sp-xs); border-top:0;
  hyphens:none; overflow-wrap:normal; min-width:7rem;
  font-family:var(--ff-body);   color:var(--paper-62);
}
.razbor__body tbody td{color:var(--paper-62);}
.razbor__body tbody tr:last-child > *{border-bottom:1px solid var(--paper-16);}
@media (min-width:480px){
  .razbor__body th,.razbor__body td{padding-inline:var(--sp-xs);}
}
@media (min-width:760px){
  .razbor__body table{font-size:.875rem;}
  .razbor__body th,.razbor__body td{padding-block:var(--sp-md);}
}
/* Обёртка стоит вокруг КАЖДОЙ таблицы, tabindex и role вешает
   js/razbor-table.js по факту переполнения. Линии «есть что прокрутить» нет:
   она врала бы на таблице, которая влезла.*/
.razbor__table{
  margin:clamp(var(--sp-lg),3vw,var(--sp-xl)) 0; max-width:var(--rz-measure-wide);
  overflow-x:auto; overscroll-behavior-x:contain;
}
.razbor__table > table{margin:0;}

/*  ИСТОЧНИКИ — не сноски, а протокол: раздел требует цифру со ссылкой.
 * Одна из двух секций с ambient-светом (E.6).*/
.razbor__sources{
  position:relative; z-index:1;
  margin-top:clamp(var(--sp-xl),4vw,var(--sp-2xl));
  padding-top:clamp(var(--sp-lg),3vw,var(--sp-xl));
  border-top:1px solid var(--paper-16); max-width:var(--rz-measure-wide);
}
.razbor__sources > *{position:relative; z-index:1;}
.razbor__sources .amb{z-index:0;}
.razbor__sources-tag{
  display:block; font-family:var(--ff-body); font-size:.875rem;
  color:var(--paper);
}
.razbor__sources ol{
  margin:var(--sp-sm) 0 0; padding-left:1.6em; max-width:62ch;
  font-family:var(--ff-body);
}
.razbor__sources li{
  margin-bottom:var(--sp-2xs); font-size:.875rem; line-height:1.6;
  color:var(--paper-62); overflow-wrap:anywhere;
}
.razbor__sources li:last-child{margin-bottom:0;}
.razbor__sources li::marker{
  font-family:var(--ff-body); font-variant-numeric:tabular-nums; color:var(--paper-38);
}
.razbor__sources a{text-decoration-color:var(--paper-38); overflow-wrap:anywhere;}
@media (hover:hover){ .razbor__sources a:hover{text-decoration-color:var(--paper);} }
.razbor__sources a:active{text-decoration-color:var(--paper);}

/* Единственная дата раздела, и внизу. Датированная лента вверху через три
   месяца тишины доказывала бы страх «один человек, а если пропадёт».*/
.razbor__updated{
  margin:var(--sp-lg) 0 0; font-family:var(--ff-body); font-size:.875rem;
  color:var(--paper-62);
}

/*  МОСТ ЦЕНЫ: из поиска видно текст и Telegram, но не цену. Числа те же,
 * что на кейсах: расхождение читается обманом.*/
.bridge{
  position:relative; z-index:1; padding:clamp(var(--sp-xl),6vw,88px) 0;
  display:grid; gap:clamp(var(--sp-md),3vw,var(--sp-lg));
}
.bridge > *{position:relative; z-index:1;}
.bridge .amb{z-index:0; --amb-at:78% 62%; --amb-size:52% 46%;}
.bridge__name,.talk__h{
  margin:0; overflow-wrap:anywhere; min-width:0;
  font-family:var(--ff-display); font-weight:600;
  font-size:clamp(22px,1.2vw + 16px,32px); line-height:1.2; letter-spacing:-.02em; text-wrap:balance;
}
.talk__h{font-size:clamp(40px,4vw + 22px,88px); line-height:1.08; letter-spacing:-.03em;}  /* J8, как .sec__h--call главной */
.bridge__you{
  margin:0; max-width:30ch; overflow-wrap:anywhere; min-width:0;
  font-family:var(--ff-body); font-weight:400;
  font-size:clamp(19px,.45vw + 17px,23px); line-height:1.4;
  color:var(--paper); text-wrap:pretty;
}
/* Снятие риска — служебной строкой: две прозы про «дальше» подряд
   читаются оправданием.*/
.bridge__risk{
  margin:var(--sp-2xs) 0 0; font-family:var(--ff-body); font-size:.875rem;
  line-height:1.5; color:var(--paper-62);
}
.bridge__rates{margin:0; display:grid; gap:var(--sp-md);}
.bridge__row{
  display:grid; gap:var(--sp-3xs);
  border-top:1px solid var(--paper-16); padding-top:var(--sp-sm);
}

.bridge__sum{
  margin:0; font-family:var(--ff-display); font-weight:300;
  font-size:clamp(24px,2.4vw,34px); line-height:1.1; letter-spacing:-.03em;
  font-variant-numeric:tabular-nums;
}
.bridge__cur{font-size:max(14px,.42em); color:var(--paper-62);}
.bridge__note{
  margin:0; max-width:56ch; font-family:var(--ff-body);
  font-size:.875rem; line-height:1.6; color:var(--paper-62);
}
.bridge__go{margin:0; display:flex; flex-wrap:wrap; gap:var(--sp-sm) var(--sp-lg);}
@media (min-width:1000px){
  .bridge__rates{grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-lg);}
}

/* Ссылка-действие как «Смотреть кейс» главной: Golos 600, линия появляется на наведении */
.go{
  display:inline-flex; align-items:center; gap:var(--sp-2xs); min-height:44px;
  font:600 .875rem/1 var(--ff-body); color:var(--paper);
  text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:5px;
  text-decoration-color:transparent;
  touch-action:manipulation; -webkit-tap-highlight-color:transparent;
  transition:text-decoration-color var(--t-micro) var(--e-out), transform var(--t-press) var(--e-out);
}
.go i{font-style:normal; color:var(--paper); display:inline-block;
      transition:transform var(--t-micro) var(--e-out);}
@media (hover:hover) and (pointer:fine){
  .go:hover{text-decoration-color:currentColor;}
  .go:hover i{transform:translateX(3px);}
}
.go:active{transform:translateY(1px);}
.go:active i{transform:translateX(3px);}

/* СВЯЗЬ. Формы здесь нет (решение F): согласие, его версия и ссылка на
 * политику живут в одном месте. Пять копий — пять мест расхождения.*/
.talk{
  position:relative; z-index:1; padding:clamp(var(--sp-xl),6vw,88px) 0;
  display:grid; gap:clamp(var(--sp-md),3vw,var(--sp-lg));
}
.talk__h{max-width:24ch;}
.talk__lead,.rz-empty{
  margin:0; max-width:62ch; font-family:var(--ff-body);
  font-size:1rem; line-height:1.62;
  color:color-mix(in oklab, var(--paper) 88%, transparent);
}
/* Кто отвечает — тише каналов: канал это действие, а это обещание*/
.talk__own{
  margin:0; max-width:62ch; font-family:var(--ff-body);
  font-size:.9375rem; line-height:1.6; color:var(--paper-62);
}
.ways{margin:0; padding:0; list-style:none; display:grid; gap:var(--sp-md);}
@media (min-width:760px){ .ways{grid-template-columns:repeat(2,minmax(0,1fr)); gap:var(--sp-lg);} }
.way{display:grid; gap:var(--sp-2xs); align-content:start;
     border-top:1px solid var(--paper-16); padding-top:var(--sp-sm);}
.way__v{margin:0; font-family:var(--ff-body); font-weight:600;
        font-size:clamp(19px,.45vw + 17px,23px); line-height:1.3;
        overflow-wrap:anywhere;}
.way__p{margin:0; font-family:var(--ff-body); font-size:.875rem; line-height:1.6;
        color:var(--paper-62);}
.way__go{margin:var(--sp-2xs) 0 0;}
/* Telegram: главная кнопка страницы, та же латунная пилюля, что .go на главной; письмо тише, по линии */
.way__btn{
  display:inline-flex; align-items:center; gap:var(--sp-xs);
  min-height:52px; padding:0 var(--sp-md);
  border:1px solid var(--brass); border-radius:999px;
  background:var(--brass); color:var(--night);
  font:600 1rem/1 var(--ff-body); white-space:nowrap;
  touch-action:manipulation; -webkit-tap-highlight-color:transparent;
  transition:transform var(--t-micro) var(--e-out), border-color var(--t-micro) var(--e-out);
}
.way__btn--quiet{border-color:var(--line); background:none; color:var(--paper);}
.way__arw i{font-style:normal; display:inline-block;
            transition:transform var(--t-micro) var(--e-out);}
@media (hover:hover) and (pointer:fine){
  .way__btn--quiet:hover{border-color:var(--dim);}
  .way__btn:hover .way__arw i{transform:translateX(3px);}
}
.way__btn:active{transform:scale(.97); transition-duration:var(--t-press);}
.way__btn:focus-visible{outline-offset:3px;}

/*  СПИСОК (Index-First) — опись, а не витрина: ни карточек с тенью, ни
 * иконок в кружках, ни дат.*/
.rz-index{padding-bottom:clamp(var(--sp-xl),5vw,72px);}
.rz-group + .rz-group{margin-top:clamp(var(--sp-xl),4vw,var(--sp-2xl));}
.rz-group__niche{margin-bottom:var(--sp-md);}
.rz-list{margin:0; padding:0; list-style:none;}
.rz-list > li{border-top:1px solid var(--paper-16);}
.rz-list > li:last-child{border-bottom:1px solid var(--paper-16);}
.rz-card{
  display:grid; gap:var(--sp-2xs); padding:var(--sp-md) 0; min-height:44px;
  transition:transform var(--t-micro) var(--e-out);
}
/* --paper-38 давал 3,2:1 при пороге 4,5: номер описи — текст, не риска*/
.rz-card__no{
  font-family:var(--ff-body); font-size:.875rem;   font-variant-numeric:tabular-nums; color:var(--paper-62);
}
.rz-card__title{
  font-family:var(--ff-display); font-weight:600;
  font-size:clamp(19px,.45vw + 17px,23px); line-height:1.3; letter-spacing:-.01em; text-wrap:balance;
  color:var(--paper); overflow-wrap:anywhere; min-width:0;
  text-decoration:underline; text-decoration-color:transparent;
  text-decoration-thickness:1px; text-underline-offset:.18em;
  transition:text-decoration-color var(--t-micro) var(--e-out);
}
.rz-card__what{
  max-width:56ch; font-family:var(--ff-body); font-size:.875rem; line-height:1.6;
  color:var(--paper-62);
}
.rz-card__go{
  display:inline-flex; align-items:center; gap:.5em;
  font-family:var(--ff-body); font-size:.875rem; color:var(--paper-62);
}
.rz-card__go i{font-style:normal; display:inline-block;
               transition:transform var(--t-micro) var(--e-out);}
@media (min-width:760px){
  .rz-card{grid-template-columns:3.5rem minmax(0,1fr) auto; align-items:baseline;
           gap:var(--sp-2xs) var(--sp-lg); padding:var(--sp-lg) 0;}
  .rz-card__no{grid-column:1; grid-row:1;}
  .rz-card__title{grid-column:2; grid-row:1;}
  .rz-card__what{grid-column:2; grid-row:2;}
  .rz-card__go{grid-column:3; grid-row:1;}
}
/* Строка описи подаётся к курсору, как карточка из ящика: движение, а не
   перекраска (B10), и сдержанное — 2px, не 10.*/
@media (hover:hover){
  .rz-card:hover{transform:translateX(2px);}
  .rz-card:hover .rz-card__title{text-decoration-color:var(--brass);}
  .rz-card:hover .rz-card__go i{transform:translateX(4px);}
}
.rz-card:active{transform:translateX(1px) translateY(1px);}
.rz-card:active .rz-card__title{text-decoration-color:var(--brass);}


/* Пустое состояние: иначе заголовок висит над пустотой*/
.rz-empty{display:grid; gap:var(--sp-md); justify-items:start; max-width:var(--rz-measure);}

/* core.css гасит общий слой; здесь только то, что завёл этот файл*/
@media (prefers-reduced-motion:reduce){
  /* «меньше и мягче», а не «ничего» (как в core): стрелки гаснут совсем,
     у строки и кнопки движение снято, отклик на нажатие остался*/
  .go i,.way__arw i,.rz-card__go i{transition:none !important; transform:none !important;}
  .rz-card,.way__btn{transition:opacity var(--t-press) var(--e-out) !important; transform:none !important;}
  .rz-card:active,.way__btn:active{opacity:.72;}
}
@media (prefers-contrast:more){
  .razbor__body p,.razbor__body li,.rz-empty,.razbor__body tbody td{color:var(--paper);}
  .razbor__sources li,.rz-card__what,.bridge__note,.way__p{color:var(--paper);}
  .page__etch,.page__grain{display:none;}
}

/* ══ «НОЧЬ 2» ДЛЯ СТРАНИЦ ЧТЕНИЯ (22.10.2026, контракт docs/contracts/2026-10-22-privacy-noch2.md) ══════════
 * Действует только на <html class="n2">: сейчас это политика /legal/privacy/. Разборы класса n2 не несут
 * и остаются в облике первой «Ночи» как были (владелец решил снять их с прода перед запуском).
 * Порядок подключения как у кейсов: core.css → noch2-tokens.css → case-n2.css (мост имён core к токенам)
 * → этот файл. Цвета ниже только через имена core.css, мост переводит их в «Ночь 2»: поле #07132f,
 * текст --ink, акцент «Закат» вместо латуни. Эталон шапки, подвала, фона и паспорта: case/ads/index.html.
 * Форма прежняя (Long Document), сменились ось и ритм: колонка не стоит по центру, а держит левое поле
 * --pad, как шапка и паспорт кейса; от 1100 px главы разведены на две колонки (J5, J13): заголовок
 * главы слева, текст справа мерой 39rem (от 66 до 70 знаков при 17 px). */
html.n2{ --rz-side:clamp(16rem,30vw,28rem); --rz-gap:clamp(40px,5vw,72px); }

/* колонка: край как у героя кейса (.cf-hero: 90rem + два поля), без центровки */
html.n2 .doc{max-width:calc(90rem + var(--pad) * 2); margin-inline:0;}

/* ВХОД: паспорт кейса (.cf--r3 .cf-pass): подпись мелко, H1 кеглем кейса, лид вторым голосом */
html.n2 .rz-head{
  padding-block:clamp(32px,3.4vw,48px) clamp(40px,4.5vw,64px); justify-items:start;
}
/* H1: --r3-h1 кейса (32 на 390, 59 на 1440), межстрочный 1.04 и трекинг -.03em оттуда же.
   Мера 18em: на 1440 строка не уходит на 1300 px, где глаз теряет начало следующей. */
html.n2 .razbor__title{
  max-width:18em; font-size:clamp(32px,4.1vw,59px); line-height:1.04; letter-spacing:-.03em;
}
@media (max-width:359px){ html.n2 .razbor__title{font-size:26px;} }
/* лид как .cf-lede паспорта: Golos от 18 до 21 px, второй голос, мера 30em */
html.n2 .razbor__lede{
  margin-top:var(--sp-2xs); max-width:30em; font-size:clamp(18px,1.45vw,21px);
  line-height:1.45; letter-spacing:0; color:var(--dim); text-wrap:pretty;
}
/* от 760 текст 17 px, как тело глав кейса (.cf--r3) */
@media (min-width:760px){
  html.n2 .razbor__body p,html.n2 .razbor__body ul,html.n2 .razbor__body ol{font-size:17px; line-height:1.65;}
}

/* ОГЛАВЛЕНИЕ И СТРОКА РЕДАКЦИИ политики (были инлайном в её <head>, своего css у политики нет).
   Строка каждой ссылки 44 px; подчёркивание проявляется на наведении и стоит на фокусе. */
html.n2 .toc{margin:0 0 var(--sp-xl); border-top:1px solid var(--line); border-bottom:1px solid var(--line);}
html.n2 .toc ol{margin:0; padding:var(--sp-2xs) 0; list-style:none; display:grid; column-gap:var(--sp-md);
  grid-template-columns:repeat(auto-fit, minmax(15rem, 1fr));}
html.n2 .razbor__body .toc li{margin:0;}
html.n2 .toc a{display:flex; align-items:center; min-height:44px; color:var(--dim); font-size:15px;
  text-decoration:underline; text-decoration-color:transparent; text-underline-offset:4px;
  transition:text-decoration-color var(--t-micro) var(--e-out);}
@media (hover:hover) and (pointer:fine){ html.n2 .toc a:hover{color:var(--paper); text-decoration-color:currentColor;} }
html.n2 .toc a:focus-visible{color:var(--paper); text-decoration-color:currentColor;}
html.n2 .toc a:active{color:var(--paper);}
html.n2 .razbor__body .stamp{margin:0 0 var(--sp-lg); font-size:15px; line-height:1.5; color:var(--dim);}

/* ДВЕ КОЛОНКИ ГЛАВ (от 1100 px). Разметка не меняется: голые h2/p подряд раскладывает
 * авторасстановка грида. У элемента с явной колонкой курсор идёт вперёд по строке, поэтому
 * h2 (колонка 1) после абзаца уходит на новую строку, а следующий за ним абзац (колонка 2)
 * садится в ту же. span 3: высокий заголовок стоит рядом с тремя элементами главы и не
 * раздувает строку первого абзаца; пустые строки грида при короткой главе нулевые (row-gap нет).
 * Поля в гриде не схлопываются: отступ перед главой несут ОБА соседа строки. */
@media (min-width:1100px){
  html.n2 .razbor__body{
    display:grid; grid-template-columns:var(--rz-side) minmax(0,1fr); column-gap:var(--rz-gap);
    align-items:start; max-width:none;
  }
  html.n2 .razbor__body > *{grid-column:2; min-width:0;}
  html.n2 .razbor__body > h2{grid-column:1; grid-row:span 3; max-width:none; padding-right:var(--sp-sm);}
  html.n2 .razbor__body > h2,
  html.n2 .razbor__body > h2 + *,
  html.n2 .razbor__body > h2 + h3{margin-top:clamp(var(--sp-xl),4vw,var(--sp-2xl));}
  html.n2 .razbor__body > :first-child{margin-top:0;}
  /* строка редакции: ярлык слева от оглавления, как «(детали)» кейса */
  html.n2 .razbor__body > .stamp{grid-column:1; margin:0; padding-top:var(--sp-sm);}
  html.n2 .razbor__body > .stamp + .toc{margin-top:0;}
}

/* Шапка на узких: core.css (строка 120) переносит «Написать» второй строкой для body:has(#privacy),
   правило жило под прежнюю длинную шапку политики («Алексей Салтанов · на главную»). Нынешняя шапка
   та же, что у кейсов, и на 320 встаёт в одну строку 68 px, как на /case/ads/ (К9). */
@media (max-width:30rem){ html.n2 body:has(#privacy) .bar{flex-wrap:nowrap;} }
