/*
Theme Name: DDS Sibir
Theme URI: https://домвсибири.рф
Author: ДДС·Сибирь
Description: Кастомная тема отраслевого медиа «Деревянное домостроение Сибири». Терминальная эстетика, моноширинная типографика, тёплая палитра.
Version: 0.5.2
Requires at least: 6.0
Tested up to: 7.0
Requires PHP: 8.0
License: Proprietary
Text Domain: dds-sibir
*/

/* Отступ левого рейла под чёрной шапкой:
   опускаем первый блок меню («Главное») на высоту полосы регион-чипов,
   чтобы он встал вровень со строкой фильтров справа. */
.t-rail-brand-logo + .t-rail-group { margin-top: 46px; }
@media (max-width: 1024px) {
  /* На мобильном рейл — выезжающий drawer, доп. отступ не нужен */
  .t-rail-brand-logo + .t-rail-group { margin-top: 0; }
}

:root {
  --card: #ffffff; --card-2: #f6f5f1; --line: #d2cfc7; --line-2: #e0ddd5; --line-3: #ecebe5;
  --ink: #161613; --ink-2: #2a2a25; --ink-3: #55534b; --ink-4: #87857c; --ink-5: #b4b1a4;
  --accent: #c2410c; --accent-deep: #8b3e1f; --accent-bg: #faece0;
  --sans: 'Manrope', system-ui, sans-serif;
  --serif: 'Spectral', Georgia, serif;
  --mono: 'JetBrains Mono', Menlo, monospace;
  --r-md: 6px;
}
* { box-sizing: border-box; }
body { margin: 0; font-family: var(--sans); font-size: 15px; line-height: 1.55; color: var(--ink); background: var(--card-2); }
h1, h2, h3, h4 { font-family: var(--serif); font-weight: 500; color: var(--ink); letter-spacing: 0; line-height: 1.2; }
h1 { font-size: 32px; margin: 24px 0 14px; }
h2 { font-size: 24px; margin: 28px 0 12px; }
h3 { font-size: 18px; margin: 22px 0 10px; }
a { color: var(--accent); text-underline-offset: 2px; }
a:hover { color: var(--accent-deep); }
p { margin: 0 0 14px; }
img { max-width: 100%; height: auto; }
hr { border: 0; border-top: 1px solid var(--line); margin: 32px 0; }

/* ── Обёртка / шапка / подвал ── */
.dds-wrap { max-width: 1200px; margin: 0 auto; padding: 24px 32px; }

/* Отступ контента под левый рейл на страницах-калькуляторах.
   Глобальные стили WordPress (theme.json → global-styles-inline-css) содержат
   сброс `body{padding:0}` и на страницах-шаблонах перебивают тему
   (`body{padding-left:var(--rail-w)}`) — контент центрировался по всему окну
   и наезжал на рейл. Селектор с классом шаблона имеет выше специфичность
   (0,1,1 против 0,0,1) и побеждает независимо от порядка загрузки CSS.
   Только десктоп: ниже 1100 рейл — выезжающая шторка, отступ не нужен. */
@media (min-width: 1101px) {
  body[class*="page-template-page-calc"] { padding-left: var(--rail-w); }
}
.dds-header { background: var(--ink); color: #fff; padding: 14px 0; font-family: var(--mono); font-size: 13px; }
.dds-header-inner { max-width: 1200px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.dds-header a { color: #fff; text-decoration: none; }
.dds-brand { font-family: var(--serif); font-size: 17px; font-weight: 500; letter-spacing: 0; }
.dds-tagline { color: rgba(255,255,255,.55); font-size: 12px; }
.dds-nav { background: #0f0f0d; border-top: 1px solid rgba(255,255,255,.08); }
.dds-nav-inner { max-width: 1200px; margin: 0 auto; padding: 0 32px; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; min-height: 42px; font-family: var(--mono); font-size: 12px; }
.dds-nav-group { color: rgba(255,255,255,.4); margin-right: 8px; text-transform: uppercase; letter-spacing: .06em; font-size: 10px; }
.dds-nav-group-2 { margin-left: 14px; padding-left: 14px; border-left: 1px solid rgba(255,255,255,.12); }
.dds-nav a { color: rgba(255,255,255,.8); text-decoration: none; padding: 6px 11px; border-radius: 3px; transition: background .12s, color .12s; }
.dds-nav a:hover { background: rgba(255,255,255,.08); color: #fff; }
.dds-nav-item-drop { position: relative; }
.dds-nav-toggle { cursor: pointer; }
.dds-nav-dropdown { position: absolute; top: 100%; left: 0; min-width: 200px; background: #0f0f0d; border: 1px solid rgba(255,255,255,.12); border-radius: 4px; padding: 6px; display: none; z-index: 100; box-shadow: 0 8px 24px rgba(0,0,0,.4); }
.dds-nav-item-drop:hover .dds-nav-dropdown { display: block; }
.dds-nav-dropdown a { display: block; padding: 7px 12px; white-space: nowrap; }
/* Лид раздела — теми же средствами, что лид статьи (.page-head .ph-lead):
   серифом, 16px, тот же цвет. Раньше здесь не было объявления шрифта вовсе,
   и блок наследовал от body гротеск Manrope — при серифном H1 прямо над ним
   получались два разных голоса в двух соседних строках. Пока Manrope из-за
   font-display: optional часто не успевал загрузиться, расхождение было не
   так заметно; со своими шрифтами он применяется всегда, и стык стал виден.
   Роль у обоих лидов одна — подпись под заголовком, значит и вид один. */
.dds-tax-desc {
  font-family: var(--serif); font-size: 16px; font-weight: 400;
  color: var(--ink-2); margin: 0 0 24px; max-width: 760px; line-height: 1.55;
}
.dds-footer { background: var(--ink); color: var(--ink-5); padding: 32px; font-family: var(--mono); font-size: 12px; text-align: center; margin-top: 60px; line-height: 1.7; }
.dds-footer a { color: var(--accent); }

/* ── Баннер версии темы ── */
.dds-theme-banner { background: var(--accent-bg); color: var(--accent-deep); padding: 14px 20px; border-left: 3px solid var(--accent); border-radius: 0 4px 4px 0; font-family: var(--mono); font-size: 13px; line-height: 1.5; margin-bottom: 28px; }

/* ── Карточки записей в ленте ── */
.dds-article { background: var(--card); border: 1px solid var(--line); padding: 24px 28px; margin-bottom: 20px; border-radius: 4px; }
.dds-meta { font-family: var(--mono); font-size: 11.5px; letter-spacing: 0.04em; color: var(--ink-4); }
.dds-meta .dot { margin: 0 8px; color: var(--ink-5); }
.dds-excerpt { color: var(--ink-3); font-size: 14.5px; }

/* ════════════════════════════════════════
   СТРАНИЦА ОДИНОЧНОГО МАТЕРИАЛА
════════════════════════════════════════ */
.dds-article-page { max-width: 820px; }

/* Подпись «фильтр материалов:» перед переключателями в командной панели главной */
.cmd-bar .cmd-label { font-family: var(--mono); font-size: 10px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-4); align-self: center; white-space: nowrap; margin-right: 2px; }
@media (max-width: 720px) { .cmd-bar .cmd-label { display: none; } }

/* Пометка «новичок» в изменении позиции рейтинга (▲▼ — из home.css) */
.pc-change.new, .rk-c-chg.new { color: var(--accent); font-weight: 500; }

/* Страница рейтинга: шире контейнер (меньше пустоты по бокам) и колонки
   регион/технологии. Расширенная сетка живёт ТОЛЬКО на широких экранах:
   селектор с классом шаблона даёт специфичность (0,2,0) и без ограничения
   min-width замораживал десктопные колонки до самого телефона — все
   мобильные ветки home.css (0,1,0) молча проигрывали. Ниже 1100px
   управление возвращается адаптивной цепочке home.css. */
.page-template-page-rating .ranking-inner { max-width: 1560px; }
@media (min-width: 1281px) {
  .page-template-page-rating .rk-table-head,
  .page-template-page-rating .rk-row {
    grid-template-columns:
      34px            /* # */
      46px            /* ± */
      72px            /* код */
      minmax(150px, 1.2fr)  /* компания */
      minmax(0, 180px)      /* регион — шире, без обрезки */
      minmax(0, 1.6fr)      /* технологии — шире */
      110px           /* рейтинг */
      58px            /* проектов */
      58px            /* отзывы */
      20px;           /* стрелка */
  }
}
@media (min-width: 1101px) and (max-width: 1280px) {
  .page-template-page-rating .rk-table-head,
  .page-template-page-rating .rk-row {
    grid-template-columns:
      34px 42px 66px minmax(130px, 1.2fr)
      minmax(0, 160px) minmax(0, 1.5fr)
      100px 52px 20px;
  }
}

/* Логотип компании — в одну строку с названием */
.dds-co-brand { display: flex; align-items: center; gap: 20px; margin: 4px 0 6px; }
.dds-co-brand h1 { margin: 0; }
.dds-co-logo { flex-shrink: 0; width: 96px; height: 96px; border: 1px solid var(--line); border-radius: var(--r-md); background: #fff; display: flex; align-items: center; justify-content: center; padding: 12px; box-sizing: border-box; }
.dds-co-logo img { max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; display: block; }
/* Монограмма-заглушка для компаний без логотипа */
.dds-co-logo.dds-co-mono { border: none; padding: 0; }
.dds-co-mono span { font-family: var(--serif); font-size: 32px; font-weight: 600; color: #fff; line-height: 1; }
@media (max-width: 560px) { .dds-co-brand { flex-direction: column; align-items: flex-start; gap: 12px; } }

/* Карта сайта — колонки по группам */
.dds-sitemap { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 22px 28px; margin: 18px 0 30px; }
.dds-sm-group h2 { font-family: var(--mono); font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: .12em; color: var(--ink-4); border-bottom: 1px solid var(--line); padding-bottom: 7px; margin: 0 0 9px; }
.dds-sm-group ul { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 5px; }
.dds-sm-group a { font-size: 13px; color: var(--ink-2); text-decoration: none; }
.dds-sm-group a:hover { color: var(--accent); text-decoration: underline; }

/* Пометка редактору — то, что надо дозаполнить перед запуском */
.dds-callout {
  background: var(--accent-bg); border-left: 3px solid var(--accent);
  padding: 10px 14px; font-size: 13px; color: var(--ink-2); border-radius: 0 3px 3px 0;
}

/* Эксперт в шапке интервью — подпись, а не герой.
   Намеренно скромный: одна строка, фото 56px, шрифт мельче заголовка.
   Иерархия страницы: заголовок → эксперт → обложка/галерея → текст. */
.dds-expert { display: flex; align-items: center; gap: 12px; margin: 14px 0 2px; }
.dds-expert-photo {
  width: 56px; height: 56px; flex-shrink: 0;
  border-radius: 50%; object-fit: cover;
  border: 1px solid var(--line); background: var(--paper-2);
}
.dds-expert-mono {
  display: flex; align-items: center; justify-content: center;
  font-family: var(--mono); font-size: 13px; font-weight: 500; color: var(--ink-3);
  letter-spacing: .02em;
}
.dds-expert-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.dds-expert-name { font-size: 14px; font-weight: 500; color: var(--ink); line-height: 1.25; }
.dds-expert-pos { font-size: 12px; color: var(--ink-3); line-height: 1.4; }
.dds-expert-pos a { color: var(--ink-3); text-decoration: underline; text-underline-offset: 2px; }
.dds-expert-pos a:hover { color: var(--accent); }

/* Сопутствующие продукты компании — тихая справка, не технологии */
.dds-co-extras {
  display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap;
  padding: 10px 14px; margin: 0 0 26px;
  background: var(--card-2); border: 1px solid var(--line-2); border-radius: 4px;
}
.dds-co-extras .dce-l {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .1em; color: var(--ink-4); flex-shrink: 0;
}
.dds-co-extras .dce-v { font-size: 13px; color: var(--ink-2); }

/* ── «Поделиться» (inc/share.php) ──────────────────────────────────
   Стоит под шапкой материала. Задача — быть на виду и не спорить
   с заголовком, поэтому это ряд тихих чипов, а не цветные плашки
   соцсетей: фирменные цвета чужих брендов сюда тащить нельзя,
   они перебьют нашу терракоту и рассыплют страницу.
   Кнопка и ссылка выглядят одинаково намеренно: для читателя это
   одно и то же действие, разница только в реализации. */
.dds-share {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 0 0 22px;
}
.dds-share .dsh-l {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .1em; color: var(--ink-4); flex-shrink: 0;
}
.dds-share .dsh-b {
  font-family: var(--sans); font-size: 12.5px; line-height: 1;
  color: var(--ink-2); background: var(--card);
  border: 1px solid var(--line); border-radius: 4px;
  padding: 7px 11px; cursor: pointer; text-decoration: none;
  transition: border-color .15s, color .15s;
}
.dds-share .dsh-b:hover { border-color: var(--accent); color: var(--accent); }
.dds-share .dsh-b:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
/* Подпись — ВСЕГДА на своей строке и ПОСЛЕ всех кнопок.
   Пока она стояла обычным элементом ряда, длинный текст занимал место
   и выталкивал «Забрать к себе» на вторую строку — а та рядом с подписью
   читалась как внезапно появившаяся новая кнопка. order отправляет
   подпись в конец независимо от места в разметке. */
.dds-share .dsh-note {
  flex: 0 0 100%; order: 99; margin-top: 2px;
  font-family: var(--mono); font-size: 11px; line-height: 1.5;
  color: var(--accent);
}
/* Панель «Забрать к себе»: занимает всю ширину ряда, поэтому переносится
   на свою строку (flex-basis 100%), а не ужимает кнопки. */
/* Панель «Забрать к себе» — две кнопки на своей строке.
   ВНИМАНИЕ на display: у контейнера стоит атрибут hidden, а он работает
   как display:none из браузерного стиля. Любое авторское `display: flex`
   здесь его перебьёт, и панель раскроется сама (наступал 03.09.2026:
   так вылезли поля с текстом). Поэтому раскладку задаём только тогда,
   когда элемент НЕ скрыт.

   ПРИНАДЛЕЖНОСТЬ К КНОПКЕ показываем двумя сигналами сразу, потому что
   одного мало: раньше эти две кнопки читались как продолжение верхнего
   ряда. Первый сигнал — своя подложка с акцентной полосой слева (тот же
   приём, что у врезок .callout); второй — сама кнопка «Забрать к себе»
   переходит в активное состояние, пока панель открыта. */
.dds-share .dsh-take:not([hidden]) {
  display: flex; gap: 8px; flex-wrap: wrap;
  /* order 100 — ниже подписи (99): порядок чтения «кнопки → что произошло
     → раскрытая панель», независимо от порядка в разметке. */
  flex: 0 0 100%; order: 100; margin-top: 10px;
  padding: 12px 14px;
  background: var(--card-2);
  border: 1px solid var(--line-2);
  border-left: 3px solid var(--accent);
  border-radius: 4px;
}
/* Вложенные кнопки — на светлой подложке карточки, чтобы отделялись
   от фона панели и не сливались с ней в одно пятно. */
.dds-share .dsh-take .dsh-cp { background: var(--card); }
/* Активное состояние кнопки: открытая панель «Забрать к себе» и
   взведённый MAX («Открыть MAX →» после копирования). Общий класс,
   потому что смысл один — кнопка сейчас в особом состоянии и ждёт
   следующего действия. */
.dds-share .dsh-b.is-open {
  border-color: var(--accent); color: var(--accent);
  background: var(--card-2); font-weight: 600;
}
@media (max-width: 600px) {
  /* Мишени ≥44px — правило проекта. Скролл вбок только у РЯДА КНОПОК:
     панель с текстом должна остаться под ним и переноситься нормально,
     иначе её пришлось бы листать вбок вместе с кнопками. */
  .dds-share { flex-wrap: wrap; }
  .dds-share .dsh-l { flex: 0 0 100%; }
  .dds-share .dsh-b { padding: 13px 14px; font-size: 13px; white-space: nowrap; }
}

/* ── «Подписаться на канал» (inc/channels.php) ─────────────────────
   Та же природа, что у «Поделиться»: подпись и тихие чипы, без цветов
   чужих брендов. Три места: под текстом публикации (обычный вид),
   полоса над подвалом на лентах (--strip: своя подложка, чтобы не
   висела в пустоте) и тёмный блок подписки на главной (--dark). */
.dds-follow {
  display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin: 28px 0 22px;
}
.dds-follow .dfl-l {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .1em; color: var(--ink-4); flex-shrink: 0;
}
.dds-follow .dfl-b {
  font-family: var(--sans); font-size: 12.5px; line-height: 1;
  color: var(--ink-2); background: var(--card);
  border: 1px solid var(--line); border-radius: 4px;
  padding: 7px 11px; text-decoration: none;
  transition: border-color .15s, color .15s;
}
.dds-follow .dfl-b:hover { border-color: var(--accent); color: var(--accent); }
.dds-follow .dfl-b:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.dds-follow--strip {
  margin: 8px 0 0; padding: 14px 16px;
  background: var(--card-2); border: 1px solid var(--line); border-radius: 4px;
}
.dds-follow-wrap { padding-top: 0; padding-bottom: 32px; }
/* В тёмном блоке подписки: чипы на тёмном фоне, ряд отделён линией от почты */
.dds-follow--dark { margin: 0 0 14px; padding-bottom: 14px; border-bottom: 1px solid var(--dk-border); }
/* колонка узкая (~300px): подпись своей строкой, иначе второй чип
   переносится один и ряд рвётся */
.dds-follow--dark .dfl-l { color: var(--dk-text-dim); flex: 0 0 100%; margin-bottom: 2px; }
.dds-follow--dark .dfl-b {
  color: var(--card); background: rgba(255,255,255,.06); border-color: var(--dk-border);
}
.dds-follow--dark .dfl-b:hover { border-color: var(--accent); color: #fff; background: var(--accent); }
@media (max-width: 600px) {
  .dds-follow .dfl-l { flex: 0 0 100%; }
  .dds-follow .dfl-b { padding: 13px 14px; font-size: 13px; }
}

/* ── Кластер разборов на странице технологии ──
   Главный блок: это самостоятельные публикации, каждая под свой запрос.
   Нумерация — не украшение: разборы читают по порядку, от базового к частному. */
.dds-tech-guides {
  background: var(--card-2); border: 1px solid var(--line);
  border-radius: var(--r-md); padding: 22px 24px; margin: 32px 0 18px;
}
.dds-tech-guides .dtg-head { margin-bottom: 16px; }
.dds-tech-guides .dtg-eyebrow {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .14em; color: var(--accent);
}
.dds-tech-guides .dtg-head h2 { font-size: 21px; margin: 5px 0 0; }
.dds-tech-guides .dtg-grid { display: flex; flex-direction: column; gap: 2px; }
.dds-tech-guides .dtg-item {
  display: flex; align-items: flex-start; gap: 14px;
  padding: 13px 14px; background: var(--card);
  border: 1px solid transparent; border-radius: 5px;
  text-decoration: none; transition: border-color .12s, background .12s;
}
.dds-tech-guides .dtg-item:hover { border-color: var(--accent); background: var(--accent-bg); }
.dds-tech-guides .dtg-n {
  font-family: var(--mono); font-size: 12px; color: var(--ink-5);
  flex-shrink: 0; padding-top: 2px; font-variant-numeric: tabular-nums;
}
.dds-tech-guides .dtg-item:hover .dtg-n { color: var(--accent); }
.dds-tech-guides .dtg-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.dds-tech-guides .dtg-t { font-size: 15px; font-weight: 500; color: var(--ink); line-height: 1.3; }
.dds-tech-guides .dtg-s { font-size: 12.5px; color: var(--ink-3); line-height: 1.4; }
.dds-tech-guides .dtg-a { color: var(--ink-5); flex-shrink: 0; padding-top: 2px; }
.dds-tech-guides .dtg-item:hover .dtg-a { color: var(--accent); }

/* Нормативка — одна кнопка-вход, а не список документов */
.dds-law-btn {
  display: flex; align-items: center; gap: 12px;
  padding: 13px 18px; margin: 0 0 32px;
  background: var(--card); border: 1px solid var(--line);
  border-left: 3px solid var(--accent); border-radius: 0 5px 5px 0;
  text-decoration: none; transition: background .12s, border-color .12s;
}
.dds-law-btn:hover { background: var(--accent-bg); border-color: var(--accent); border-left-color: var(--accent); }
.dds-law-btn .dlb-i { font-family: var(--serif); font-size: 20px; color: var(--accent); line-height: 1; flex-shrink: 0; }
.dds-law-btn .dlb-t { font-size: 14.5px; font-weight: 500; color: var(--ink); }
.dds-law-btn .dlb-n { font-family: var(--mono); font-size: 11.5px; color: var(--ink-4); margin-left: auto; white-space: nowrap; }
.dds-law-btn .dlb-a { color: var(--accent); flex-shrink: 0; }

/* ── Страница 404 ── */
.dds-404-head { margin: 8px 0 22px; }
.dds-404-code {
  font-family: var(--mono); font-size: 62px; font-weight: 600; line-height: 1;
  color: var(--accent); letter-spacing: -.04em; margin-bottom: 6px;
}
.dds-404-head h1 { margin: 0 0 8px; }
.dds-404-actions { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 34px; }
.dds-404-btn {
  display: inline-flex; align-items: center; height: 38px; padding: 0 18px;
  background: var(--accent); color: #fff; border: 1px solid var(--accent);
  border-radius: 3px; font-family: var(--sans); font-size: 13px; font-weight: 500;
  text-decoration: none; cursor: pointer; transition: background .14s;
}
.dds-404-btn:hover { background: var(--accent-deep); border-color: var(--accent-deep); }
.dds-404-btn--ghost { background: transparent; color: var(--ink-2); border-color: var(--line); }
.dds-404-btn--ghost:hover { background: var(--card); color: var(--ink); border-color: var(--ink-4); }
.dds-404-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px; margin-bottom: 40px; }
.dds-404-card {
  display: flex; flex-direction: column; gap: 3px;
  padding: 14px 16px; background: var(--card);
  border: 1px solid var(--line); border-radius: var(--r-md);
  text-decoration: none; transition: border-color .14s, transform .14s;
}
.dds-404-card:hover { border-color: var(--accent); transform: translateY(-2px); }
.dds-404-card .d4-t { font-size: 14px; font-weight: 500; color: var(--ink); }
.dds-404-card .d4-s { font-family: var(--mono); font-size: 11px; color: var(--ink-4); }

/* Навигационная плитка в сетке каталога — занимает место «сироты»
   в последнем ряду и читается как продолжение списка, а не как служебная
   ссылка где-то внизу страницы. */
.dds-feed-nav {
  flex-direction: column; align-items: flex-start; justify-content: center;
  gap: 4px; padding: 18px 20px; min-height: 118px;
  background: var(--card-2); border-style: dashed; border-color: var(--line);
}
.dds-feed-nav:hover { transform: none; border-color: var(--line); }
.dds-feed-nav .dfn-pos {
  font-family: var(--mono); font-size: 13px; font-weight: 500; color: var(--ink);
}
.dds-feed-nav .dfn-s { font-family: var(--mono); font-size: 11px; color: var(--ink-4); }
.dds-feed-nav .dfn-btns { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.dds-feed-nav .dfn-b {
  display: inline-flex; align-items: center; height: 32px; padding: 0 13px;
  background: var(--card); border: 1px solid var(--line); border-radius: 3px;
  font-family: var(--sans); font-size: 12.5px; color: var(--ink-2);
  text-decoration: none; white-space: nowrap;
  transition: border-color .12s, color .12s, background .12s;
}
.dds-feed-nav .dfn-b:hover { border-color: var(--ink-4); color: var(--ink); }
/* «Вперёд» — основное действие, «Назад» рядом остаётся тихой кнопкой */
.dds-feed-nav .dfn-b--next {
  background: var(--accent); border-color: var(--accent); color: #fff; font-weight: 500;
}
.dds-feed-nav .dfn-b--next:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: #fff; }
.dds-feed-nav .dfn-b:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }

/* Подрядчик на странице кейса — обратная связка с компанией и рейтингом */
.dds-case-author {
  display: flex; align-items: center; gap: 12px;
  padding: 12px 16px; margin: 0 0 26px;
  background: var(--card); border: 1px solid var(--line);
  border-left: 3px solid var(--accent); border-radius: 0 4px 4px 0;
  text-decoration: none; transition: border-color .14s, background .14s;
}
.dds-case-author:hover { background: var(--card-2); border-color: var(--ink-4); border-left-color: var(--accent); }
.dds-case-author .dca-l {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .12em; color: var(--ink-4); flex-shrink: 0;
}
.dds-case-author .dca-name { font-size: 15px; font-weight: 500; color: var(--ink); }
.dds-case-author .dca-meta { font-family: var(--mono); font-size: 11px; color: var(--ink-3); }
.dds-case-author .dca-arr { margin-left: auto; color: var(--accent); flex-shrink: 0; }

/* Кейсы компании — превью с фото */
.dds-case-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px; margin: 14px 0 28px; }
.dds-case-card { display: flex; flex-direction: column; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; text-decoration: none; transition: border-color .14s, transform .14s; }
.dds-case-card:hover { border-color: var(--ink-4); transform: translateY(-2px); }
.dds-case-card .dcc-img { height: 150px; overflow: hidden; background: var(--paper); border-bottom: 1px solid var(--line); }
.dds-case-card .dcc-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.dds-case-card .dcc-img > div { width: 100%; height: 100%; }
.dds-case-card .dcc-body { padding: 12px 14px 14px; }
.dds-case-card h4 { font-family: var(--serif); font-size: 15px; line-height: 1.3; color: var(--ink); margin: 0 0 6px; }
.dds-case-card:hover h4 { color: var(--accent); }
.dds-case-card .dcc-meta { font-family: var(--mono); font-size: 11px; color: var(--ink-4); letter-spacing: .02em; }

/* Бейдж «верифицирована» у заголовка компании */
.dds-badge-verified { background: var(--accent); color: #fff; border-color: var(--accent); }

/* Рейтинг компаний ([dds_rating]) */
.dds-rating { list-style: none; margin: 18px 0 0; padding: 0; border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; background: var(--card); }
.dds-rating .dds-rank-row { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border-bottom: 1px solid var(--line); }
.dds-rating .dds-rank-row:last-child { border-bottom: none; }
.dds-rating .dds-rank-num { font-family: var(--mono); font-weight: 600; font-size: 15px; color: var(--ink-4); width: 30px; text-align: center; flex-shrink: 0; }
.dds-rating .dds-rank-row.rank-1 { background: rgba(201,162,39,.06); }
.dds-rating .dds-rank-row.rank-1 .dds-rank-num { color: #c9a227; }
.dds-rating .dds-rank-row.rank-2 .dds-rank-num { color: #9aa0a6; }
.dds-rating .dds-rank-row.rank-3 .dds-rank-num { color: #b0763b; }
.dds-rating .dds-rank-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.dds-rating .dds-rank-name { font-family: var(--serif); font-size: 16px; color: var(--ink); text-decoration: none; }
.dds-rating .dds-rank-name:hover { color: var(--accent); }
.dds-rating .dds-rank-region { font-family: var(--mono); font-size: 11px; letter-spacing: .02em; color: var(--ink-4); }
.dds-rating .dds-rank-score { font-family: var(--mono); font-size: 13px; color: var(--ink-2); white-space: nowrap; flex-shrink: 0; }
.dds-rating .dds-rank-verified { color: var(--accent); font-weight: 700; flex-shrink: 0; }

/* Панель фильтров каталога «Закон и нормы» */
.dds-lawfilter { margin: 6px 0 26px; padding: 16px 18px 18px; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--paper); display: flex; flex-direction: column; gap: 16px; }
.dds-lawfilter .lf-row { display: block; }
.dds-lawfilter .lf-label { display: block; font-family: var(--mono); font-size: 10px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-4); margin: 0 0 9px; }
.dds-lawfilter .lf-btns { display: flex; flex-wrap: wrap; gap: 8px; }
.dds-lawfilter .lf-btns button { font-family: var(--sans); font-size: 12.5px; line-height: 1; padding: 7px 14px; border: 1px solid var(--line); border-radius: 999px; background: var(--card); color: var(--ink-2); cursor: pointer; white-space: nowrap; transition: border-color .12s, background .12s, color .12s; }
.dds-lawfilter .lf-btns button:hover { border-color: var(--ink-4); color: var(--ink); }
.dds-lawfilter .lf-btns button.active { background: var(--accent); border-color: var(--accent); color: #fff; }
/* Фильтр каталога компаний — те же чипы, но ССЫЛКАМИ (?tech=slug): работают без
   JS, адрес можно сохранить и переслать, пагинация фильтр не теряет. */
.dds-lawfilter .lf-btns .lf-a {
  display: inline-flex; align-items: center; gap: 7px;
  font-family: var(--sans); font-size: 12.5px; line-height: 1;
  padding: 8px 14px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--card); color: var(--ink-2); text-decoration: none; white-space: nowrap;
  transition: border-color .12s, background .12s, color .12s;
}
.dds-lawfilter .lf-btns .lf-a:hover { border-color: var(--ink-4); color: var(--ink); }
.dds-lawfilter .lf-btns .lf-a.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.dds-lawfilter .lf-btns .lf-a .lf-n { font-family: var(--mono); font-size: 10.5px; color: var(--ink-4); }
.dds-lawfilter .lf-btns .lf-a.active .lf-n { color: rgba(255,255,255,.75); }
.lf-empty { color: var(--ink-3); font-size: 14px; margin-top: 12px; }

/* ФАСЕТНЫЕ ФИЛЬТРЫ КАТАЛОГА КОМПАНИЙ (inc/catalog-filter.php + catalog-filter.js) */
.co-filter { margin: 2px 0 18px; }
.co-bar { display: flex; align-items: center; gap: 10px 16px; flex-wrap: wrap; }

/* Регион — компактный выпадающий */
.co-reg-wrap { display: inline-flex; align-items: center; gap: 8px; }
.co-reg-l { font-family: var(--mono); font-size: 10px; font-weight: 500; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-4); }
.co-reg {
  font-family: var(--sans); font-size: 13px; color: var(--ink);
  padding: 8px 32px 8px 13px; border: 1px solid var(--line); border-radius: 8px;
  background: var(--card) url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2355534b' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 11px center;
  cursor: pointer; -webkit-appearance: none; appearance: none;
  transition: border-color .12s;
}
.co-reg:hover { border-color: var(--ink-4); }

.co-toggle {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--sans); font-size: 13px; font-weight: 500;
  padding: 8px 16px; border: 1px solid var(--ink); border-radius: 999px;
  background: var(--card); color: var(--ink); cursor: pointer;
  transition: background .12s, color .12s;
}
.co-toggle[aria-expanded="true"] { background: var(--ink); color: var(--paper); }
.co-badge {
  font-family: var(--mono); font-size: 11px; min-width: 18px; height: 18px; padding: 0 5px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 999px; background: var(--accent); color: #fff;
}
.co-count { font-family: var(--mono); font-size: 12px; color: var(--ink-4); }
.co-reset {
  font-family: var(--sans); font-size: 12.5px; color: var(--ink-3);
  background: none; border: 0; border-bottom: 1px dashed var(--line);
  cursor: pointer; padding: 2px 0;
}
.co-reset:hover { color: var(--accent); border-color: var(--accent); }

/* Гармошка фасетов. Каждая группа — строка: подпись слева в колонке, чипы
   справа, между группами — разделитель. Так фасеты не сливаются в «поле
   пилюль», а читаются отдельными полосами. На узком экране колонки стопкой. */
.co-panel {
  margin-top: 12px; padding: 2px 20px; border: 1px solid var(--line);
  border-radius: var(--r-md); background: var(--paper);
}
.co-panel[hidden] { display: none; }
.co-grp {
  display: grid; grid-template-columns: 172px 1fr; gap: 10px 20px;
  align-items: start; padding: 15px 0; border-top: 1px solid var(--line);
}
.co-grp:first-child { border-top: 0; }
.co-grp-l {
  margin: 0; padding-top: 8px; font-family: var(--mono); font-size: 10.5px;
  font-weight: 500; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3);
}
.co-chips { display: flex; flex-wrap: wrap; gap: 8px; }
@media (max-width: 720px) {
  .co-grp { grid-template-columns: 1fr; gap: 9px; padding: 14px 0; }
  .co-grp-l { padding-top: 0; }
}
.co-chip {
  display: inline-flex; align-items: center; line-height: 1;
  font-family: var(--sans); font-size: 12.5px;
  padding: 7px 13px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--card); color: var(--ink-2); cursor: pointer; white-space: nowrap;
  transition: border-color .12s, background .12s, color .12s;
}
.co-chip:hover { border-color: var(--ink-4); color: var(--ink); }
.co-chip.active { background: var(--accent); border-color: var(--accent); color: #fff; }
.co-empty { color: var(--ink-3); font-size: 14px; margin: 16px 0; }
.co-empty[hidden] { display: none; }

/* Выдача каталога «Закон и нормы» блоками.
   Два уровня: раздел базы (федеральная / региональная) и внутри него тип
   документа либо субъект. Заголовки держат разную «весовость», иначе
   двухуровневая структура читается как один длинный список. */
#law-grid .lf-sec { margin: 0 0 34px; }
#law-grid .lf-sec[hidden] { display: none; }
#law-grid .lf-h {
  display: flex; align-items: baseline; gap: 10px;
  margin: 0 0 4px; padding-bottom: 8px; border-bottom: 2px solid var(--ink);
  font-family: var(--serif); font-size: 22px; line-height: 1.2; color: var(--ink);
}
#law-grid .lf-h-n, #law-grid .lf-sh-n {
  font-family: var(--mono); font-size: 11px; font-weight: 400; color: var(--ink-4);
}
#law-grid .lf-hint { margin: 0 0 18px; font-size: 13.5px; color: var(--ink-3); }
#law-grid .lf-sub { margin: 0 0 22px; }
#law-grid .lf-sub[hidden] { display: none; }
#law-grid .lf-sh {
  display: flex; align-items: baseline; gap: 8px; margin: 0 0 10px;
  font-family: var(--mono); font-size: 11px; font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase; color: var(--ink-2);
}
#law-grid .lf-sh::before {
  content: ''; flex: 0 0 14px; height: 1px; background: var(--accent);
  transform: translateY(-3px);
}

/* ── Фото объекта: список выбранных + «Добавить ещё» ──
   Общий блок для формы регистрации и экрана «Дополнить профиль»: разметку
   там ставят два разных шаблона, но поведение и вид одинаковые. */
.dp-list { margin: 8px 0 0; display: flex; flex-direction: column; gap: 4px; }
.dp-item {
  display: flex; align-items: center; gap: 8px;
  padding: 6px 8px; border: 1px solid var(--line); border-radius: 4px;
  background: var(--card); font-size: 13px; color: var(--ink-2);
}
.dp-item .dp-n { flex: 1 1 auto; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dp-item .dp-x {
  flex: 0 0 auto; width: 28px; height: 28px; line-height: 1;
  border: 1px solid var(--line); border-radius: 4px; background: transparent;
  color: var(--ink-4); font-size: 17px; cursor: pointer;
}
.dp-item .dp-x:hover { border-color: var(--accent); color: var(--accent); }

.dp-bar { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-top: 8px; }
.dp-add {
  font-family: var(--sans); font-size: 13.5px; line-height: 1;
  min-height: 40px; padding: 0 14px;
  border: 1px dashed var(--ink-4); border-radius: 4px;
  background: transparent; color: var(--ink-2); cursor: pointer;
}
.dp-add:hover { border-color: var(--accent); border-style: solid; color: var(--accent); }
.dp-add[hidden] { display: none; }
.dp-count { font-family: var(--mono); font-size: 11px; color: var(--ink-4); }

@media (max-width: 600px) {
  /* Мишень ≥44px по общему правилу темы — на телефоне это основная кнопка
     сценария «добавил фото, добавил ещё». */
  .dp-add { min-height: 44px; width: 100%; }
  .dp-item .dp-x { width: 34px; height: 34px; }
}

/* Вынесено из инлайн-стилей шорткодов (правило темы: из CSS их не перекрыть
   без !important). Балл компании в блоке «кто строит по этой технологии»
   и кнопка «все компании» под ним. */
.related-card .rc-score { font-family: var(--mono); font-size: 11px; color: var(--accent); }
.tc-all { margin-top: 14px; }

/* Технологии на карточке документа: ответ на «а это вообще про что»
   без захода в фильтр. Метки намеренно тише заголовка. */
.related-card .rc-techs { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.related-card .rc-t {
  font-family: var(--mono); font-size: 10px; letter-spacing: .04em;
  padding: 3px 7px; border: 1px solid var(--line); border-radius: 3px;
  color: var(--ink-3); background: var(--paper); white-space: nowrap;
}
.related-card .rc-t--all,
.related-card .rc-t--more { border-style: dashed; color: var(--ink-4); }

/* Лента материалов по тегу технологии — скрытые строки до «Загрузить ещё» */
.hub-articles .ha-row.feed-hidden { display: none; }
.article-body [data-tech-more], .dds-content [data-tech-more] { margin-top: 6px; }

/* Строка превью под главной картинкой карусели */
.photo-carousel .pc-thumbs { display: flex; gap: 8px; margin-top: 10px; overflow-x: auto; padding-bottom: 4px; scroll-behavior: smooth; }
.photo-carousel .pc-thumb { flex: 0 0 auto; width: 88px; height: 58px; padding: 0; border: 2px solid transparent; border-radius: 3px; overflow: hidden; cursor: pointer; background: var(--paper); opacity: .55; transition: opacity .15s, border-color .15s; }
.photo-carousel .pc-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.photo-carousel .pc-thumb:hover { opacity: .85; }
.photo-carousel .pc-thumb.active { opacity: 1; border-color: var(--accent); }

/* Лайтбокс — увеличение фото карусели по клику */
.photo-carousel .pc-img img { cursor: zoom-in; }
.dds-lightbox { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; background: rgba(15,14,12,.94); padding: 24px; cursor: zoom-out; }
.dds-lightbox.open { display: flex; }
/* Место снизу под подпись и счётчик, поэтому не 92vh. */
.dds-lightbox .dds-lb-img { max-width: 94vw; max-height: 82vh; object-fit: contain; box-shadow: 0 8px 44px rgba(0,0,0,.55); }
.dds-lightbox .dds-lb-close { position: absolute; top: 12px; right: 16px; width: 44px; height: 44px; font-size: 30px; line-height: 1; color: #fff; background: none; border: none; cursor: pointer; opacity: .85; }
.dds-lightbox .dds-lb-close:hover { opacity: 1; }

/* Листание. Мишени 44 px — правило портала для нажимаемого. */
.dds-lightbox .dds-lb-nav {
  position: absolute; top: 50%; transform: translateY(-50%);
  width: 48px; height: 64px; padding: 0; border: none; cursor: pointer;
  background: rgba(0,0,0,.35); color: #fff; font-size: 30px; line-height: 1;
  opacity: .8; transition: opacity .12s, background .12s;
}
.dds-lightbox .dds-lb-nav:hover { opacity: 1; background: rgba(0,0,0,.55); }
.dds-lightbox .dds-lb-prev { left: 8px; }
.dds-lightbox .dds-lb-next { right: 8px; }
.dds-lightbox .dds-lb-nav[hidden] { display: none; }

.dds-lightbox .dds-lb-bar {
  position: absolute; left: 0; right: 0; bottom: 0;
  display: flex; align-items: center; justify-content: center; gap: 16px;
  padding: 14px 20px; pointer-events: none;
}
.dds-lightbox .dds-lb-cap { font-size: 13px; color: #ddd7c9; max-width: 60ch; text-align: center; }
.dds-lightbox .dds-lb-counter { font-family: var(--mono); font-size: 12px; color: #9a948a; letter-spacing: .06em; white-space: nowrap; }

/* Фон под открытым фото не прокручиваем — иначе статья уезжает под ним. */
html.dds-lb-lock, html.dds-lb-lock body { overflow: hidden; }

@media (max-width: 600px) {
  .dds-lightbox { padding: 12px; }
  .dds-lightbox .dds-lb-img { max-width: 100vw; max-height: 74vh; }
  .dds-lightbox .dds-lb-nav { width: 44px; height: 56px; font-size: 26px; }
  .dds-lightbox .dds-lb-cap { font-size: 12px; }
}

/* Медиа-обложка в статье: крупная, стандарт 16:9, но НЕ во весь экран —
   ограничена по ширине колонки и по высоте (max-height: 52vh),
   чтобы заголовок и часть текста оставались на экране. */
.dds-article-page .media-figure.media-hero { max-width: 760px; margin: 8px 0 26px; }
/* width:100% обязателен: без него max-height при заданном aspect-ratio
   заставляет браузер выводить ШИРИНУ из высоты (высота×16/9), рамка
   становится уже колонки, и справа зияет белая полоса-подложка. С явной
   шириной ограничивается высота, а фото добирается object-fit:cover. */
.dds-article-page .media-figure.media-hero .mf-frame { width: 100%; aspect-ratio: 16 / 9; max-height: 52vh; }
@media (max-width: 760px) {
  .dds-article-page .media-figure.media-hero { max-width: 100%; }
  .dds-article-page .media-figure.media-hero .mf-frame { max-height: 60vh; }
}

/* Хлебные крошки */
.dds-crumbs { font-family: var(--mono); font-size: 12px; color: var(--ink-4); margin-bottom: 18px; }
.dds-crumbs a { color: var(--ink-3); text-decoration: none; }
.dds-crumbs a:hover { color: var(--accent); }
.dds-crumbs .sep { margin: 0 8px; color: var(--ink-5); }

/* Шапка статьи */
.dds-page-head { margin-bottom: 24px; padding-bottom: 22px; border-bottom: 1px solid var(--line); }
/* Метки материала — ОДНОЙ строкой с прокруткой вбок, а не переносом.
   Правило портала: ряд чипов, не влезающий в строку, едет горизонтально
   (как .t-r-scroll в шапке), а не наращивает высоту.
   Повод конкретный: редакция размечает часть материалов сразу всеми
   регионами и технологиями, чтобы они не выпадали из фильтров. Двадцать
   с лишним чипов занимали три ряда и отжимали заголовок за нижний край
   экрана — на телефоне до самого текста приходилось листать.
   Затухание справа — подсказка, что строка продолжается. У короткого
   ряда оно приходится на пустое место и не мешает. */
.dds-badges {
  display: flex; flex-wrap: nowrap; gap: 8px; margin-bottom: 14px;
  overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;
  -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
          mask-image: linear-gradient(to right, #000 calc(100% - 24px), transparent);
}
.dds-badges::-webkit-scrollbar { display: none; }
.dds-badges .dds-badge { flex: 0 0 auto; }
.dds-badge { font-family: var(--mono); font-size: 11px; font-weight: 500; text-transform: uppercase; letter-spacing: 0.05em; padding: 3px 9px; border-radius: 3px; text-decoration: none; }
.dds-badge-news      { background: #e8eef5; color: #2a4a6e; }
.dds-badge-case      { background: #eaf3ea; color: #2a5a2a; }
.dds-badge-analytics { background: #efe9f5; color: #4f3b6e; }
.dds-badge-company   { background: var(--accent-bg); color: var(--accent-deep); }
.dds-badge-interview { background: #f5ecda; color: #6e5a1c; }
.dds-badge-video     { background: #f5dada; color: #8b2a2a; }
.dds-badge-region    { background: var(--card-2); color: var(--ink-3); }
.dds-badge-tech      { background: var(--card-2); color: var(--ink-3); }
.dds-badge-guide     { background: #e8f0e8; color: #33532e; }
.dds-badge-krugozor  { background: #e4f0eb; color: #235448; }
/* Значок раздела в бейдже — приглушённый, чтобы не спорить с заголовком */
.dds-badge-ic { margin-right: 5px; font-weight: 400; opacity: .6; font-size: .95em; }
/* Типы результатов поиска: страницы права/FAQ и прочие страницы */
.dds-badge-law       { background: #ede9df; color: #6e5a1c; }
.dds-badge-faq       { background: #e8eef5; color: #2a4a6e; }
.dds-badge-page      { background: var(--card-2); color: var(--ink-3); }
.dds-page-head h1 { font-size: 34px; margin: 0 0 12px; }
.dds-lead { font-family: var(--serif); font-size: 18px; line-height: 1.5; color: var(--ink-2); margin: 0 0 14px; }
/* Компания: преимущества, соцсети, галерея объектов */
.dds-company-adv { display: flex; flex-wrap: wrap; gap: 8px; margin: 14px 0 4px; }
.dds-adv-badge { font-family: var(--mono); font-size: 11px; color: #235448; background: #e4f0eb; border: 1px solid #cfe4dc; border-radius: 4px; padding: 4px 10px; }
.dds-company-socials { display: flex; flex-wrap: wrap; gap: 14px; margin: 12px 0 0; font-family: var(--mono); font-size: 12px; }
.dds-company-socials a { color: var(--accent); text-decoration: none; }
.dds-company-socials a:hover { text-decoration: underline; }
/* Галерея объекта в кейсе (доп. фото, приложенные с заявкой) */
.dds-case-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin: 20px 0; }
.dds-cg-item { display: block; aspect-ratio: 4 / 3; overflow: hidden; border-radius: var(--r-md); border: 1px solid var(--line); background: var(--paper); }
.dds-cg-item img { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Лайтбокс: клик по фото галереи/скана открывает просмотрщик поверх страницы */
.dds-cg-item, .dds-cert-scan { cursor: zoom-in; }
.dds-lb { position: fixed; inset: 0; z-index: 9999; display: none; align-items: center; justify-content: center; background: rgba(22, 22, 19, .93); }
.dds-lb.open { display: flex; }
.dds-lb-fig { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 12px; max-width: 94vw; }
.dds-lb img { max-width: min(1100px, 92vw); max-height: 82vh; object-fit: contain; border-radius: 4px; background: #1f1e1b; box-shadow: 0 12px 44px rgba(0, 0, 0, .5); }
.dds-lb-cap { font-family: var(--mono); font-size: 12px; letter-spacing: .04em; color: #d9d6cf; text-align: center; }
.dds-lb-x { position: absolute; top: 12px; right: 16px; width: 46px; height: 46px; border: 0; background: transparent; color: #fff; font-size: 32px; line-height: 1; cursor: pointer; opacity: .85; }
.dds-lb-x:hover { opacity: 1; }
.dds-lb-nav { position: absolute; top: 50%; transform: translateY(-50%); width: 54px; height: 76px; border: 0; border-radius: 6px; background: rgba(255, 255, 255, .08); color: #fff; font-size: 36px; line-height: 1; cursor: pointer; }
.dds-lb-nav:hover { background: rgba(255, 255, 255, .17); }
.dds-lb-prev { left: 10px; }
.dds-lb-next { right: 10px; }
@media (max-width: 600px) {
  .dds-lb-nav { width: 44px; height: 60px; font-size: 28px; }
  .dds-lb img { max-height: 78vh; }
}
/* Статус проверки данных компании */
.dds-trust { display: inline-flex; align-items: center; gap: 5px; font-family: var(--mono); font-size: 11px; padding: 3px 10px; border-radius: 999px; }
.dds-trust-ok { color: #1a5c2a; background: #e4f0e6; border: 1px solid #bfe0c6; }
.dds-trust-no { color: #7a5a1c; background: #f5efdf; border: 1px solid #e2d3ad; }
/* «Сообщить о неточности» */
.dds-report { margin: 16px 0 0; font-size: 13px; }
.dds-report > summary { cursor: pointer; color: var(--ink-3); font-size: 12px; }
.dds-report > summary:hover { color: var(--accent); }
.dds-report-form { margin-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.dds-report-form label { font-size: 12px; color: var(--ink-2); }
.dds-report-form textarea { min-height: 70px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 4px; font: inherit; font-size: 13px; background: var(--paper); }
.dds-report-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; }
.dds-report-row input { flex: 1; min-width: 180px; padding: 8px 10px; border: 1px solid var(--line); border-radius: 4px; font-size: 13px; background: var(--paper); }
.dds-report-ok { color: #1a5c2a; font-size: 13px; margin-top: 8px; }
.dds-report-lead { font-size: 13px; line-height: 1.55; color: var(--ink-2); margin: 10px 0 0; }
.dds-report-ways { display: flex; align-items: flex-start; gap: 10px; flex-wrap: wrap; margin: 12px 0 0; }
.dds-report-ways > .btn { flex: 0 0 auto; }
.dds-report-site { flex: 1 1 260px; min-width: 0; }
.dds-report-site > summary { cursor: pointer; padding: 9px 14px; min-height: 44px; display: flex; align-items: center;
  border: 1px solid var(--line); border-radius: 4px; font-size: 13px; color: var(--ink-2); }
.dds-report-site[open] > summary { border-color: var(--ink-4); margin-bottom: 10px; }
/* Блок «как отказаться от аналитики» — шорткод [dds_cookie_control]
   в Политике обработки ПДн. Стили жили внутри баннера согласия и
   переехали сюда, когда баннер убрали (26.08.2026). */
.dds-ccx { border: 1px solid var(--line, #d8d4cc); border-radius: 4px; padding: 14px 16px; margin: 18px 0; }
.dds-ccx p { margin: 0 0 10px; }
.dds-ccx ul { margin: 0 0 10px; padding-left: 20px; }
.dds-ccx li { margin-bottom: 6px; line-height: 1.5; }

.dds-report-note { font-size: 12px; color: var(--ink-4); line-height: 1.45; margin: 8px 0 0; }
.dds-report-err { font-size: 13px; line-height: 1.5; color: #b32d2e; background: #fdf1f0;
  border-left: 3px solid #c0392b; padding: 10px 12px; margin: 0 0 10px; }

/* Приглашение представителю компании — под реквизитами карточки.
   Не спорит с «сообщить о неточности» по весу: там свёрнутая строка
   для читателя, здесь блок для компании, ради которого страница
   и открывается заново. */
.co-claim { margin: 18px 0 0; padding: 16px 18px; background: var(--paper); border: 1px solid var(--line); border-radius: var(--r-md); }
.co-claim-t { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: .1em; color: var(--ink-3); margin-bottom: 6px; }
.co-claim-p { font-size: 14px; line-height: 1.55; color: var(--ink-2); margin: 0 0 12px; }
.co-claim-b { font-size: 14px; }

.dds-page-head .dds-meta { display: flex; align-items: center; flex-wrap: wrap; }

/* Главное фото */
.dds-hero-img { margin: 0 0 28px; }
.dds-hero-img img { width: 100%; border-radius: var(--r-md); display: block; }

/* Факт-плашка (кейс, аналитика) */
.dds-factgrid { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 0; border: 1px solid var(--line); border-radius: var(--r-md); background: var(--card); margin: 0 0 28px; overflow: hidden; }
.dds-fact { padding: 16px 18px; border-right: 1px solid var(--line-2); }
.dds-fact:last-child { border-right: none; }
.dds-fact .fl { display: block; font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--ink-4); margin-bottom: 5px; }
.dds-fact .fv { font-family: var(--serif); font-size: 19px; color: var(--ink); }

/* Видео-эмбед */
.dds-video-embed { margin: 0 0 28px; }
.dds-video-embed iframe { width: 100%; aspect-ratio: 16/9; border: 0; border-radius: var(--r-md); }

/* Имя и должность эксперта в подписи интервью.
   (Прежние .dds-expert-card и дублирующее .dds-expert-photo{64px} удалены:
   карточка в разметке не использовалась, а её правило фото без ограничения
   селектором перебивало размер аватара в подписи — см. .dds-expert-photo выше.) */
.dds-expert-name { font-family: var(--serif); font-size: 18px; color: var(--ink); }
.dds-expert-pos { font-family: var(--mono); font-size: 12px; color: var(--ink-4); margin-top: 3px; }

/* Тело материала */
.dds-content { font-size: 16px; line-height: 1.7; color: var(--ink-2); }
.dds-content p { margin: 0 0 18px; }
.dds-content h2 { font-size: 24px; }
.dds-content h3 { font-size: 19px; }
.dds-content ul, .dds-content ol { margin: 0 0 18px; padding-left: 24px; }
.dds-content li { margin: 6px 0; }
.dds-content img { border-radius: var(--r-md); margin: 12px 0; }
.dds-content blockquote { border-left: 3px solid var(--accent); margin: 18px 0; padding: 4px 0 4px 18px; color: var(--ink-3); font-style: italic; }
.dds-content figure { margin: 18px 0; }
.dds-content figcaption { font-family: var(--mono); font-size: 12px; color: var(--ink-4); margin-top: 6px; }

/* Компания — реквизиты */
.dds-company-info { margin-top: 32px; padding-top: 24px; border-top: 1px solid var(--line); }

/* ── «Письма для компаний» (inc/subscribers.php) ───────────────────
   Форма подписки жила только в тёмном блоке главной, и её стили лежат
   в home.css — файле, который грузится ТОЛЬКО на главной. Стоило
   поставить ту же форму на «Продвижение» или в карточку компании, как
   поля становились браузерными по умолчанию. Здесь — светлый вариант
   на тех же токенах, в общем файле темы. */
.dds-sub-co {
  margin: 22px 0 0; padding: 18px;
  background: var(--card-2); border: 1px solid var(--line); border-radius: var(--r-md);
}
.dds-sub-co .dsc-h {
  font-family: var(--mono); font-size: 10px; text-transform: uppercase;
  letter-spacing: .1em; color: var(--ink-4); margin-bottom: 8px;
}
.dds-sub-co .dsc-p { font-size: 13.5px; line-height: 1.55; color: var(--ink-2); margin: 0 0 14px; }
.dds-sub-co .sub-form { display: flex; flex-direction: column; gap: 10px; max-width: 460px; }
.dds-sub-co .dds-hp { position: absolute; left: -9999px; width: 1px; height: 1px; opacity: 0; }
.dds-sub-co input[type="email"] {
  width: 100%; box-sizing: border-box; background: var(--card);
  border: 1px solid var(--line); border-radius: 4px;
  padding: 11px 12px; font-family: var(--sans); font-size: 14px; color: var(--ink);
}
.dds-sub-co input[type="email"]:focus { border-color: var(--accent); outline: none; }
.dds-sub-co .sub-consent {
  display: flex; align-items: flex-start; gap: 9px;
  font-size: 12.5px; line-height: 1.5; color: var(--ink-3);
}
.dds-sub-co .sub-consent input { margin-top: 3px; flex-shrink: 0; }
.dds-sub-co button[type="submit"] {
  align-self: flex-start; background: var(--accent); color: #fff; border: none;
  border-radius: 4px; padding: 11px 20px; font-family: var(--sans); font-size: 14px; cursor: pointer;
}
.dds-sub-co button[type="submit"]:hover { background: var(--accent-deep); }
.dds-sub-co .sub-msg { font-size: 13px; margin: 0; }
.dds-sub-co .sub-msg--ok  { color: #1a7f37; }
.dds-sub-co .sub-msg--err { color: #b32d2e; }
@media (max-width: 600px) {
  .dds-sub-co button[type="submit"] { align-self: stretch; min-height: 44px; }
}

/* ── КАРТОЧКА КОМПАНИИ: один блок «О компании» ─────────────────────
   Четыре плашки подряд (цифры, «также строит», «кроме домов», реквизиты)
   давали четыре рамки и 26–32 px между каждой — страница читалась как
   стопка не связанных между собой прямоугольников. Теперь одна рамка,
   внутри тонкие линии; отступы живут ТОЛЬКО в padding секций, чтобы
   не складывались с внешними margin соседей. */
.dds-co-card {
  border: 1px solid var(--line); border-radius: var(--r-md);
  background: var(--card); overflow: hidden; margin: 0 0 24px;
}
/* Вложенные блоки теряют собственные рамки, скругления и отступы —
   их роль теперь играет сама карточка. */
.dds-co-card .dds-factgrid,
.dds-co-card .dds-co-extras {
  border: none; border-radius: 0; margin: 0; background: transparent;
}
.dds-co-card .dds-factgrid { border-bottom: 1px solid var(--line-2); }
.dds-co-card .dds-co-extras { padding: 10px 18px; border-top: 1px solid var(--line-3); }
.dds-co-card .co-card-req { padding: 18px; }
.dds-co-card .co-card-req h2 {
  font-family: var(--mono); font-size: 10px; font-weight: 500;
  text-transform: uppercase; letter-spacing: .1em; color: var(--ink-4);
  margin: 0 0 12px;
}
.dds-co-card .dds-company-adv { margin: 14px 0 0; }
.dds-co-card .dds-company-socials { margin: 10px 0 0; }
/* Сертификаты и членство — свой блок; пункт со сканами раскрывается. */
.dds-co-card .co-card-certs { padding: 16px 18px; border-top: 1px solid var(--line-3); }
.dds-co-card .co-card-certs h2 {
  font-family: var(--mono); font-size: 10px; font-weight: 500;
  text-transform: uppercase; letter-spacing: .1em; color: var(--ink-4);
  margin: 0 0 12px;
}
.dds-certs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 7px; }
.dds-cert { min-width: 0; }
/* Пункт без сканов — тихая строка с галкой. */
.dds-cert > .dds-cert-name {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--mono); font-size: 12px; color: var(--ink-2);
  padding: 7px 0;
}
.dds-cert > .dds-cert-name::before {
  content: "✓"; color: #235448; font-size: 12px;
}
/* Пункт со сканами — раскрывающийся. */
.dds-cert--has details { border: 1px solid var(--line-2); border-radius: 6px; background: var(--card-2); overflow: hidden; }
.dds-cert--has summary {
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; min-height: 44px; box-sizing: border-box;
}
.dds-cert--has summary::-webkit-details-marker { display: none; }
.dds-cert--has summary::after {
  content: "▸"; margin-left: auto; color: var(--accent);
  font-size: 12px; transition: transform .15s ease;
}
.dds-cert--has details[open] summary::after { transform: rotate(90deg); }
.dds-cert--has summary .dds-cert-name {
  font-family: var(--mono); font-size: 12px; color: var(--ink); font-weight: 500;
}
.dds-cert--has summary .dds-cert-count {
  font-family: var(--mono); font-size: 11px; color: var(--ink-4);
}
.dds-cert-scans {
  display: flex; flex-wrap: wrap; gap: 10px;
  padding: 4px 12px 14px;
}
.dds-cert-scan { display: block; line-height: 0; }
.dds-cert-scan img {
  width: 104px; height: 132px; object-fit: cover; display: block;
  border: 1px solid var(--line-2); border-radius: 5px; background: #fff;
  transition: border-color .15s ease;
}
.dds-cert-scan:hover img { border-color: var(--accent); }
@media (max-width: 600px) {
  .dds-cert-scan img { width: 88px; height: 112px; }
}
.co-card-upd {
  margin: 0; padding: 9px 18px; border-top: 1px solid var(--line-3);
  background: var(--card-2);
  font-family: var(--mono); font-size: 10.5px; letter-spacing: .04em;
  color: var(--ink-4);
}
/* Шапка карточки компании: без нижней линии — под ней сразу идёт
   «Поделиться», а за ним рамка блока фактов. Три границы подряд. */
.dds-article-page .dds-page-head--co { border-bottom: none; padding-bottom: 0; margin-bottom: 14px; }
.dds-page-head--co + .dds-share { margin-bottom: 18px; }
.dds-co-card + .dds-content { margin-top: 22px; }
/* Нижний блок (сообщить о неточности + «это ваша компания?») — без
   верхней линии: описание и так отделено воздухом. */
.dds-company-info--foot { margin-top: 26px; padding-top: 0; border-top: none; }
.dds-deflist { display: grid; grid-template-columns: auto 1fr; gap: 8px 20px; font-size: 14px; }
.dds-deflist dt { font-family: var(--mono); font-size: 11px; text-transform: uppercase; letter-spacing: 0.04em; color: var(--ink-4); padding-top: 2px; }
.dds-deflist dd { margin: 0; color: var(--ink); }

/* Кнопка / источник / PDF */
.dds-btn { display: inline-flex; align-items: center; gap: 8px; padding: 10px 18px; background: var(--accent); color: #fff; border-radius: 4px; font-family: var(--sans); font-size: 14px; text-decoration: none; }
.dds-btn:hover { background: var(--accent-deep); color: #fff; }
.dds-pdf-download { margin: 24px 0; }
.dds-source { font-family: var(--mono); font-size: 12.5px; color: var(--ink-4); margin-top: 24px; padding-top: 16px; border-top: 1px dashed var(--line); }

/* ── Адаптив ── */
/* ── Лента главной ── */
.dds-feed { display: grid; grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); gap: 16px; margin-top: 8px; }
.dds-feed-card { display: flex; background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; transition: border-color .14s, transform .14s; }
.dds-feed-card:hover { border-color: var(--ink-4); transform: translateY(-2px); }
/* Превью сбоку: вертикальная полоса слева, кадрируется по высоте карточки */
/* position:relative + абсолютное фото: картинка НИКОГДА не задаёт высоту
   карточки. Раньше `img{height:100%}` в flex-строке на ПЕРВОЙ (некэшированной)
   отрисовке брала высоту из intrinsic-размера логотипа (часто вертикального)
   и растягивала всю карточку; при F5 из кэша браузер знал размеры сразу и
   раскладывал верно — отсюда «вытягивается, после перезагрузки проходит».
   Высоту строки теперь задаёт только тело карточки + min-height. */
.dds-feed-thumb { position: relative; flex-shrink: 0; width: 124px; min-height: 118px; align-self: stretch; overflow: hidden; border-right: 1px solid var(--line); background: var(--paper); }
.dds-feed-thumb img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.dds-feed-thumb > div { position: absolute; inset: 0; width: 100%; height: 100%; }
/* Логотип компании в каталожной карточке — вписывается целиком, не обрезается */
.dds-feed-thumb--logo { background: #fff; }
.dds-feed-thumb--logo img { object-fit: contain; padding: 12px; box-sizing: border-box; }
/* Вертикальная карточка материала для всех хабов: широкая обложка сверху,
   ниже — бейдж типа/имя эксперта, заголовок, лид, дата. Вариант «Интервью»
   (.is-intw) добавляет круглый аватар эксперта внахлёст на край обложки. */
.dds-feed--v { grid-template-columns: repeat(auto-fill, minmax(272px, 1fr)); }
.dds-vcard {
  display: flex; flex-direction: column; overflow: hidden;
  background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md);
  transition: border-color .14s, transform .14s;
}
.dds-vcard:hover { border-color: var(--ink-4); transform: translateY(-2px); }
.dds-vcard-cover {
  position: relative; display: block; height: 158px; overflow: hidden;
  border-radius: var(--r-md) var(--r-md) 0 0;
  background: linear-gradient(160deg, hsl(30 22% 78%), hsl(30 20% 52%));
}
.dds-vcard-cover img, .dds-vcard-cover .fi { width: 100%; height: 100%; object-fit: cover; display: block; }
.dds-vcard-reg {
  position: absolute; top: 10px; left: 10px;
  font-family: var(--mono); font-size: 10px; letter-spacing: .05em;
  color: #fff; background: rgba(0,0,0,.5); padding: 3px 9px; border-radius: 3px;
}
.dds-vcard-body { padding: 13px 18px 16px; display: flex; flex-direction: column; flex: 1; gap: 8px; }
.dds-vcard-badges { display: flex; flex-wrap: wrap; gap: 6px; }
.dds-vcard-title { margin: 0; font-family: var(--serif); font-size: 19px; font-weight: 500; line-height: 1.2; letter-spacing: 0; }
.dds-vcard-title a { color: var(--ink); text-decoration: none; }
.dds-vcard-title a:hover { color: var(--accent); }
.dds-vcard-lead { margin: 0; font-size: 13px; color: var(--ink-2); line-height: 1.5;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.dds-vcard-date { font-family: var(--mono); font-size: 10.5px; color: var(--ink-4); margin-top: auto; padding-top: 2px; }
/* Вариант «Интервью» — аватар эксперта внахлёст, имя + должность */
.dds-vcard.is-intw .dds-vcard-body { padding-top: 0; }
.dds-vcard-ava {
  width: 72px; height: 72px; margin: -36px 0 0; align-self: flex-start;
  border-radius: 50%; overflow: hidden; position: relative; z-index: 1;
  border: 4px solid var(--card); box-shadow: 0 3px 10px rgba(0,0,0,.18);
  background: linear-gradient(160deg, hsl(200 18% 72%), hsl(200 16% 50%));
}
.dds-vcard-ava img { width: 100%; height: 100%; object-fit: cover; object-position: top center; display: block; }
.dds-vcard-init { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-family: var(--serif); font-size: 24px; color: rgba(255,255,255,.9); }
.dds-vcard-expert { display: flex; flex-direction: column; gap: 1px; }
.dds-vcard-expert b { font-size: 13px; font-weight: 600; color: var(--ink); }
.dds-vcard-expert span { font-size: 11.5px; color: var(--ink-3); font-family: var(--mono); line-height: 1.35; }
.dds-vcard.is-intw .dds-vcard-lead { -webkit-line-clamp: 3; }
.dds-feed-body { flex: 1; min-width: 0; padding: 15px 18px; }
.dds-feed-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.dds-feed-title { font-size: 19px; margin: 0 0 10px; line-height: 1.25; }
.dds-feed-title a { color: var(--ink); text-decoration: none; }
.dds-feed-title a:hover { color: var(--accent); }
.dds-feed-lead { font-size: 13.5px; color: var(--ink-3); line-height: 1.5; margin: 0 0 12px; }
.dds-feed-meta { font-family: var(--mono); font-size: 11px; color: var(--ink-4); letter-spacing: 0.03em; }
.dds-feed--4 { grid-template-columns: repeat(4, 1fr); }
@media (max-width: 900px) { .dds-feed--4 { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 560px) { .dds-feed--4 { grid-template-columns: 1fr; } }

/* Разделы главной */
.dds-section-h { font-size: 26px; margin: 48px 0 18px; padding-top: 24px; border-top: 2px solid var(--ink); }

/* Карточки компаний в фокусе */
.dds-co-card { display: flex; flex-direction: column; }
.dds-co-techs { font-family: var(--mono); font-size: 11px; color: var(--ink-4); margin-bottom: 10px; }
.dds-co-rating { margin-top: auto; display: flex; align-items: center; gap: 10px; }
.dds-co-star { font-family: var(--serif); font-size: 18px; color: var(--accent-deep); }
.dds-co-vrf { font-family: var(--mono); font-size: 10.5px; color: #2a5a2a; background: #eaf3ea; padding: 2px 7px; border-radius: 3px; }

/* Рейтинг */
.dds-rating { background: var(--card); border: 1px solid var(--line); border-radius: var(--r-md); overflow: hidden; }
.dds-rating-head, .dds-rating-row { display: grid; grid-template-columns: 40px 1fr 130px 150px 80px; align-items: center; gap: 12px; padding: 12px 18px; }
.dds-rating-head { background: var(--card-2); border-bottom: 1px solid var(--line-2); font-family: var(--mono); font-size: 10px; text-transform: uppercase; letter-spacing: .05em; color: var(--ink-4); }
.dds-rating-row { border-bottom: 1px dotted var(--line-2); text-decoration: none; color: var(--ink); transition: background .12s; }
.dds-rating-row:last-child { border-bottom: none; }
.dds-rating-row:hover { background: var(--card-2); }
.dds-rating-row .rk-rank { font-family: var(--serif); font-size: 18px; color: var(--ink-4); }
.dds-rating-row.is-top .rk-rank { color: var(--accent); font-weight: 600; }
.dds-rating-row.is-top-1 .rk-rank::after { content: ' 🥇'; }
.dds-rating-row .rk-name { font-family: var(--serif); font-size: 16px; }
.dds-rating-row .rk-reg, .dds-rating-row .rk-tech { font-family: var(--mono); font-size: 12px; color: var(--ink-3); }
.dds-rating-row .rk-rate { font-family: var(--serif); font-size: 16px; color: var(--accent-deep); text-align: right; }
@media (max-width: 720px) {
  .dds-rating-head { display: none; }
  .dds-rating-row { grid-template-columns: 30px 1fr 70px; }
  .dds-rating-row .rk-reg, .dds-rating-row .rk-tech { display: none; }
}

@media (max-width: 720px) {
  .dds-wrap { padding: 16px 18px; }
  .dds-header-inner { padding: 0 18px; }
  .dds-page-head h1 { font-size: 26px; }
  .dds-fact { border-right: none; border-bottom: 1px solid var(--line-2); }
  .dds-feed { grid-template-columns: 1fr; }
}

/* ══════════════════════════════════════════════════════
   MOBILE V2 — внутренние страницы (аудит всех шаблонов на 390px).
   Правила из CLAUDE.md: мишени ≥44px, основной текст ≥15px,
   таблицы схлопываем, ряды кнопок — в скролл-чипы.
══════════════════════════════════════════════════════ */
@media (max-width: 900px) {
  /* Крошки и бейджи: визуальный размер не трогаем, зону нажатия
     расширяем невидимой подушкой — вёрстка не сдвигается. */
  .dds-crumbs a { position: relative; display: inline-block; }
  .dds-crumbs a::after { content: ''; position: absolute; inset: -14px -6px; }
  a.dds-badge { position: relative; }
  a.dds-badge::after { content: ''; position: absolute; inset: -11px -5px; }

  /* Карточка ленты/каталога: нажимается ЦЕЛИКОМ, а не только заголовок.
     Внутри карточек нет других ссылок (бейджи — span), накрывать безопасно. */
  .dds-feed-card { position: relative; }
  .dds-feed-card .dds-feed-title a::after { content: ''; position: absolute; inset: 0; }
  .dds-feed-card.dds-feed-nav { position: static; } /* у плитки-навигатора свои кнопки */
  .dds-feed-lead { font-size: 14px; }

  /* Пагинация: «Назад/Вперёд» — полноценные кнопки под палец */
  .dds-feed-nav .dfn-btns { width: 100%; }
  .dds-feed-nav .dfn-b { flex: 1; justify-content: center; height: 46px; font-size: 14px; }

  /* Кнопка «Сохранить в закладки» */
  .bm-page-btn { min-height: 44px; padding: 10px 18px 10px 15px; font-size: 11px; }
  .bm-page-btn svg { width: 15px; height: 15px; }

  /* Карточки хабов (право, FAQ, связанные материалы): вся карточка — ссылка */
  .related-card { position: relative; }
  .related-card h4 a::after { content: ''; position: absolute; inset: 0; }

  /* «Смотреть в рейтинге →» на странице компании */
  .dds-rating-link a { display: inline-block; padding: 12px 0; margin: -8px 0; }

  /* Карта сайта: каждая ссылка — строка-мишень */
  .dds-sitemap .dds-sm-group li a { display: block; padding: 11px 0; }
  .dds-sitemap .dds-sm-group li { border-bottom: 1px dotted var(--line-2); }
  .dds-sitemap .dds-sm-group li:last-child { border-bottom: none; }

  /* Фильтры «Закон и нормы»: перенос на 3 ряда → горизонтальные скролл-чипы.
     Отрицательные поля выводят полосу до краёв панели, чтобы был виден
     обрез следующего чипа — намёк, что ряд листается. */
  .dds-lawfilter .lf-btns {
    flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
    margin: 0 -18px; padding: 0 18px 6px;
    scrollbar-width: none;
  }
  .dds-lawfilter .lf-btns::-webkit-scrollbar { display: none; }
  .dds-lawfilter .lf-btns button,
  .dds-lawfilter .lf-btns .lf-a {
    flex: 0 0 auto; min-height: 44px; padding: 0 16px; font-size: 13.5px;
  }

  /* Блоки выдачи на телефоне: заголовок раздела ужимаем, но линию под ним
     оставляем — она и делит список на части при вертикальной прокрутке. */
  #law-grid .lf-sec { margin-bottom: 26px; }
  #law-grid .lf-h { font-size: 19px; }
  #law-grid .lf-hint { font-size: 13px; margin-bottom: 14px; }
  #law-grid .lf-sub { margin-bottom: 18px; }
}

/* Подписи в карточках хабов «Право» и «FAQ» — раньше сидели инлайн-стилями
   в шорткоде, из CSS их было не перекрыть */
.related-card .rc-note { font-size: 12px; color: var(--ink-4); }
.related-card .rc-note--faq { font-size: 12.5px; color: var(--ink-3); line-height: 1.5; }
/* Область действия регионального документа. Стоит рядом с бейджем типа
   и намеренно НЕ повторяет его форму: тип — что это за документ,
   регион — где он работает. */
.related-card .rc-reg {
  display: inline-block; margin-left: 8px; font-family: var(--mono);
  font-size: 10.5px; letter-spacing: .04em; text-transform: uppercase;
  color: var(--accent);
}
.related-card .rc-more { margin-top: 6px; }
.related-card .rc-more a { font-size: 13px; }
@media (max-width: 900px) {
  .related-card .rc-note, .related-card .rc-note--faq { font-size: 13px; }
  .related-card .rc-more a { font-size: 14px; }
}

/* ── Блок «Читать дальше» (персональные рекомендации) ──
   Карточки — стандартные .related-card; здесь только рамка блока,
   пометка «смежная тема» и кнопка сброса профиля. */
.dds-recs { margin-top: 34px; }
.dds-recs h2 {
  font-family: var(--serif); font-size: 24px; font-weight: 400;
  color: var(--ink); margin: 0 0 14px;
}
.dds-recs .dds-rec-note {
  font-family: var(--mono); font-size: 9px; font-weight: 500;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--accent); margin-left: 8px;
}
.dds-recs .related-card .meta {
  font-family: var(--mono); font-size: 10.5px; color: var(--ink-4); margin-top: 6px;
}
.dds-rec-reset { margin: 10px 0 0; }
.dds-rec-reset button {
  background: none; border: none; padding: 0; cursor: pointer;
  font-family: var(--mono); font-size: 10.5px; color: var(--ink-4);
  text-decoration: underline; text-underline-offset: 2px;
}
.dds-rec-reset button:hover { color: var(--accent); }
@media (max-width: 900px) {
  .dds-rec-reset button { display: inline-block; padding: 10px 0; }
}

/* ── CTA в каталоге компаний ──
   Вход для компаний живёт в каталоге, а не на главной: главная — витрина для
   читателя, а себя компания ищет именно в списке. Ставится под фильтром
   технологий, до карточек, чтобы попадаться на глаза сразу. */
.dds-cat-cta {
  display: flex; align-items: center; gap: 18px; flex-wrap: wrap;
  margin: 0 0 20px; padding: 14px 18px;
  background: var(--card); border: 1px solid var(--ink);
  border-radius: var(--r-md); position: relative;
}
.dds-cat-cta::before {
  content: ''; position: absolute; left: 0; top: 0; bottom: 0; width: 3px;
  background: var(--accent); border-radius: var(--r-md) 0 0 var(--r-md);
}
.dds-cat-cta-text { display: flex; flex-direction: column; gap: 3px; flex: 1; min-width: 220px; }
.dds-cat-cta-text b { font-family: var(--serif); font-size: 16px; font-weight: 500; color: var(--ink); }
.dds-cat-cta-text span { font-size: 13px; color: var(--ink-3); line-height: 1.45; }
.dds-cat-cta .btn { flex-shrink: 0; }
@media (max-width: 600px) {
  .dds-cat-cta { padding: 13px 15px; gap: 12px; }
  .dds-cat-cta .btn { width: 100%; justify-content: center; min-height: 44px; }
}

/* ── Вкладки раздела (Каталог | Рейтинг) ──
   Компании и рейтинг — один раздел в двух видах. Вкладки связывают страницы
   между собой: пользователь не различает их как разные разделы, он ищет
   компанию, а рейтинг — это лишь другой порядок того же списка. */
.dds-sect-tabs {
  display: flex; gap: 4px; margin: 20px 0;
  border-bottom: 1px solid var(--line);
}
/* Точечное правило `.bm-page-btn + .dds-sect-tabs { margin-top: 16px }` убрано
   (авг. 2026): оно лечило слипание вкладок с кнопкой «Сохранить», но ровно то
   же слипание было у лида раздела и у всего прочего, что оказывалось под
   кнопкой. Отступ переехал в саму кнопку (portal-internal.css, margin-bottom),
   и частный случай стал лишним — иначе вкладки получили бы 18 + 16 px. */
.dds-sect-tabs .dds-tab {
  padding: 9px 18px; margin-bottom: -1px;
  font-family: var(--mono); font-size: 12px; letter-spacing: .04em;
  text-transform: uppercase; text-decoration: none;
  color: var(--ink-3); border: 1px solid transparent; border-bottom: none;
  border-radius: var(--r-md) var(--r-md) 0 0;
  transition: color .12s, background .12s;
}
.dds-sect-tabs .dds-tab:hover { color: var(--ink); background: var(--card-2); }
.dds-sect-tabs .dds-tab.is-active {
  background: var(--card); color: var(--ink);
  border-color: var(--line); border-bottom: 1px solid var(--card);
  font-weight: 500;
}
@media (max-width: 600px) {
  .dds-sect-tabs .dds-tab { flex: 1; text-align: center; padding: 11px 10px; min-height: 44px;
    display: flex; align-items: center; justify-content: center; }
}

/* Стиль подпункта меню (.is-sub) не используется: «Рейтинг» из меню убран
   совсем, рубрики (материалы, дизайн, нормы) в меню решили не выносить —
   они живут фильтром внутри ленты. Правило оставлено на случай, если
   подпункт всё же понадобится. */
.t-rail-link.is-sub .t-rail-label { padding-left: 12px; opacity: .85; font-size: 12.5px; }
.t-rail-link.is-sub .t-rail-ic { opacity: .6; }
body.rail-collapsed .t-rail-link.is-sub .t-rail-label { padding-left: 0; }

/* ═══════════════════════════════════════════════════════════════════════
   ПРАВОВЫЕ ДОКУМЕНТЫ — документный режим (.dds-legal, см. inc/legal-pages.php)

   Политика, согласие, соглашение и оферта не должны читаться как статья.
   Набор моноширинный, мелкий, без иерархии заголовков и без акцентного
   цвета: страница выглядит приложением к договору, а не материалом.

   ГДЕ ПРОХОДИТ ГРАНИЦА. Мелко — не значит нечитаемо. Цвет --ink-3 на
   --paper даёт контраст 6,5:1 (порог WCAG AA — 4,5:1), кегль на телефоне
   поднимается обратно. Причина не в вежливости: согласие обязано быть
   информированным (ч. 1 ст. 9 152-ФЗ), а условия договора присоединения,
   набранные неразличимо, суд вправе не применить (ст. 428 ГК). Документ,
   который нельзя прочесть, юридически не существует — а вместе с ним
   не существует и защита, ради которой он написан.

   Мера строки НАМЕРЕННО длиннее обычной (880 против 760): длинная строка
   утомляет глаз и сама по себе не располагает к чтению. На этот приём
   никаких правовых ограничений нет.
   ═══════════════════════════════════════════════════════════════════════ */

.dds-legal .article-body { max-width: 880px; }

.dds-legal .article-body p,
.dds-legal .article-body li {
  font-family: var(--mono);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--ink-3);
  margin-bottom: 9px;
}

/* Заголовки НЕ выделяются: тот же кегль и то же семейство. Нумерация
   пунктов остаётся — по ней документ и цитируют, без неё сослаться
   на конкретное условие невозможно. */
.dds-legal .article-body h2,
.dds-legal .article-body h3 {
  font-family: var(--mono);
  font-size: 13.5px;
  font-weight: 600;
  line-height: 1.5;
  color: var(--ink-2);
  letter-spacing: 0;
  border-top: none;
  padding-top: 0;
  margin: 18px 0 7px;
}
.dds-legal .article-body h3 { font-weight: 500; margin-top: 13px; }

.dds-legal .article-body .ph-lead {
  font-family: var(--mono);
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--ink-3);
}

/* Ссылки без терракоты: акцентный цвет тянет взгляд и разбивает полотно. */
.dds-legal .article-body a {
  color: var(--ink-2);
  border-bottom: 1px solid var(--line);
}
.dds-legal .article-body a:hover { color: var(--ink); border-color: var(--ink-4); }

.dds-legal .article-body ul,
.dds-legal .article-body ol { padding-left: 20px; margin: 0 0 11px; }

/* Врезки уплощаются до обычного абзаца: в документе им неоткуда взяться. */
.dds-legal .article-body .callout {
  background: none;
  border: none;
  border-left: 2px solid var(--line);
  padding: 2px 0 2px 12px;
  margin: 14px 0;
}
.dds-legal .article-body .callout-title {
  font-family: var(--mono); font-size: 13.5px; font-weight: 600;
  color: var(--ink-2); margin-bottom: 4px;
}

/* ─── ИСКЛЮЧЕНИЯ: то, что мелким быть НЕ ДОЛЖНО ────────────────────────
   Условия, защищающие портал (непродаваемость рейтинга, право отказать,
   ограничение ответственности, порядок возврата), и условия, которые мы
   обязаны доказать, что довели (отзыв согласия, права субъекта, отдельное
   согласие на рассылку).

   Это не уступка читаемости, а расчёт. Обременительное или неожиданное
   условие, спрятанное в общей массе, суд первым и снимет — ст. 428 ГК,
   п. 45 постановления Пленума ВАС № 16, плюс толкование неясного против
   составителя. Ограничение ответственности мелким шрифтом — классика
   отменённых условий. Спрятать эти пункты значит остаться без них.

   Привязка по якорям, а не по классу: якоря уже стоят в документах
   (по ним же идут ссылки), лишней разметки в правовом тексте не нужно.
   Меняете id раздела — правьте и здесь.

   Выделяются заголовок и ПЕРВЫЙ абзац после него (соседний брат `+`,
   не `~`: последний зацепил бы весь остаток документа). Дальше пункт
   идёт обычным набором — этого хватает, чтобы условие нельзя было
   не заметить, а «не заметил» перестало быть аргументом. */
.dds-legal .article-body h2#editorial,
.dds-legal .article-body h2#liability,
.dds-legal .article-body h2#refund,
.dds-legal .article-body h2#mailing,
.dds-legal .article-body h2#spread,
.dds-legal .article-body h2#revoke,
.dds-legal .article-body h2#rights {
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  margin-top: 26px;
  padding-top: 14px;
  border-top: 1px solid var(--ink-4);
}
.dds-legal .article-body h2#editorial + p,
.dds-legal .article-body h2#editorial + ul li,
.dds-legal .article-body h2#liability + p,
.dds-legal .article-body h2#refund + p,
.dds-legal .article-body h2#mailing + p,
.dds-legal .article-body h2#spread + p,
.dds-legal .article-body h2#revoke + p,
.dds-legal .article-body h2#rights + p,
.dds-legal .article-body h2#rights + ul li {
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.6;
  color: var(--ink);
}

@media (max-width: 600px) {
  /* На телефоне кегль возвращается: 13,5px моноширинного на 390px —
     уже не «мелко», а «нечитаемо», а это ровно та граница, за которую
     нельзя. Плотность и отсутствие иерархии остаются. */
  .dds-legal .article-body p,
  .dds-legal .article-body li,
  .dds-legal .article-body h2,
  .dds-legal .article-body h3,
  .dds-legal .article-body .ph-lead,
  .dds-legal .article-body .callout-title { font-size: 14px; }
}
