/* Раздел /research: хаб и страницы исследований.
   Токены из board/css/tokens.css, карточки-контейнеры как у справочника /firms
   (белые, радиус 20 px, мягкая тень, промежуток 24 px). Mobile-first. Таблицы
   прокручиваются внутри своей обертки, страница по горизонтали не прокручивается.
   У промежутка между блоками один владелец: gap родителя (.rs-main, .rs-stack). */

.rs-page {
    --rs-heat-rgb: 10, 88, 202;     /* --tp-link: шкала месяцев и столбцы графика */
    /* Насыщенность ячейки не выше 0,6: на самой темной ячейке текст --tp-ink дает 5,6:1,
       белый текст на средних ячейках давал около 3:1, поэтому светлого текста в шкале нет. */
    --rs-heat-max: .6;
    --rs-pad: 20px;
    --rs-gap: var(--tp-5);
}
@media (min-width: 768px) { .rs-page { --rs-pad: var(--tp-6); } }

.rs { padding-top: var(--rs-gap); padding-bottom: var(--tp-7); }
.rs a:not([class]) { color: var(--tp-link); text-underline-offset: .15em; }

/* --- Сетка: основная колонка и колонка «Об исследовании» --- */
.rs-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--rs-gap); align-items: start; }
.rs-main, .rs-stack { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--rs-gap); min-width: 0; }
.rs-aside { min-width: 0; }
@media (min-width: 1200px) {
    .rs-grid { grid-template-columns: minmax(0, 1fr) 288px; }
    .rs-aside { position: sticky; top: var(--tp-4); }
}

/* --- Карточка-контейнер раздела --- */
.rs-box { box-sizing: border-box; min-width: 0; margin: 0; padding: var(--rs-pad); background: var(--tp-surface);
          border-radius: var(--tp-r-lg2); box-shadow: var(--tp-shadow-card); scroll-margin-top: var(--tp-4); }
.rs-box > :last-child { margin-bottom: 0; }
.rs-box__head { margin-bottom: var(--tp-4); }
.rs-box__head > :last-child { margin-bottom: 0; }

.rs-h2 { margin: 0 0 var(--tp-3); color: var(--tp-ink); font-size: 1.25rem; font-weight: 700; line-height: 1.25; }
@media (min-width: 768px) { .rs-h2 { font-size: var(--tp-fs-xl2); } }
.rs-h3 { margin: var(--tp-5) 0 var(--tp-3); color: var(--tp-ink); font-size: var(--tp-fs-lg); font-weight: 600; line-height: 1.35; }
.rs-pair__col > .rs-h3:first-child, .rs-featured > .rs-h3:first-child { margin-top: 0; }

.rs-text { max-width: 72ch; margin: 0 0 var(--tp-4); color: var(--tp-ink); font-size: var(--tp-fs-md); line-height: 1.6; }
.rs-text--note { margin-top: var(--tp-3); color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); line-height: 1.5; }
.rs-list { max-width: 72ch; margin: 0; padding-left: 1.25em; color: var(--tp-ink); line-height: 1.55; }
.rs-list li + li { margin-top: var(--tp-2); }

/* H1 в синей шапке: без переносов по слогам («выбо-ра», «экскур-сии» на 390 px), слово
   переносится целиком; общий hyphens: auto шапки нужен для «Достопримечательностей». */
.rs-page .tp-sh__h1 { hyphens: manual; text-wrap: balance; }

/* --- Строка сведений в синей шапке --- */
.rs-meta { display: flex; flex-wrap: wrap; gap: var(--tp-1) 0; margin: var(--tp-4) 0 0; padding: 0; list-style: none;
           color: var(--tp-sh-ink); font-size: var(--tp-fs-sm); line-height: 1.5; }
.rs-meta li { display: block; }
/* Разделитель в конце пункта: при переносе точка остается в конце строки, а не в начале следующей. */
.rs-meta li:not(:last-child)::after { content: "·"; display: inline-block; width: 24px; text-align: center; opacity: .7; }
.rs-meta a { display: inline-flex; align-items: center; min-height: 24px; color: var(--tp-sh-ink); text-decoration: underline;
             text-underline-offset: .15em; }
.rs-meta a:hover { color: var(--tp-sh-ink); text-decoration-thickness: 2px; }

/* --- Ключевые цифры --- */
.rs-keys { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tp-3); margin: 0 0 var(--tp-5); padding: 0;
           list-style: none; }
@media (min-width: 768px) { .rs-keys { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.rs-key { display: flex; flex-direction: column; gap: var(--tp-1); min-width: 0; padding: var(--tp-4); background: var(--tp-surface-tint);
          border-radius: var(--tp-r-md); }
.rs-key__value { color: var(--tp-ink); font-size: clamp(1.25rem, 4.6vw, 1.75rem); font-weight: 700; line-height: 1.15;
                 font-variant-numeric: tabular-nums; overflow-wrap: break-word; }
/* Длинное значение (название города) на телефоне занимает всю строку, а не рвется по буквам. */
/* Одна широкая плитка из четырех: последняя тоже на всю строку, чтобы не висела половинкой. */
@media (max-width: 767.98px) {
    .rs-key--wide { grid-column: 1 / -1; }
    .rs-keys:has(> .rs-key--wide:first-child) > .rs-key:last-child:nth-child(4) { grid-column: 1 / -1; }
}
@media (min-width: 768px) { .rs-key__value { font-size: clamp(1.25rem, 2vw, 1.75rem); } }
.rs-key__label { color: var(--tp-ink); font-size: var(--tp-fs-sm); line-height: 1.4; }
.rs-key__note { margin-top: auto; padding-top: var(--tp-1); color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); line-height: 1.4; }

/* --- Выводы: нумерованный список, номер в кружке --- */
.rs-findings { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-4) var(--tp-6); margin: 0; padding: 0;
               list-style: none; counter-reset: rs-finding; }
@media (min-width: 992px) { .rs-findings { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rs-findings li { position: relative; min-height: 28px; padding-left: 40px; color: var(--tp-ink); font-size: var(--tp-fs-md);
                  line-height: 1.55; counter-increment: rs-finding; }
.rs-findings li::before { content: counter(rs-finding); position: absolute; left: 0; top: -1px; display: flex; align-items: center;
                          justify-content: center; width: 28px; height: 28px; border-radius: 50%; background: var(--tp-surface-accent);
                          color: var(--tp-link); font-size: var(--tp-fs-sm); font-weight: 700; font-variant-numeric: tabular-nums; }

/* --- Таблицы --- */
.rs-scroll { overflow: auto; -webkit-overflow-scrolling: touch; overscroll-behavior-x: contain; border: 1px solid var(--tp-border);
             border-radius: var(--tp-r-md); background: var(--tp-surface); }
.rs-scroll--tall { max-height: min(72vh, 640px); }
.rs-scroll:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.rs-table { width: 100%; margin: 0; border-collapse: separate; border-spacing: 0; color: var(--tp-ink); font-size: var(--tp-fs-sm); }
.rs-table th, .rs-table td { padding: 10px var(--tp-3); border-bottom: 1px solid var(--tp-border); text-align: left;
                             vertical-align: middle; white-space: nowrap; background-clip: padding-box; }
.rs-table tbody tr:last-child > * { border-bottom: 0; }
.rs-table thead th { position: sticky; top: 0; z-index: 2; padding-top: var(--tp-3); padding-bottom: var(--tp-3);
                     background: var(--tp-surface-tint); color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 600;
                     line-height: 1.3; }
.rs-table tbody th { font-weight: 600; }
.rs-table tbody tr:hover > * { background-color: var(--tp-surface-tint); }
.rs-table tbody tr:hover > .rs-heat__cell { background-color: rgba(var(--rs-heat-rgb), calc(var(--rs-heat, 0) * var(--rs-heat-max))); }
.rs-table .is-num { text-align: right; font-variant-numeric: tabular-nums; }
.rs-table a { color: var(--tp-link); text-underline-offset: .15em; }
.rs-sub { display: block; margin-top: 2px; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 400; line-height: 1.3; }
.rs-big { display: block; font-size: var(--tp-fs-lg); font-weight: 700; line-height: 1.2; }
.rs-table--compare td, .rs-table--compare tbody th { padding-top: var(--tp-3); padding-bottom: var(--tp-3); }

/* Столбец с названием закреплен при прокрутке вбок: на телефоне таблица шире экрана. */
.rs-table tbody th[scope="row"], .rs-table thead th.is-sticky { position: sticky; left: 0; background-color: var(--tp-surface);
                                                              box-shadow: inset -1px 0 0 var(--tp-border); }
.rs-table thead th.is-sticky { z-index: 3; background-color: var(--tp-surface-tint); }
.rs-table tbody th[scope="row"] { z-index: 1; min-width: 150px; max-width: 220px; white-space: normal; }
.rs-table--compare tbody th[scope="row"] { position: static; box-shadow: none; }
.rs-heat__cell { min-width: 44px; background-color: rgba(var(--rs-heat-rgb), calc(var(--rs-heat, 0) * var(--rs-heat-max))); }

.rs-sort { all: unset; box-sizing: border-box; display: inline-flex; align-items: center; gap: 4px; min-height: 24px; cursor: pointer; }
.rs-sort:hover { color: var(--tp-ink); }
.rs-sort:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: 2px; }
.rs-sort::after { content: ''; flex: none; width: 0; height: 0; border-left: 4px solid transparent; border-right: 4px solid transparent;
                  border-top: 5px solid currentColor; opacity: .35; }
th[aria-sort="ascending"] .rs-sort, th[aria-sort="descending"] .rs-sort { color: var(--tp-ink); }
th[aria-sort="ascending"] .rs-sort::after { opacity: 1; border-top: 0; border-bottom: 5px solid currentColor; }
th[aria-sort="descending"] .rs-sort::after { opacity: 1; }

/* Балл рейтинга: число и полоса в одной строке */
.rs-score { display: inline-flex; align-items: center; justify-content: flex-end; gap: var(--tp-2); }
.rs-score__track { display: block; width: 56px; height: 6px; border-radius: var(--tp-r-pill); background: var(--tp-surface-accent);
                   overflow: hidden; }
.rs-score__bar { display: block; height: 100%; border-radius: inherit; background: var(--tp-link); }

/* --- Панель над таблицей: фильтр и легенда --- */
.rs-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--tp-3); margin: 0 0 var(--tp-3); }
.rs-tools > .rs-filter { margin: 0; }
.rs-filter { display: flex; flex-wrap: wrap; gap: var(--tp-2); margin: 0 0 var(--tp-3); }
.rs-filter[hidden] { display: none; }
.rs-filter__btn { min-height: 40px; padding: 0 var(--tp-4); border: 1px solid var(--tp-border-strong); border-radius: var(--tp-r-pill);
                  background: var(--tp-surface); color: var(--tp-ink); font: inherit; font-size: var(--tp-fs-sm); font-weight: 500;
                  cursor: pointer; }
.rs-filter__btn:hover { background: var(--tp-btn-soft-hover); }
.rs-filter__btn:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.rs-filter__btn.is-active { background: var(--tp-ink); border-color: var(--tp-ink); color: var(--tp-surface); }
.rs-legend { display: flex; flex-wrap: wrap; align-items: center; gap: var(--tp-2); margin: 0; color: var(--tp-ink-muted);
             font-size: var(--tp-fs-xs); line-height: 1.4; }
.rs-legend__scale { display: inline-block; width: 96px; height: 10px; border: 1px solid var(--tp-border); border-radius: var(--tp-r-pill);
                    background: linear-gradient(to right, rgba(var(--rs-heat-rgb), 0), rgba(var(--rs-heat-rgb), var(--rs-heat-max))); }

/* --- Списки с полосой: крайние города, лидеры, текущий месяц --- */
.rs-pair { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-5); }
@media (min-width: 768px) { .rs-pair { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--tp-6); } }
.rs-ranked { margin: 0; padding: 0; list-style: none; }
.rs-ranked__item { display: grid; grid-template-columns: 24px minmax(0, 1fr) auto; column-gap: var(--tp-3); row-gap: 6px;
                   align-items: baseline; padding: 10px 0; border-bottom: 1px solid var(--tp-border); }
.rs-ranked__item:first-child { padding-top: 0; }
.rs-ranked__item:last-child { border-bottom: 0; padding-bottom: 0; }
.rs-ranked__n { color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-variant-numeric: tabular-nums; }
.rs-ranked__name { min-width: 0; color: var(--tp-ink); font-weight: 600; line-height: 1.35; overflow-wrap: break-word; }
.rs-ranked__sub { display: block; margin-top: 2px; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 400; }
.rs-ranked__value { color: var(--tp-ink); font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rs-ranked__track { grid-column: 2 / 4; display: block; height: 6px; border-radius: var(--tp-r-pill); background: var(--tp-surface-accent);
                    overflow: hidden; }
.rs-ranked__bar { display: block; height: 100%; border-radius: inherit; background: var(--tp-link); }

/* --- Столбцы сезона: общая шкала, пунктир на уровне 100 --- */
.rs-charts { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-6); margin: 0 0 var(--tp-2); }
@media (min-width: 768px) { .rs-charts { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rs-chart { min-width: 0; margin: 0; }
.rs-chart__title { color: var(--tp-ink); font-weight: 700; line-height: 1.35; }
.rs-chart__sub { display: block; margin-top: 2px; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); font-weight: 400; }
.rs-chart__plot { position: relative; height: 180px; margin: var(--tp-6) 0 28px; border-bottom: 1px solid var(--tp-border-strong); }
.rs-chart__base { position: absolute; left: 0; right: 0; z-index: 1; border-top: 1px dashed var(--tp-ink-muted); pointer-events: none; }
.rs-chart__base span { position: absolute; left: 0; bottom: 2px; color: var(--tp-ink-muted); font-size: 11px; line-height: 1; }
.rs-bars { position: absolute; top: 0; right: 0; bottom: 0; left: 28px; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr));
           gap: 4px; margin: 0; padding: 0; list-style: none; }
.rs-bars__item { position: relative; display: flex; align-items: flex-end; min-width: 0; height: 100%; }
.rs-bars__bar { position: relative; display: block; width: 100%; min-height: 2px; border-radius: 3px 3px 0 0;
                background: rgba(var(--rs-heat-rgb), .28); }
.rs-bars__item.is-above .rs-bars__bar { background: var(--tp-link); }
.rs-bars__item.is-current .rs-bars__bar { box-shadow: 0 0 0 2px var(--tp-surface), 0 0 0 4px var(--tp-ink); }
.rs-bars__value { position: absolute; bottom: 100%; left: 50%; margin-bottom: 4px; transform: translateX(-50%); color: var(--tp-ink);
                  font-size: 11px; line-height: 1; font-variant-numeric: tabular-nums; white-space: nowrap; }
.rs-bars__label { position: absolute; top: 100%; left: 50%; margin-top: 6px; transform: translateX(-50%); color: var(--tp-ink-muted);
                  font-size: 11px; line-height: 1; white-space: nowrap; }
.rs-bars__item.is-current .rs-bars__label { color: var(--tp-ink); font-weight: 700; }
@media (min-width: 576px) { .rs-bars__value, .rs-bars__label { font-size: var(--tp-fs-xs); } }
.rs-swatch { display: inline-block; width: 12px; height: 12px; margin: 0 6px -1px 0; border-radius: 3px;
             background: rgba(var(--rs-heat-rgb), .28); }
.rs-swatch--above { background: var(--tp-link); }
.rs-text--note .rs-swatch:not(:first-child) { margin-left: var(--tp-3); }

/* --- Месяцы: текущий крупно, остальные карточками --- */
.rs-featured { margin: 0 0 var(--tp-5); padding: var(--tp-4) 20px 20px; background: var(--tp-surface-tint); border-radius: var(--tp-r-md); }
.rs-featured .rs-ranked__item { border-bottom-color: var(--tp-border-strong); }
.rs-featured .rs-ranked__track { background: var(--tp-surface); }
@media (min-width: 768px) {
    .rs-featured .rs-ranked { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: repeat(5, auto);
                              grid-auto-flow: column; column-gap: var(--tp-6); }
    .rs-featured .rs-ranked__item:nth-child(5n + 1) { padding-top: 0; }
    .rs-featured .rs-ranked__item:nth-child(5n) { border-bottom: 0; padding-bottom: 0; }
}
.rs-months { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 148px), 1fr)); gap: var(--tp-3); }
@media (min-width: 768px) { .rs-months { grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); } }
.rs-month { min-width: 0; padding: var(--tp-3) var(--tp-3) var(--tp-4); border: 1px solid var(--tp-border); border-radius: var(--tp-r-md); }
.rs-month__title { margin: 0 0 var(--tp-2); color: var(--tp-ink); font-size: var(--tp-fs-md); font-weight: 700; line-height: 1.35; }
/* Число городов строкой под месяцем: в узкой карточке и в широкой одна и та же раскладка. */
.rs-month__count { display: block; color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 400; }
.rs-month__list { margin: 0; padding: 0; list-style: none; font-size: var(--tp-fs-sm); line-height: 1.4; }
.rs-month__list li { display: flex; align-items: baseline; justify-content: space-between; gap: var(--tp-2); padding: 3px 0; }
.rs-month__name { min-width: 0; overflow-wrap: break-word; }
.rs-month__index { flex: none; color: var(--tp-ink-muted); font-variant-numeric: tabular-nums; }

/* --- Методика: строки «термин / описание» --- */
.rs-dl { margin: 0 0 var(--tp-2); }
.rs-dl > div { padding: var(--tp-3) 0; border-top: 1px solid var(--tp-border); }
.rs-dl > div:first-child { padding-top: 0; border-top: 0; }
.rs-dl dt { margin: 0 0 var(--tp-1); color: var(--tp-ink); font-weight: 600; line-height: 1.4; }
.rs-dl dd { max-width: 72ch; margin: 0; color: var(--tp-ink); line-height: 1.6; }
@media (min-width: 768px) {
    .rs-dl > div { display: grid; grid-template-columns: 180px minmax(0, 1fr); gap: var(--tp-5); }
    .rs-dl dt { margin: 0; }
}

/* --- Ссылка на источник и кнопки --- */
.rs-cite { margin: 0 0 var(--tp-4); padding: var(--tp-3) var(--tp-4); background: var(--tp-surface-tint); border-radius: var(--tp-r-md); }
.rs-cite__label { color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 600; line-height: 1.4; }
.rs-cite__text { margin: var(--tp-1) 0 0; color: var(--tp-ink); font-size: var(--tp-fs-sm); line-height: 1.5; overflow-wrap: anywhere; }
.rs-actions { display: flex; flex-wrap: wrap; gap: var(--tp-2); }
.rs-btn { box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; gap: var(--tp-2); min-height: 44px;
          margin: 0; padding: 0 var(--tp-4); border: 0; border-radius: var(--tp-r-md); background: var(--tp-btn-soft); color: var(--tp-ink);
          font: inherit; font-size: var(--tp-fs-sm); font-weight: 600; line-height: 1.25; text-decoration: none; cursor: pointer; }
.rs-btn[hidden] { display: none; }
.rs-btn:hover { background: var(--tp-btn-soft-hover); color: var(--tp-ink); }
.rs-btn:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.rs-btn .bi { font-size: 1rem; line-height: 1; }

/* --- Колонка «Об исследовании» --- */
.rs-about { padding: 20px; }
.rs-about__title { margin: 0 0 var(--tp-2); color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); font-weight: 600; line-height: 1.4; }
.rs-toc { display: none; margin: 0 0 var(--tp-4); padding: 0 0 var(--tp-4); border-bottom: 1px solid var(--tp-border); }
@media (min-width: 1200px) { .rs-toc { display: block; } }
.rs-toc__list { margin: 0; padding: 0; list-style: none; }
.rs-toc__list a { display: block; padding: 6px 0; color: var(--tp-ink); font-size: var(--tp-fs-sm); line-height: 1.4; text-decoration: none; }
.rs-toc__list a:hover { color: var(--tp-link); text-decoration: underline; text-underline-offset: .15em; }
.rs-toc__list a:focus-visible { outline: 2px solid var(--tp-link); outline-offset: 2px; border-radius: 2px; }
.rs-facts { margin: 0 0 var(--tp-4); font-size: var(--tp-fs-sm); line-height: 1.4; }
.rs-facts > div { display: flex; justify-content: space-between; gap: var(--tp-3); padding: var(--tp-2) 0; border-top: 1px solid var(--tp-border); }
.rs-facts > div:first-child { padding-top: 0; border-top: 0; }
.rs-facts dt { color: var(--tp-ink-muted); font-weight: 400; }
.rs-facts dd { margin: 0; color: var(--tp-ink); text-align: right; }
.rs-about .rs-btn { width: 100%; }

/* --- Карточки исследований: хаб и «Другие исследования» --- */
.rs-cards { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-4); margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .rs-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); } .rs-cards--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.rs-card { position: relative; display: flex; flex-direction: column; min-width: 0; padding: 20px; background: var(--tp-surface);
           border: 1px solid var(--tp-border); border-radius: var(--tp-r-lg); transition: border-color .15s, box-shadow .15s; }
.rs-card:hover { border-color: var(--tp-border-strong); box-shadow: var(--tp-shadow-md); }
.rs-card:focus-within { outline: 2px solid var(--tp-link); outline-offset: 2px; }
.rs-card__value { margin: 0; color: var(--tp-ink); font-size: var(--tp-fs-2xl); font-weight: 700; line-height: 1.1;
                  font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.rs-card__label { margin: var(--tp-1) 0 var(--tp-4); color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); line-height: 1.4; }
.rs-card__title { margin: 0 0 var(--tp-2); padding: 0; font-size: var(--tp-fs-lg); font-weight: 700; line-height: 1.35; }
.rs-card__link { color: var(--tp-ink); text-decoration: none; }
.rs-card__link::after { content: ''; position: absolute; inset: 0; border-radius: inherit; }
.rs-card__link:hover { color: var(--tp-link); }
.rs-card__link:focus-visible { outline: none; }
.rs-card__short { margin: 0; color: var(--tp-ink-muted); font-size: var(--tp-fs-sm); line-height: 1.5; }
.rs-card__date { margin: auto 0 0; padding-top: var(--tp-4); color: var(--tp-ink-muted); font-size: var(--tp-fs-xs); }

/* --- Принципы на хабе --- */
.rs-principles { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--tp-3); margin: 0; padding: 0; list-style: none; }
@media (min-width: 768px) { .rs-principles { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 1200px) { .rs-principles { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.rs-principle { min-width: 0; padding: var(--tp-4) 20px 20px; background: var(--tp-surface-tint); border-radius: var(--tp-r-md); }
.rs-principle__title { margin: 0 0 6px; padding: 0; color: var(--tp-ink); font-size: var(--tp-fs-md); font-weight: 700; line-height: 1.35; }
.rs-principle__text { margin: 0; color: var(--tp-ink); font-size: var(--tp-fs-sm); line-height: 1.55; }

@media (prefers-reduced-motion: reduce) { .rs-card { transition: none; } }

/* Подписи месяцев: на узком экране двенадцать «янв фев мар» не помещаются и слипаются, остается буква. */
.rs-bars__label abbr { text-decoration: none; cursor: default; }
.rs-bars__short { display: none; }
@media (max-width: 399.98px) { .rs-bars__long { display: none; } .rs-bars__short { display: inline; } }
