/* ============================================================
   Репутационный индекс НКО — публичный сайт. Дизайн-токены ЦУР.
   Mobile-first. Внешние стили (инлайн-стили запрещены ТЗ).

   ТИПОГРАФИКА: ШКАЛА И НИЖНЯЯ ГРАНИЦА КЕГЛЯ.
   Раньше шкалы не было вовсе: 16px основного текста, около шестидесяти вхождений 14px
   («всё, что не заголовок» — данные, таблицы, метки, подписи, навигация), несколько
   дробных 13,5 и 14,5px без обоснования, подписи по 11–12px и стрелка тренда, которая
   в блоке «Рядом в рейтинге» рендерилась в 8px. При этом баллу цифровой открытости
   доставалось 34px, а финансовым показателям — те же 14px, что и подписи к ним.
   Иерархии не было, была случайность.

   Теперь: единая шкала --fs-*, нижняя граница для данных — 15px, для служебных подписей
   — 13px. Ничего мельче 13px на публичных страницах быть не должно.
   ============================================================ */

@font-face { font-family:'PT Sans'; src:url('/assets/fonts/PTSans-Regular.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'PT Sans'; src:url('/assets/fonts/PTSans-Bold.ttf') format('truetype'); font-weight:700; font-display:swap; }
@font-face { font-family:'PT Serif'; src:url('/assets/fonts/PTSerif-Regular.ttf') format('truetype'); font-weight:400; font-display:swap; }
@font-face { font-family:'PT Serif'; src:url('/assets/fonts/PTSerif-Bold.ttf') format('truetype'); font-weight:700; font-display:swap; }
@font-face { font-family:'PT Serif'; src:url('/assets/fonts/PTSerif-Italic.ttf') format('truetype'); font-weight:400; font-style:italic; font-display:swap; }

:root{
  /* --indigo — цвет ссылок и кнопок. На белом он давал 4.74:1, но на сером фоне
     страницы (#f4f5fa) уже 4.35:1 — ниже порога. Затемнён до 5.5:1 на сером. */
  --navy:#1B1A4A; --purple:#2D2C5F; --indigo:#4C5CB5; --indigo-light:#9AA4E0;
  /* Контрастность проверена тем же движком (axe-core, WCAG 2.1 AA), которым система
     оценивает сайты НКО. Прежние #8a89ad (3.35:1) и #6a6f8c на сером фоне (4.32:1)
     порога 4.5:1 не проходили — мелкий серый текст был нечитаем при слабом зрении
     и на плохом экране. Оценивать чужие сайты по правилу, которое сам нарушаешь, нельзя. */
  --ink:#2D2C5F; --text:#3b3a54; --muted:#5f6480; --muted-2:#6b6a90;
  --line:#d5d8e6; --line-2:#e9e9f1;
  /* Шкала типографики. Шаг ~1.15; ниже --fs-xs на публичных страницах не опускаемся. */
  --fs-xs:13px; --fs-sm:15px; --fs-md:16px; --fs-lg:18px; --fs-xl:21px;
  --fs-2xl:26px; --fs-3xl:32px; --fs-4xl:40px;
  --bg:#f4f5fa; --surface:#ffffff; --surface-2:#eef0f6; --surface-3:#edeef4;
  /* --high используется как фон под белым текстом (плашка индекса): 2e9e5b давал 3.41:1. */
  --high:#1f7a46; --good:#3d8a5c; --mid:#d99a24; --low:#b4302a;
  --high-bg:#e7f3ec; --mid-bg:#fbf1dd; --low-bg:#f6e4e1;
  --radius:14px; --radius-sm:10px; --shadow:0 10px 30px rgba(27,26,74,.08);
  --shadow-lg:0 24px 50px rgba(27,26,74,.14);
  --serif:'PT Serif',Georgia,serif; --sans:'PT Sans',system-ui,Arial,sans-serif;
  --maxw:1240px;
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--sans);color:var(--text);background:var(--bg);line-height:1.55;font-size:16px}
h1,h2,h3,h4{font-family:var(--serif);color:var(--ink);line-height:1.15;margin:0 0 .5em}
h1{font-size:clamp(28px,4.6vw,44px);font-weight:700}
h2{font-size:clamp(22px,3vw,30px);font-weight:700}
h3{font-size:20px}
a{color:var(--indigo);text-decoration:none}
a:hover{text-decoration:underline}
p{margin:0 0 1em}
img{max-width:100%;height:auto}
.container{max-width:var(--maxw);margin:0 auto;padding:0 clamp(16px,4vw,28px)}
.muted{color:var(--muted)}
.tabular{font-variant-numeric:tabular-nums}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
:focus-visible{outline:3px solid var(--indigo-light);outline-offset:2px}

/* ---------- header ---------- */
.site-header{background:var(--navy);color:#fff;position:sticky;top:0;z-index:50}
.site-header__bar{display:flex;align-items:center;gap:20px;min-height:70px}
.site-header__brand{display:flex;align-items:center;gap:20px;flex:none}
.site-header__logo{display:flex;align-items:center;color:#fff;white-space:nowrap}
.site-header__logo img{height:30px;width:auto;display:block}
.site-header__divider{width:1px;height:28px;background:rgba(255,255,255,.18);flex:none}
.site-header__kicker{font-size:var(--fs-sm);letter-spacing:2px;font-weight:700;color:#cfcee0;line-height:1.25;white-space:nowrap}
.site-nav{display:none;gap:4px;flex:1;justify-content:center;flex-wrap:wrap}
.site-nav a{color:#b9b8d4;padding:8px 13px;border-radius:0;border-bottom:2px solid transparent;font-size:var(--fs-sm);font-weight:400}
.site-nav a:hover{background:rgba(255,255,255,.1);text-decoration:none;border-radius:8px}
.site-nav a[aria-current="page"]{color:#fff;font-weight:700;border-bottom-color:var(--low);text-decoration:none}
.site-header__toggle{margin-left:auto;background:rgba(255,255,255,.1);border:0;color:#fff;width:44px;height:44px;border-radius:10px;font-size:20px;cursor:pointer;flex:none}
.site-header__search{display:none}
@media(min-width:960px){
  .site-nav{display:flex}
  .site-header__toggle{display:none}
  .site-header__search{display:flex;margin-left:0}
}
.site-header__search{align-items:center;gap:8px;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.14);border-radius:9px;padding:8px 14px;color:#cfcee0;font-size:var(--fs-sm);flex:none}
.site-header__search:hover{background:rgba(255,255,255,.14);color:#fff;text-decoration:none}
.mobile-nav{display:none;background:var(--navy);border-top:1px solid rgba(255,255,255,.12);padding:10px 0}
.mobile-nav.is-open{display:block}
.mobile-nav a{display:block;color:#d5d8e6;padding:12px 8px;border-radius:8px}
.mobile-nav a:hover{background:rgba(255,255,255,.08);text-decoration:none}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;color:#fff;padding:clamp(40px,6vw,74px) 0 clamp(96px,10vw,120px);
  background:radial-gradient(circle at -6% -25%,rgba(91,108,201,.5),transparent 45%),
             radial-gradient(circle at 108% 130%,rgba(154,164,224,.28),transparent 45%),
             var(--navy)}
.hero__kicker{font-size:var(--fs-sm);letter-spacing:3px;color:#9AA4E0;font-weight:700;margin-bottom:18px}
.hero h1{color:#fff;max-width:880px;position:relative}
.hero__lead{color:#c9c8de;font-size:clamp(16px,2.2vw,20px);max-width:640px;margin:.6em 0 1.4em}
.hero .search-wrap{max-width:520px;margin-bottom:6px}
.hero__scale{max-width:560px;margin-top:30px}
.hero__scale-bar{height:12px;border-radius:6px;background:linear-gradient(90deg,#C0392B 0%,#C0507A 38%,#5B6CC9 72%,#3AA0D8 100%)}
.hero__scale-labels{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:#9a99c0;margin-top:8px;font-variant-numeric:tabular-nums}
.hero__actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.hero__actions .btn{padding:14px 26px;font-size:15px;border-radius:10px}
.btn--danger{background:var(--low);color:#fff}
.btn--ghost-invert{background:rgba(255,255,255,.09);color:#fff;border:1px solid rgba(255,255,255,.22)}
.btn--ghost-invert:hover{background:rgba(255,255,255,.16);color:#fff}
/* overlapping stat cards below hero */
.home-stats{max-width:var(--maxw);margin:calc(-1 * clamp(56px,8vw,74px)) auto 40px;padding:0 clamp(16px,4vw,28px);
  position:relative;z-index:5;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:14px}
.home-stats__card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px;box-shadow:0 8px 26px rgba(27,26,74,.10)}
.home-stats__label{font-size:var(--fs-sm);letter-spacing:.5px;color:var(--muted);font-weight:700;text-transform:uppercase}
.home-stats__value{font-family:var(--serif);font-size:clamp(28px,3.4vw,38px);font-weight:700;color:var(--ink);margin-top:6px;line-height:1}
.home-stats__sub{font-size:var(--fs-sm);color:var(--muted);margin-top:6px}
.stat{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);padding:16px}
.stat__num{font-family:var(--serif);font-size:28px;font-weight:700;color:#fff;line-height:1}
.stat__label{color:#b7b6cf;font-size:var(--fs-sm);margin-top:6px}
.metric-num{font-family:var(--serif);font-size:30px;font-weight:700;color:var(--ink);line-height:1;margin-top:10px}
/* ---------- podium (top-3) ---------- */
.podium{margin-top:8px}
.kicker{font-size:var(--fs-sm);letter-spacing:2.5px;color:var(--low);font-weight:700;margin-bottom:6px}
.podium__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}
.podium__card{display:flex;flex-direction:column;gap:14px;text-align:left;background:#fff;border:1px solid var(--line);
  border-top:4px solid var(--indigo);border-radius:var(--radius);padding:20px;color:inherit}
.podium__card:hover{text-decoration:none}
.podium__card--high{border-top-color:var(--high)} .podium__card--good{border-top-color:var(--good)}
.podium__card--mid{border-top-color:var(--mid)} .podium__card--low{border-top-color:var(--low)}
.podium__head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.podium__left{display:flex;align-items:center;gap:12px;min-width:0}
.podium__rank{font-family:var(--serif);font-size:34px;font-weight:700;color:#dcdbe6;line-height:1;flex:none}
.podium__name{font-size:17px;font-weight:700;color:var(--ink);line-height:1.2}
.podium__sub{font-size:var(--fs-sm);color:var(--muted)}
.podium__metrics{display:flex;gap:14px;font-size:var(--fs-sm);color:var(--muted);flex-wrap:wrap}
.podium__metrics b{color:var(--ink)}
/* ---------- pill tabs ---------- */
.tabs--pill{border-bottom:0;gap:9px;margin:18px 0}
.tabs--pill a{border-radius:20px;padding:8px 17px;background:#fff;border:1px solid var(--line);color:var(--purple);font-weight:700}
.tabs--pill a:hover{text-decoration:none;background:var(--surface-2)}
.tabs--pill a[aria-current="page"]{background:var(--purple);color:#fff;border-color:var(--purple);box-shadow:none}

/* Табы-пилюли, прижатые к карточке списка ниже: единая рамка/тень/скругление,
   разделительная линия ровно между строкой табов и таблицей. */
.tabbed-card{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden}
.tabbed-card .tabs--pill{margin:0;padding:14px clamp(16px,3vw,24px) 4px;border-bottom:1px solid var(--line-2)}
.tabbed-card .tabs--pill a{background:var(--surface-2);border-color:transparent}
.tabbed-card .tabs--pill a[aria-current="page"]{background:var(--purple);color:#fff}
.tabbed-card__empty{padding:20px clamp(16px,3vw,24px)}
.tabbed-card > .card{border:0;border-radius:0;box-shadow:none;margin:0}

/* ---------- sections ---------- */
.section{padding:clamp(28px,5vw,48px) 0}
.section--tint{background:var(--surface-2)}
.section__head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:20px;flex-wrap:wrap}
.section__head--after-podium{margin-top:40px;margin-bottom:10px}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;gap:8px;background:var(--indigo);color:#fff;border:0;border-radius:10px;
  padding:11px 18px;font-family:var(--sans);font-size:15px;font-weight:700;cursor:pointer;text-decoration:none;transition:filter .15s}
.btn:hover{filter:brightness(1.07);text-decoration:none}
.btn--ghost{background:transparent;color:var(--indigo);border:1px solid var(--line)}
.btn--ghost:hover{background:var(--surface-2)}
.btn--light{background:#fff;color:var(--navy)}
.btn--sm{padding:7px 12px;font-size:var(--fs-sm)}
.btn--block{display:flex;width:100%;justify-content:center}

/* ---------- cards ---------- */
.card{background:var(--surface);border:1px solid var(--line-2);border-radius:var(--radius);box-shadow:var(--shadow)}
.card__body{padding:clamp(16px,3vw,24px)}
.grid{display:grid;gap:16px}
.grid--2{grid-template-columns:1fr}
.grid--3{grid-template-columns:1fr}
@media(min-width:720px){.grid--2{grid-template-columns:1fr 1fr;align-items:start}.grid--3{grid-template-columns:repeat(3,1fr)}
  /* Публикации в СМИ рядом с «Цифровой открытостью» показываются, только когда они есть —
     без второй карточки одна не должна оставлять пустую половину ряда. */
  .grid--2 > .card:only-child{grid-column:1 / -1}}

/* ---------- RI badge & scale ---------- */
.ri{display:inline-flex;align-items:center;justify-content:center;font-family:var(--serif);font-weight:700;
  border-radius:9px;min-width:44px;padding:2px 8px;color:#fff;font-variant-numeric:tabular-nums}
.ri--high{background:var(--high)} .ri--good{background:var(--good)} .ri--mid{background:var(--mid)} .ri--low{background:var(--low)}
.ri--na{background:var(--surface-3);color:var(--muted);font-family:var(--sans);font-weight:400;font-size:var(--fs-sm)}
.ri--xl{font-size:34px;min-width:78px;padding:10px 16px;border-radius:14px}
/* Рейтинг-таблица: крупный балл RI + окрашенные опоры */
.rating-table__ri .ri{font-size:20px;min-width:52px;padding:5px 11px}
.scell{font-weight:700;font-size:16px;font-variant-numeric:tabular-nums}
.scell--high{color:#1c6e3d} .scell--mid{color:#8a5a00} .scell--low{color:#8f2318}
.trend{font-size:var(--fs-sm);margin-left:4px}
.trend--up{color:var(--high)} .trend--down{color:var(--low)} .trend--flat{color:var(--muted)}

.pillar{margin:10px 0}
.pillar__row{display:flex;justify-content:space-between;font-size:var(--fs-sm);margin-bottom:4px}
.pillar__track{height:8px;background:var(--surface-3);border-radius:99px;overflow:hidden}
.pillar__fill{height:100%;width:0;border-radius:99px;background:linear-gradient(90deg,var(--indigo-light),var(--indigo));transition:width .5s ease}
.pillar__fill--L{background:linear-gradient(90deg,#9aa4e0,#5b6cc9)}
.pillar__fill--F{background:linear-gradient(90deg,#7cc59a,#2e9e5b)}
.pillar__fill--D{background:linear-gradient(90deg,#e6c06a,#d99a24)}

/* ---------- rating table ---------- */
.rating-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.rating-table th,.rating-table td{padding:12px 10px;text-align:left;border-bottom:1px solid var(--line-2)}
.rating-table th{color:var(--muted);font-weight:700;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}
.rating-table th a{color:var(--muted)}
.rating-table tbody tr:hover,.rating-table tr:hover{background:var(--surface-2)}
.rating-table__pos{color:var(--muted-2);font-variant-numeric:tabular-nums;width:40px}
.rating-table__name a{font-weight:700;color:var(--ink)}
.rating-table__sub{color:var(--muted);font-size:var(--fs-sm)}
.num{text-align:right;font-variant-numeric:tabular-nums}
.chip{display:inline-block;background:var(--surface-3);color:var(--purple);border-radius:99px;padding:2px 9px;font-size:var(--fs-sm);margin:2px 2px 0 0}
.chip--plus{background:var(--high-bg);color:#1c6e3d}
.chip--stop{background:var(--low-bg);color:#8f2318}
.chip--doc{background:#eef2ff;color:#3538cd;font-weight:600;text-decoration:none}
.chip--doc:hover{background:#e0e7ff}
.chip--soc{background:var(--surface-3);color:var(--purple);font-weight:600;text-decoration:none}
.chip--soc:hover{filter:brightness(.96)}
.openness-hero{display:flex;align-items:center;gap:16px;margin:12px 0 6px;padding:14px 16px;background:var(--surface-2);border-radius:14px}
.openness-hero__val{font-size:34px;font-weight:800;line-height:1;color:var(--ink);white-space:nowrap}
.openness-hero__val span{font-size:16px;font-weight:600;color:var(--muted)}
.openness-hero__cap{font-size:var(--fs-sm);color:var(--muted-2);line-height:1.35}
.passport{margin-top:14px}
.passport__title{font-size:var(--fs-sm);font-weight:700;color:var(--muted-2);text-transform:uppercase;letter-spacing:.4px;margin-bottom:8px}
.passport__note{font-size:var(--fs-sm);margin-top:6px}
.passport-svg{width:100%;height:auto;max-width:520px;display:block;overflow:visible}
.passport-label{font-size:var(--fs-xs);fill:var(--muted-2);font-family:var(--sans)}
.passport-val{font-size:var(--fs-xs);font-weight:700;fill:var(--ink);font-family:var(--sans)}
.passport-track{fill:var(--surface-3)}
.passport-median{stroke:var(--navy);stroke-width:2;stroke-dasharray:2 1.5}
.passport-legend{font-size:var(--fs-xs);fill:var(--muted);font-family:var(--sans)}
.tech-details{margin-top:10px}
.tech-details>summary{cursor:pointer;font-weight:600;color:var(--muted-2);font-size:var(--fs-sm);padding:6px 0}
.tech-details[open]>summary{margin-bottom:6px}

/* responsive table -> cards on mobile */
@media(max-width:720px){
  .rating-table thead{display:none}
  .rating-table,.rating-table tbody,.rating-table tr,.rating-table td{display:block;width:100%}
  .rating-table tr{border:1px solid var(--line-2);border-radius:12px;margin-bottom:12px;padding:8px 12px;background:#fff}
  .rating-table td{border:0;padding:5px 0;display:flex;justify-content:space-between;gap:12px}
  .rating-table td::before{content:attr(data-label);color:var(--muted);font-size:var(--fs-sm);font-weight:700}
  .rating-table__pos{display:none}
}

/* ---------- tabs ---------- */
.tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--line);margin-bottom:18px}
.tabs a{padding:10px 14px;border-radius:8px 8px 0 0;color:var(--muted);font-weight:700;font-size:var(--fs-sm)}
.tabs a[aria-current="page"]{color:var(--indigo);background:var(--surface);box-shadow:inset 0 -3px 0 var(--indigo)}
/* Локальные табы внутри карточки (JS-переключение, без перезагрузки страницы) —
   те же пропорции, что у .tabs, но кнопки вместо ссылок и счётчик записей. */
.tabs--local{margin:14px 0 16px}
.tabs--local button{padding:10px 14px;border-radius:8px 8px 0 0;color:var(--muted);font-weight:700;
  font-size:var(--fs-sm);background:none;border:0;cursor:pointer;font-family:inherit}
.tabs--local button[aria-selected="true"]{color:var(--indigo);background:var(--surface);box-shadow:inset 0 -3px 0 var(--indigo)}
.tabs__count{margin-left:6px;font-size:var(--fs-xs);color:var(--muted-2);font-weight:400}

/* ---------- filters ---------- */
.filters{display:grid;gap:12px}
.filters__grid{display:grid;grid-template-columns:1fr;gap:10px}
@media(min-width:720px){.filters__grid{grid-template-columns:repeat(3,1fr)}}
.field{display:flex;flex-direction:column;gap:4px;font-size:var(--fs-sm)}
.field label{color:var(--muted);font-weight:700}
.field input,.field select{padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:var(--fs-sm);background:#fff}
.checks{display:flex;flex-wrap:wrap;gap:12px}
.checks label{display:flex;align-items:center;gap:6px;color:var(--text);font-weight:400}
.filters__actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.count{color:var(--muted);font-size:var(--fs-sm)}
.filters-panel{position:relative;margin:14px 0}
.filters-open{margin:14px 0}
@media(min-width:721px){.filters-open{display:none}}
.rating-layout{display:block}
@media(min-width:721px){
  .rating-layout{display:flex;gap:22px;align-items:flex-start;margin-top:8px}
  .filters-panel{flex:1 1 230px;min-width:230px;max-width:280px;margin:0}
  .filters-panel__inner{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:18px 18px 20px}
  [data-rating]{flex:3 1 460px;min-width:0}
  .filters-panel__inner .section__head{margin-bottom:14px;align-items:center}
  .filters-panel__inner .section__head h3{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:1.5px;color:var(--muted);
    font-weight:700;text-transform:uppercase;margin:0}
  .filters-panel__inner [data-filters-close]{display:none}
  /* сайдбар-панель узкая (230-280px): всегда один столбец, иначе селекты сжимаются в 3 колонки и ломают вёрстку */
  .filters-panel__inner .filters__grid{grid-template-columns:1fr}
}
@media(max-width:720px){
  .filters-panel{position:fixed;inset:0;background:rgba(20,19,55,.5);z-index:60;display:none;padding:0}
  .filters-panel.is-open{display:block}
  .filters-panel__inner{position:absolute;right:0;top:0;bottom:0;width:min(88%,360px);background:#fff;overflow:auto;padding:18px}
}
/* ---------- empty state (карточка "ничего не найдено") ---------- */
.empty-state{background:#fff;border:1px solid var(--line);border-radius:16px;padding:clamp(40px,7vw,80px) 24px;text-align:center}
.empty-state__icon{width:64px;height:64px;border:2px dashed #c3c6d8;border-radius:16px;margin:0 auto 22px;
  display:flex;align-items:center;justify-content:center;font-size:30px;color:#b7b6cf}
.empty-state h2{margin:0 0 10px}
.empty-state p{font-size:15px;color:var(--text);line-height:1.6;margin:0 auto 24px;max-width:420px}
/* ---------- 404 ---------- */
.state-404__inner{max-width:720px;margin:0 auto;padding:clamp(50px,8vw,110px) 0;text-align:center}
.state-404__code{font-family:var(--serif);font-size:clamp(80px,16vw,150px);font-weight:700;color:var(--ink);line-height:1}
.state-404__rule{width:200px;height:4px;margin:14px auto 26px;border-radius:2px;
  background:linear-gradient(90deg,#C0392B 0%,#C0507A 38%,#5B6CC9 72%,#3AA0D8 100%)}
.state-404__inner h1{margin:0 0 12px}
.state-404__inner p{font-size:var(--fs-md);color:var(--text);line-height:1.6;margin:0 0 26px}
.state-404__actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}
/* ---------- content pages hero (методология / о проекте / контакты) ---------- */
.content-hero{position:relative;overflow:hidden;color:#fff;padding:clamp(28px,3vw,40px) 0 clamp(36px,4vw,48px);
  background:radial-gradient(circle at 100% -10%,rgba(91,108,201,.4),transparent 45%),var(--navy)}
.content-hero h1{color:#fff;margin:0;max-width:800px;position:relative}
/* ---------- orgcard hero (шапка карточки НКО) ---------- */
.orgcard-hero{position:relative;overflow:hidden;color:#fff;
  background:radial-gradient(circle at 108% -20%,rgba(91,108,201,.42),transparent 45%),var(--navy)}
.orgcard-hero__inner{position:relative;max-width:var(--maxw);margin:0 auto;padding:22px clamp(16px,4vw,28px) 34px}
.orgcard-hero__crumbs{font-size:var(--fs-sm);color:#9a99c0;margin-bottom:20px}
.orgcard-hero__crumbs a{color:#9AA4E0}
.orgcard-hero__row{display:flex;justify-content:space-between;gap:30px;flex-wrap:wrap;align-items:flex-end}
.orgcard-hero__title{flex:1 1 340px;min-width:0}
.orgcard-hero__meta{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.orgcard-hero__kicker{font-size:var(--fs-sm);letter-spacing:2px;color:#9AA4E0;font-weight:700}
.orgcard-hero__badge{font-size:var(--fs-sm);font-weight:700;border-radius:6px;padding:2px 9px}
.orgcard-hero__badge--plus{color:#1c6e3d;background:#E7F3EC}
.orgcard-hero h1{color:#fff;margin:0;font-size:clamp(30px,4.4vw,48px);line-height:1.05}
.orgcard-hero__sub{font-size:var(--fs-sm);color:#cfcee0;margin-top:12px}
.orgcard-hero__panel{flex:1 1 300px;max-width:420px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);
  border-radius:16px;padding:22px 24px}
.orgcard-hero__panel-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.orgcard-hero__panel-label{font-size:var(--fs-sm);letter-spacing:1.5px;color:#9AA4E0;font-weight:700}
.orgcard-hero__trend{font-size:var(--fs-sm);font-weight:700;white-space:nowrap}
.orgcard-hero__trend--up{color:var(--high)} .orgcard-hero__trend--down{color:var(--low)} .orgcard-hero__trend--flat{color:#9a99c0}
.orgcard-hero__score{font-family:var(--serif);font-size:clamp(44px,6vw,66px);font-weight:700;line-height:1;margin:6px 0 16px}
.orgcard-hero__score small{font-size:22px;color:#9a99c0;font-weight:400}
.orgcard-hero__scale{position:relative;height:12px;border-radius:6px;
  background:linear-gradient(90deg,#C0392B 0%,#C0507A 38%,#5B6CC9 72%,#3AA0D8 100%)}
.orgcard-hero__marker{position:absolute;top:-4px;width:5px;height:20px;background:#fff;border-radius:3px;
  transform:translateX(-50%);box-shadow:0 0 0 3px rgba(27,26,74,.55)}
.orgcard-hero__scale-labels{display:flex;justify-content:space-between;font-size:var(--fs-sm);color:#9a99c0;margin-top:7px}

/* ---------- card page ---------- */
.orgcard__head{display:flex;gap:20px;flex-wrap:wrap;align-items:flex-start}
.orgcard__title{flex:1;min-width:240px}
.orgcard__legal{font-size:var(--fs-sm);margin-top:2px;line-height:1.35}
.orgcard__meta{display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted);font-size:var(--fs-sm);margin-top:6px}
.orgcard__ri{text-align:center}
.orgcard__ri small{display:block;color:var(--muted);font-size:var(--fs-sm);margin-top:6px}
/* Карточка НКО: реквизиты слева, панель баллов справа */
/* Панели поровну по-прежнему не хватало: подписи опор («Цифровая открытость» —
   самая длинная) и паспорт-диаграмма теснились, а колонка реквизитов заканчивалась
   раньше и оставляла пустоту снизу. Отдаём панели баллов больше доли ширины. */
.orgcard{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.orgcard__req h2{margin:0 0 4px}
.reqs{display:grid;grid-template-columns:max-content 1fr;gap:0;margin-top:16px;font-size:15px}
.reqs dt{color:var(--muted);padding:11px 0;border-top:1px solid var(--line-2)}
.reqs dd{margin:0;padding:11px 0 11px 24px;border-top:1px solid var(--line-2);text-align:right;font-variant-numeric:tabular-nums;word-break:break-word}
.reqs dt:first-of-type,.reqs dt:first-of-type+dd{border-top:0}
.scorehead{display:flex;gap:18px;align-items:center}
.scorehead__ri{font-family:var(--serif);font-weight:700;color:#fff;font-size:52px;line-height:1;min-width:104px;height:104px;border-radius:18px;display:flex;align-items:center;justify-content:center}
.scorehead__label{font-family:var(--serif);font-size:26px;font-weight:700;color:var(--ink);line-height:1.1}
.scorehead__pct{margin-top:6px;font-size:var(--fs-sm);color:#1c6e3d;font-weight:600}
.scorehead__foot{margin-top:14px;font-size:var(--fs-sm)}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:18px}
.tile{border:1px solid var(--line-2);border-top:4px solid var(--surface-3);border-radius:12px;padding:14px 8px;text-align:center;background:var(--surface-2,#fff)}
.tile--high{border-top-color:var(--high,#2e9e5b)} .tile--mid{border-top-color:var(--mid,#d99a24)} .tile--low{border-top-color:var(--low,#c0392b)} .tile--na{border-top-color:var(--surface-3)}
.tile__num{font-family:var(--serif);font-size:34px;font-weight:700;color:var(--ink);line-height:1}
.tile--high .tile__num{color:#1c6e3d} .tile--mid .tile__num{color:#a86a12} .tile--low .tile__num{color:#8f2318}
.tile--na{background:var(--surface-2,#f6f7fb)} .tile--na .tile__num{color:var(--muted);font-size:26px} .tile--na .tile__label{color:var(--muted)}
.tile__den{font-size:var(--fs-sm);color:var(--muted);margin-top:2px}
.tile__label{font-size:var(--fs-sm);color:var(--ink);margin-top:8px;line-height:1.25}
@media(max-width:820px){.orgcard{grid-template-columns:1fr}}
/* Гранты */
.grants__sum{display:flex;gap:22px;flex-wrap:wrap;margin:6px 0 14px}
.grants__sum b{font-family:var(--serif);font-size:24px;color:var(--ink);display:block}
.grants__sum span{font-size:var(--fs-sm);color:var(--muted)}
/* Фиксированная раскладка: длинное название проекта растягивало колонку и выдавливало
   сумму за край карточки. */
.grants-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);table-layout:fixed}
.grants-table td{overflow-wrap:anywhere}
.grants-table th:nth-child(1),.grants-table td:nth-child(1){width:62px}
.grants-table th:nth-child(3),.grants-table td:nth-child(3){width:30%}
.grants-table th:nth-child(4),.grants-table td:nth-child(4){width:128px;white-space:nowrap}
.grants-table th,.grants-table td{padding:9px 8px;border-bottom:1px solid var(--line-2);text-align:left;vertical-align:top}
.grants-table th{color:var(--muted);font-weight:600;font-size:var(--fs-sm);text-transform:uppercase;letter-spacing:.03em}
.grants-table td.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.block{margin-top:18px}
.block--tight{margin-top:8px}
.kv{display:grid;grid-template-columns:1fr auto;gap:6px 16px;font-size:var(--fs-sm)}
.kv dt{color:var(--muted)} .kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.source-link{font-size:var(--fs-sm);color:var(--muted-2)}
.fin-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.fin-table th,.fin-table td{padding:8px;border-bottom:1px solid var(--line-2);text-align:right}
.fin-table th:first-child,.fin-table td:first-child{text-align:left}

/* ---------- CTA ---------- */
.cta{position:relative;overflow:hidden;background:linear-gradient(135deg,#2c2a63,#1B1A4A);color:#fff;border-radius:var(--radius);padding:clamp(24px,3vw,38px);
  display:flex;gap:22px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cta::before{content:'';position:absolute;right:-60px;top:-60px;width:280px;height:280px;
  background:radial-gradient(circle,rgba(91,108,201,.4),transparent 68%);pointer-events:none}
.cta__body{position:relative;max-width:560px}
.cta__kicker{font-size:var(--fs-sm);letter-spacing:2.5px;color:var(--indigo-light);font-weight:700;margin-bottom:10px}
.cta h3{color:#fff;margin:0 0 4px;position:relative}
.cta p{color:#c9c8de;margin:0;position:relative}
.cta .btn{position:relative;display:inline-flex;align-items:center;gap:11px;padding:15px 28px;border-radius:11px;flex:none}
.cta__icon{width:24px;height:24px;border-radius:50%;background:#fff;color:var(--indigo);display:flex;align-items:center;justify-content:center;font-size:15px;flex:none}

/* ---------- states ---------- */
.state{padding:40px 16px;text-align:center;color:var(--muted)}
.skeleton{background:linear-gradient(90deg,var(--surface-3),#f6f7fb,var(--surface-3));background-size:200% 100%;animation:sk 1.2s infinite;border-radius:8px;height:16px}
@keyframes sk{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* ---------- pagination ---------- */
.pager{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:22px}
.pager a,.pager span{padding:8px 13px;border:1px solid var(--line);border-radius:9px;color:var(--text);font-size:var(--fs-sm)}
.pager a[aria-current="page"],.pager span[aria-current="page"]{background:var(--indigo);color:#fff;border-color:var(--indigo)}

/* ---------- breadcrumbs ---------- */
.crumbs{font-size:var(--fs-sm);color:var(--muted);padding:14px 0}
.crumbs a{color:var(--muted)} .crumbs span{color:var(--text)}

/* ---------- footer ---------- */
.site-footer{background:var(--navy);color:#b7b6cf;margin-top:auto;padding:0}
.site-footer a{color:#d5d8e6}
.site-footer__top{max-width:var(--maxw);margin:0 auto;padding:38px clamp(16px,4vw,28px) 26px;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:28px}
.site-footer__logo{height:34px;width:auto;display:block;margin-bottom:14px}
.site-footer__desc{font-size:var(--fs-sm);line-height:1.6;color:#9a99c0;max-width:280px}
.site-footer__heading a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.site-footer__heading{font-size:var(--fs-sm);letter-spacing:1.5px;color:#a9a7cf;font-weight:700;margin-bottom:13px;text-transform:uppercase}
.site-footer__heading--spaced{margin-top:14px}
.site-footer__links{display:flex;flex-direction:column}
.site-footer__links a{display:block;color:#cfcee0;font-size:var(--fs-sm);padding:5px 0}
.site-footer__links a:hover{color:#fff;text-decoration:none}
/* Цвет ссылок футера перекрывал белый на кнопке — задаём явно. */
.site-footer a.site-footer__tg,
.site-footer__tg{display:inline-flex;align-items:center;gap:9px;background:var(--indigo);color:#fff;border-radius:9px;padding:11px 16px;font-size:var(--fs-sm);font-weight:700}
.site-footer__tg:hover{color:#fff;filter:brightness(1.08);text-decoration:none}
.site-footer__tg-icon{width:20px;height:20px;border-radius:50%;background:#fff;color:var(--indigo);display:flex;align-items:center;justify-content:center;font-weight:700;font-size:var(--fs-sm);flex:none}
.site-footer__handle{font-size:var(--fs-sm);color:#9a99c0;margin-top:10px}
.site-footer__bottom{border-top:1px solid rgba(255,255,255,.1)}
.site-footer__bottom-inner{max-width:var(--maxw);margin:0 auto;padding:15px clamp(16px,4vw,28px);display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px;font-size:var(--fs-sm);color:#a9a7cf}
.site-footer__bottom-inner a{color:#cfceea;text-decoration:underline;text-underline-offset:2px}
.page{display:flex;flex-direction:column;min-height:100vh}
main{flex:1}

/* ---------- prose ---------- */
.prose{max-width:820px;font-size:17px;line-height:1.7;color:var(--ink)}
.prose>h1{font-size:38px;line-height:1.15;margin:0 0 24px}
.prose .lead{font-size:20px;line-height:1.5;color:var(--navy)}
.prose h2{font-family:var(--serif);font-size:24px;margin:1.7em 0 .5em;padding-top:.4em;color:var(--navy)}
.prose h3{font-size:19px;margin:1.3em 0 .4em}
.prose p{margin:0 0 1.1em}
.prose ul,.prose ol{padding-left:22px;margin:0 0 1.1em}
.prose li{margin:.35em 0}
.prose a{color:var(--indigo)}
.prose blockquote{margin:1.4em 0;padding:14px 22px;border-left:4px solid var(--indigo);background:var(--surface-2,#f6f7fb);border-radius:0 10px 10px 0;color:var(--ink)}
.prose strong{color:var(--navy)}
.content-page{padding:34px 40px}
.content-page .muted{margin-top:2em;font-size:var(--fs-sm);border-top:1px solid var(--line-2);padding-top:14px}
@media(max-width:640px){.content-page{padding:22px 18px}.prose>h1{font-size:28px}}

/* ---------- forms (public) ---------- */
.form-inline{display:flex;gap:8px;flex-wrap:wrap}
.form-inline input,.form-inline select{padding:10px 12px;border:1px solid var(--line);border-radius:9px;font-size:var(--fs-sm)}
.notice{background:var(--high-bg);color:#1c6e3d;border-radius:10px;padding:12px 16px;margin-bottom:16px}

/* ---------- search ---------- */
.search-wrap{position:relative;max-width:640px}
.search-wrap input{width:100%;padding:14px 16px;border:1px solid var(--line);border-radius:12px;font-size:16px}
.search-results{position:absolute;left:0;right:0;top:calc(100% + 6px);background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-lg);z-index:30;overflow:hidden;max-height:60vh;overflow-y:auto}
.search-item{display:flex;gap:12px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line-2);color:var(--text)}
.search-item:hover{background:var(--surface-2);text-decoration:none}
.is-loading{opacity:.5;transition:opacity .2s}

/* ---------- compare ---------- */
.compare-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm)}
.compare-table th,.compare-table td{padding:12px;border-bottom:1px solid var(--line-2);text-align:center;vertical-align:top}
.compare-table th:first-child,.compare-table td:first-child{text-align:left;color:var(--muted)}
.overflow-x{overflow-x:auto}
details.data-form{border:1px solid var(--line);border-radius:12px;padding:12px 16px;margin-top:12px}
details.data-form summary{cursor:pointer;font-weight:700;color:var(--purple)}

/* ---- UX-правки оформления (поле поиска, крошки под героем, стрелка в бейдже, переполнение) ---- */
.site-header__search{padding:6px 12px}
.site-header__search input{background:transparent;border:0;outline:0;color:#fff;font:inherit;font-size:var(--fs-sm);width:160px;max-width:42vw}
.site-header__search input::placeholder{color:#cfcee0}
.crumbs--under-hero{margin:0 0 18px}
.crumbs--under-hero a{color:var(--muted)}
.crumbs--under-hero span{color:var(--fg)}
/* стрелка тренда — внутри бейджа рядом с числом */
/* Была .5em от унаследованных 16px → 8px в блоке «Рядом в рейтинге», 10px в таблице
   рейтинга и 17px в крупном бейдже: один компонент, три разных размера, и один из них
   ниже порога читаемости. Теперь фиксированный кегль, не зависящий от контекста. */
.ri .trend{margin-left:6px;font-size:var(--fs-xs);line-height:1;color:inherit;opacity:.9;vertical-align:middle;font-weight:700}
/* переполнение: селекты/инпуты фильтров не вылезают за рамки, таблицы скроллятся */
.filters__grid,.filters__grid>*{min-width:0}
.field input,.field select{width:100%;max-width:100%;min-width:0}
.overflow-x{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}

/* ============ доработки карточки и рейтинга (июль 2026) ============ */
/* Плитки опор: буква + число в шапке */
.tile__hd{display:flex;align-items:center;justify-content:center;gap:8px}
.tile__ltr{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:6px;background:var(--surface-3);color:var(--muted);font-family:var(--sans);font-size:var(--fs-xs);font-weight:800;line-height:1}
.tile--high .tile__ltr{background:var(--high-bg);color:#1c6e3d}
.tile--mid .tile__ltr{background:var(--mid-bg);color:#a86a12}
.tile--low .tile__ltr{background:var(--low-bg);color:#8f2318}
.tile__hd .tile__num{font-size:30px}
.pillar-legend{font-size:var(--fs-xs);margin-top:14px;line-height:1.55}
.pillar-legend b{color:var(--ink)}

/* Бейдж опоры в заголовках блоков (Л/Ф/Ц) */
.pill-badge{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;font-family:var(--sans);font-weight:800;font-size:15px;color:#fff;vertical-align:middle;margin-right:2px}
.pill-badge--L{background:var(--indigo)} .pill-badge--F{background:var(--high)} .pill-badge--D{background:var(--mid)}
.pill-badge__val{font-family:var(--sans);font-size:15px;font-weight:700;color:var(--muted);margin-left:6px}
.pill-badge__val small{font-size:var(--fs-xs);font-weight:600}

/* Соцсети: иконка-код + @slug */
.soc-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}
.soc-chip{display:inline-flex;align-items:center;gap:9px;background:var(--surface-2);border:1px solid var(--line-2);border-radius:10px;padding:6px 12px 6px 6px;text-decoration:none;max-width:230px}
.soc-chip:hover{background:#fff;border-color:var(--line)}
.soc-chip__badge{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:7px;color:#fff;font-weight:800;font-size:var(--fs-xs);flex:none;font-family:var(--sans);background:var(--indigo)}
.soc-chip__txt{display:flex;flex-direction:column;min-width:0}
.soc-chip__name{font-size:var(--fs-xs);color:var(--muted);line-height:1.2}
.soc-chip__handle{font-size:var(--fs-sm);color:var(--ink);font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* Фирменные цвета площадок затемнены до порога контраста: белые буквы 13px
   на #26A5E4 давали 2.77:1 — это нечитаемо, а плашку мы ставим как подпись. */
.soc-chip--vk .soc-chip__badge{background:#0062D6}
.soc-chip--telegram .soc-chip__badge{background:#17739F}
.soc-chip--youtube .soc-chip__badge{background:#C00000}
.soc-chip--ok .soc-chip__badge{background:#A85C05}
.soc-chip--dzen .soc-chip__badge{background:#000}
.soc-chip--rutube .soc-chip__badge{background:#14141E}
.soc-chip--instagram .soc-chip__badge{background:#B32744}
.soc-chip--facebook .soc-chip__badge{background:#0F5BBD}
.soc-chip--tiktok .soc-chip__badge{background:#010101}
.soc-chip--whatsapp .soc-chip__badge{background:#25D366}
.voice-head{margin:0 0 14px}
.voice-subs{font-size:var(--fs-xs);margin-top:10px}
.voice-site{margin-top:14px;margin-bottom:0}

/* Счётчик и легенда рейтинга внутри карточки */
.rating-count{font-size:var(--fs-sm);color:var(--muted);margin-bottom:14px}
.rating-count__num{font-family:var(--serif);font-size:22px;font-weight:700;color:var(--ink);margin-right:5px}
.rating-legend{font-size:var(--fs-xs);margin:14px 0 0;line-height:1.55}
.rating-legend b{color:var(--ink)}

/* Левый сайдбар навигации по направлениям и округам */
.rating-nav__inner{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 18px}
.rating-nav__group{margin-bottom:20px}
.rating-nav__title{font-size:var(--fs-xs);letter-spacing:1.2px;text-transform:uppercase;color:var(--muted-2);font-weight:800;margin-bottom:8px}
.rating-nav__link{display:block;padding:7px 11px;border-radius:8px;color:var(--text);font-size:var(--fs-sm);line-height:1.3}
.rating-nav__link:hover{background:var(--surface-2);text-decoration:none}
.rating-nav__link.is-active{background:var(--purple);color:#fff;font-weight:700}
.rating-nav__filters{border-top:1px solid var(--line-2);padding-top:12px}
.rating-nav__filters summary{cursor:pointer;font-weight:700;font-size:var(--fs-sm);color:var(--muted);padding:4px 0}
.rating-nav__filters .filters{margin-top:12px}
.section__head--nav{display:none}
@media(min-width:721px){
  .rating-nav{flex:0 0 250px;min-width:230px;max-width:270px;margin:0}
}
@media(max-width:720px){
  .rating-nav{position:fixed;inset:0;background:rgba(20,19,55,.5);z-index:60;display:none;padding:0}
  .rating-nav.is-open{display:block}
  .rating-nav__inner{position:absolute;right:0;top:0;bottom:0;width:min(90%,340px);border-radius:0;overflow:auto}
  .section__head--nav{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
  .section__head--nav h3{font-family:var(--sans);font-size:var(--fs-sm);letter-spacing:1.5px;color:var(--muted);text-transform:uppercase;margin:0}
}

/* Модальное окно (<dialog>) */
.modal{border:0;border-radius:var(--radius);padding:0;max-width:560px;width:calc(100% - 32px);box-shadow:var(--shadow-lg);background:#fff;color:var(--text)}
.modal::backdrop{background:rgba(20,19,55,.55)}
.modal__box{padding:22px 24px 26px}
.modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:4px}
.modal__head h3{margin:0}
.modal__close{background:transparent;border:0;font-size:28px;line-height:1;color:var(--muted);cursor:pointer;padding:0 4px}
.modal__close:hover{color:var(--ink)}

/* Карточки «Рядом в рейтинге» */
.neighbor-card{display:block}
.neighbor-card:hover{text-decoration:none}
.neighbor-card__top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.neighbor-card__top b{font-size:15px;color:var(--ink);line-height:1.25}

/* ---- Финансовый КПД на карточке: иерархия вместо плоского списка ----
   Ключевая цифра опоры набиралась тем же 15px, что и подпись к ней, а рядом
   «Цифровая открытость» показывала свой балл в 34px. Здесь — тот же вес. */
/* Крупная цифра висела прямо под заголовком «Финансовый КПД 99/100» без всякой границы —
   два разных числа подряд («99/100» и «87,7%») читались как одно нечитаемое пятно.
   Обособили тем же приёмом, что и openness-hero: число в плашке со своим фоном,
   отдельно от заголовка секции, с короткой подписью над числом. */
.fin-hero{display:flex;align-items:center;gap:16px;margin:14px 0 16px;padding:14px 16px;
  background:var(--surface-2);border-radius:14px}
.fin-hero__val{font-family:var(--serif);font-weight:700;font-size:34px;line-height:1;letter-spacing:-.5px;white-space:nowrap}
.fin-hero__val--high{color:#1c6e3d}.fin-hero__val--mid{color:#8a5a00}
.fin-hero__val--low{color:#94322d}.fin-hero__val--na{color:var(--muted-2)}
.fin-hero__cap{font-size:var(--fs-sm);color:var(--muted);line-height:1.4;max-width:44ch}
.fin-hero__eyebrow{display:block;font-size:var(--fs-xs);letter-spacing:.5px;text-transform:uppercase;color:var(--muted-2);margin-bottom:2px}
.fin-hero__norm{display:block;color:var(--muted-2);font-size:var(--fs-xs);margin-top:3px}
.kv--lead dt{display:flex;flex-direction:column;gap:2px}
.kv__hint{color:var(--muted-2);font-size:var(--fs-xs);font-weight:400;line-height:1.35}
.kv--lead dd{font-weight:700;font-size:var(--fs-md)}
.src-note{font-size:var(--fs-xs);color:var(--muted-2);margin-top:10px}
.fin-table thead th{position:sticky;top:0;background:#fff}

/* ---- Опубликованные документы: компонент, а не «пилюли» ----
   Документы — действие (скачать отчёт), а статусы «да/нет» — состояние. Раньше и то,
   и другое рисовалось одним .chip 14px, и самый сильный сигнал открытости выглядел
   как булев флаг. Плюс цвет пилюли был захардкожен мимо палитры. */
.doclist{list-style:none;padding:0;margin:10px 0 0;display:grid;gap:8px}
@media(min-width:640px){.doclist{grid-template-columns:1fr 1fr}}
.doclist__item a{display:block;padding:11px 14px;border:1px solid var(--line);border-radius:10px;
  background:#fff;text-decoration:none;color:var(--ink);border-left:3px solid var(--indigo)}
.doclist__item a:hover{border-color:var(--indigo-light);background:var(--surface-3)}
.doclist__item--annual_report a{border-left-color:#1c7d3f}
.doclist__item--finance a{border-left-color:#8a5a00}
.doclist__item--charter a{border-left-color:var(--indigo)}
.doclist__kind{display:block;font-weight:700;font-size:var(--fs-md)}
.doclist__meta{display:block;color:var(--muted);font-size:var(--fs-xs);margin-top:2px}
.doclist__more{color:var(--muted);font-size:var(--fs-sm);align-self:center}

/* ---- Корзина сравнения ----
   Панель появляется, как только отмечена хотя бы одна организация. Раньше собрать
   две НКО можно было только вручную дописав параметры в адрес: кнопка на карточке
   заменяла выбор, а в таблице рейтинга отметок не было вовсе. */
.rating-table__cmp{width:34px;text-align:center}
.rating-table__cmp input{width:17px;height:17px;cursor:pointer;accent-color:var(--indigo)}
.cmp-bar{position:fixed;left:50%;transform:translateX(-50%);bottom:18px;z-index:60;
  display:flex;align-items:center;gap:12px;background:var(--navy);color:#fff;
  padding:12px 18px;border-radius:14px;box-shadow:0 12px 32px rgba(27,26,74,.32);
  font-size:var(--fs-sm);max-width:calc(100vw - 24px)}
.cmp-bar__count{white-space:nowrap}
.cmp-bar__count b{font-size:var(--fs-md)}
.cmp-bar .btn--ghost{color:#cfcee0;border-color:rgba(255,255,255,.35)}
.cmp-bar .btn--ghost:hover{background:rgba(255,255,255,.12)}
@media(max-width:720px){.rating-table__cmp{width:auto}.cmp-bar{flex-wrap:wrap;justify-content:center}}

/* ---- Страница сравнения ----
   Раньше это была одна таблица 14px по центру, без цветовых зон (те же баллы в рейтинге
   раскрашены), без выделения лучшего и худшего, без мобильной вёрстки — колонка с
   названиями строк просто уезжала за экран. */
.compare-table__lbl{text-align:left;color:var(--muted);font-weight:400;position:sticky;left:0;
  background:#fff;min-width:190px;z-index:2}
.compare-table__hint{display:block;font-size:var(--fs-xs);color:var(--muted-2);line-height:1.3}
.compare-table__inn{font-size:var(--fs-xs);font-weight:400}
.compare-table__hero td{padding-top:10px;padding-bottom:10px}
.compare-table__sep td{background:var(--surface-3);font-weight:700;color:var(--ink);
  text-align:left;letter-spacing:.4px;font-size:var(--fs-xs);text-transform:uppercase}
.compare-table td.cmp--best{background:#eaf6ef;font-weight:700}
.compare-table td.cmp--worst{background:#fbeeed}
.compare-table__rm{display:block;margin:4px auto 0;background:none;border:0;color:var(--muted-2);
  font:inherit;font-size:var(--fs-xs);cursor:pointer;text-decoration:underline}
.compare-table__rm:hover{color:var(--low)}


/* Ссылки внутри приглушённого текста подчёркиваем: отличать их одним лишь цветом
   нельзя (WCAG 1.4.1) — при дальтонизме и на монохромной печати они пропадают. */
.muted a, .rating-legend a, .pillar-legend a, .scorehead__foot a, .src-note a{
  text-decoration:underline; text-underline-offset:2px}

/* Юридическая гигиена сайта: факты, а не приговор — поэтому нейтральная разметка
   с цветной меткой слева, а не «красный список нарушений». */
.legal-list{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.legal-list__item{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:baseline;
  padding:10px 14px;border:1px solid var(--line-2);border-radius:var(--radius-sm);background:var(--surface);
  border-left:4px solid var(--line)}
.legal-list__item--pass{border-left-color:var(--high)}
.legal-list__item--warn{border-left-color:var(--mid)}
.legal-list__item--fail{border-left-color:var(--low)}
.legal-list__t{font-weight:700;font-size:var(--fs-md);grid-column:1/-1}
.legal-list__n{grid-column:1/-1;color:var(--muted);font-size:var(--fs-sm);line-height:1.4}
.legal-list__v{font-weight:400;color:var(--muted)}

/* Список регионов внутри выбранного округа — второй уровень навигации по рейтингу. */
.rating-nav__sub{margin:2px 0 8px 10px;padding-left:10px;border-left:2px solid var(--line-2)}
.rating-nav__link--sub{font-size:var(--fs-sm);padding-top:5px;padding-bottom:5px}
.content-hero__sub{color:rgba(255,255,255,.82);font-size:var(--fs-lg);margin-top:8px;max-width:70ch}


/* Техническая гигиена: раньше блок был спрятан под спойлер, хотя на странице полно места.
   Три колонки — читается одним взглядом и не требует клика. */
.tech-grid{display:grid;gap:10px;grid-template-columns:1fr}
@media(min-width:720px){.tech-grid{grid-template-columns:repeat(3,1fr)}}
.tech-grid .kv{margin:0}
.tech-cell{border:1px solid var(--line-2);border-radius:var(--radius-sm);padding:12px 14px;background:var(--surface)}
.tech-cell__t{color:var(--muted);font-size:var(--fs-sm);margin-bottom:4px}
.tech-cell__v{font-weight:700;font-size:var(--fs-lg)}

/* Последние публикации. Раньше это был голый список с тонкими разделительными
   линиями — на фоне карточек с цветными плашками и диаграммами выглядел как
   нечитаемый обрывок текста, а не как раздел карточки. Теперь каждая публикация —
   строка своей карточки: издание вынесено в отдельную плашку, дата — рядом,
   заголовок остаётся главным элементом. */
.newslist{list-style:none;padding:0;margin:0;display:grid;gap:8px}
.newslist__item{padding:12px 14px;border-radius:var(--radius-sm);background:var(--surface-2);
  transition:background .15s}
.newslist__item:hover{background:var(--surface-3)}
.newslist__item a{font-size:var(--fs-md);font-weight:600;line-height:1.4;color:var(--ink)}
.newslist__item a:hover{color:var(--indigo);text-decoration:none}
.newslist__meta{display:flex;align-items:center;gap:8px;margin-top:6px}
.newslist__src{display:inline-block;font-size:var(--fs-xs);font-weight:700;color:var(--muted-2);
  background:var(--surface);border:1px solid var(--line-2);border-radius:5px;padding:2px 7px}
.newslist__date{color:var(--muted);font-size:var(--fs-sm)}

/* Полнота данных вынесена из мелкой подписи в заметный блок: при низкой полноте
   индекс занижен, и читатель должен понимать, что низкая оценка значит «мало данных»,
   а не «плохая организация». */
.completeness{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;margin-top:14px;
  padding:12px 14px;border-radius:var(--radius-sm);border:1px solid var(--line-2);background:var(--surface-2)}
.completeness__val{font-family:var(--serif);font-weight:700;font-size:var(--fs-xl);line-height:1.1}
.completeness__cap{font-size:var(--fs-sm);line-height:1.4;color:var(--muted)}
.completeness__cap b{color:var(--ink)}
.completeness--low{border-color:#e6c9c6;background:var(--low-bg)}
.completeness--low .completeness__val{color:var(--low)}
.completeness--mid{border-color:#e8dcc0;background:var(--mid-bg)}
.completeness--mid .completeness__val{color:#8a5a00}
.completeness--ok .completeness__val{color:var(--high)}

/* Ссылка направления в тёмной шапке карточки была синей на тёмно-синем — не читалась. */
.orgcard-hero__sub a{color:#cfceea;text-decoration:underline;text-underline-offset:3px}
.orgcard-hero__sub a:hover{color:#fff}
.rating-nav__more summary{cursor:pointer;padding:8px 12px;color:var(--indigo);font-size:var(--fs-sm)}
