/* ===== СТРАНИЦА «СВЕДЕНИЯ» ===== */
    /* НЕ ставить overflow-x: clip/hidden на html или body: это делает элемент
       scroll-контейнером и ломает position:sticky у .header (шапка перестаёт
       залипать к вьюпорту, бургер-меню открывается «уехавшим» вверх страницы).
       Реального горизонтального скролла на странице нет — широкие таблицы
       скроллятся в своих .sveden-table--scroll контейнерах. */
    body { max-width: 100%; }
    .sveden-content { min-width: 0; }
    .sveden-hero {
      background: var(--brand-mesh);
      color: #fff;
      padding: var(--s7) 0 var(--s6);
    }
    @media (min-width: 768px) {
      .sveden-hero { padding: var(--s8) 0 var(--s7); }
    }
    .sveden-hero__crumbs {
      font-size: var(--t-sm);
      opacity: 0.8;
      margin-bottom: var(--s4);
    }
    .sveden-hero__crumbs a { color: #fff; text-decoration: underline; }
    .sveden-hero__title {
      font-family: var(--font-head);
      font-weight: 700;
      letter-spacing: -0.02em;
      line-height: 1.1;
      font-size: clamp(32px, 5vw, 56px);
      margin-bottom: var(--s3);
    }
    .sveden-hero__note {
      margin-top: var(--s3);
      font-size: var(--t-md);
      color: rgba(255,255,255,0.85);
      max-width: 620px;
    }

    .sveden-layout {
      display: grid;
      grid-template-columns: 280px minmax(0, 1fr);
      gap: var(--s6);
      align-items: start;
      padding: var(--s6) 0 var(--s8);
    }
    /* Боковое меню подразделов */
    .sveden-toc {
      position: sticky;
      top: 84px;
      background: #fff;
      border: 1px solid var(--border);
      border-radius: var(--r-md);
      padding: var(--s3);
      box-shadow: var(--shadow-sm);
    }
    .sveden-toc__title {
      font-family: var(--font-head);
      font-size: var(--t-sm);
      font-weight: 700;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      color: var(--text-muted);
      margin-bottom: var(--s3);
    }
    .sveden-toc__list { display: flex; flex-direction: column; gap: 2px; }
    .sveden-toc__link {
      display: flex;
      gap: var(--s2);
      padding: var(--s2) var(--s3);
      border-radius: var(--r-sm);
      font-size: var(--t-sm);
      font-weight: 600;
      color: var(--text);
      transition: background var(--dur), color var(--dur);
    }
    .sveden-toc__num { color: var(--text-muted); min-width: 18px; }
    .sveden-toc__link:hover { background: var(--bg-alt); color: var(--accent); }
    .sveden-toc__link.is-active {
      background: color-mix(in srgb, var(--accent) 14%, transparent);
      color: var(--accent);
    }
    .sveden-toc__link.is-active .sveden-toc__num { color: var(--accent); }
    .sveden-toc__list {
      max-height: calc(100vh - 160px);
      overflow-y: auto;
      padding-right: 4px;
      scrollbar-width: thin;
      scrollbar-color: var(--accent-light) transparent;
      overscroll-behavior: contain;
    }
    .sveden-toc__list::-webkit-scrollbar { width: 6px; }
    .sveden-toc__list::-webkit-scrollbar-track { background: transparent; }
    .sveden-toc__list::-webkit-scrollbar-thumb {
      background: var(--accent-light);
      border-radius: 999px;
    }
    .sveden-toc__list::-webkit-scrollbar-thumb:hover { background: var(--accent); }

    /* Контентные блоки подразделов */
    .sveden-block {
      background: #fff;
      border: 1px solid var(--border);
      border-radius: var(--r-md);
      padding: var(--s5);
      margin-bottom: var(--s4);
      scroll-margin-top: 84px;
      box-shadow: var(--shadow-sm);
    }
    .sveden-block__head {
      display: flex;
      align-items: baseline;
      gap: var(--s3);
      margin-bottom: var(--s4);
      padding-bottom: var(--s3);
      border-bottom: 2px solid var(--accent-light);
    }
    .sveden-block__num {
      font-family: var(--font-head);
      font-size: var(--t-lg);
      font-weight: 700;
      color: var(--accent);
    }
    .sveden-block__title {
      font-family: var(--font-head);
      font-size: var(--t-xl);
      font-weight: 700;
      letter-spacing: -0.01em;
      line-height: 1.2;
      color: var(--text);
    }

    /* Таблицы сведений */
    .sveden-table {
      width: 100%;
      border-collapse: collapse;
      font-size: var(--t-sm);
    }
    .sveden-table th,
    .sveden-table td {
      text-align: left;
      padding: var(--s2) var(--s3);
      border: 1px solid var(--border);
      vertical-align: top;
    }
    .sveden-table th {
      background: var(--bg-alt);
      font-weight: 600;
      color: var(--text);
    }
    .sveden-table--params th { width: 38%; }
    /* Широкая таблица: горизонтальный скролл на самом блоке таблицы, скроллбар
       нативный. Раньше он прятался, а вместо него снизу висела полоса,
       синхронизируемая из JS, — при перетаскивании ползунка она заметно
       отставала от таблицы. Нативный ползунок тащит сам браузер, без лагов. */
    .sveden-table--scroll {
      display: block;
      overflow-x: auto;
      -webkit-overflow-scrolling: touch;
      position: relative;
      scrollbar-width: thin;
      scrollbar-color: var(--border) transparent;
    }
    .sveden-table--scroll th { white-space: nowrap; }
    .sveden-table--scroll::-webkit-scrollbar { height: 10px; }
    .sveden-table--scroll::-webkit-scrollbar-track { background: transparent; }
    .sveden-table--scroll::-webkit-scrollbar-thumb {
      background: var(--border);
      border-radius: 999px;
    }
    .sveden-table--scroll::-webkit-scrollbar-thumb:hover { background: var(--accent-light); }

    /* Подсказка-стрелка над таблицей (показывается, пока есть куда листать) */
    .table-scroll-hint {
      display: none;
      align-items: center;
      gap: var(--s1);
      font-size: var(--t-xs);
      color: var(--text-soft, var(--muted, #777));
      margin-bottom: var(--s2);
    }
    .table-scroll-hint svg { width: 16px; height: 16px; }

    /* (C) Плавающая копия шапки таблицы — липнет к низу шапки сайта при
       вертикальном скролле длинной таблицы. Заполняется/позиционируется из JS. */
    .table-head-float {
      position: fixed;
      top: 0;
      z-index: 90; /* ниже шапки сайта (.header обычно ~100+), выше контента */
      overflow: hidden;
      display: none;
      pointer-events: none;
      box-shadow: 0 6px 10px -6px rgba(0,0,0,.18);
    }
    .table-head-float.is-active { display: block; }
    /* Служебное состояние для замера высоты клона: элемент в потоке рендера,
       но невидим и не кликается. Живёт доли миллисекунды внутри buildFloat(). */
    .table-head-float.is-measuring { display: block; visibility: hidden; }
    .table-head-float table {
      border-collapse: collapse;
      margin: 0;
      font-size: var(--t-sm);
      /* сдвигаем клон по X через transform (GPU-слой) — плавно на тач-устройствах */
      will-change: transform;
    }
    .table-head-float th {
      background: var(--bg-alt);
      font-weight: 600;
      color: var(--text);
      text-align: left;
      padding: var(--s2) var(--s3);
      border: 1px solid var(--border);
      white-space: nowrap;
      vertical-align: top;
    }
    /* Ячейки, объединяющие колонки: их длинный заголовок при nowrap распирает
       колонки, и клон расходится с телом таблицы — переносим по строкам. */
    .table-head-float th[colspan] { white-space: normal; text-align: center; }

    /* Таблица вакантных мест: компактная. Данные короткие (коды, «0», «20»),
       поэтому заголовки переносятся в столбик, столбцы узкие, шрифт мельче —
       таблица помещается на странице без большого скролла. table-layout:fixed
       заставляет колонки держать заданную ширину, а не растягиваться по тексту. */
    .sveden-table--vacant { table-layout: fixed; width: 100%; font-size: var(--t-xs); }
    /* Все заголовки — перенос в несколько строк (перебивает nowrap выше и в клоне) */
    .sveden-table--vacant th,
    .table-head-float .sveden-table--vacant th {
      white-space: normal;
      overflow-wrap: break-word;
      hyphens: auto;
      vertical-align: bottom;
      line-height: 1.2;
      padding: var(--s2) 6px;
      font-size: var(--t-xs);
    }
    .sveden-table--vacant td { padding: 6px; overflow-wrap: break-word; }
    /* Ширины столбцов */
    .sveden-table--vacant .col-code  { width: 48px; }
    .sveden-table--vacant .col-level { width: 96px; }
    /* 4 «бюджетных» столбца — узкие, значения по центру */
    .sveden-table--vacant thead tr:last-child th { width: 64px; text-align: center; }
    .sveden-table--vacant tbody td:nth-child(n+4) { text-align: center; }
    .sveden-table--vacant .col-code,
    .sveden-table--vacant tbody td:first-child { text-align: center; }

    /* В версии для слабовидящих таблицы переводятся в table-layout:fixed без
       горизонтального скролла — плавающая шапка не нужна, отключаем. */
    html.vi-on .table-head-float { display: none !important; }

    /* МОБИЛЬ: таблица разбирается на карточки «подпись — значение».
       Так уходят сразу обе проблемы: боковой скролл с дрожащей копией шапки
       и вложенный вертикальный скролл, из-за которого палец на таблице листал
       таблицу вместо страницы. Меняется только раскладка: разметка, itemprop
       и порядок ячеек те же, а ARIA-роли (их проставляет script.js) сохраняют
       таблицу таблицей для скринридеров при display:block.
       Класс --cards ставит JS: без него остаётся обычная таблица со скроллом. */
    @media (max-width: 767px) {
      .sveden-table--cards {
        display: block;
        overflow: visible;
        max-height: none;
        border-collapse: separate;
      }
      .sveden-table--cards thead { display: none; }
      .sveden-table--cards tbody { display: block; }
      .sveden-table--cards tr {
        display: block;
        background: #fff;
        border: 1px solid var(--border);
        border-radius: var(--r-md);
        padding: var(--s3);
        margin-bottom: var(--s3);
      }
      .sveden-table--cards tr:last-child { margin-bottom: 0; }
      .sveden-table--cards td,
      .sveden-table--cards tbody th {
        display: block;
        width: auto !important;
        border: 0;
        padding: 0 0 var(--s3) 0;
        text-align: left !important;
        white-space: normal;
        overflow-wrap: break-word;
        font-size: var(--t-sm);
      }
      .sveden-table--cards tr > *:last-child { padding-bottom: 0; }
      /* Подпись набрана спокойно, без caps: в карточках их по 6-7 подряд,
         и заглавные превращали список в сплошной шум. */
      .sveden-table--cards td::before,
      .sveden-table--cards tbody th::before {
        content: attr(data-label);
        display: block;
        margin-bottom: 2px;
        font-size: var(--t-xs);
        font-weight: 600;
        line-height: 1.35;
        color: var(--text-muted);
      }
      /* Короткое значение — в одну строку с подписью, значение прижато вправо */
      .sveden-table--cards td.is-inline {
        display: flex;
        align-items: baseline;
        justify-content: space-between;
        gap: var(--s3);
        padding-bottom: var(--s2);
      }
      .sveden-table--cards td.is-inline::before { margin-bottom: 0; }
      .sveden-table--cards td.is-inline { font-weight: 600; }
      /* ячейка без данных не должна выглядеть как оборванная подпись */
      .sveden-table--cards td:empty::after { content: '—'; color: var(--text-muted); }
      /* у карточек боковой прокрутки нет — подсказка про неё лишняя */
      .sveden-table--cards + .table-scroll-hint,
      .sveden-table-wrap:has(.sveden-table--cards) .table-scroll-hint { display: none !important; }
    }

    .sveden-block p { margin-bottom: var(--s3); }
    .sveden-block p:last-child { margin-bottom: 0; }
    .sveden-block ul.sveden-list {
      list-style: disc;
      padding-left: var(--s4);
      display: flex;
      flex-direction: column;
      gap: var(--s2);
      margin-bottom: var(--s3);
    }

    /* Список документов */
    .doc-list { display: flex; flex-direction: column; gap: var(--s2); }
    .doc-item {
      display: flex;
      align-items: center;
      gap: var(--s3);
      padding: var(--s3);
      border: 1px solid var(--border);
      border-radius: var(--r-sm);
      transition: border-color var(--dur), background var(--dur);
    }
    .doc-item:hover { border-color: var(--accent); background: var(--bg-alt); }
    .doc-item__icon { color: var(--accent); flex-shrink: 0; }
    .doc-item__name { font-weight: 600; font-size: var(--t-sm); }
    .doc-item__meta { font-size: var(--t-xs); color: var(--text-muted); }
    .doc-item__action {
      margin-left: auto;
      font-size: var(--t-xs);
      font-weight: 600;
      color: var(--accent);
      white-space: nowrap;
    }
    .doc-item--empty { opacity: 0.7; }
    .doc-item--empty .doc-item__action { color: var(--text-muted); }

    .sveden-note {
      font-size: var(--t-sm);
      color: var(--text-muted);
      font-style: italic;
    }
    .sveden-empty {
      padding: var(--s4);
      background: var(--bg-alt);
      border-radius: var(--r-sm);
      font-size: var(--t-sm);
      color: var(--text-muted);
    }

    /* Кнопка-триггер и оверлей — только мобиль */
    .toc-trigger { display: none; }
    .sveden-toc__bar { display: flex; align-items: center; justify-content: space-between; }
    .sveden-toc__close { display: none; }
    .toc-overlay { display: none; }

    @media (max-width: 900px) {
      .sveden-layout { display: block; }

      /* Кнопка «Разделы» — фиксированная под шапкой */
      .toc-trigger {
        display: inline-flex;
        align-items: center;
        gap: var(--s2);
        position: fixed;
        top: 80px;
        left: var(--s4);
        z-index: 95;
        padding: var(--s2) var(--s3);
        background: var(--accent);
        border: none;
        border-radius: 999px;
        font-family: var(--font-head);
        font-size: var(--t-sm);
        font-weight: 700;
        color: #fff;
        box-shadow: 0 4px 14px rgba(0,0,0,0.18);
        cursor: pointer;
        overflow: hidden;
        transition: padding 0.28s cubic-bezier(0.22,1,0.36,1),
                    width 0.28s cubic-bezier(0.22,1,0.36,1),
                    top 0.28s cubic-bezier(0.22,1,0.36,1);
      }
      .toc-trigger svg { color: #fff; flex-shrink: 0; }
      /* Свёрнутое состояние — компактный кружок «≡» при прокрутке вниз */
      .toc-trigger__label {
        white-space: nowrap;
        max-width: 120px;
        opacity: 1;
        transition: max-width 0.28s cubic-bezier(0.22,1,0.36,1),
                    opacity 0.2s ease, margin 0.28s ease;
      }
      .toc-trigger.is-mini {
        width: 48px;
        height: 48px;
        padding: 0;
        justify-content: center;
        gap: 0;
        /* ниже плавающей шапки таблицы, чтобы кружок её не перекрывал */
        top: 172px;
      }
      .toc-trigger.is-mini .toc-trigger__label {
        max-width: 0;
        opacity: 0;
        margin: 0;
      }

      /* Затемнение */
      .toc-overlay {
        position: fixed;
        inset: 0;
        z-index: 110;
        background: rgba(15, 30, 45, 0.5);
        opacity: 0;
        transition: opacity 0.3s ease;
      }
      .toc-overlay:not([hidden]) { display: block; }
      .toc-overlay.is-open { opacity: 1; }

      /* Drawer слева */
      .sveden-toc {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        width: 84%;
        max-width: 320px;
        z-index: 120;
        border: none;
        border-radius: 0;
        box-shadow: 4px 0 24px rgba(0,0,0,0.18);
        padding: var(--s4) var(--s3);
        transform: translateX(-100%);
        transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);
        overflow-y: auto;
        -webkit-overflow-scrolling: touch;
      }
      .sveden-toc.is-open { transform: translateX(0); }

      .sveden-toc__bar { margin-bottom: var(--s3); }
      .sveden-toc__close {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        width: 36px;
        height: 36px;
        border-radius: var(--r-sm);
        color: var(--text-muted);
        cursor: pointer;
      }
      .sveden-toc__close:hover { background: var(--bg-alt); color: var(--text); }

      .sveden-toc__list { max-height: none; overflow: visible; }
      .sveden-toc__link { padding: var(--s3); }

      /* заголовок секции не должен прятаться под липкой кнопкой «Разделы» */
      .sveden-block { scroll-margin-top: 116px; }

      /* блокировка прокрутки body при открытом drawer */
      body.toc-lock { overflow: hidden; }
    }
    @media (max-width: 479px) {
      .sveden-block { padding: var(--s4); }
      .sveden-table th, .sveden-table td { padding: var(--s2); }
    }
