/* ============================================================
   ПМК — базовые стили всего сайта
   ------------------------------------------------------------
   Переписан 25.08.2026 по «04 — ОБЛИК: решить до вёрстки.md»
   и «ДИЗАЙН-СИСТЕМА.md» (сведена набело 01.09.2026). Прежняя версия (22.08)
   забракована заказчиком целиком и не используется.

   Здесь живёт общее для всех страниц: токены, шрифты, контейнер,
   секции, типографика, метка блока, кнопки, перечни, таблица,
   карточки, ссылка на пункт документа, заглушка, шапка, подвал,
   форма. Страничное — в файле страницы (glavnaya.css).

   Правила, которые нельзя нарушать (решения 25–26.08.2026,
   уточнение 27.08 ночью):
   — радиус ноль везде;
   — срез 45° НЕ ставится «везде»: заказчик — «к 4-му блоку глаз уже
     вообще не воспримет». На странице не больше четырёх применений;
     здесь срез несут только кнопки (заливка отклика наезжает из угла
     среза — форма и механика связаны). Карточки, панели, слоты —
     чистые прямоугольники;
   — смысловой знак берётся из общего словаря (правка 27.08 ночью):
     да/нет — галочка и крестик в кружках (SVG, без border-radius),
     фирменный треугольник в перечнях снят — «очень сливается»;
   — прописных букв нет нигде, разрядка положительной не бывает;
   — числовой слой набран Geologica с tabular-nums;
   — движения ровно три вида (ДИЗАЙН-СИСТЕМА, раздел 7): раскрытие
     по наведению (opacity + translateY(14px), .3s ease), проявление
     при первом показе (то же, задержка 60мс между соседями, один раз)
     и отклик кнопки (наезд заливки из угла среза, 200 мс). Четвёртого нет.
     Появление не сдвигает соседей: скрытое живёт в потоке
     с opacity 0, место зарезервировано. prefers-reduced-motion
     отключает всё, содержимое при этом видно сразу.
   ============================================================ */

/* ── Шрифты: только локальные файлы, см. assets/fonts/README.md ── */
@font-face{font-family:Geologica;src:url(/assets/fonts/geologica-var-cyrillic.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Geologica;src:url(/assets/fonts/geologica-var-latin.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+2000-206F,U+2074,U+20AC,U+2122,U+2212}
@font-face{font-family:Geologica;src:url(/assets/fonts/geologica-var-latin-ext.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0100-02BB,U+20B0-20BF}
@font-face{font-family:Commissioner;src:url(/assets/fonts/commissioner-var-cyrillic.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}
@font-face{font-family:Commissioner;src:url(/assets/fonts/commissioner-var-latin.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+2000-206F,U+2074,U+20AC,U+2122,U+2212}
@font-face{font-family:Commissioner;src:url(/assets/fonts/commissioner-var-latin-ext.woff2) format('woff2');font-weight:300 700;font-display:swap;unicode-range:U+0100-02BB,U+20B0-20BF}

/* ── Токены — из ДИЗАЙН-СИСТЕМЫ, раздел 2 и 4 ── */
:root{
  --sinij:#0D1A32;      /* с основного сайта заказчика, обязателен */
  --sinij-2:#16294D;    /* на ступень светлее, крупные плашки и ховер кнопки */
  --chernila:#101418;   /* текст */
  --seryj:#5A6472;      /* вторичный текст */
  --seryj-2:#8A93A1;    /* подписи, метки */
  --linia:#DDE1E7;      /* границы */
  --linia-2:#EDF0F3;    /* тонкие разделители */
  --fon:#FFFFFF;
  --fon-2:#F5F7F9;      /* фон блока, чередование */
  --sinij-yark:#1B5FA8; /* ссылки, наведение, фокус */
  --sinij-fon:#E8EFF7;  /* подложка выделенного */
  /* Красный снят пипеткой с логотипа ФРП (итерация 6). Редкий
     смысловой сигнал: «не финансируется», сроки-отсекатели,
     ограничения. НЕ БОЛЬШЕ 2% площади экрана. Нельзя: заливка кнопки,
     фон плашки, шапка, подвал, рядом со знаком ФРП — это фирменный
     цвет фонда, а ПМК фондом не является. */
  --krasnyj:#DC0032;
  --krasnyj-fon:#FCE8ED;
  --da:#1F6B4D;   --da-fon:#E8F2ED;
  --vnim:#8C5B12; --vnim-fon:#FAEFDC;

  --sans:Geologica,system-ui,-apple-system,"Segoe UI",sans-serif;
  --text:Commissioner,system-ui,-apple-system,"Segoe UI",sans-serif;

  /* Радиус ноль, срез 45° только у кнопок (8→12px) и рамы
     калькулятора (26px) — сами срезы зашиты в clip-path по месту.
     Токен --srez-kart удалён 01.09: карточных срезов нет
     с итерации 8, держать отменённое решение в токенах опасно. */
  --r:0;               /* скруглений нет ни у чего — решение облика */
  --srez:8px;          /* срез кнопки, на ховере 12px */
  --ten:0 1px 2px rgba(13,26,50,.05),0 10px 28px -14px rgba(13,26,50,.16);

  /* ── Токены сетки (адаптив, ДИЗАЙН-СИСТЕМА 11.1) ──
     Боковое поле и высота шапки — переменные, а не числа в правилах:
     их подхватывают контейнер, шапка, полоса структуры, липкие
     колонки и scroll-margin якорей. Новый брейкпоинт — одна строка. */
  --gutter:32px;       /* боковое поле контейнера */
  --header-h:72px;     /* высота шапки — от неё считают полоса структуры и якоря */
  --sek:96px;          /* интервал секции: 96 → 72 → 56 → 44 */
  --lipko-top:calc(var(--header-h) + 68px); /* верх липких колонок: шапка + полоса 52 + зазор 16 */
}

/* Лестница токенов — по таблице 11.1 дизайн-системы.
   Ширина 1024 принадлежит полосе 1024–1199 (gutter 28), поэтому
   структурные медиа (≤1024) и токенные (≤1199/≤1023) не совпадают —
   это следование таблице, а не ошибка. */
@media (min-width:1600px){:root{--gutter:40px}}
@media (max-width:1199px){:root{--gutter:28px;--header-h:68px}}
@media (max-width:1024px){:root{--sek:72px}}
@media (max-width:1023px){:root{--gutter:24px;--header-h:64px}}
@media (max-width:768px){:root{--sek:56px}}
@media (max-width:767px){:root{--gutter:20px;--header-h:60px}}
@media (max-width:479px){:root{--gutter:16px;--header-h:56px;--sek:44px}}

/* ── Основа ── */
*,*::before,*::after{box-sizing:border-box}
html{margin:0;padding:0}
body{margin:0;font-family:var(--text);font-weight:400;font-size:17px;line-height:1.62;color:var(--chernila);background:var(--fon)}
img{max-width:100%;height:auto;display:block}
p{margin:0}
ul[class],ol[class]{list-style:none;margin:0;padding:0}
[hidden]{display:none!important}

h1,h2,h3,h4{font-family:var(--sans);font-weight:600;letter-spacing:-.018em;text-wrap:balance;margin:0;color:inherit}
h1{font-size:48px;line-height:1.08}
h2{font-size:34px;line-height:1.15}
h3{font-size:22px;line-height:1.3}
/* Заголовки уменьшаются ступенями, не clamp: clamp даёт значения
   вне шкалы (web-adaptiv) */
@media (max-width:1024px){
  h1{font-size:40px}
  h2{font-size:30px}
}
@media (max-width:768px){
  h1{font-size:33px}
  h2{font-size:27px}
  h3{font-size:20px}
}
@media (max-width:480px){
  h1{font-size:29px}
  h2{font-size:24px}
}

b,strong{font-weight:600}

:focus-visible{outline:2px solid var(--sinij-yark);outline-offset:2px}

/* ── Контейнер: 1200px, поле — токен --gutter ── */
.w{max-width:1200px;margin:0 auto;padding-left:var(--gutter);padding-right:var(--gutter)}
/* Узкая полоса чтения */
.uzko{max-width:720px}

/* ── Секции: воздух — токен --sek (96 → 72 → 56 → 44),
      фоны чередуются решением состава страницы ── */
.sek{padding-top:var(--sek);padding-bottom:var(--sek)}
.sek--fon2{background:var(--fon-2)}
/* Выделенная светлая секция (--sinij-fon) — не больше одной на страницу
   (ДИЗАЙН-СИСТЕМА, раздел 5). Переехала из glavnaya.css 14.09.2026:
   понадобилась второй странице (/biznes-plan/, лист 05). */
.sek--vydel{background:var(--sinij-fon)}
.sek h2{max-width:22ch}
.podzag{font-size:19px;line-height:1.55;color:var(--seryj);max-width:720px;margin-top:16px}
.sek__telo{margin-top:48px}
.sek__stroki{margin-top:48px;max-width:720px;display:grid;gap:14px}
.sek__stroki p{font-size:16px;line-height:1.6}
/* Тело ближе к заголовку, когда подзаголовок листа снят, — правило
   «48px (36px, если подзаголовок снят)» из раздела 5 дизайн-системы.
   Переехал из glavnaya.css 14.09.2026 (нужен /biznes-plan/). */
.sek__telo--blizhe{margin-top:36px}
/* Внутренние отступы секций сжимаются вслед за --sek */
@media (max-width:1024px){
  .sek__telo,.sek__stroki{margin-top:36px}
  .sek__telo--blizhe{margin-top:28px}
  .podzag{font-size:18px;margin-top:14px}
}
@media (max-width:768px){
  .sek__telo,.sek__stroki{margin-top:28px}
  .sek__telo--blizhe{margin-top:22px}
  .podzag{font-size:17px}
}

/* ── Метка блока: строчная, со скошенным уголком 6px.
      Номер листа живёт только в комментарии кода. ── */
.metka{font-family:var(--sans);font-size:13px;font-weight:500;color:var(--seryj-2);display:flex;align-items:center;gap:9px;margin-bottom:14px}
.metka::before{content:"";width:6px;height:6px;flex:0 0 auto;background:var(--seryj-2)}

/* ── Заголовок колонки: числовой слой, Geologica ── */
.zag-kolonki{font-family:var(--sans);font-size:13px;font-weight:500;line-height:1.3;color:var(--seryj-2)}

/* ── Кнопки: прямоугольник со срезом правого нижнего угла.
      Отклик (итерация 6, «глаз не радуется при наведении»): заливка
      НАЕЗЖАЕТ ИЗ УГЛА СРЕЗА — диагональный слой linear-gradient
      съезжает background-position из правого нижнего угла, 200мс.
      Слой живёт в background-image, а не в псевдоэлементе: absolute
      псевдоэлемент лёг бы ПОВЕРХ текста кнопки (порядок отрисовки),
      а с z-index:-1 спрятался бы ПОД background-color самой кнопки.
      Плюс срез подрастает 8 → 12px. Размер кнопки и соседи
      не двигаются. Цвет наезда — существующий токен через --nayezd,
      у каждого типа свой; новых цветов нет. Отклик один на все
      кнопки сайта, включая кнопки мессенджеров и плавающую.
      prefers-reduced-motion обнуляет длительности глобальным
      правилом в конце файла. ── */
.knopka{--nayezd:var(--sinij-yark);display:inline-block;font-family:var(--sans);font-size:16px;font-weight:500;line-height:1;padding:16px 30px;background-color:var(--sinij);background-image:linear-gradient(135deg,rgba(255,255,255,0) 50%,var(--nayezd) 50.3%);background-size:300% 300%;background-position:0% 0%;background-repeat:no-repeat;color:#fff;text-decoration:none;border:0;cursor:pointer;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%);transition:background-position .2s ease,clip-path .2s ease}
.knopka:hover{background-position:100% 100%;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
.knopka--kontur{--nayezd:var(--sinij-fon);background-color:transparent;color:var(--sinij);box-shadow:inset 0 0 0 1px var(--sinij)}
/* Крупная кнопка — акцент своего блока (итерация 7, лист 13) */
.knopka--krupnaya{font-size:17px;padding:19px 44px}
/* Те же два типа на тёмном фоне */
.knopka--belaya{--nayezd:var(--sinij-fon);background-color:#fff;color:var(--sinij)}
.knopka--kontur-belaya{--nayezd:rgba(255,255,255,.16);background-color:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.8)}

/* ── Перечни. Итерация 8: фирменный треугольный маркер снят
      («эти треугольники… очень сливается друг с другом»).
      Итерация 9: залитые кружки у строчных знаков сняты —
      заказчик: «одинаковые буллет-поинты — очень сильно рябит
      в глазах». Знак остаётся в строках (полярность читается
      без изучения), но весит втрое меньше: галочка и крестик
      ШТРИХОМ, без залитого кружка. Цветной знак группы — заголовок
      панели да/нет словом и цветом (ниже).
      Нейтральный перечень — короткая линия. ── */
.spisok{display:grid;gap:11px}
.spisok li{position:relative;padding-left:24px}
/* Координаты знака — переменными: страница может сдвинуть знак
   (у листа показателей финмодели у строки свои поля), и тогда
   сдвинуться обязан и второй слой — галочка при наведении.
   Пока координаты дублировались руками, галочка съехала
   относительно штриха; теперь место одно. */
.spisok li::before{content:"";position:absolute;left:var(--znak-x,0);top:var(--znak-y,12px);width:11px;height:2px;background:var(--seryj-2)}
.spisok--da li,.spisok--net li{padding-left:27px}
.spisok--da li::before,.spisok--net li::before{top:6px;width:15px;height:15px;background:none;background-size:15px 15px;background-repeat:no-repeat}
.spisok--da li::before{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><path d='M2.4 8l3.4 3.4 6.8-7.2' fill='none' stroke='%231F6B4D' stroke-width='2'/></svg>")}
/* Красный знак: «не финансируется» и «нельзя» — разрешённое
   применение --krasnyj (ДИЗАЙН-СИСТЕМА, 2.3) */
.spisok--net li::before{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><path d='M3.2 3.2l8.6 8.6M11.8 3.2l-8.6 8.6' fill='none' stroke='%23DC0032' stroke-width='2'/></svg>")}
/* Отклик строки при наведении (итерация 7): сдвиг transform
   не участвует в потоке — соседей не двигает */
.spisok li{transition:transform .2s ease}
.spisok li:hover{transform:translateX(5px)}
/* Нейтральный перечень: при наведении штрих сменяется зелёной
   галочкой — правка заказчика 15.09.2026. Только у нейтрального:
   у перечней да/нет знак уже стоит и несёт смысл, менять его
   на наведении нельзя. Два слоя, а не смена картинки: фон
   не анимируется, а opacity анимируется. */
.spisok:not(.spisok--da):not(.spisok--net) li::before{transition:opacity .2s ease}
.spisok:not(.spisok--da):not(.spisok--net) li::after{content:"";position:absolute;left:var(--znak-x,0);top:calc(var(--znak-y,12px) - 7px);width:15px;height:15px;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 15 15'><path d='M2.4 8l3.4 3.4 6.8-7.2' fill='none' stroke='%231F6B4D' stroke-width='2'/></svg>");background-size:15px 15px;background-repeat:no-repeat;opacity:0;transition:opacity .2s ease}
.spisok:not(.spisok--da):not(.spisok--net) li:hover::before{opacity:0}
.spisok:not(.spisok--da):not(.spisok--net) li:hover::after{opacity:1}

/* Перечень в две колонки. ПЕРЕЕХАЛ из glavnaya.css 16.09.2026
   по правилу «компонент, понадобившийся второй странице, —
   в общий файл»: понадобился перечню реестра промышленного
   дизайна на /oborudovanie/ (лист 06), а стоял в файле главной,
   где им набраны длинные перечни отраслей листа 03.
   Значения перенесены без изменений, вместе со своим
   медиазапросом: на ≤768 колонка одна. */
.spisok--dvakol{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:32px}
.spisok--dvakol li{align-self:start}
@media (max-width:768px){
  .spisok--dvakol{grid-template-columns:1fr}
}

/* ── Таблица: основной способ подачи условий ──
      РЕДАКЦИЯ 3 от 15.09.2026 — третья жалоба заказчика на таблицы
      подряд (14.09 бизнес-план, 15.09 процедура, 15.09 статьи:
      «мне не нравится дизайн таблиц, их надо прям пересмотреть»).
      Направление — читаемость строки, а не рисование сетки:
      — вертикальных линий нет, колонки разделяет воздух;
      — шапка без заливки: мелкий кегль 13/500, цвет --seryj-2,
        под шапкой ОДНА сильная линия --chernila. Положительный
        трекинг из ТЗ не взят — разрядка запрещена дизайн-системой
        (3.3), расхождение в отчёте;
      — строки без заливки, между ними волосяная --linia-2,
        вертикальный отступ ячейки 16px;
      — колонка-ось (th scope="row") — начертание и цвет заголовка:
        Geologica 500 --chernila. Требование правки 14.09 «оси
        читаются сильнее содержимого» сохранено, носитель сменился
        с заливки на начертание;
      — числа: td.chislo — tabular-nums, выравнивание вправо, nowrap;
      — отклик строки при наведении — заливка --fon-2;
      — главная колонка на подложке --sinij-fon остаётся приёмом
        страницы (.tabl--adresaty на /biznes-plan/) — только там,
        где главный столбец сравнения есть;
      — на узких экранах строка становится КАРТОЧКОЙ (ось —
        заголовком, ячейки — парами «название → значение», подписи
        из data-t); горизонтальная прокрутка — только у матриц
        от пяти колонок, класс .tabl--matrica.
      border-collapse:separate (зазор 0): при collapse липкая левая
      колонка мобильной матрицы уезжает без своих линий — линии
      в collapse рисует слой таблицы, а не ячейка. ── */
.tabl{border-collapse:separate;border-spacing:0;width:100%;font-size:16px}
.tabl thead th{font-family:var(--sans);font-size:13px;font-weight:500;color:var(--seryj-2);background:none;text-align:left;padding:0 24px 10px 12px;border-bottom:2px solid var(--chernila);vertical-align:bottom}
.tabl td{padding:16px 24px 16px 12px;border-bottom:1px solid var(--linia-2);vertical-align:top}
.tabl td.chislo{font-family:var(--sans);font-weight:500;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
/* Заголовок числовой колонки выравнивается по своим числам */
.tabl thead th.th-chislo{text-align:right}
/* Колонка-ось: то, ПО ЧЕМУ сравнивают. Начертание и цвет заголовка,
   кегль на ступень меньше текста ячейки — ось видна, но не кричит. */
.tabl tbody th{font-family:var(--sans);font-size:15px;font-weight:500;color:var(--chernila);padding:16px 24px 16px 12px;border-bottom:1px solid var(--linia-2);vertical-align:top;text-align:left;background:none}
/* Перечень внутри ячейки идёт строками — знак «—» запрещён
   заказчиком 15.09.2026, запятая длинный перечень слепляет. */
.tabl .td-stroka{display:block}
.tabl .td-stroka+.td-stroka{margin-top:4px}
/* Отклик строки: заливка. Страница может дополнить своим акцентом
   (вертикальная синяя черта на главной колонке — /biznes-plan/). */
.tabl tbody tr{transition:background-color .2s ease}
.tabl tbody tr:hover{background-color:var(--fon-2)}

/* ── Рама таблицы — правка заказчика 14.09.2026 («края сильно
      близко прилегают к фону»): у таблицы поле, содержимое
      не липнет к фону листа. Рамка 1px --linia, фон --fon — панель
      из словаря, не новый приём. Снята быть не может.
      На узких экранах два режима:
      — обычная таблица (до четырёх колонок) складывается
        в карточки — прокрутки нет, рама остаётся панелью;
      — матрица от пяти колонок (.tabl--matrica) прокручивается
        ВНУТРИ рамы (overflow-x на обёртке, не на body), левая
        колонка осей липкая; липкой ячейке нужен непрозрачный
        фон — теперь это --fon, заливки у осей больше нет. ── */
.tabl-rama{background:var(--fon);border:1px solid var(--linia);padding:28px 32px}
@media (max-width:1024px){
  .tabl-rama{padding:20px}
}
@media (max-width:767px){
  /* Карточный режим: ось — заголовок карточки, остальные ячейки —
     пары «название колонки → значение». Название берётся
     из data-t ячейки; ячейка без data-t печатает голое значение. */
  .tabl:not(.tabl--matrica){display:block}
  .tabl:not(.tabl--matrica) thead{display:none}
  .tabl:not(.tabl--matrica) tbody{display:block}
  .tabl:not(.tabl--matrica) tbody tr{display:block;padding:14px 0;border-bottom:1px solid var(--linia-2)}
  .tabl:not(.tabl--matrica) tbody tr:last-child{border-bottom:0}
  .tabl:not(.tabl--matrica) tbody th{display:block;border-bottom:0;padding:0 0 2px}
  .tabl:not(.tabl--matrica) tbody td{display:block;border-bottom:0;padding:8px 0 0}
  .tabl:not(.tabl--matrica) tbody td[data-t]::before{content:attr(data-t);display:block;font-family:var(--sans);font-size:12px;font-weight:500;color:var(--seryj-2);margin-bottom:3px}
  .tabl:not(.tabl--matrica) td.chislo{text-align:left;white-space:normal}
  /* Заливка строки при «наведении» на тач гасится общим блоком ниже */

  /* Матрица от пяти колонок: прокрутка внутри рамы.
     Горизонтального поля у рамы нет: липкая ячейка прилипает
     к краю области прокрутки ВМЕСТЕ с padding, и в полосе поля
     выглядывал уезжающий текст. Отступ от рамки дают сами ячейки
     (левое поле 12px). */
  .tabl-rama:has(.tabl--matrica){padding:14px 0;overflow-x:auto}
  .tabl--matrica{min-width:640px}
  .tabl--matrica thead th:first-child,
  .tabl--matrica tbody th{position:sticky;left:0;z-index:1;background:var(--fon)}
}

/* ── Карточки: чистый прямоугольник с рамкой. Срез угла снят
      итерацией 8 — «папка со скошенным углом» стояла на всём подряд
      и перестала быть приёмом. Отклик — рамка синеет. ── */
.kartochki{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.kartochki--4{grid-template-columns:repeat(4,minmax(0,1fr))}
/* Сетка карточек: 3–4 → 2 → 1 (web-adaptiv) */
@media (max-width:1024px){
  .kartochki,.kartochki--4{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:768px){
  .kartochki,.kartochki--4{grid-template-columns:1fr}
}
.kartochka{background:#fff;border:1px solid var(--linia);padding:28px 28px 24px;display:flex;flex-direction:column;min-width:0;color:inherit;text-decoration:none;transition:border-color .12s}
.kartochka:hover{border-color:var(--sinij)}
.kartochka h3{margin-bottom:10px}
.kartochka p{font-size:16px;color:var(--seryj);line-height:1.55}
.kartochka .ssylka-punkt{margin-top:auto;padding-top:16px}

/* ── Карточка перехода: вся карточка — ссылка, в правом верхнем
      углу стрелка → 24px, синяя сразу (итерация 10 главной:
      «стрелочка как сейчас малозаметна» — укрупнена и окрашена
      не только при наведении). ПЕРЕЕХАЛА из glavnaya.css 15.09.2026
      без изменения значений — понадобилась второй странице
      (/stati/, лист 03 «Страницы услуг»); на главной это карточки
      услуг листа 06. Отклик: рамка синеет (общее правило
      .kartochka:hover), стрелка ярчеет и сдвигается к углу. ── */
.kartochka--perehod{position:relative}
.kartochka--perehod h3{padding-right:34px}
.kartochka__strelka{position:absolute;top:20px;right:22px;font-family:var(--sans);font-size:24px;font-weight:400;line-height:1;color:var(--sinij);transition:color .2s,transform .2s ease}
.kartochka--perehod:hover .kartochka__strelka{color:var(--sinij-yark);transform:translate(3px,-3px)}

/* ── Ряд карточки со снимком. ПЕРЕЕХАЛ из glavnaya.css 14.09.2026
      по правилу «компонент, понадобившийся второй странице, — в общий
      файл»: на главной это услуги, на /biznes-plan/ — случаи
      региональных фондов. Снимок прижат к правому краю до рамки
      (отрицательное поле съедает padding карточки), при наведении
      растёт transform-ом — масштаб не в потоке, соседей не двигает.
      Вид на главной не менялся: правила перенесены дословно. ── */
.kartochka__ryad{display:flex;gap:14px;align-items:center}
.kartochka__ryad p{min-width:0}
.kartochka__obekt{flex:0 0 auto;width:140px;height:140px;object-fit:contain;margin:-8px -28px -8px 0;transition:transform .2s ease}
.kartochka:hover .kartochka__obekt{transform:scale(1.12)}
@media (max-width:1024px){
  .kartochka__obekt{width:110px;height:110px;margin-right:-22px}
}
@media (max-width:768px){
  .kartochka__ryad{flex-direction:column;align-items:flex-start;gap:8px}
  .kartochka__obekt{align-self:flex-end;margin:-6px -20px -12px 0}
}
@media (hover:none){
  .kartochka:hover .kartochka__obekt{transform:none}
}

/* ── Примечание: оговорка к блоку, а не продолжение текста.
      Знак «!» и подложка — правка заказчика 14.09.2026 по листу 03
      /biznes-plan/. Цвет не новый: токены --vnim / --vnim-fon лежат
      в системе с первой итерации и это их первое применение.
      Красный сюда нельзя — он фирменный цвет ФРП и оставлен под
      «не финансируется» (ДИЗАЙН-СИСТЕМА 2.1). ── */
.primech{display:flex;gap:14px;align-items:flex-start;background:var(--vnim-fon);border-left:3px solid var(--vnim);padding:18px 22px;margin-top:32px}
.primech__znak{flex:0 0 auto;width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:var(--vnim);color:var(--vnim-fon);font-family:var(--sans);font-size:14px;font-weight:600;line-height:1;margin-top:1px}
.primech p{font-size:15px;line-height:1.6;color:var(--chernila)}

/* ── Карточка-показатель: число — главное в карточке.
      Три яруса: значение 44/300 — что это 15/500 — пояснение.
      Линия 3px сверху — структурный элемент, читается раньше текста.
      Введена 26.08 по замечанию «мало дизайн-элементов». ── */
.kartochka--pokazatel{border-top:3px solid var(--sinij);padding-top:22px}
/* Селектор с родителем: иначе проигрывает «.kartochka p» */
/* Значение — синим: «ключевые числа» из разрешённых применений
   акцента (ДИЗАЙН-СИСТЕМА 2.1, итерация 6) */
.kartochka .kartochka__znachenie{font-family:var(--sans);font-size:44px;font-weight:300;line-height:1.1;color:var(--sinij);font-variant-numeric:tabular-nums;margin-bottom:6px}
.kartochka .kartochka__chto{font-family:var(--sans);font-size:15px;font-weight:500;line-height:1.3;color:var(--seryj-2);margin-bottom:14px}

/* ── Панель да/нет: перечень в белой карточке с цветным заголовком.
      Итерация 8: срез снят (прямоугольник). Итерация 9: знак
      из заголовка панели УБРАН — заказчик: «очень много крестиков
      и галочек… в заголовках табов они не нужны». Полярность группы
      держат слово, цвет и цветная линия под заголовком; строчные
      знаки остались в перечне (штрихом, см. .spisok). ── */
.panel-danet{background:#fff;border:1px solid var(--linia);padding:28px;min-width:0;transition:border-color .12s}
/* Отклик при наведении: рамка синеет. Вёрстку не двигает. */
.panel-danet:hover{border-color:var(--sinij)}
.panel-danet__znak{font-family:var(--sans);font-size:15px;font-weight:500;line-height:1.3;padding-bottom:14px;margin-bottom:18px;border-bottom:1px solid}
.panel-danet--da .panel-danet__znak{color:var(--da);border-bottom-color:rgba(31,107,77,.35)}
.panel-danet--net .panel-danet__znak{color:var(--krasnyj);border-bottom-color:rgba(220,0,50,.3)}
.panel-danet .ssylka-punkt{margin-top:18px}
/* Подпись оси над парой панелей: без неё не видно, что панели
   сравниваются попарно */
.os-podpis{font-family:var(--text);font-size:15px;line-height:1.45;color:var(--seryj-2)}

/* ── Ссылка на пункт документа: опознавательный знак сайта.
      Пока не ссылка, а текст — страниц с документами ещё нет.
      Отклик (итерация 4): подчёркивание становится сплошным, цвет
      темнеет — по правилу дизайн-системы «ссылка меняет подчёркивание
      на сплошное». Вёрстку не двигает. ── */
.ssylka-punkt{display:block;width:fit-content;font-family:var(--text);font-size:13px;line-height:1.45;color:var(--seryj);border-bottom:1px dotted var(--seryj-2);transition:color .12s,border-bottom-color .12s}
.ssylka-punkt:hover{color:var(--chernila);border-bottom:1px solid var(--seryj)}

/* ── Подсказка-пункт. Итерация 7: значок «§» отменён заказчиком
      («непонятный и не выделяется») — триггером стало слово
      «источник» с пунктирным подчёркиванием: значок читается как
      действие, которое он делает. Кнопка настоящая — работает
      мышью, с клавиатуры и тапом (is-open вешает JS). Подсказка
      выходит ВНИЗ от триггера и число не перекрывает; если правый
      край выходит за окно, JS ставит .punkt--pravo. Печать:
      подсказки раскрываются в поток, чтобы ссылки попали в PDF. ── */
.punkt{position:relative;display:inline-flex;vertical-align:baseline}
.punkt__marker{display:inline;flex:0 0 auto;background:none;border:0;border-bottom:1px dotted var(--seryj-2);color:var(--seryj);font-family:var(--text);font-size:12px;line-height:1.2;padding:0;cursor:help;transition:border-color .2s,color .2s}
.punkt:hover .punkt__marker,.punkt.is-open .punkt__marker,.punkt__marker:focus-visible{border-bottom-style:solid;border-color:var(--sinij-yark);color:var(--sinij-yark)}
/* Скрытая подсказка — display:none, а не visibility: absolute-бокс
   width:max-content у правого края страницы раздувал scrollWidth
   (горизонтальное переполнение), хотя был невидим. Появление —
   короткой анимацией вместо transition: display не анимируется.
   Селектор из двух классов: одиночный .punkt__tip проигрывал
   «классу + тегу» вроде .kalk-stroka span (грабля каскада) —
   подсказка вставала display:flex и раздувала scrollWidth. */
.punkt .punkt__tip{display:none;position:absolute;top:calc(100% + 8px);left:0;z-index:30;width:max-content;max-width:320px;background:#fff;border:1px solid var(--sinij);box-shadow:var(--ten);padding:10px 14px;font-family:var(--text);font-size:13px;line-height:1.45;font-weight:400;color:var(--seryj);text-align:left;white-space:normal}
.punkt.is-open .punkt__tip{display:block;animation:punktIn .2s ease}
/* Наведение и фокус открывают подсказку только там, где ховер
   настоящий: на тач эмулированный :hover и залипший focus-within
   не давали закрыть подсказку повторным тапом — открытием на тач
   управляет только is-open (тап, initPunkt). Условие продублировано
   в JS нет — JS работает через is-open на всех устройствах. */
@media (hover:hover){
  .punkt:hover .punkt__tip,.punkt:focus-within .punkt__tip{display:block;animation:punktIn .2s ease}
}
/* Та же защита специфичностью для открытых состояний не нужна:
   display:block здесь тоже 0,2,0 и стоит ниже по файлу */
/* Появление без выезда: приём «плашка выезжает снизу» отменён */
@keyframes punktIn{from{opacity:0}to{opacity:1}}
.punkt--pravo .punkt__tip{left:auto;right:0}
/* Триггер в тёмном контексте */
.punkt--svetlyj .punkt__marker{border-bottom-color:rgba(255,255,255,.4);color:rgba(255,255,255,.7)}
@media print{
  .punkt .punkt__tip{position:static;display:block;animation:none;border:0;box-shadow:none;padding:2px 0 0;max-width:none}
}

/* ── Раскрытие по наведению (.raskryv) УДАЛЕНО в итерации 7:
      «эти всплывающие плашки очень проигрышно выглядят… очень
      несовременно» — приём отменён заказчиком как класс. Текст
      теперь либо виден сразу (листы 04, 09), либо переключается
      сменой состояния (вкладки листа 03, аккордеоны 07 и 10).
      Галочка-шеврон как значок раскрытия убрана вместе с ним:
      галочка означает «готово», а не «есть ещё». ── */

/* ── Заглушка: содержимого нет, и это показано честно ── */
.zaglushka{background:var(--fon-2);border:1px dashed var(--linia);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:6px;padding:24px;font-family:var(--text);font-size:14px;line-height:1.45;color:var(--seryj-2)}

/* ── Ссылки в тексте ── */
.sek a:not([class]),.podval a:not([class]){color:inherit}
.ssylka-vneshn{color:var(--sinij-yark);text-decoration:underline;text-decoration-color:rgba(27,95,168,.4);text-underline-offset:3px;transition:text-decoration-color .12s}
.ssylka-vneshn:hover{text-decoration-color:var(--sinij-yark)}

/* ── Неразрывное обозначение. Обозначения стандартов фонда —
      «СФ-И-242», «СФ-И-82», региональные «СФ-01», «ПФ-01» —
      рвутся ПО ДЕФИСУ, неразрывные пробелы тут бессильны.
      Оборачивает инструмент ../SEO/instrumenty/tipografika.js
      (правило добавлено 15.09.2026 первой статьёй), руками
      не проставлять — забывается. Неразрывный дефис U+2011
      не используется: зависит от наличия глифа в сабсете шрифта. ── */
.nobr{white-space:nowrap}

/* ── Шапка: светлая, 72px, логотип тёмный 34px. Итерация 7: шапка
      ПРИЛИПАЕТ — первый этаж навигации, общее меню сайта видно всю
      прокрутку; полоса структуры страницы прилипает вторым этажом
      под ней (top: 72px). Квадрат-буллет активного пункта снят
      («буллет непонятен»); наведение заметнее прежней смены цвета:
      линия вырастает под пунктом слева направо, 200мс; у активного
      пункта линия стоит постоянно. ── */
.shapka{background:var(--fon);border-bottom:1px solid var(--linia);height:var(--header-h);display:flex;align-items:center;position:sticky;top:0;z-index:12}
.shapka .w{display:flex;align-items:center;gap:24px;width:100%}
.shapka__logo{display:flex;align-items:center;flex:0 0 auto}
.shapka__logo img{height:34px;width:auto}
.menu{display:flex;gap:22px;margin-left:auto}
.menu__link{font-family:var(--sans);font-size:14px;font-weight:400;color:var(--seryj);text-decoration:none;position:relative;padding:6px 0;white-space:nowrap;transition:color .2s}
/* Линия наведения: не двигает вёрстку — absolute под пунктом */
.menu__link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--sinij);transform:scaleX(0);transform-origin:left center;transition:transform .2s ease}
.menu__link:hover{color:var(--chernila)}
.menu__link:hover::after{transform:scaleX(1)}
/* Активный раздел: линия стоит постоянно */
.menu__link--aktiv{color:var(--chernila)}
.menu__link--aktiv::after{transform:scaleX(1)}
/* Телефон полужирным, почта под ним мельче и серым — по образцу */
.shapka__svyaz{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex:0 0 auto}
.shapka__tel{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--chernila);text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums;transition:color .12s}
.shapka__tel:hover{color:var(--sinij-yark)}
.shapka__pochta{font-family:var(--text);font-size:13px;color:var(--seryj);text-decoration:none;white-space:nowrap;transition:color .12s}
.shapka__pochta:hover{color:var(--chernila)}
.shapka__deystvie{flex:0 0 auto;font-size:15px;padding:14px 22px}

/* ── Шапка: адаптив (ДИЗАЙН-СИСТЕМА 11.2) ──
      ≤1250 текстовые контакты → кнопка звонка; ≤1024 меню в бургер,
      кнопка действия остаётся в шапке; ≤768 кнопка — в панели
      бургера на всю строку. Панель — та же <nav class="menu">,
      другие правила: выпадает под шапкой, в ней контакты
      (.menu__niz, на десктопе скрыт). Бургер и панель переключает
      initBurger (glavnaya.js) / common.js по одному контракту
      id burger + mobileMenu. Знак бургера складывается в крест
      без транзишена: движения на сайте ровно три вида, четвёртое
      не заводим. ── */
.shapka__zvonok{display:none;align-items:center;justify-content:center;width:44px;height:44px;flex:0 0 auto;color:var(--sinij)}
.shapka__zvonok:hover{color:var(--sinij-yark)}
.shapka__burger{display:none;align-items:center;justify-content:center;width:44px;height:44px;flex:0 0 auto;background:none;border:0;padding:0;cursor:pointer}
.shapka__burger span{position:relative;display:block;width:22px;height:2px;background:var(--chernila)}
.shapka__burger span::before,.shapka__burger span::after{content:"";position:absolute;left:0;width:22px;height:2px;background:var(--chernila)}
.shapka__burger span::before{top:-7px}
.shapka__burger span::after{bottom:-7px}
.shapka__burger[aria-expanded="true"] span{background:transparent}
.shapka__burger[aria-expanded="true"] span::before{top:0;transform:rotate(45deg)}
.shapka__burger[aria-expanded="true"] span::after{bottom:0;transform:rotate(-45deg)}
.menu__niz{display:none}
@media (max-width:1250px){
  .shapka__svyaz{display:none}
  .shapka__zvonok{display:flex}
  .menu{gap:16px}
}
@media (max-width:1024px){
  .shapka__burger{display:flex}
  .shapka .w{gap:14px}
  .shapka__zvonok{margin-left:auto}
  /* Панель: тот же nav, раскрытый под шапкой. Появление — общий
     приём проявления (punktIn), выезда нет. */
  .menu{display:none;position:absolute;top:var(--header-h);left:0;right:0;margin-left:0;flex-direction:column;align-items:stretch;gap:0;background:var(--fon);border-bottom:1px solid var(--linia);box-shadow:var(--ten);padding:6px var(--gutter) 22px;max-height:calc(100svh - var(--header-h));overflow-y:auto}
  .menu.is-open{display:flex;animation:punktIn .2s ease}
  .menu__link{font-size:16px;padding:13px 0;border-bottom:1px solid var(--linia-2)}
  .menu__link::after{display:none}
  .menu__link--aktiv{color:var(--sinij)}
  .menu__niz{display:grid;gap:4px;justify-items:start;padding-top:18px}
  .menu__tel{font-family:var(--sans);font-size:20px;font-weight:600;color:var(--chernila);text-decoration:none;font-variant-numeric:tabular-nums}
  .menu__pochta{font-family:var(--text);font-size:14px;color:var(--seryj);text-decoration:none}
  .menu__deystvie{display:none}
}
@media (max-width:768px){
  .shapka__deystvie{display:none}
  .menu__deystvie{display:block;justify-self:stretch;text-align:center;margin-top:14px}
}

/* ── Подвал: тёмный, вторая из двух тёмных секций. Переделан
      в итерации 7 («однотипный дизайн — переделай полностью»):
      колонки с вертикальными линиями разобраны. Три яруса:
      — верх: призыв в две строки слева, справа блок связи; акцент
        подвала — телефон, он крупнее призыва;
      — середина: логотип и разделы одной горизонтальной строкой;
      — низ: реквизиты мелко и служебное.
      Колонка «Первоисточник» (frprf.ru) снята по указанию
      заказчика. ── */
.podval{position:relative;background:var(--sinij);color:rgba(255,255,255,.66);padding-top:72px;padding-bottom:32px;font-size:15px;line-height:1.55}
/* Фон подвала — снимок заказчика (итерация 11, правка 13):
   тёмный цех за стеклом, кадр absolute под содержимым, затемнение
   слоем ::after — плотнее слева под призывом и реквизитами, правее
   кадр приоткрыт. Цвет затемнения — --sinij: без снимка подвал
   выглядит как прежде. Контраст текста проверен замером
   по фоновым пикселям (web-foto). */
.podval__fon{position:absolute;inset:0;overflow:hidden}
.podval__fon img{width:100%;height:100%;object-fit:cover}
.podval__fon::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(13,26,50,.93) 0%,rgba(13,26,50,.86) 55%,rgba(13,26,50,.66) 100%)}
.podval>.w{position:relative;z-index:1}
.podval__verh{display:flex;justify-content:space-between;align-items:flex-start;gap:48px;padding-bottom:52px;margin-bottom:36px;border-bottom:1px solid rgba(255,255,255,.16)}
.podval__prizyv{font-family:var(--sans);font-size:38px;font-weight:600;line-height:1.12;color:#fff;letter-spacing:-.018em}
.podval__opisanie{max-width:36ch;margin-top:18px;color:rgba(255,255,255,.55)}
.podval__svyaz{display:flex;flex-direction:column;align-items:flex-end;gap:6px;flex:0 0 auto;text-align:right}
/* Телефон — акцент подвала: самый крупный элемент тёмной секции */
.podval__verh-tel{font-family:var(--sans);font-size:44px;font-weight:300;line-height:1.1;color:#fff;text-decoration:none;white-space:nowrap;font-variant-numeric:tabular-nums;transition:color .2s}
.podval__verh-tel:hover{color:var(--sinij-fon)}
.podval__verh-pochta{font-family:var(--sans);font-size:16px;font-weight:400;color:rgba(255,255,255,.72);text-decoration:none;transition:color .2s}
.podval__verh-pochta:hover{color:#fff}
.podval__messendzhery{display:flex;gap:12px;margin-top:18px}
.podval__sredina{display:flex;align-items:center;justify-content:space-between;gap:48px}
.podval__logo{height:28px;width:auto;flex:0 0 auto}
.podval__razdely{display:flex;align-items:center;gap:4px 26px;flex-wrap:wrap;justify-content:flex-end}
.podval__razdely a{color:rgba(255,255,255,.66);text-decoration:none;padding:4px 0;position:relative;transition:color .2s}
/* Тот же отклик, что в шапке: линия вырастает под пунктом */
.podval__razdely a::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:#fff;transform:scaleX(0);transform-origin:left center;transition:transform .2s ease}
.podval__razdely a:hover{color:#fff}
.podval__razdely a:hover::after{transform:scaleX(1)}
/* Мелкий текст подвала: с фоном-фото (итерация 11) прежние .45
   давали 4,3:1 на светлых участках кадра — ниже нормы 4,5:1
   для мелкого кегля; поднято до .52 → 5,1:1 по замеру */
.podval__niz{border-top:1px solid rgba(255,255,255,.14);margin-top:36px;padding-top:24px;display:flex;justify-content:space-between;align-items:flex-end;gap:24px;font-size:13px;color:rgba(255,255,255,.52)}
.podval__rekvizit{margin-top:3px}
.podval__rekvizit:first-child{margin-top:0}
.podval__sluzhebnoe{display:flex;flex-direction:column;align-items:flex-end;gap:6px;text-align:right}
.podval__sluzhebnoe a{color:rgba(255,255,255,.52);text-decoration:none;transition:color .2s}
.podval__sluzhebnoe a:hover{color:#fff}
/* Кнопки мессенджеров: контурные белым, срез 8px, высота 40px,
   значок — инлайновый одноцветный SVG. До получения адресов помечены
   data-nuzhen-adres (см. партиал подвала) */
a.knopka-mess{display:inline-flex;align-items:center;gap:9px;height:40px;padding:0 18px;font-family:var(--sans);font-size:15px;font-weight:500;color:#fff;text-decoration:none;box-shadow:inset 0 0 0 1px rgba(255,255,255,.55);background-image:linear-gradient(135deg,rgba(255,255,255,0) 50%,rgba(255,255,255,.16) 50.3%);background-size:300% 300%;background-position:0% 0%;background-repeat:no-repeat;clip-path:polygon(0 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%);transition:box-shadow .12s,background-position .2s ease,clip-path .2s ease}
a.knopka-mess:hover{background-position:100% 100%;box-shadow:inset 0 0 0 1px #fff;color:#fff;clip-path:polygon(0 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%)}
a.knopka-mess svg,a.knopka-mess img{flex:0 0 auto}

/* ── Подвал: адаптив. ≤1024 теснее, ≤768 ярусы в столбец,
      всё влево — телефон остаётся акцентом ── */
@media (max-width:1024px){
  .podval{padding-top:56px}
  .podval__prizyv{font-size:32px}
  .podval__verh-tel{font-size:36px}
}
@media (max-width:768px){
  .podval__verh{flex-direction:column;align-items:flex-start;gap:28px;padding-bottom:36px;margin-bottom:28px}
  .podval__svyaz{align-items:flex-start;text-align:left}
  .podval__sredina{flex-direction:column;align-items:flex-start;gap:20px}
  .podval__razdely{justify-content:flex-start;gap:2px 20px}
  .podval__niz{flex-direction:column;align-items:flex-start;gap:16px;margin-top:28px}
  .podval__sluzhebnoe{align-items:flex-start;text-align:left}
  .podval__prizyv{font-size:28px}
  .podval__verh-tel{font-size:30px}
}

/* ── Форма: живёт в потоке страницы, модалки нет ── */
.forma{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px 24px}
.pole{display:block;min-width:0}
.pole--shirokoe{grid-column:1 / -1}
.pole__podpis{display:block;font-size:14px;color:var(--seryj);margin-bottom:6px}
.pole__vvod{width:100%;border:1px solid var(--linia);background:#fff;padding:12px 14px;font-family:var(--text);font-size:16px;line-height:1.4;color:var(--chernila);transition:border-color .12s}
/* Подсказки в полях (итерация 11, правка 12): «нужны подсказки
   как писать» — светлее подписи, чтобы не читались как введённое */
.pole__vvod::placeholder{color:var(--seryj-2);opacity:1}
.pole__vvod:hover{border-color:var(--seryj-2)}
.pole__vvod:focus{border-color:var(--sinij-yark);outline:none}
textarea.pole__vvod{min-height:120px;resize:vertical}
/* Счётчик остатка знаков под длинным полем (итерация 13, правка 5):
   числовой слой — Geologica с tabular-nums, цвет подсказок */
.pole__schet{display:block;margin-top:6px;font-family:var(--sans);font-size:13px;font-weight:400;color:var(--seryj-2);text-align:right;font-variant-numeric:tabular-nums}
.forma__deystvie{grid-column:1 / -1;display:grid;gap:16px;justify-items:start;margin-top:6px}
.soglasie{display:flex;gap:10px;align-items:flex-start;font-size:14px;line-height:1.45;color:var(--seryj);max-width:52ch}
.soglasie input{width:15px;height:15px;margin:3px 0 0;accent-color:var(--sinij);flex:0 0 auto}
.soglasie a{color:inherit;text-decoration:underline;text-underline-offset:2px}
/* Вторая галочка — согласие на рекламные рассылки, НЕобязательная.
   Отдельной её делает закон: по части 1 статьи 18 «О рекламе»
   согласие на рекламу должно быть предварительным и добровольным,
   а сшитое с обязательным согласием ради ответа на заявку оно
   перестаёт быть свободным. Визуально тише первой: рассылка —
   не условие обращения (правка 15.09.2026). */
.soglasie--reklama{margin-top:12px;color:var(--seryj-2)}
.forma-uspeh{border:1px solid var(--da);background:var(--da-fon);padding:28px 32px;max-width:52ch}
.forma-uspeh h3{color:var(--da);margin-bottom:8px}
.forma-uspeh p{font-size:16px}
/* Обёртка формы страниц-услуг: без колонки контактов — контакты
   в подвале строкой ниже. ПЕРЕЕХАЛА из biznes-plan.css
   и finansovaya-model.css 15.09.2026 — правило стояло в обоих
   дословно, понадобилось третьей странице (/procedura/). */
.zayavka__forma{max-width:760px}
/* Форма: поля в столбец ≤768, кнопка на всю ширину ≤480.
   Кегль полей 16px не трогаем — меньше нельзя: iOS зумит поле
   при фокусе. */
@media (max-width:768px){
  .forma{grid-template-columns:1fr;gap:16px}
}
@media (max-width:480px){
  .forma__deystvie{justify-items:stretch}
  .forma__deystvie .knopka{width:100%;text-align:center}
}

/* ── Полоса структуры страницы — ВТОРОЙ ЭТАЖ навигации (итерация 7).
      Первый этаж — прилипающая шапка с общим меню сайта; эта полоса
      прилипает под ней (top: 72px) и несёт только якоря по структуре
      страницы. Положение читателя показывает ползунок-линия, плавно
      переезжающий под активный якорь (координаты ведёт initNav
      в glavnaya.js, transition 250мс). Полоса прогресса прокрутки
      снята итерацией 8 — заказчик: «излишне, ведь у нас и так есть
      нижнее подчёркивание раздела страницы». ── */
.stranica-nav{position:sticky;top:var(--header-h);z-index:10;height:52px;background:var(--fon-2);border-bottom:1px solid var(--linia-2)}
/* Полоса прокручивается по горизонтали, когда якоря не помещаются
   (≤1024 и уже): прокрутка внутри своего контейнера, полоса
   прокрутки скрыта, активный якорь довозит JS (initNav).
   На десктопе якоря помещаются — overflow не проявляется. */
.stranica-nav .w{height:100%;display:flex;align-items:center;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.stranica-nav .w::-webkit-scrollbar{display:none}
.stranica-nav__yakorya{position:relative;display:flex;align-items:center;gap:26px;min-width:max-content;height:100%}
@media (max-width:768px){
  .stranica-nav__yakorya{gap:22px}
  /* «поле 16»: у прокручиваемой полосы поле уже общего гуттера,
     чтобы был виден срез следующего якоря — намёк на прокрутку */
  .stranica-nav .w{padding-left:16px;padding-right:16px}
}
.stranica-nav a{font-family:var(--sans);font-size:14px;font-weight:500;line-height:1;color:var(--seryj);text-decoration:none;white-space:nowrap;transition:color .2s}
.stranica-nav a:hover{color:var(--sinij)}
.stranica-nav a.is-aktiv{color:var(--sinij)}
/* Ползунок активного якоря: лежит по нижней кромке полосы, left
   и width ставит JS — переезд читается как движение по структуре */
.stranica-nav__polzunok{position:absolute;bottom:0;left:0;width:0;height:2px;background:var(--sinij);transition:left .25s ease,width .25s ease}
/* Якорь не прячется под двумя прилипшими этажами (шапка + 52 + зазор) */
main section[id]{scroll-margin-top:calc(var(--header-h) + 68px)}
@media print{.stranica-nav{position:static}}

/* ── Плавающая кнопка мессенджера (итерация 4): Telegram, 52×52,
      срез 8px, правый нижний угол. Появляется после первого экрана —
      класс is-vidna ставит glavnaya.js. Отклик: фон светлеет
      до --sinij-2, срез подрастает 8→12 — как у кнопок. ── */
/* Итерация 12 (07-max-bez-kvadrata): «сделай просто логотип МАХ
   без квадрата на фоне» — синяя плашка со срезом снята, остался
   сам фирменный знак (он круглый и цветной, площадку не требует).
   Лёгкая тень отделяет его от светлых секций; отклик — знак
   приподнимается, как у прочих знаков на странице. */
.plav-knopka{position:fixed;right:28px;bottom:28px;z-index:20;width:56px;height:56px;display:flex;align-items:center;justify-content:center;opacity:0;visibility:hidden;transform:translateY(8px);transition:opacity .3s ease,transform .3s ease,visibility .3s}
.plav-knopka img{width:100%;height:100%;filter:drop-shadow(0 4px 12px rgba(13,26,50,.28));transition:transform .2s ease}
.plav-knopka.is-vidna{opacity:1;visibility:visible;transform:none}
.plav-knopka:hover img{transform:translateY(-3px)}
/* ≤768: 48×48 с отступом 16 — не перекрывает кнопку формы */
@media (max-width:768px){
  .plav-knopka{width:48px;height:48px;right:16px;bottom:16px}
}
@media print{.plav-knopka{display:none}}

/* ── Аккордеон (итерация 4, механика .faq-item из obrazec-koda):
      строки через волосяные линии, раскрытие grid-template-rows
      0fr→1fr — высоту в JS не измеряем. Кнопка — родной button.
      Знак — плюс из двух линий 2px, квадратный, при открытии
      вертикальная линия складывается. Отклик: заголовок и знак
      синеют. При печати панели раскрыты. ── */
.akk{border-top:1px solid var(--linia)}
.akk-punkt{border-bottom:1px solid var(--linia)}
.akk-punkt__knopka{position:relative;z-index:0;width:100%;display:flex;align-items:baseline;gap:28px;padding:24px 4px;text-align:left;background:none;border:0;cursor:pointer;font-family:var(--sans);color:var(--chernila)}
/* Отклик строки (итерация 7): фон строки подкрашивается — раньше
   синел только заголовок, отклика на строке не было.
   Итерация 10 (09-seraya-zona-obrezaetsya): «при наведении серая
   зона сильно обрезается, некрасиво» — жёсткий прямоугольник,
   рубившийся по краю контейнера, заменён слоем ::before с градиентным
   затуханием к обоим краям; появление — opacity, вёрстку не двигает.
   z-index:0 на кнопке создаёт контекст наложения: слой с z-index:-1
   лежит под содержимым кнопки, но поверх фона секции. */
.akk-punkt__knopka::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(245,247,249,0) 0%,var(--fon-2) 6%,var(--fon-2) 94%,rgba(245,247,249,0) 100%);opacity:0;transition:opacity .2s;pointer-events:none}
.akk-punkt__knopka:hover::before{opacity:1}
.akk-punkt__zag{flex:1 1 auto;min-width:0;font-size:20px;font-weight:600;line-height:1.3;transition:color .12s}
.akk-punkt__znak{position:relative;flex:0 0 auto;width:22px;height:22px;align-self:center}
.akk-punkt__znak::before,.akk-punkt__znak::after{content:"";position:absolute;top:50%;left:50%;background:var(--chernila);transition:transform .25s ease,background-color .12s}
.akk-punkt__znak::before{width:14px;height:2px;transform:translate(-50%,-50%)}
.akk-punkt__znak::after{width:2px;height:14px;transform:translate(-50%,-50%)}
.akk-punkt__knopka:hover .akk-punkt__zag{color:var(--sinij-yark)}
.akk-punkt__knopka:hover .akk-punkt__znak::before,
.akk-punkt__knopka:hover .akk-punkt__znak::after{background:var(--sinij-yark)}
.akk-punkt.is-open .akk-punkt__znak::after{transform:translate(-50%,-50%) rotate(90deg) scaleY(0)}
/* Свёртывание гейтится классом .js (итерация 6): без JavaScript все
   панели открыты — раньше без скрипта текст аккордеона был недоступен.
   visibility прячет закрытое от innerText, поиска и табуляции —
   overflow:hidden один только клипует (приём бывшей .svertka). */
.akk-punkt__panel{display:grid;grid-template-rows:1fr;transition:grid-template-rows .3s ease}
.js .akk-punkt:not(.is-open) .akk-punkt__panel{grid-template-rows:0fr}
.akk-punkt__vnutri{overflow:hidden;min-height:0;transition:visibility .3s}
.js .akk-punkt:not(.is-open) .akk-punkt__vnutri{visibility:hidden}
.akk-punkt__vnutri p{max-width:68ch;font-size:16px;line-height:1.6;color:var(--seryj);padding:0 4px 6px}
.akk-punkt__vnutri .ssylka-punkt{margin:0 4px 24px}
@media (max-width:768px){
  .akk-punkt__knopka{gap:16px;padding:18px 0}
  .akk-punkt__zag{font-size:18px}
}
@media print{
  .akk-punkt__panel{grid-template-rows:1fr!important}
  .akk-punkt__vnutri{visibility:visible!important}
}

/* ── Маршрут: процесс с ролями. ПЕРЕЕХАЛ из glavnaya.css 14.09.2026
      без изменения значений — понадобился второй странице
      (/biznes-plan/, лист 06); по правилу дизайн-системы компонент,
      нужный двум страницам, живёт в общем файле.
      История решений — итерация 9 главной (05-kak-poluchit-skuchno,
      05b-punkt-4-siniy):
      — этапы компактные: плашка «работа ПМК» ушла из потока в правую
        зону строки и приходит по наведению и фокусу (эталон движения:
        opacity + translateY(14px), .3s). Место держит сетка строки —
        при наведении ничего не двигается, пустого резерва нет;
      — подсветка строки — ВО ВСЮ ШИРИНУ ОКНА (единственный такой
        приём: строка здесь — единица чтения). Маршрут вынесен
        из контейнера, строка — блок на всю ширину родителя (не 100vw —
        полоса прокрутки не считается), фон гасится градиентом к краям;
        контент держит внутренний .w;
      — синяя заливка узла снята («не понял почему пункт 4 синим»).
      Reduced-motion, тач и печать показывают работу ПМК сразу.
      Колонка срока (.marshrut-etap__srok) необязательна: без неё
      правая дорожка 150px остаётся пустой — сетка не меняется. ── */
.marshrut{margin-top:14px;border-top:1px solid var(--linia);border-bottom:1px solid var(--linia)}
/* Отступ маршрута от заголовка листа без подзаголовка. ПЕРЕЕХАЛ
   из biznes-plan.css и finansovaya-model.css 15.09.2026 — правило
   стояло в обоих дословно, понадобилось третьей странице
   (/procedura/, лист 07). */
.marshrut--otstup{margin-top:36px}
.marshrut-etap{position:relative;cursor:default}
/* Подсветка во всю ширину окна: слой с градиентным затуханием
   к краям, opacity-переход — background-image не анимируется */
.marshrut-etap::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(245,247,249,0) 0%,var(--fon-2) 12%,var(--fon-2) 88%,rgba(245,247,249,0) 100%);opacity:0;transition:opacity .2s;pointer-events:none}
/* Раскрытие держат наведение и КЛАВИАТУРНЫЙ фокус. Было
   :focus-within — мышиный клик по этапу (у него tabindex) оставлял
   фокус на нём, и плашка «зависала» открытой после ухода курсора:
   правка заказчика 14.09.2026 «нажатие не должно замораживать пункт».
   :focus-visible на клик мышью не срабатывает, на Tab — срабатывает;
   :has(:focus-visible) добирает фокус внутри этапа. */
.marshrut-etap:hover::before,
.marshrut-etap:focus-visible::before,
.marshrut-etap:has(:focus-visible)::before{opacity:1}
.marshrut-etap__setka{position:relative;display:grid;grid-template-columns:64px minmax(0,44ch) minmax(0,1fr) 150px;column-gap:24px;padding-top:20px;padding-bottom:20px;border-top:1px solid transparent}
.marshrut-etap+.marshrut-etap .marshrut-etap__setka{border-top-color:var(--linia-2)}
/* Линия маршрута: проходит через узлы, у первого и последнего
   этапа обрезана до узла. Позиция = поле контейнера (токен)
   + половина узла 18 */
.marshrut-etap__setka::before{content:"";position:absolute;left:calc(var(--gutter) + 18px);top:0;bottom:0;width:1px;background:var(--linia)}
.marshrut-etap:first-child .marshrut-etap__setka::before{top:20px}
.marshrut-etap:last-child .marshrut-etap__setka::before{bottom:auto;height:39px}
.marshrut-etap__nomer{position:relative;z-index:1;width:37px;height:37px;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--linia);font-family:var(--sans);font-size:16px;font-weight:500;color:var(--seryj);font-variant-numeric:tabular-nums;transition:border-color .2s}
.marshrut-etap:hover .marshrut-etap__nomer,
.marshrut-etap:focus-visible .marshrut-etap__nomer,
.marshrut-etap:has(:focus-visible) .marshrut-etap__nomer{border-color:var(--sinij)}
.marshrut-etap__sut{min-width:0}
/* Заголовок шага при наведении подрастает — акцент, о котором
   просил заказчик 14.09.2026. Масштабом, а не кеглем: transform
   не участвует в потоке, соседние шаги не сдвигаются; начало
   строки на месте (origin слева). */
.marshrut-etap__zag{font-family:var(--sans);font-size:18px;font-weight:600;line-height:1.3;padding-top:6px;transform-origin:left center;transition:transform .2s ease}
.marshrut-etap:hover .marshrut-etap__zag,
.marshrut-etap:focus-visible .marshrut-etap__zag,
.marshrut-etap:has(:focus-visible) .marshrut-etap__zag{transform:scale(1.06)}
.marshrut-etap__opis{font-size:14px;line-height:1.5;color:var(--seryj);margin-top:4px}
/* Работа ПМК: в покое скрыта, место занято колонкой сетки.
   Печать и reduced-motion показывают сразу — важное не прячется */
.marshrut-etap__pmk{align-self:start;margin-top:2px;background:var(--sinij-fon);padding:10px 16px;font-size:14px;line-height:1.5;color:var(--chernila);opacity:0;transform:translateY(14px);transition:opacity .3s ease,transform .3s ease}
.marshrut-etap__pmk b{display:block;font-family:var(--sans);font-size:12px;font-weight:500;color:var(--sinij);margin-bottom:3px}
.marshrut-etap:hover .marshrut-etap__pmk,
.marshrut-etap:focus-visible .marshrut-etap__pmk,
.marshrut-etap:has(:focus-visible) .marshrut-etap__pmk{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .marshrut-etap__pmk{opacity:1;transform:none}
}
@media print{
  .marshrut-etap__pmk{opacity:1!important;transform:none!important}
  .marshrut-etap::before{display:none}
}
.marshrut-etap__srok{font-family:var(--sans);font-size:18px;font-weight:500;line-height:1.25;color:var(--sinij);font-variant-numeric:tabular-nums;text-align:right;padding-top:8px}
/* Самый долгий этап: крупный срок остаётся, заливки узла нет */
.marshrut-etap--glav .marshrut-etap__srok{font-size:30px;font-weight:300;line-height:1.05}
/* Подпись источника этапов и сроков — под заголовком, справа */
.marshrut__istochnik{display:flex;justify-content:flex-end;align-items:baseline;gap:8px;font-family:var(--sans);font-size:13px;font-weight:500;color:var(--seryj-2);margin-top:28px}
/* Адаптив маршрута (01.09): сетка этапа собирается областями —
   узлы уже, работа ПМК под описанием (≤1024), срок под заголовком
   (≤768). Переехал вместе с компонентом. */
@media (max-width:1024px){
  .marshrut-etap__setka{grid-template-columns:48px minmax(0,1fr) 140px;grid-template-areas:"nomer sut srok" "nomer pmk pmk"}
  .marshrut-etap__nomer{grid-area:nomer;width:33px;height:33px;align-self:start}
  .marshrut-etap__sut{grid-area:sut}
  /* Работа ПМК видна сразу: раскрытие по наведению держало место
     сеткой, но на узкой раскладке резерв — пустой ряд под каждым
     этапом; планшет к тому же чаще тач, где наведения нет */
  .marshrut-etap__pmk{grid-area:pmk;margin-top:10px;justify-self:start;opacity:1;transform:none}
  .marshrut-etap__srok{grid-area:srok}
  .marshrut-etap__setka::before{left:calc(var(--gutter) + 16px)}
  .marshrut-etap:last-child .marshrut-etap__setka::before{height:37px}
}
@media (max-width:768px){
  .marshrut-etap__setka{grid-template-columns:44px minmax(0,1fr);grid-template-areas:"nomer sut" "nomer srok" "nomer pmk";row-gap:4px}
  .marshrut-etap__nomer{width:30px;height:30px;font-size:14px}
  .marshrut-etap__zag{padding-top:3px;font-size:17px}
  .marshrut-etap__srok{text-align:left;padding-top:0;font-size:16px}
  .marshrut-etap--glav .marshrut-etap__srok{font-size:24px}
  .marshrut-etap__pmk{margin-top:6px}
  .marshrut-etap__setka::before{left:calc(var(--gutter) + 15px)}
  .marshrut-etap:last-child .marshrut-etap__setka::before{height:35px}
  .marshrut__istochnik{justify-content:flex-start;margin-top:20px}
}
/* Тач: работа ПМК — важное содержание, за наведением не прячется */
@media (hover:none){
  .marshrut-etap__pmk{opacity:1;transform:none}
}

/* ── Герой светлой страницы: H1, лид, кнопки, полоса фактов по низу.
      ПЕРЕЕХАЛ из biznes-plan.css и finansovaya-model.css 14.09.2026
      по правилу «компонент, понадобившийся второй странице, —
      в общий файл»: страниц с этим героем уже три, и правка svh
      разъезжалась бы по трём файлам.

      Тёмного героя со снимком (как на главной) он не заменяет —
      это витрина страниц, для которых снимков не делали: тёмное
      на сайте даёт только фотография (ДИЗАЙН-СИСТЕМА 2.4).

      Первый экран занимает экран целиком — правка заказчика
      14.09.2026: полоса структуры уходит за сгиб. Высота
      минимальная, а не жёсткая: на коротком окне содержимое просто
      выше экрана. Единица svh, как у героя главной и как
      предписывает 11.3 — dvh меняется, пока прячется адресная
      строка, и герой «дышит» во время прокрутки. Строка с vh —
      запас для старых браузеров.

      Полоса фактов прижата к низу (margin-top:auto), кегль 34/300 —
      язык главной; на светлом фоне числа синие: ключевые числа —
      разрешённое применение акцента (2.1).

      Раскладку полосы фактов на узких экранах компонент НЕ задаёт:
      она зависит от длины самих чисел и живёт в файле страницы. ── */
.geroy{background:var(--fon-2);border-bottom:1px solid var(--linia)}
.geroy .w{display:flex;flex-direction:column;min-height:calc(100vh - var(--header-h));min-height:calc(100svh - var(--header-h))}
.geroy__soderzhanie{padding-top:84px;padding-bottom:64px}
/* Знак фонда над H1 — правка заказчика 15.09.2026: «на первые блоки
   я бы тоже добавил лого, тк это посадочные страницы и посетителям
   надо сразу давать визуальный отклик о чём страница».
   Файл знака СВЕТЛЫЙ (frp-light.png) — на светлом герое он
   невидим, поэтому сидит на тёмной плашке --sinij. Обёртка
   обрезает правые ~40% файла: там двухстрочная подпись, при малой
   высоте нечитаемая (приём .hero__frp-znak главной).
   Подпись рядом ОБЯЗАТЕЛЬНА: знак фонда рядом с нашим без пояснения
   читается как заявление о связи, а фонд публично пишет, что
   не работает с посредниками (см. лист 01 главной). */
/* ── Снимок в первом экране — правка заказчика 16.09.2026.
      Кадры сняты под эту раскладку: широкие, 2.3:1, слева
      намеренно пустое поле под текст, сюжет справа.

      Поэтому снимок кладётся во всю площадь героя, а поверх идёт
      двойная растушёвка к --fon-2: горизонтальная держит чистое
      поле под колонкой текста, вертикальная гасит кадр к низу,
      чтобы полоса фактов читалась на ровном фоне. Без второй
      синие числа фактов ложились бы прямо на сюжет.

      Ниже 1024px снимок снимается совсем. Причина не в весе:
      на узком экране текст занимает всю ширину и лёг бы поверх
      сюжета, а растушёвка, достаточная для этого, съела бы кадр
      целиком. Лучше честный ровный фон, чем каша.

      Цвет в градиентах записан числами, а не токеном: прозрачный
      конец требует rgba, а var(--fon-2) даёт hex. Значение то же,
      что у --fon-2 (#F5F7F9); меняется вместе с ним вручную. ── */
.geroy--foto{position:relative;overflow:hidden}
.geroy--foto>.w{position:relative;z-index:1}
.geroy__foto{position:absolute;inset:0;z-index:0}
.geroy__foto-kadr{width:100%;height:100%;object-fit:cover;object-position:right center}
/* Растушёвка задана переменными: у низкого героя те же доли в процентах
   дают слишком узкую полосу чистого фона, и полоса фактов ложится прямо
   на сюжет. Поэтому компактный герой перекрывает значения. */
.geroy__foto{--rastushevka-niz:20%;--rastushevka-niz-konec:44%;
             --rastushevka-levo:30%;--rastushevka-levo-konec:66%}
.geroy__foto::after{content:"";position:absolute;inset:0;background:
  linear-gradient(to top,#F5F7F9 0 var(--rastushevka-niz),rgba(245,247,249,0) var(--rastushevka-niz-konec)),
  linear-gradient(90deg,#F5F7F9 0 var(--rastushevka-levo),rgba(245,247,249,0) var(--rastushevka-levo-konec))}
.geroy--kompaktnyj .geroy__foto{--rastushevka-niz:34%;--rastushevka-niz-konec:60%;
                                --rastushevka-levo:40%;--rastushevka-levo-konec:76%}
@media (max-width:1024px){.geroy__foto{display:none}}

.geroy__frp{display:flex;align-items:center;gap:14px;margin-bottom:26px}
.geroy__frp-plashka{display:flex;align-items:center;flex:0 0 auto;background:var(--sinij);padding:9px 14px}
.geroy__frp-znak{display:block;height:22px;width:calc(22px * 3.06);overflow:hidden}
.geroy__frp-znak img{width:100%;height:100%;object-fit:cover;object-position:left center}
.geroy__frp span{font-family:var(--text);font-size:14px;line-height:1.45;color:var(--seryj)}
.geroy h1{max-width:24ch}
/* Ручной перенос H1 — грабля склейки слов у display:none <br> */
.geroy__h1-str{display:block}
.geroy__lead{font-size:19px;line-height:1.55;color:var(--seryj);max-width:720px;margin-top:20px}
.geroy__knopki{display:flex;gap:16px;margin-top:36px}
/* Четыре колонки — раскладка всех светлых страниц: одно проверяемое
   число и три условия работы словом (правка заказчика 15.09.2026).
   Раньше здесь стояло три, а каждая страница переопределяла на четыре
   одним и тем же правилом — дубль в трёх файлах сразу. Страница
   по-прежнему может задать своё, если у неё другой набор фактов. */
.geroy__fakty{border-top:1px solid var(--linia);margin-top:auto;padding-top:28px;padding-bottom:64px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:32px}
/* ВНИМАНИЕ. Класс .fakt носит и полоса фактов ТЁМНОГО героя главной
   (.hero__fakty), а там числа белые. Поэтому геометрия факта общая,
   а ЦВЕТА — только под .geroy, иначе синие числа лягут на синий фон
   главной и исчезнут. Проверено: при голом «.fakt b{color}» числа
   главной стали #0D1A32 на #0D1A32. */
.fakt{min-width:0}
.fakt b{display:flex;align-items:flex-end;height:38px;font-family:var(--sans);font-size:34px;font-weight:300;line-height:1.1;white-space:nowrap;font-variant-numeric:tabular-nums;transition:transform .2s ease}
/* Факт словом, а не числом. ПЕРЕЕХАЛ из glavnaya.css 15.09.2026:
   понадобился полосам фактов /biznes-plan/ и /finansovaya-model/,
   где половина фактов — условия работы («под ключ», «по этапам»),
   а не числа. Кегль меньше числового: слово длиннее цифры. */
.fakt--slovo b{font-size:22px;line-height:1.2}
.fakt span{display:block;font-size:14px;line-height:1.45;margin-top:6px;max-width:34ch;transition:color .2s}
.geroy .fakt b{color:var(--sinij)}
.geroy .fakt span{color:var(--seryj)}
/* Отклик факта — как на главной: transform не двигает вёрстку */
.fakt:hover b{transform:translateY(-3px)}
.geroy .fakt:hover span{color:var(--chernila)}
/* ≤1024 высота по содержимому (11.2): факты в потоке, а не прижаты
   к низу. Это же спасает ландшафт телефона (844×390) — внутренней
   прокрутки нет. nowrap чисел снимаем: в узкой ячейке грида он
   раздувает scrollWidth молча (грабля web-grabli). */
@media (max-width:1024px){
  .geroy .w{min-height:0}
  .geroy__soderzhanie{padding-top:52px;padding-bottom:40px}
  .geroy__fakty{grid-template-columns:repeat(2,minmax(0,1fr));gap:26px 32px;padding-top:24px;padding-bottom:44px}
  .fakt b{white-space:normal;height:auto;min-height:38px}
}
@media (max-width:768px){
  .geroy__soderzhanie{padding-top:44px;padding-bottom:32px}
  .geroy__lead{font-size:17px}
  .geroy__knopki{flex-wrap:wrap;gap:12px;margin-top:28px}
  .geroy__fakty{gap:22px 24px;padding-bottom:36px}
  .fakt span{max-width:none}
}
@media (max-width:480px){
  .geroy__knopki .knopka{width:100%;text-align:center}
  .geroy__fakty{grid-template-columns:1fr;gap:16px}
  .fakt b{height:auto;font-size:30px}
}
@media (hover:none){
  .fakt:hover b{transform:none}
  .geroy .fakt:hover span{color:var(--seryj)}
}

/* ── Сетка плиток. ПЕРЕЕХАЛА из biznes-plan.css
      и finansovaya-model.css 15.09.2026 — правило стояло в обоих
      дословно, понадобилось третьей странице (/procedura/, лист 05).
      Здесь только общий шаг; число колонок и высоту плитки задаёт
      лист в файле страницы — они зависят от длины пояснений. ── */
.plitki{display:grid;gap:24px}
@media (max-width:1024px){
  .plitki{gap:20px}
}

/* ── Плитка: снимок во всю карточку, заголовок по низу,
      пояснение доезжает по наведению.

      Редакция 2 от 15.09.2026. Первая редакция забракована:
      «всё корявое, мне не нравится как квадрат с плюсом становится
      ромбиком, да и ещё верхняя полоска потом вылетает».
      Значок раскрытия и прочерчивающаяся линия сняты совсем —
      раскрытие показывает сама карточка. Образец подачи заказчик
      дал скриншотами (страница благоустройства «Аспекта»):
      снимок во всю плитку, крупный номер призраком, заголовок
      белым по низу, пояснение открывается под ним.

      ПОЧЕМУ СМЕНИЛИСЬ СНИМКИ. Прежние — предметные, объект
      на белом фоне: во всю карточку они дают белое поле, на котором
      белый заголовок не виден. Подача требует кадра со сценой,
      поэтому взяты производственные снимки из набора главной.
      Свои снимки, когда их отснимут, должны быть такими же —
      сцена, а не предмет на белом.

      ТЁМНОЕ ЗДЕСЬ ЗАКОННО: по ДИЗАЙН-СИСТЕМЕ 2.4 тёмное на сайте
      даёт только фотография — плитка и есть фотография.

      Скругления нет: --r:0 — решение облика, оно сильнее образца.

      Высоту плитки задаёт лист: она зависит от числа колонок
      и от того, сколько текста открывается. ── */
.plitka{position:relative;display:flex;align-items:flex-end;overflow:hidden;background:var(--sinij);color:#fff;transition:box-shadow .35s ease}
.plitka:hover,.plitka:focus-visible,.plitka:has(:focus-visible){box-shadow:var(--ten)}
.plitka__foto{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;transition:transform .8s ease}
.plitka:hover .plitka__foto,.plitka:focus-visible .plitka__foto,.plitka:has(:focus-visible) .plitka__foto{transform:scale(1.05)}
/* Пелена: без неё белый текст на светлой части кадра пропадает.
   При раскрытии густеет и поднимается выше — под текст. */
.plitka::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(13,26,50,0) 34%,rgba(13,26,50,.84) 100%);transition:background .45s ease}
.plitka:hover::after,.plitka:focus-visible::after,.plitka:has(:focus-visible)::after{background:linear-gradient(180deg,rgba(13,26,50,.18) 0%,rgba(13,26,50,.92) 58%)}
/* Номер призраком в верхнем углу — как в образце */
.plitka__nomer{position:absolute;top:20px;left:26px;z-index:2;font-family:var(--sans);font-size:62px;font-weight:300;line-height:1;color:rgba(255,255,255,.24);font-variant-numeric:tabular-nums;transition:color .35s ease}
.plitka:hover .plitka__nomer,.plitka:focus-visible .plitka__nomer,.plitka:has(:focus-visible) .plitka__nomer{color:rgba(255,255,255,.4)}
.plitka__tekst{position:relative;z-index:2;width:100%;padding:26px}
.plitka__tekst h3{color:#fff;margin:0}
/* Пояснение: высота едет от нуля к своей собственной — приём
   grid-template-rows 0fr → 1fr. Он же избавляет от подбора
   max-height на глаз: текст у карточек разной длины. */
.plitka__pojasnenie{display:grid;grid-template-rows:0fr;opacity:0;transition:grid-template-rows .45s cubic-bezier(.22,.61,.36,1),opacity .3s ease}
.plitka__pojasnenie>*{overflow:hidden;min-height:0}
.plitka:hover .plitka__pojasnenie,.plitka:focus-visible .plitka__pojasnenie,.plitka:has(:focus-visible) .plitka__pojasnenie{grid-template-rows:1fr;opacity:1}
.plitka__pojasnenie p{font-size:15px;line-height:1.6;color:rgba(255,255,255,.82);margin-top:14px}

/* Тач: наведения нет — пояснение открыто всегда, пелена сразу
   густая. Печать так же. */
@media (hover:none){
  .plitka__pojasnenie{grid-template-rows:1fr;opacity:1}
  .plitka::after{background:linear-gradient(180deg,rgba(13,26,50,.18) 0%,rgba(13,26,50,.92) 58%)}
  .plitka:hover .plitka__foto{transform:none}
}
@media (prefers-reduced-motion:reduce){
  .plitka__pojasnenie{transition:opacity .2s ease}
}
@media print{
  .plitka__pojasnenie{grid-template-rows:1fr;opacity:1}
}

/* ── Врезка: крупное тонкое число + текст, белая панель с синей
      линией слева. ПЕРЕЕХАЛА из glavnaya.css 14.09.2026 без изменения
      значений — понадобилась второй странице (/biznes-plan/, лист 05,
      «88 регионов»; на главной — «89 документов» в раме калькулятора).
      История: итерация 10 главной (10-89-slivaetsya) — «текст сильно
      сливается, его нужно выделить в отдельный визуальный элемент». ── */
.vrezka{margin-bottom:28px;max-width:720px;display:flex;gap:24px;align-items:baseline;background:#fff;border:1px solid var(--linia);border-left:3px solid var(--sinij);padding:24px 28px}
.vrezka__chislo{font-family:var(--sans);font-size:76px;font-weight:300;line-height:1;color:var(--sinij);font-variant-numeric:tabular-nums;flex:0 0 auto}
.vrezka__tekst p{font-size:16px;line-height:1.6;color:var(--chernila)}
@media (max-width:1024px){
  .vrezka__chislo{font-size:56px}
}
@media (max-width:768px){
  .vrezka{padding:20px;gap:18px}
  .vrezka__chislo{font-size:48px}
}
@media (max-width:480px){
  .vrezka{flex-direction:column;gap:8px}
}

/* ── Строка-вывод: главная мысль листа с линией-указателем --sinij.
      ПЕРЕЕХАЛА из glavnaya.css 14.09.2026 без изменения значений —
      понадобилась второй странице (/biznes-plan/, лист 07;
      на главной — вывод листа 10). ── */
.vyvod-stroka{margin-top:40px;max-width:720px;border-left:3px solid var(--sinij);padding-left:24px;font-family:var(--sans);font-size:21px;font-weight:500;line-height:1.45;color:var(--chernila);text-wrap:balance}
@media (max-width:1024px){
  .vyvod-stroka{font-size:19px}
}
@media (max-width:768px){
  .vyvod-stroka{margin-top:28px;font-size:18px}
}

/* ── Перечень с номерами: строки через волосяные линии, номер —
      числовой слой Geologica 28/300. ПЕРЕЕХАЛ из biznes-plan.css
      15.09.2026 без изменения значений — понадобился второй
      странице (/procedura/, лист 02 «Путь заявки»); на /biznes-plan/
      это лист 03 «Структура шаблона».
      Отклик строки (правка заказчика 14.09.2026, «сдвига на 5px
      недостаточно»): сдвиг + заливка противоположным фоном + номер
      в акцентный синий. Заливка по умолчанию --fon — под лист
      на --fon-2; лист на белом фоне переопределяет её на --fon-2
      адресно в файле страницы (первый такой — /procedura/).
      Граница у первой строки прозрачная, не снята (грабля: минус
      1px высоты). align-items:center — правка заказчика («текст
      должен быть по середине»): baseline при номере 28px и имени
      17px уводил содержимое ниже середины строки (свод приёмов). ── */
.razdely{display:grid}
.razdel{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:20px;align-items:center;padding:12px 16px;margin:0 -16px;border-top:1px solid var(--linia-2);transition:transform .2s ease,background-color .2s ease}
.razdel:first-child{border-top-color:transparent}
.razdel__nomer{font-family:var(--sans);font-size:28px;font-weight:300;line-height:1.1;color:var(--seryj-2);font-variant-numeric:tabular-nums;transition:color .2s ease}
.razdel__imya{font-size:17px;line-height:1.5}
.razdel:hover{transform:translateX(5px);background-color:var(--fon)}
.razdel:hover .razdel__nomer{color:var(--sinij)}
@media (max-width:768px){
  .razdel{grid-template-columns:44px minmax(0,1fr);column-gap:14px;padding:10px 12px;margin:0 -12px}
  .razdel__nomer{font-size:24px}
}
@media (hover:none){
  .razdel:hover{transform:none;background-color:transparent}
  .razdel:hover .razdel__nomer{color:var(--seryj-2)}
}

/* ── Слот под фотографию (дополнение к итерации 4): макет обязан
      показывать, куда встанут снимки заказчика. Это состояние макета
      на согласование; на боевой странице слотов нет — они либо
      заполнены, либо блок снят. Подпись: пропорция — минимальный
      размер — что в кадре. Пропорцию держит aspect-ratio, не высота, —
      при подстановке фото раскладка не поедет. Рядом с каждым слотом
      в разметке — комментарий, чем его заменить. ── */
.slot-foto{background:var(--fon-2);border:1px dashed var(--linia);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:20px;font-family:var(--text);font-size:14px;line-height:1.45;color:var(--seryj-2)}
.slot-foto b{font-family:var(--sans);font-weight:500;color:var(--seryj)}
.slot-foto--1x1{aspect-ratio:1/1}
.slot-foto--3x4{aspect-ratio:3/4}
.slot-foto--a4{aspect-ratio:1240/1754}

/* ── Движение: проявление при первом показе (ДИЗАЙН-СИСТЕМА, раздел 7).
      Группа помечается data-poyav, её прямые дети проявляются
      по эталону: opacity 0→1, translateY(14px)→0, 300мс, задержка
      60мс между соседями (data-poyav="40" — 40мс, для строк перечней).
      Задержки проставляет JS, он же вешает is-poyavlen один раз —
      IntersectionObserver с unobserve, приём из obrazec-koda.

      Скрытие действует только при трёх условиях сразу:
      html.js (без JS страница видна целиком), группа ещё не показана,
      reduced-motion не включён. Transform не участвует в потоке —
      высота страницы и соседи не меняются, место занято заранее. ── */
@media (prefers-reduced-motion:no-preference){
  .js [data-poyav]:not(.is-zavershen)>*{opacity:0;transform:translateY(14px);transition:opacity .3s ease,transform .3s ease}
  .js [data-poyav].is-poyavlen:not(.is-zavershen)>*{opacity:1;transform:none}
  /* is-zavershen ставит JS после отыгрыша: элементы возвращаются
     к собственным transition (ховер рамки карточки — .12s),
     inline transition-delay к этому моменту снят.
     ОБА правила обязаны его слушать. Пока :not(.is-zavershen)
     стоял только в первом, второе вечно держало transform:none
     и душило ховер-сдвиг: перечень разделов /biznes-plan/
     (он в группе с data-poyav) не отъезжал на 5px, а такой же
     перечень /procedura/ (без data-poyav) отъезжал — заказчик
     увидел разную анимацию у одного компонента 15.09.2026. */
}

/* ── Печать: конечное состояние без ожидания транзишена.
      glavnaya.js по beforeprint ставит is-poyavlen, но переход 300мс
      мог не успеть до снапшота печати — в PDF попадал бы
      полупрозрачный кадр. Правило страхует результат (итерация 3). ── */
@media print{
  [data-poyav]>*{opacity:1!important;transform:none!important;transition:none!important}
}

/* ── Тач-таргеты ≥44×44 (web-adaptiv): мелкие цели получают
      поле нажатия, не меняя вида. Триггер «источник» расширяется
      невидимым слоем — сам остаётся словом в строке. ── */
@media (pointer:coarse){
  .stranica-nav__yakorya a{padding-top:19px;padding-bottom:19px}
  .punkt__marker{position:relative}
  .punkt__marker::after{content:"";position:absolute;left:-8px;right:-8px;top:-15px;bottom:-15px}
  .podval__razdely a{padding-top:10px;padding-bottom:10px}
  .podval__sluzhebnoe a{padding-top:6px;padding-bottom:6px}
  .shapka__pochta,.menu__pochta{padding-top:6px;padding-bottom:6px}
}

/* ── Тач: ховера нет (web-adaptiv). Сдвиги и подъёмы по :hover
      на тач-экране залипают после тапа — гасим. Раскрытия
      по наведению переведены на тап отдельно у своих компонентов
      (.punkt — is-open; вкладки и аккордеоны и так работают
      нажатием). Отклик кнопок не гасим: тап по кнопке ведёт
      к действию, залипать некогда. ── */
@media (hover:none){
  .spisok li:hover{transform:none}
  .tabl tbody tr:hover{background-color:transparent}
  .kartochka:hover{border-color:var(--linia)}
  .panel-danet:hover{border-color:var(--linia)}
  .plav-knopka:hover img{transform:none}
  .akk-punkt__knopka:hover::before{opacity:0}
}

/* ── Отключение движения: длительности в ноль (0.01мс, чтобы события
      transitionend продолжали срабатывать — приём из obrazec-koda),
      скрытое за наведением содержимое видно сразу. ── */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}
  /* Оверлеи раскрытия отдельного правила не требуют: в покое карточка
     полна содержимым (итерация 3), а оверлей с нулевой длительностью
     открывается мгновенно — движения нет. */
}
