
/* ============================================================ токены */
:root{
  --nds-floor:#f0ebe0;          /* холст, паркет */
  --nds-board:#ffffff;          /* лист */
  --nds-chalk:#e0d8c6;          /* врезка внутри листа */
  --nds-word:#16150f;           /* основной текст */
  --nds-word-2:#5d5850;         /* служебный слой */
  --nds-mark:#b03d16;           /* сигнальный оранжевый */
  --nds-mark-2:#1f3a5c;         /* холодный контрапункт */
  --nds-ghost:#e6dfd1;          /* цифра секции: floor +8% светлоты */
  --nds-face:"Helvetica Neue",Helvetica,Arial,"Liberation Sans",system-ui,sans-serif;
  --nds-read:Charter,"Bitstream Charter","Sitka Text",Cambria,"PT Serif",
             "Liberation Serif","Times New Roman",serif;
  --nds-band:1360px;            /* полоса издания */
  --nds-shell:1040px;           /* оболочка статьи */
  --nds-prose:620px;            /* колонка прозы */
  --nds-anchor:max(48px,7vw);   /* ЛЕВЫЙ ЯКОРЬ: центрированного контейнера нет ни одного */
  --nds-right:24px;
  --nds-pad:20px;
  --nds-air:72px;               /* воздух между секциями вместо линеек */
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--nds-floor);color:var(--nds-word);
  font:400 19px/1.85 var(--nds-read);overflow-x:hidden}
img,svg{max-width:100%;height:auto}
/* донорские тексты приносят слитные токены в 80 знаков — переносим их, а не полосу */
.nds-card-b,.nds-q,.nds-body,.nds-lista,.nds-read-b{overflow-wrap:break-word}
a{color:var(--nds-mark-2);text-underline-offset:.18em;text-decoration-thickness:1px}
a:hover{color:var(--nds-mark)}
h1,h2,h3,h4{font-family:var(--nds-face);font-weight:800;letter-spacing:-.02em;
  line-height:1.08;margin:0}
p{margin:0 0 1.15em}                /* абзац с отбивкой, красной строки нет */
table{border-collapse:collapse}

/* Мера: ширина считается от якоря. Ширину НЕ задаём через 100vw — вьюпорт у
   100vw шире полосы прокрутки, и полоса на 1440 вылезала за экран (1471>1440).
   Блок и так тянется на всё свободное, остаётся ограничить его сверху. */
.nds-band{margin-left:var(--nds-anchor);margin-right:var(--nds-right);
  max-width:var(--nds-band);
  padding-left:var(--nds-pad);padding-right:var(--nds-pad)}
.nds-shell{margin-left:var(--nds-anchor);margin-right:var(--nds-right);
  max-width:var(--nds-shell);
  padding-left:var(--nds-pad);padding-right:var(--nds-pad)}
.nds-skip{position:absolute;left:-9999px}
.nds-skip:focus{left:var(--nds-pad);top:8px;background:var(--nds-board);padding:10px 14px;
  z-index:9}

/* ============================================================ мачта */
/* мачта лежит на листе, а не на паркете: цвет в цвет с подложкой блок читается
   как её продолжение и гейт R23 его не отличает */
.nds-masthead{background:var(--nds-board);padding:26px 0 4px;   /* НЕ липкая (05.0ю) */
  border-bottom:1px solid var(--nds-chalk)}
.nds-masthead-in{margin-left:var(--nds-anchor);margin-right:var(--nds-right);
  max-width:var(--nds-band);
  padding-left:var(--nds-pad);padding-right:var(--nds-pad)}
.nds-word{display:flex;align-items:baseline;gap:.34em;text-decoration:none;
  color:var(--nds-word)}
.nds-mark{flex:0 0 auto;color:var(--nds-mark);align-self:center;line-height:0}
.nds-mark-svg{display:block}
.nds-word-t{font-family:var(--nds-face);font-weight:800;letter-spacing:-.035em;
  font-size:clamp(38px,7.2vw,96px);line-height:.94;white-space:nowrap}
.nds-nav{display:flex;flex-wrap:wrap;align-items:baseline;gap:0 26px;
  margin-top:16px;padding-top:13px;border-top:1px solid var(--nds-chalk)}
.nds-nav a{font-family:var(--nds-face);font-weight:600;font-size:13px;
  font-variant:all-small-caps;letter-spacing:0;text-decoration:none;
  color:var(--nds-word);padding:9px 0;line-height:1.2}
.nds-nav a:hover,.nds-nav a.is-on{color:var(--nds-mark);box-shadow:0 2px 0 var(--nds-mark)}
.nds-nav-all{color:var(--nds-mark-2)!important}
.nds-nav-date{margin-left:auto;font-family:var(--nds-face);font-size:13px;
  font-variant:all-small-caps;color:var(--nds-word-2)}
.nds-burger,.nds-burger-in{display:none}

/* ============================================================ первый экран */
/* H1 главной — первый блок под шапкой, его отступ и есть зазор (норма 16–48) */
/* Мера строки живёт на ВНУТРЕННЕМ блоке, а не на самой секции: R11 меряет прямых
   детей <main> и требует, чтобы все они стояли по одной сетке. Узкий max-width на
   самом заголовке давал четвёртую ширину (524 px) и валил проверку. */
.nds-home-h>span{display:block;max-width:26ch}
.nds-home-h{font-size:clamp(23px,2.1vw,32px);margin:40px 0 30px;
  padding-left:14px;padding-right:14px;line-height:1.14}
.nds-five-q{margin:34px 0 0}
.nds-five-q>h2{font-size:13px;font-variant:all-small-caps;letter-spacing:0;
  font-weight:600;color:var(--nds-word-2);margin-bottom:22px}
.nds-q-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:34px 26px}
.nds-q{padding-left:14px;padding-right:14px}      /* ячейка, способная стать во всю ширину */
.nds-q-n{display:block;font-family:var(--nds-face);font-weight:800;font-size:15px;
  color:var(--nds-mark);letter-spacing:0;margin-bottom:10px}
.nds-q h3{font-size:clamp(20px,1.5vw,25px);margin-bottom:10px}
.nds-q h3 a{color:var(--nds-word);text-decoration:none}
.nds-q h3 a:hover{color:var(--nds-mark);text-decoration:underline}
.nds-q p{font-size:16px;line-height:1.55;color:var(--nds-word-2);margin:0}

/* ============================================================ секции и ротация */
.nds-sec{margin-top:var(--nds-air)}
.nds-sec-cab{display:flex;align-items:flex-start;gap:24px;margin-bottom:30px;
  padding-left:14px;padding-right:14px}
.nds-cifra{font-family:var(--nds-face);font-weight:800;font-size:128px;line-height:.78;
  color:var(--nds-ghost);letter-spacing:-.05em;flex:0 0 auto;user-select:none}
.nds-sec-t{padding-top:10px}
.nds-sec-t h2{font-size:clamp(26px,2.4vw,38px);margin-bottom:8px}
.nds-sec-t p{font-size:17px;line-height:1.5;color:var(--nds-word-2);max-width:56ch;
  margin-bottom:8px}
.nds-sec-mas{font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  font-weight:600;text-decoration:none;display:inline-flex;align-items:center;gap:6px}
/*  Ссылка на стол в ШАПКЕ полосы описи — у правого края полосы (05.18c): дека
    держит меру чтения, и занять правую половину можно только тем, что на
    странице по смыслу есть. По низу цифры, чтобы шапка читалась одной строкой. */
.nds-sec-mas-d{margin-left:auto;flex:0 0 auto;align-self:flex-end;
  padding-bottom:12px;white-space:nowrap}
.nds-sec-mas-d:hover{color:var(--nds-mark)}

/* minmax(0,1fr), а не 1fr: у 1fr нижняя граница — min-content, и один длинный
   токен в деке (донорский огрызок jQuery) раздувал сетку шире вьюпорта */
.nds-rot{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:34px 26px}
.nds-rot>*{grid-column:span 2;padding-left:14px;padding-right:14px}
/* позиция КРУПНОГО едет по кругу от номера секции — раскладку задаёт номер, не значимость */
.nds-sec[data-rot="1"] .nds-rot>.is-big{grid-column:1/span 2;grid-row:1/span 2}
.nds-sec[data-rot="2"] .nds-rot>.is-big{grid-column:3/span 2;grid-row:1/span 2}
.nds-sec[data-rot="3"] .nds-rot>.is-big{grid-column:5/span 2;grid-row:1/span 2}
.nds-sec[data-rot="0"] .nds-rot>.is-big{grid-column:1/span 6;grid-row:1}
.nds-sec[data-rot="0"] .nds-rot>*:not(.is-big){grid-column:span 3}

/* ============================================================ карточка */
.nds-card-foto{display:block;margin-bottom:14px;line-height:0}
.nds-card-foto img{width:100%;display:block}
.nds-sello{font-family:var(--nds-face);font-size:12px;font-variant:all-small-caps;
  font-weight:700;letter-spacing:0;color:var(--nds-mark);text-decoration:none;
  display:inline-block;margin-bottom:7px}
.nds-sello:hover{text-decoration:underline}
.nds-card-h{font-size:21px;margin-bottom:9px}
.nds-card-h a{color:var(--nds-word);text-decoration:none}
.nds-card-h a:hover{color:var(--nds-mark);text-decoration:underline}
.nds-card-d{font-size:16px;line-height:1.55;color:var(--nds-word-2);margin-bottom:8px}
.nds-card-m{font-family:var(--nds-face);font-size:12px;font-variant:all-small-caps;
  color:var(--nds-word-2);margin:0}
.is-big .nds-card-h{font-size:clamp(28px,2.7vw,44px)}
.is-big .nds-card-d{font-size:18px;line-height:1.6}

/* ============================================================ полоса «THE READ» */
.nds-read-b{padding-left:14px;padding-right:14px}
.nds-read-b .nds-figura{float:left;width:min(46%,430px);margin:6px 30px 16px 0}
.nds-read-b h3{font-size:clamp(28px,3vw,46px);margin-bottom:14px}
.nds-read-b h3 a{color:var(--nds-word);text-decoration:none}
.nds-read-b p{font-size:19px;line-height:1.8}
.nds-read-b::after{content:"";display:block;clear:both}

/* ============================================================ кадр и подпись */
.nds-figura{margin:0 0 26px}
.nds-figura img{display:block;width:100%}
.nds-figura figcaption{font-family:var(--nds-face);font-size:13px;line-height:1.5;
  color:var(--nds-word-2);margin-top:9px}      /* отбивка margin, не padding (R7) */
.nds-cap-t{display:block;color:var(--nds-word)}
.nds-credito{display:block;margin-top:3px;font-size:12px}
.nds-credito a{color:var(--nds-word-2)}

/* ============================================================ статья */
.nds-art{margin-top:38px;padding-bottom:var(--nds-air)}
.nds-art-h{font-size:clamp(32px,4vw,58px);margin:10px 0 16px;max-width:19ch}
.nds-art-dek{font-family:var(--nds-face);font-weight:400;font-size:clamp(18px,1.6vw,22px);
  line-height:1.4;color:var(--nds-word-2);max-width:44ch;margin:0 0 18px}
.nds-byline{font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  color:var(--nds-word-2);margin:0 0 26px}
.nds-byline a{color:var(--nds-word-2)}
/* «паспорт» — служебный блок фактов ДО первого абзаца (манера образца) */
.nds-pass{background:var(--nds-chalk);padding:18px 20px;margin:0 0 30px;
  max-width:var(--nds-prose)}
.nds-pass dl{display:grid;grid-template-columns:auto 1fr;gap:6px 18px;margin:0}
.nds-pass dt{font-family:var(--nds-face);font-size:12px;font-variant:all-small-caps;
  font-weight:700;color:var(--nds-word-2)}
.nds-pass dd{margin:0;font-size:16px;line-height:1.45}
/* `container-type:inline-size` стоит здесь, а НЕ на таблице: у таблицы с
   `width:max-content` это прямое противоречие (ширина от содержимого против
   запрета её оттуда брать), и таблица схлопывается до `min-width`. Мера нужна
   для подписи присланной таблицы — см. `>table>caption` ниже. */
.nds-body{max-width:var(--nds-prose);container-type:inline-size}

/* ⛔⛔ 05.18c: рельс статьи. Проза 620 в оболочке 1040 оставляла справа пустой
   жёлоб 380 px на 43 % высоты страницы (замер `nds_gutter.js`, приёмка глазами
   30.09.2026; машинные гейты молчат — ширины и отступы законные). Скин левоякорный,
   центрировать колонку нечем, поэтому жёлоб ЗАНЯТ тематическим виджетом.
   Обёртку ставит шаблон и только когда виджет есть (проданная страница — без).
   Колонка виджета `minmax(0,1fr)` = 340 px, и таблица в ней разворачивается в
   список пар, как на телефоне: пять колонок гроссбуха в 340 не влезают ни при
   каком отступе. Липкость — на самом рельсе, `align-items:start` обязателен,
   иначе ребёнок растянут на высоту прозы и `sticky` не срабатывает. */
/*  страница без довеска: оболочка садится по мере прозы, жёлоба нет вовсе */
.nds-solo{max-width:calc(var(--nds-prose) + 2 * var(--nds-pad))}
.nds-art-2{display:grid;grid-template-columns:var(--nds-prose) minmax(0,1fr);
  column-gap:40px;align-items:start}
.nds-art-col{min-width:0}
.nds-art-rail{position:sticky;top:24px;min-width:0}
.nds-art-rail .nds-w{margin:0}
.nds-art-rail .nds-court-wrap{grid-template-columns:1fr}
.nds-art-rail .nds-w-tab thead{position:absolute;width:1px;height:1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.nds-art-rail .nds-w-tab,.nds-art-rail .nds-w-tab tbody,
.nds-art-rail .nds-w-tab tr,.nds-art-rail .nds-w-tab th,
.nds-art-rail .nds-w-tab td{display:block;width:auto}
.nds-art-rail .nds-w-tab tr{border-top:1px solid var(--nds-chalk);padding:11px 0}
.nds-art-rail .nds-w-tab tbody tr:nth-child(odd) th,
.nds-art-rail .nds-w-tab tbody tr:nth-child(odd) td{background:none}
.nds-art-rail .nds-w-tab th[scope="row"]{font-size:17px;padding:0 0 6px}
.nds-art-rail .nds-w-tab td{padding:3px 0;font-size:15px}
/*  ⛔ Пара «подпись — число» строится ТОЛЬКО у ячейки с `data-th`: у площадки
    подписей нет вовсе, и `space-between` с пустым `::before` уводил бы значение
    к правому краю рельса. */
.nds-art-rail .nds-w-tab td[data-th]{display:flex;justify-content:space-between;
  align-items:baseline;gap:12px}
.nds-art-rail .nds-w-tab td[data-th]::before{content:attr(data-th);font-size:12px;
  font-variant:all-small-caps;font-weight:700;color:var(--nds-word-2)}
/*  Оглавление статической страницы (05.18c): у неё нет ни виджета рубрики, ни
    соседей, и жёлоб справа занимать нечем, кроме её же разделов. Живёт ТОЛЬКО в
    рельсе: ниже 1100 рельс уезжает под текст, а оглавление после текста — уже не
    навигация, поэтому там оно снимается (медиазапрос 1100). */
.nds-toc{font-size:15px}
.nds-toc-l{list-style:none;margin:0;padding:0;counter-reset:t}
.nds-toc-l li{counter-increment:t;border-top:1px solid var(--nds-chalk)}
.nds-toc-l li:first-child{border-top:0}
.nds-toc-l a{display:flex;gap:10px;padding:9px 0;line-height:1.35;
  text-decoration:none;color:var(--nds-word)}
.nds-toc-l a::before{content:counter(t,decimal-leading-zero);font-weight:700;
  font-size:12px;color:var(--nds-mark);flex:0 0 auto;padding-top:2px}
.nds-toc-l a:hover{color:var(--nds-mark)}
.nds-body h2{scroll-margin-top:22px}    /* переход по якорю не режет заголовок */
/* сам блок — во всю полосу (R11 меряет прямых детей <main> и требует одной
   сетки), меру строки держат абзацы внутри */
/* ⛔ Врезка хаба — четыре абзаца на 671 px при полосе 1275: справа оставалось
   590 px пустоты на весь первый экран (замер 30.09.2026). Набирается в две
   колонки, как шапка подшивки в газете: текст тот же, ширина занята.
   `columns` без `column-fill:balance` рвёт последний абзац криво — заливка
   балансная и задана явно. */
.nds-hub-lead{margin:0 0 30px;padding-left:14px;padding-right:14px;
  font-size:17px;line-height:1.7;color:var(--nds-word-2);
  columns:2;column-gap:56px;column-fill:balance}
.nds-hub-lead p{max-width:62ch;margin-bottom:.8em;break-inside:avoid}
.nds-hub-lead p:last-child{margin-bottom:0}
.nds-body h2{font-size:clamp(22px,2vw,30px);margin:1.6em 0 .5em}
.nds-body h3{font-size:20px;margin:1.4em 0 .45em}
.nds-body ul,.nds-body ol{padding-left:1.25em;margin:0 0 1.15em}
.nds-body li{margin-bottom:.4em}
.nds-body blockquote{margin:1.4em 0;padding-left:18px;border-left:3px solid var(--nds-mark);
  font-size:20px;line-height:1.6}
.nds-body table{width:100%;font-family:var(--nds-face);font-size:15px;margin:0 0 1.4em}
.nds-body td,.nds-body th{padding:9px 12px;text-align:left;vertical-align:top;
  background:var(--nds-board)}
.nds-body th{background:var(--nds-chalk);font-weight:700}
.nds-tabla-wrap{overflow-x:auto;max-width:100%}

/* ---------------- чужой HTML в теле статьи (автопостинг moz.biz) ----------
   ⛔ Ни одной из этих разметок на САЙТЕ НЕТ, и ни один гейт по живым страницам
   её не увидит: свои таблицы генератор заворачивает в `.nds-tabla-wrap` (30 из
   30, пересчитано), кадры кладёт в <figure>, видео не ставит вовсе. Робот
   кладёт в `%CONTENT_1%` СВОЙ html и об обёртках не знает — поэтому правила
   висят на голом теге, а проверяются отрисовкой шаблона с образцом.
   ⛔ Селектор `>table` выбран не для красоты: свои таблицы лежат внутри
   обёртки и под него не попадают, так что прокрутка достанется только
   присланным. Перенос — перечислением по тегам, а не `overflow-wrap` на всё
   тело: наследование залезло бы в ячейки своих таблиц, где ширины подобраны. */
.nds-body>table{width:100%;border-collapse:collapse}
/* ⛔ Подпись присланной таблицы мерится по ТАБЛИЧНОЙ раскладке, то есть по
   прокручиваемой ширине: на 390 px замер давал 1279 px подписи при 362 видимых
   — вылета страницы нет, таблица честно едет, а конец подписи недостижим.
   `display:block` убирает анонимную табличную обёртку, `100cqi` даёт ширину
   контейнера прозы, а `max-width:100%` снимает лишние 2 px рамки таблицы.
   Липкость держит подпись на месте, пока таблица уезжает под ней. */
.nds-body>table>caption{display:block;position:sticky;left:0;width:100cqi;
  max-width:100%;text-align:left;font-size:14px;line-height:1.45;
  color:var(--nds-word-2);padding-bottom:8px}
.nds-body img,.nds-body video{max-width:100%;height:auto}
.nds-body iframe,.nds-body embed,.nds-body object{display:block;width:100%;
  max-width:100%;aspect-ratio:16/9;height:auto;border:0}
.nds-body pre{max-width:100%;overflow-x:auto;padding:14px;background:var(--nds-board);
  font-size:14px;line-height:1.5}
.nds-body>p,.nds-body li,.nds-body h2,.nds-body h3,.nds-body h4,
.nds-body blockquote,.nds-body>table th,.nds-body>table td{overflow-wrap:break-word}
/* дата, которую робот вписывает ПЕРВЫМ узлом тела (ArticleDateStamp::inject
   ставит её сразу за <h1>, а <h1> потом уносится в %H1%). Токена даты у робота
   нет, поэтому в шаблоне этой строки не будет — а на живой статье будет.
   Контейнер в селекторе обязателен: голый класс проиграет правилам прозы. */
.nds-body .pbn-published-date,.pbn-published-date{font-family:var(--nds-face);
  font-size:13px;font-variant:all-small-caps;font-weight:700;letter-spacing:.06em;
  color:var(--nds-word-2);margin:0 0 22px;padding-bottom:12px;
  border-bottom:1px solid var(--nds-chalk);max-width:var(--nds-prose)}

.nds-art-foot{max-width:var(--nds-prose);margin-top:38px}
.nds-tags{font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  color:var(--nds-word-2)}
.nds-tags a{color:var(--nds-mark-2);text-decoration:none;margin-right:12px}
.nds-tags a:hover{text-decoration:underline}

/* ============================================================ виджеты */
.nds-w{background:var(--nds-board);padding:22px 20px;margin:34px 0}
.nds-w-h{font-size:19px;margin-bottom:8px;display:flex;align-items:center;gap:8px}
.nds-w-h svg{color:var(--nds-mark);flex:0 0 auto}
.nds-w-dek{font-size:15px;line-height:1.55;color:var(--nds-word-2);margin-bottom:16px}
.nds-w-tab{width:100%;font-family:var(--nds-face);font-size:14px}
.nds-w-tab th,.nds-w-tab td{padding:9px 18px;text-align:left;vertical-align:top}
.nds-w-tab th:first-child,.nds-w-tab td:first-child{padding-left:16px}
.nds-w-tab thead th{font-size:12px;font-variant:all-small-caps;color:var(--nds-word-2);
  font-weight:700}
.nds-w-tab tbody tr:nth-child(odd) th,.nds-w-tab tbody tr:nth-child(odd) td{
  background:var(--nds-floor)}
.nds-w-num{font-variant-numeric:tabular-nums;white-space:nowrap}
.nds-w-num.is-more{color:var(--nds-mark);font-weight:700}
.nds-w-src{font-size:12px;line-height:1.5;color:var(--nds-word-2);margin:14px 0 0}
.nds-court-wrap{display:grid;grid-template-columns:minmax(200px,300px) 1fr;gap:24px;
  align-items:start}
.nds-court-svg{width:100%;height:auto}
.nds-c-floor{fill:var(--nds-chalk)}
.nds-c-line{fill:none;stroke:var(--nds-word);stroke-width:4}
.nds-c-dash{fill:none;stroke:var(--nds-word-2);stroke-width:3;stroke-dasharray:12 10}
.nds-c-board{stroke:var(--nds-mark);stroke-width:7;stroke-linecap:round}
.nds-c-t{font-family:var(--nds-face);font-size:19px;font-weight:700;fill:var(--nds-word-2);
  text-anchor:middle}
.nds-c-l{text-anchor:start}
.nds-five-l{list-style:none;margin:0;padding:0;counter-reset:f}
.nds-five-l li{counter-increment:f;border-top:1px solid var(--nds-chalk)}
.nds-five-l li:first-child{border-top:0}
.nds-five-l a{display:flex;align-items:baseline;gap:12px;padding:10px 0;
  text-decoration:none;color:var(--nds-word)}
.nds-five-l a::before{content:counter(f,decimal-leading-zero);font-family:var(--nds-face);
  font-size:12px;font-weight:800;color:var(--nds-mark);flex:0 0 auto}
.nds-five-n{font-family:var(--nds-face);font-weight:700;font-size:16px}
.nds-five-c{margin-left:auto;font-family:var(--nds-face);font-size:12px;
  font-variant:all-small-caps;color:var(--nds-word-2)}
.nds-five-l a:hover .nds-five-n{color:var(--nds-mark);text-decoration:underline}
.nds-tape-t th[scope="row"]{text-align:center;font-family:var(--nds-face);font-size:12px;
  font-variant:all-small-caps;color:var(--nds-word-2);font-weight:700}
.nds-tape-t td{width:32%;font-size:18px;font-weight:700}
.nds-tape-t td:first-child{text-align:right}
.nds-tape-t thead th:first-child{text-align:right}
.nds-tape-t thead th:last-child{text-align:right}
.nds-tape-t td:last-child{text-align:left}

/* ============================================================ хаб и индексы */
.nds-hub-h{font-size:clamp(34px,4.4vw,62px);margin:34px 0 12px}
.nds-hub-dek{font-size:19px;line-height:1.6;color:var(--nds-word-2);
  margin-bottom:6px}
.nds-hub-dek>span{display:block;max-width:54ch}
.nds-hub-cnt{font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  color:var(--nds-word-2);margin-bottom:var(--nds-air)}
.nds-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));
  gap:32px 26px}
.nds-grid>*{padding-left:14px;padding-right:14px}
.nds-lista{list-style:none;margin:0;padding:0}
/*  ⛔ 05.18c на СПИСКЕ: строка списка идёт во всю полосу (1275 на 1440), а
    заголовок с подписью стояли друг под другом слева — справа оставалась пустой
    половина полосы, и так на каждой строке всех девяти столов «All sections»
    (замер 30.09.2026: проза 606, жёлоб справа 473 занят на 0 %). Подпись
    уходит к правому краю строки — так полоса занята по всей ширине, и это
    обычная газетная строка описи: слева материал, справа отметка. */
.nds-lista li{display:grid;grid-template-columns:minmax(0,1fr) auto;
  align-items:baseline;gap:4px 26px;
  padding:13px 14px;border-top:1px solid var(--nds-chalk)}
.nds-lista li:first-child{border-top:0}
.nds-lista a{font-family:var(--nds-face);font-weight:700;font-size:17px;
  color:var(--nds-word);text-decoration:none}
.nds-lista a:hover{color:var(--nds-mark);text-decoration:underline}
.nds-lista span{font-family:var(--nds-face);font-size:12px;text-align:right;
  font-variant:all-small-caps;color:var(--nds-word-2)}
/* ------------------------------------------------- страница промаха (код 404) */
.nds-e404{padding-top:26px}
.nds-e404-n{font-family:var(--nds-face);font-weight:800;font-size:clamp(96px,16vw,190px);
  line-height:.74;letter-spacing:-.04em;color:var(--nds-ghost);margin:0}
.nds-e404>p:not(.nds-e404-n):not(.nds-hub-dek){max-width:var(--nds-prose);
  margin:0 0 18px}
.nds-e404 .nds-hub-h{margin-top:14px}
.nds-e404-l{list-style:none;margin:var(--nds-air) 0 0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:0 26px}
.nds-e404-l li{padding:14px 0;border-top:2px solid var(--nds-word);min-width:0}
.nds-e404-l a{font-family:var(--nds-face);font-weight:800;font-size:20px;
  color:var(--nds-word);text-decoration:none;display:block}
.nds-e404-l a:hover{color:var(--nds-mark)}
.nds-e404-l span{display:block;font-size:15px;line-height:1.45;
  color:var(--nds-word-2);margin-top:5px}
.nds-nota{background:var(--nds-chalk);padding:16px 20px;margin:0 0 30px;
  font-size:16px;line-height:1.55}
.nds-nota-in{max-width:var(--nds-prose)}
.nds-nota strong{font-family:var(--nds-face)}

/* ====================================== гнездо анонсов робота автопостинга */
/* Всё, что стоит внутри `.nds-wire`, пишет ПУБЛИКАТОР moz.biz своей разметкой:
   `<div style='margin-bottom: 20px;'><h4><a …></a></h4><p>дата</p></div>`.
   Классов скина там нет и не будет — робот сетевой и про этот сайт не знает,
   поэтому одевается не класс, а ФОРМА: прямой ребёнок гнезда и теги внутри него.
   ⛔ Инлайновый `margin-bottom` публикатора перебивается только `!important` —
   свой отступ снизу иначе не встанет, а расстояние до полосы кластера задаёт
   именно он.
   ⚠️ Пока анонсов нет, гнездо обязано схлопнуться, иначе над полосой висит
   пустой отступ. `:empty` здесь НЕ годится: между маркером и закрывающим тегом
   остаются перевод строки и сам комментарий, а `:empty` не переносит ни того,
   ни другого (css-empty-does-not-match-whitespace). Спрашиваем наличие `div`.
   ⛔ `:has()` внутри `:has()` запрещён спецификацией — браузер выбрасывает такое
   правило целиком и молча; поэтому уровень ровно один. */
.nds-wire:not(:has(div)){display:none}
.nds-wire{margin:0 0 34px}
.nds-wire>div{margin:0 0 18px!important;padding:14px 18px;
  background:var(--nds-board);border-left:3px solid var(--nds-mark)}
.nds-wire>div:last-child{margin-bottom:0!important}
.nds-wire>div>h4{font-family:var(--nds-face);font-weight:800;
  font-size:clamp(19px,1.9vw,23px);line-height:1.22;letter-spacing:-.02em;
  margin:0;overflow-wrap:break-word}
.nds-wire>div>h4>a{color:var(--nds-word);text-decoration:none}
.nds-wire>div>h4>a:hover{color:var(--nds-mark)}
.nds-wire>div>p{font-family:var(--nds-face);font-size:13px;
  font-variant:all-small-caps;font-weight:700;letter-spacing:.06em;
  color:var(--nds-word-2);margin:7px 0 0}

/* ============================================== ветка читателей под записью */
/* Ветка — донорский КОНТЕНТ, поэтому и одета как содержательный блок: та же
   колонка прозы, тот же кегль чтения, никаких аватаров и «свернуть». Вложенность
   даёт ЛЕВАЯ линейка со сдвигом, а не рамка: рамок в скине нет ни одной (ось 5).
   Фон не берём — реплики не врезка и спорить с `nds-nota` ниже им нечем. */
.nds-hilo{margin:var(--nds-air) 0 34px;max-width:var(--nds-shell)}
.nds-hilo-h{font-size:clamp(24px,2.6vw,34px);margin:0 0 10px;
  padding-top:16px;border-top:2px solid var(--nds-word)}
.nds-hilo-d{font-size:16px;line-height:1.6;color:var(--nds-word-2);
  max-width:var(--nds-prose);margin:0 0 26px}
.nds-hilo-l{list-style:none;margin:0;padding:0}
.nds-com{max-width:var(--nds-prose);margin:0 0 24px;
  border-left:2px solid var(--nds-chalk);padding-left:18px}
.nds-com-2{margin-left:26px}
.nds-com-3{margin-left:52px}
.nds-com-4{margin-left:78px}
.nds-com-2,.nds-com-3,.nds-com-4{border-left-color:var(--nds-mark)}
.nds-com-m{font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  letter-spacing:0;margin:0 0 4px;display:flex;flex-wrap:wrap;gap:0 12px}
.nds-com-n{font-weight:700;color:var(--nds-word)}
.nds-com-d{color:var(--nds-word-2)}
.nds-com-t{font-size:17px;line-height:1.7}
.nds-com-t p{margin:0 0 10px}
.nds-com-t p:last-child{margin-bottom:0}
.nds-com-t blockquote{margin:0 0 10px;padding-left:14px;
  border-left:2px solid var(--nds-chalk);color:var(--nds-word-2)}

/* ====================================================== редакционная подпись */
/* Полоса стоит МЕЖДУ </main> и подвалом, поэтому на сетку секций (R11) не влияет.
   Холодный контрапункт даёт разделение без единой линейки — ось 5. */
.nds-firma{margin-top:var(--nds-air);padding:38px 0 34px;background:var(--nds-mark-2);
  color:var(--nds-floor)}
.nds-firma-in{margin-left:var(--nds-anchor);
  width:min(var(--nds-band),calc(100vw - var(--nds-anchor) - var(--nds-right)));
  padding-left:var(--nds-pad);padding-right:var(--nds-pad);
  display:flex;align-items:flex-start;gap:22px}
.nds-firma-mark{flex:0 0 auto;padding-left:14px}
.nds-firma-mark svg{width:46px;height:46px;color:#e7b49c}
.nds-firma-t{min-width:0;padding-right:14px}
.nds-firma-t h2{font-family:var(--nds-face);font-size:12px;font-variant:all-small-caps;
  letter-spacing:0;color:#c6d3e2;margin:0 0 10px}
.nds-firma-t p{font-size:15px;line-height:1.65;margin:0 0 9px;max-width:74ch}
.nds-firma-t a{color:var(--nds-floor)}
.nds-firma-d{font-family:var(--nds-face);font-size:13px;color:#c6d3e2}
.nds-firma-d a{color:#c6d3e2}

/* ============================================================ подвал */
.nds-foot{margin-top:var(--nds-air);padding:var(--nds-air) 0 40px;background:var(--nds-board)}
.nds-foot-in{margin-left:var(--nds-anchor);
  width:min(var(--nds-band),calc(100vw - var(--nds-anchor) - var(--nds-right)));
  padding-left:var(--nds-pad);padding-right:var(--nds-pad)}
.nds-foot-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:30px 26px;
  margin-bottom:38px}
.nds-foot-col{padding-left:14px;padding-right:14px}
.nds-foot-col h2{font-size:12px;font-variant:all-small-caps;letter-spacing:0;
  color:var(--nds-word-2);margin-bottom:10px}
.nds-foot-col ul{list-style:none;margin:0;padding:0}
.nds-foot-col li{margin-bottom:7px}
.nds-foot-col a{font-family:var(--nds-face);font-size:15px;color:var(--nds-word);
  text-decoration:none}
.nds-foot-col a:hover{color:var(--nds-mark);text-decoration:underline}
.nds-foot-note{font-size:14px;line-height:1.6;color:var(--nds-word-2);
  max-width:78ch;padding:0 14px}
.nds-foot-mark{display:flex;align-items:center;gap:12px;margin-top:26px;padding:0 14px;
  font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
  color:var(--nds-word-2)}
.nds-foot-mark svg{color:var(--nds-mark);width:28px;height:28px}

/* ============================================================ крошки и мелочь */
.nds-crumbs{margin:22px 0 0;padding:0 14px}
.nds-crumbs ol{list-style:none;display:flex;flex-wrap:wrap;gap:0 8px;margin:0;padding:0;
  font-family:var(--nds-face);font-size:12px;font-variant:all-small-caps;
  color:var(--nds-word-2)}
.nds-crumbs li+li::before{content:"/";margin-right:8px;color:var(--nds-chalk)}
.nds-crumbs a{color:var(--nds-word-2);text-decoration:none}
.nds-crumbs a:hover{color:var(--nds-mark);text-decoration:underline}
.nds-rel{margin-top:var(--nds-air)}
.nds-rel>h2{font-size:13px;font-variant:all-small-caps;letter-spacing:0;font-weight:600;
  color:var(--nds-word-2);margin-bottom:20px;padding:0 14px}

/* ================================================== размещение владельца */
/* Полоса логотипов с главной донора (перелинковка сети, правило 4). Оправа новая,
   ссылки прежние. Логотипы чужие: высота ограничена, цвет не трогаем. */
.nds-socios{margin-top:var(--nds-air)}
.nds-socios>h2{font-size:13px;font-variant:all-small-caps;letter-spacing:0;font-weight:600;
  color:var(--nds-word-2);margin:0 0 18px}
.nds-socios-g{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.nds-socio{display:grid;place-items:center;min-height:92px;padding:18px 20px;
  background:var(--nds-board);border:1px solid var(--nds-chalk)}
.nds-socio img{max-width:100%;width:auto;height:auto;max-height:44px;object-fit:contain;
  opacity:.9}
.nds-socio:hover{border-color:var(--nds-mark)}
.nds-socio:hover img,.nds-socio:focus-visible img{opacity:1}

/* ============================================================ адаптив */
@media (max-width:1100px){
  /*  рельс живёт только там, где под него есть жёлоб: ниже 1100 виджет снова
      встаёт под текстом, как и был */
  .nds-hub-lead{columns:auto}
  .nds-art-2{display:block}
  .nds-art-rail{position:static}
  .nds-art-rail .nds-toc{display:none}
  .nds-art-rail .nds-w{margin:34px 0}
  .nds-q-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .nds-rot,.nds-sec[data-rot] .nds-rot>.is-big{grid-template-columns:repeat(4,minmax(0,1fr))}
  .nds-sec[data-rot="1"] .nds-rot>.is-big,
  .nds-sec[data-rot="2"] .nds-rot>.is-big,
  .nds-sec[data-rot="3"] .nds-rot>.is-big,
  .nds-sec[data-rot="0"] .nds-rot>.is-big{grid-column:1/span 4;grid-row:auto}
  .nds-sec[data-rot="0"] .nds-rot>*:not(.is-big){grid-column:span 2}
  .nds-foot-grid{grid-template-columns:repeat(2,1fr)}
  .nds-court-wrap{grid-template-columns:1fr}
  .nds-socios-g{grid-template-columns:repeat(2,minmax(0,1fr))}
}
/*  ⛔⛔ Таблица из рельса возвращается в НОРМАЛЬНЫЙ вид только до 700 px: ниже
    работает общий мобильный блок, где та же таблица кладётся строками с подписями
    из `data-th`. Без нижней границы правила рельса (селектор длиннее, значит
    специфичнее) отменяли мобильные, и гроссбух печатался как «149224915 August
    2014» — три числа подряд без подписей на 390 px (замер 30.09.2026). */
@media (max-width:1100px) and (min-width:701px){
  .nds-art-rail .nds-w-tab{display:table;width:100%}
  .nds-art-rail .nds-w-tab tbody{display:table-row-group}
  .nds-art-rail .nds-w-tab tr{display:table-row;border-top:0;padding:0}
  .nds-art-rail .nds-w-tab th,.nds-art-rail .nds-w-tab td{display:table-cell}
  .nds-art-rail .nds-w-tab thead{display:table-header-group;position:static;
    width:auto;height:auto;overflow:visible;clip:auto}
  .nds-art-rail .nds-w-tab td[data-th]{display:table-cell}
  .nds-art-rail .nds-w-tab td[data-th]::before{content:none}
  .nds-art-rail .nds-w-tab th[scope="row"]{font-size:inherit;padding:9px 18px}
}
@media (max-width:900px){
  :root{--nds-anchor:24px;--nds-right:16px}
  .nds-burger{display:flex;align-items:center;gap:7px;position:absolute;right:var(--nds-pad);
    top:26px;min-height:44px;min-width:44px;padding:0 6px;cursor:pointer;
    font-family:var(--nds-face);font-size:13px;font-variant:all-small-caps;
    color:var(--nds-word-2)}
  .nds-burger span{display:block;width:22px;height:2px;background:var(--nds-word);
    position:absolute;left:0}
  .nds-burger span:nth-child(1){top:14px}
  .nds-burger span:nth-child(2){top:21px}
  .nds-burger span:nth-child(3){top:28px}
  .nds-burger{padding-left:30px}
  .nds-masthead-in{position:relative}
  .nds-nav{display:none}
  .nds-burger-in:checked~.nds-nav{display:flex;flex-direction:column;gap:0}
  .nds-burger-in:checked~.nds-nav a{min-height:44px;display:flex;align-items:center;
    width:100%;font-size:16px;border-top:1px solid var(--nds-chalk)}
  .nds-nav-date{margin:10px 0 0}
  .nds-word-t{white-space:normal}
}
@media (max-width:700px){
  :root{--nds-anchor:0px;--nds-right:0px;--nds-pad:14px;--nds-air:48px}
  body{font-size:18px}
  /* На телефоне полосы, которую надо занимать, нет: подпись возвращается под
     заголовок, иначе «Roster move · 2015-16 · Tej Shah» отжимает заголовок в
     столбик по одному слову. */
  .nds-lista li{display:block}
  .nds-lista span{display:block;text-align:left;margin-top:3px}
  .nds-home-h{margin:24px 0 22px}       /* зазор под шапкой на мобильной: норма 12–32 */
  .nds-five-q{margin-top:26px}
  /* ⛔ 18px по бокам ячейки на 390px дают min-content таблицы шире врезки
     (замер: таблица 393 при врезке 384 — документ 398>390 и текст у края).
     Три колонки × два бока: каждый снятый пиксель отступа стоит шести. */
  .nds-w-tab th,.nds-w-tab td{padding:9px 10px}
  .nds-tape-t th,.nds-tape-t td{overflow-wrap:anywhere}
  /* ⛔ Присланная роботом таблица прокручивается ТОЛЬКО на телефоне: с
     безусловным `display:block` табличный алгоритм ширины выключается, и на
     1440 вместо ужавшейся таблицы читатель получает срезанную колонку под
     полосой прокрутки. Своих таблиц это не касается — они внутри обёртки. */
  .nds-body>table{display:block;width:max-content;min-width:100%;max-width:100%;
    overflow-x:auto}
  .nds-body>table th{white-space:nowrap}
  .nds-w-tab th:first-child,.nds-w-tab td:first-child{padding-left:10px}
  /* ⛔ Гроссбух — ПЯТЬ колонок, и на 390 px он не помещается ни при каком
     отступе: с `overflow-wrap:anywhere` шапка рвалась по слогам («ROSTE R»,
     «MOVE S», «SEA SO»), а ссылка сезона вставала в три строки. Поэтому
     `anywhere` оставлен только трёхколоночной ленте, а гроссбух на мобильной
     разворачивается в список пар «что — сколько»: шапка прячется (но остаётся
     озвученной), подпись ячейки берётся из `data-th` (nds_widgets.ledger). */
  .nds-w-ledger .nds-w-tab thead{position:absolute;width:1px;height:1px;
    overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
  .nds-w-ledger .nds-w-tab,.nds-w-ledger .nds-w-tab tbody,
  .nds-w-ledger .nds-w-tab tr,.nds-w-ledger .nds-w-tab th,
  .nds-w-ledger .nds-w-tab td{display:block;width:auto}
  .nds-w-ledger .nds-w-tab tr{border-top:1px solid var(--nds-chalk);padding:12px 0}
  .nds-w-ledger .nds-w-tab tbody tr:nth-child(odd) th,
  .nds-w-ledger .nds-w-tab tbody tr:nth-child(odd) td{background:none}
  .nds-w-ledger .nds-w-tab th[scope="row"]{font-size:19px;padding:0 0 8px}
  .nds-w-ledger .nds-w-tab td{display:flex;justify-content:space-between;
    align-items:baseline;gap:14px;padding:4px 0;font-size:16px}
  .nds-w-ledger .nds-w-tab td::before{content:attr(data-th);font-size:12px;
    font-variant:all-small-caps;font-weight:700;color:var(--nds-word-2);
    letter-spacing:.02em}
  .nds-q-grid{grid-template-columns:minmax(0,1fr);gap:26px}
  .nds-rot{grid-template-columns:minmax(0,1fr);gap:30px}
  .nds-rot>*,.nds-sec[data-rot] .nds-rot>.is-big,
  .nds-sec[data-rot="0"] .nds-rot>*:not(.is-big){grid-column:1/-1;grid-row:auto}
  .nds-cifra{font-size:72px}
  /* Полосы, которую надо занимать, тут уже нет: ссылка на стол переносится
     под шапку целой строкой, а не поджимает заголовок к цифре. */
  .nds-sec-cab{gap:16px;flex-wrap:wrap}
  .nds-sec-mas-d{flex:1 0 100%;margin-left:0;white-space:normal;padding-bottom:0}
  .nds-read-b .nds-figura{float:none;width:100%;margin:0 0 18px}
  .nds-foot-grid{grid-template-columns:1fr}
  .nds-firma-in{flex-direction:column;gap:14px}
  .nds-firma-mark svg{width:36px;height:36px}
  .nds-pass{padding:16px 14px}
  .nds-pass dl{grid-template-columns:1fr;gap:2px}
  .nds-pass dd{margin-bottom:8px}
  .nds-w{padding:18px 14px}
  .nds-grid{grid-template-columns:minmax(0,1fr)}
  .nds-tape-t td{font-size:16px}
  .nds-socios-g{gap:12px}
  .nds-socio{min-height:80px;padding:14px}
  .nds-socio img{max-height:38px}
  .nds-e404-l{grid-template-columns:minmax(0,1fr)}
  /* сдвиг вложенных реплик на узком экране: 78px съели бы полколонки */
  .nds-com{padding-left:13px}
  .nds-com-2{margin-left:12px}
  .nds-com-3{margin-left:24px}
  .nds-com-4{margin-left:36px}
  .nds-com-t{font-size:16px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media print{.nds-masthead,.nds-foot,.nds-w,.nds-rel,.nds-socios{display:none}}
