/* Просвет — стиль публичной страницы «Рейтинг VPN» (/vpn-rating), которую рендерит бэк (сервис
   ratings, SSR — как блог у content). Постоянный файл без хэша: /rating.css?v=<версия>.
   Подключается ПОСЛЕ /blog.css: токены, шрифты, основа страницы, шапка и подвал — оттуда
   (blog-header, blog-footer), здесь — только сам рейтинг. Классы стабильные, префикс vr-*, БЭМ.
   Эталонная разметка — docs/rating-templates/ в репозитории фронта. Вид — как у страницы рейтинга
   в SPA: крупные цифры Unbounded, данные — моно, «стена» точек и матрица как в отчётах.
   Страница полностью читается без JS: вкладки — ссылки ?tab=, карточка VPN — <details>, матрица —
   таблица. /rating.js только улучшает: одна открытая карточка, #slug в адресе. */

/* ---------- токены, которых нет в blog.css ---------- */

:root {
  --vr-cell-ink: #1A1206;
  --vr-idle: #8B95A5;
  --vr-idle-soft: rgba(139,149,165,.10);
  --vr-divider: rgba(10,14,21,.45);
}

:root[data-theme="light"] {
  --vr-cell-ink: #3A2405;
  --vr-idle: #5F6875;
  --vr-idle-soft: rgba(95,104,117,.12);
  --vr-divider: rgba(255,253,250,.7);
}

@media (prefers-color-scheme: light) {
  :root:not([data-theme]) {
    --vr-cell-ink: #3A2405;
    --vr-idle: #5F6875;
    --vr-idle-soft: rgba(95,104,117,.12);
    --vr-divider: rgba(255,253,250,.7);
  }
}

@keyframes vr-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
}

/* ---------- каркас ---------- */

.vr-main {
  display: flex;
  flex-direction: column;
  gap: 96px;
}

/* текущий раздел в шапке блога */
.vr-page .blog-nav__link[aria-current="page"] {
  color: var(--pr-text) !important;
  background: var(--pr-glass-2);
}

.vr-eyebrow {
  font-family: var(--pr-font-mono);
  font-size: 12px;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--pr-pass);
}

.vr-h2 {
  margin: 0;
  font-family: var(--pr-font-display);
  font-weight: 600;
  font-size: clamp(24px, 3.2vw, 34px);
  line-height: 1.1;
  letter-spacing: -.03em;
  text-wrap: balance;
}

.vr-text {
  margin: 0;
  max-width: 62ch;
  font-size: 17px;
  line-height: 1.6;
  color: var(--pr-text-dim);
  text-wrap: pretty;
}

/* кнопка-призыв: «Проверить свой VPN» */
.vr-btn,
.vr-btn:hover {
  color: var(--pr-ink-on-accent) !important;
}

.vr-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 0 22px;
  border-radius: 13px;
  background: var(--pr-pass);
  font-size: 15px;
  font-weight: 700;
  white-space: nowrap;
}

.vr-btn:hover {
  box-shadow: 0 0 30px var(--pr-pass-glow);
}

.vr-btn:active {
  transform: scale(.98);
}

/* ---------- первый экран ---------- */

.vr-hero {
  display: flex;
  flex-direction: column;
  gap: 16px;
  max-width: 860px;
}

.vr-title {
  margin: 0;
  font-family: var(--pr-font-display);
  font-weight: 600;
  font-size: clamp(34px, 6vw, 64px);
  line-height: 1.02;
  letter-spacing: -.04em;
  text-wrap: balance;
}

.vr-title__accent {
  color: var(--pr-pass);
}

/* «Только наши подписки» — по решению владельца заметно, у первого экрана */
.vr-own {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  align-self: flex-start;
  margin: 4px 0 0;
  padding: 10px 14px;
  border-radius: 12px;
  border: 1px solid var(--pr-pass);
  background: var(--pr-pass-soft);
  font-size: 14px;
  line-height: 1.45;
  color: var(--pr-text);
}

.vr-own svg {
  flex: none;
  color: var(--pr-pass);
}

.vr-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 1px;
  margin: 12px 0 0;
  border-radius: 18px;
  overflow: hidden;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-line);
}

.vr-stat {
  display: flex;
  flex-direction: column-reverse;
  gap: 4px;
  padding: 16px 18px;
  background: var(--pr-bg-elev);
}

.vr-stat__value {
  margin: 0;
  font-family: var(--pr-font-display);
  font-size: clamp(24px, 3vw, 32px);
  font-weight: 600;
  letter-spacing: -.03em;
  font-variant-numeric: tabular-nums;
}

.vr-stat__label {
  font-family: var(--pr-font-mono);
  font-size: 12px;
  color: var(--pr-text-mute);
}

/* ---------- рейтинг: вкладки ---------- */

.vr-board {
  /* раскладка тройки, карточки и строк — по ширине самого рейтинга */
  container-type: inline-size;
  display: flex;
  flex-direction: column;
  gap: 16px;
  min-width: 0;
}

/* вкладки — ссылки ?tab=: на телефоне листаются вбок, не переносятся */
.vr-tabs {
  display: flex;
  gap: 6px;
  padding: 5px;
  border-radius: 16px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-glass-1);
  overflow-x: auto;
  scroll-snap-type: x proximity;
  scrollbar-width: none;
  overscroll-behavior-x: contain;
}

.vr-tabs::-webkit-scrollbar {
  display: none;
}

.vr-tab,
.vr-tab:hover {
  color: var(--pr-text-dim) !important;
}

.vr-tab {
  flex: 1 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: 0 16px;
  border-radius: 12px;
  font-size: 15px;
  font-weight: 600;
  white-space: nowrap;
  scroll-snap-align: start;
  touch-action: manipulation;
}

.vr-tab:hover {
  color: var(--pr-text) !important;
  background: var(--pr-glass-1);
}

.vr-tab[aria-current="page"],
.vr-tab[aria-current="page"]:hover {
  background: var(--pr-pass);
  color: var(--pr-ink-on-accent) !important;
}

.vr-how {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 10px;
  margin: 0;
  font-size: 14px;
  line-height: 1.5;
  color: var(--pr-text-dim);
}

.vr-how__label {
  font-family: var(--pr-font-mono);
  font-size: 11px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--pr-text-mute);
}

/* ---------- карточка-раскрывашка (общая для тройки и строк) ---------- */

.vr-card > summary {
  list-style: none;
  cursor: pointer;
  touch-action: manipulation;
}

.vr-card > summary::-webkit-details-marker {
  display: none;
}

.vr-card > summary:focus-visible {
  outline: 2px solid var(--pr-focus);
  outline-offset: -2px;
  border-radius: inherit;
}

.vr-chev {
  flex: none;
  color: var(--pr-text-mute);
  transition: transform var(--pr-dur-2) var(--pr-ease-out);
}

.vr-card[open] .vr-chev {
  transform: rotate(180deg);
}

/* подпись «Локации и матрица» / «Свернуть» — без JS, по состоянию details */
.vr-more__close,
.vr-card[open] .vr-more__open {
  display: none;
}

.vr-card[open] .vr-more__close {
  display: inline;
}

/* ---------- тройка лидеров ---------- */

.vr-podium {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  margin: 8px 0 0;
  padding: 0;
  list-style: none;
}

/* открыта карточка из тройки — тройка встаёт столбиком, раскрытая — во всю ширину на своём месте */
.vr-podium:has(.vr-card[open]) {
  grid-template-columns: minmax(0, 1fr);
}

.vr-lead {
  min-width: 0;
  border-radius: 22px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-glass-1);
  transition: border-color var(--pr-dur-2) var(--pr-ease-out);
  animation: vr-in var(--pr-dur-3) var(--pr-ease-out) both;
}

.vr-lead:nth-child(2) {
  animation-delay: 60ms;
}

.vr-lead:nth-child(3) {
  animation-delay: 120ms;
}

/* первое место — тёплый ореол, как горящая ячейка */
.vr-lead:first-child {
  border-color: var(--pr-pass);
  background: linear-gradient(180deg, var(--pr-pass-soft), var(--pr-glass-1) 60%);
  box-shadow: 0 0 40px -18px var(--pr-pass-glow);
}

.vr-lead:hover,
.vr-lead:has(.vr-card[open]) {
  border-color: var(--pr-pass);
}

.vr-lead__sum {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px;
  border-radius: 21px;
  color: var(--pr-text);
}

.vr-lead__top {
  display: flex;
  align-items: baseline;
  gap: 12px;
  min-width: 0;
}

.vr-place {
  font-family: var(--pr-font-mono);
  font-size: 13px;
  color: var(--pr-pass);
  font-variant-numeric: tabular-nums;
}

.vr-lead__name {
  min-width: 0;
  margin: 0;
  font-family: var(--pr-font-display);
  font-size: 20px;
  font-weight: 600;
  letter-spacing: -.02em;
  overflow-wrap: anywhere;
}

.vr-value {
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-family: var(--pr-font-display);
  font-size: clamp(40px, 5vw, 56px);
  font-weight: 600;
  line-height: 1;
  letter-spacing: -.04em;
  font-variant-numeric: tabular-nums;
}

.vr-value small {
  font-family: var(--pr-font-mono);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--pr-text-mute);
}

.vr-lead__meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
}

.vr-more {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: auto;
  padding-top: 2px;
  font-size: 13px;
  font-weight: 600;
  color: var(--pr-pass);
}

.vr-more .vr-chev {
  color: currentColor;
}

/* мини-стена точек: горит — VPN поднялся */
.vr-wall {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(9px, 1fr));
  gap: 3px;
  padding: 10px;
  border-radius: 12px;
  background: var(--pr-wall);
  border: 1px solid var(--pr-line);
}

.vr-wall__cell {
  aspect-ratio: 1;
  border-radius: 2px;
  background: var(--pr-wall-cell);
}

.vr-wall__cell--on {
  background: var(--pr-cell-pass);
  box-shadow: 0 0 6px var(--pr-pass-glow);
}

.vr-wall__cell--gone {
  background: transparent;
  box-shadow: inset 0 0 0 1px var(--pr-line);
}

/* ---------- места 4–15 ---------- */

.vr-rows {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.vr-row {
  border-radius: 16px;
  border: 1px solid var(--pr-line);
  background: var(--pr-glass-1);
  transition: border-color var(--pr-dur-2) var(--pr-ease-out), background-color var(--pr-dur-2) var(--pr-ease-out);
}

.vr-row:hover,
.vr-row:has(.vr-card[open]) {
  border-color: var(--pr-glass-border);
}

.vr-row:has(.vr-card[open]) {
  background: var(--pr-glass-2);
}

.vr-row__sum {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) minmax(120px, 220px) 18px;
  align-items: center;
  gap: 14px;
  min-height: 64px;
  padding: 12px 16px;
  border-radius: 15px;
  color: var(--pr-text);
}

.vr-row__place {
  font-family: var(--pr-font-mono);
  font-size: 13px;
  color: var(--pr-text-mute);
  font-variant-numeric: tabular-nums;
}

.vr-row__main {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.vr-row__name {
  margin: 0;
  font-family: var(--pr-font-text);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
  overflow-wrap: anywhere;
}

.vr-row__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  font-size: 13px;
}

.vr-row__score {
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.vr-row__value {
  display: flex;
  align-items: baseline;
  justify-content: flex-end;
  gap: 6px;
  font-family: var(--pr-font-display);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}

.vr-row__value small {
  font-family: var(--pr-font-mono);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--pr-text-mute);
}

.vr-bar {
  height: 6px;
  border-radius: 3px;
  background: var(--pr-wall-cell);
  overflow: hidden;
}

.vr-bar__fill {
  display: block;
  height: 100%;
  border-radius: 3px;
  background: var(--pr-cell-pass);
  box-shadow: 0 0 10px var(--pr-pass-glow);
}

/* ---------- мелочи строки ---------- */

.vr-users {
  color: var(--pr-text-dim);
}

.vr-users__open,
.vr-mute {
  color: var(--pr-text-mute);
}

.vr-mute {
  font-size: 12px;
}

.vr-facts {
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 8px;
  color: var(--pr-text-mute);
  font-family: var(--pr-font-mono);
  font-size: 12px;
}

/* не совпало со страной: пунктир и текст — различимо не только цветом */
.vr-badge-warn {
  padding: 1px 7px;
  border-radius: 7px;
  border: 1px dashed var(--pr-fail);
  color: var(--pr-fail);
  font-size: 11px;
  white-space: nowrap;
}

.vr-note {
  margin: 4px 0 0;
  font-family: var(--pr-font-mono);
  font-size: 12px;
  color: var(--pr-text-mute);
}

/* оговорка под рейтингом: заметно, но спокойно — не ошибка */
.vr-disclaimer {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  margin: 0;
  padding: 14px 16px;
  border-radius: 14px;
  border: 1px solid var(--pr-glass-border);
  border-left: 3px solid var(--pr-pass);
  background: var(--pr-glass-2);
  color: var(--pr-text-dim);
}

.vr-disclaimer svg {
  flex: none;
  margin-top: 2px;
  color: var(--pr-pass);
}

.vr-disclaimer p {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  text-wrap: pretty;
}

/* ---------- раскрытая карточка VPN ---------- */

.vr-detail {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 4px 16px 18px;
  animation: vr-in var(--pr-dur-3) var(--pr-ease-out) both;
}

.vr-lead .vr-detail {
  padding: 0 18px 18px;
}

.vr-source {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pr-text-dim);
}

.vr-cols {
  display: grid;
  grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
  gap: 14px;
  align-items: start;
}

.vr-panel {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
  padding: 16px;
  border-radius: 18px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-bg-elev);
}

.vr-panel__title {
  margin: 0;
  font-family: var(--pr-font-text);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
}

.vr-panel__note,
.vr-panel__foot {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--pr-text-dim);
}

.vr-panel__foot {
  color: var(--pr-text-mute);
}

.vr-nowl {
  margin: 0;
  padding: 8px 10px;
  border-radius: 10px;
  background: var(--pr-glass-2);
  font-size: 13px;
  color: var(--pr-text-dim);
}

.vr-locgroup {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.vr-locgroup + .vr-locgroup {
  margin-top: 8px;
  padding-top: 12px;
  border-top: 1px solid var(--pr-glass-border);
}

.vr-locgroup__title {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin: 0;
  font-family: var(--pr-font-text);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: 0;
  color: var(--pr-text);
}

.vr-locgroup__count {
  font-family: var(--pr-font-mono);
  font-size: 12px;
  font-weight: 500;
  color: var(--pr-text-mute);
}

/* группа сворачивается без JS: <details class="vr-locgroup"> (open, если серверов ≤ 6), в <summary>
   заголовок, число, «не совпало: K» и «Показать все N» — длинная группа не превращается в простыню */
details.vr-locgroup > summary {
  list-style: none;
  cursor: pointer;
  touch-action: manipulation;
}

details.vr-locgroup > summary::-webkit-details-marker {
  display: none;
}

.vr-locgroup__head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 8px;
  min-height: 44px;
  margin: -4px 0;
  padding: 0 4px;
  border-radius: 10px;
}

.vr-locgroup__head:hover {
  background: var(--pr-glass-1);
}

.vr-locgroup__head:focus-visible {
  outline: 2px solid var(--pr-focus);
  outline-offset: 2px;
}

.vr-locgroup__more {
  font-size: 13px;
  font-weight: 600;
  color: var(--pr-pass);
}

details.vr-locgroup[open] .vr-locgroup__more {
  display: none;
}

/* шеврон группы — свой: не крутится вместе с открытой карточкой VPN вокруг */
details.vr-locgroup > .vr-locgroup__head .vr-chev {
  margin-left: auto;
  transform: none;
}

details.vr-locgroup[open] > .vr-locgroup__head .vr-chev {
  transform: rotate(180deg);
}

details.vr-locgroup[open] > .vr-locs {
  animation: vr-in var(--pr-dur-2) var(--pr-ease-out) both;
}

/* метка «под белые списки» у сервера */
.vr-wltag {
  display: inline-block;
  margin-left: 8px;
  padding: 0 6px;
  border-radius: 6px;
  border: 1px solid var(--pr-pass);
  color: var(--pr-pass);
  font-family: var(--pr-font-text);
  font-size: 11px;
  line-height: 1.6;
  white-space: nowrap;
  vertical-align: 1px;
}

.vr-locs {
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: 0;
  list-style: none;
}

.vr-loc {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 9px 0;
  border-top: 1px solid var(--pr-line);
}

.vr-loc:first-child {
  border-top: 0;
}

.vr-loc__name {
  font-family: var(--pr-font-mono);
  font-size: 13px;
  overflow-wrap: anywhere;
}

.vr-loc__ip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--pr-text-mute);
}

.vr-loc--wrong .vr-loc__ip {
  color: var(--pr-fail);
  font-weight: 600;
}

.vr-loc__ip svg {
  flex: none;
}

/* ---------- матрица: операторы × округа, таблицей ---------- */

/* на телефоне шире экрана — листается вбок внутри рамки, страница не едет */
.vr-mx {
  overflow-x: auto;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
  border-radius: 16px;
  background: var(--pr-wall);
  border: 1px solid var(--pr-line);
}

.vr-mx__table {
  width: 100%;
  min-width: max-content;
  border-collapse: separate;
  border-spacing: 5px;
  padding: 9px;
}

.vr-mx__table th {
  font-family: var(--pr-font-mono);
  font-weight: 400;
  white-space: nowrap;
}

.vr-mx__table thead th {
  height: 18px;
  padding: 0 0 2px;
  font-size: 10px;
  color: var(--pr-text-mute);
  text-align: center;
}

.vr-mx__table thead th:first-child {
  text-align: left;
}

/* столбец операторов прилипает к левому краю при прокрутке */
.vr-mx__table tbody th {
  position: sticky;
  left: 0;
  z-index: 1;
  padding: 0 10px 0 0;
  background: var(--pr-wall);
  font-size: 11px;
  color: var(--pr-text-dim);
  text-align: left;
}

.vr-mx__table td {
  min-width: 52px;
  height: 34px;
  padding: 0;
}

/* ячейка: слева — точка с белым списком, полоса справа — без него */
.vr-mx__cell {
  display: flex;
  height: 34px;
  border-radius: 6px;
  overflow: hidden;
  border: 1px solid var(--pr-line);
}

.vr-mx__bs,
.vr-mx__open {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--pr-font-mono);
  font-size: 11px;
  font-weight: 600;
}

.vr-mx__bs {
  flex: 1 1 auto;
}

.vr-mx__open {
  flex: 0 0 11px;
  border-left: 1px solid var(--vr-divider);
}

.vr-mx--ok {
  background: var(--pr-cell-pass);
  color: var(--vr-cell-ink);
}

.vr-mx__cell:has(.vr-mx__bs.vr-mx--ok) {
  border-color: var(--pr-cell-pass);
  box-shadow: 0 0 12px 0 var(--pr-pass-glow);
}

.vr-mx--fail {
  background: var(--pr-wall-cell);
  color: var(--pr-fail);
}

.vr-mx--gone,
.vr-mx--none {
  background: var(--vr-idle-soft);
  color: var(--vr-idle);
}

.vr-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 14px;
  align-items: center;
  margin: 0;
  padding: 0;
  list-style: none;
  font-family: var(--pr-font-mono);
  font-size: 11px;
  color: var(--pr-text-mute);
}

.vr-legend__item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.vr-legend .vr-mx__cell {
  width: 26px;
  height: 16px;
  border-radius: 4px;
}

.vr-legend .vr-mx__open {
  flex-basis: 7px;
}

/* ---------- призыв в карточке ---------- */

.vr-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 18px;
  padding: 16px 18px;
  border-radius: 18px;
  background: var(--pr-pass-soft);
  border: 1px solid var(--pr-glass-border);
}

.vr-cta__text {
  flex: 1 1 260px;
  margin: 0;
  font-size: 15px;
  line-height: 1.5;
}

/* ---------- методика ---------- */

.vr-method {
  display: flex;
  flex-direction: column;
  gap: 24px;
}

.vr-method__head {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.vr-method__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr));
  gap: 12px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.vr-method__item {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 18px;
  border-radius: 18px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-glass-1);
}

.vr-method__icon {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  border-radius: 12px;
  background: var(--pr-pass-soft);
  color: var(--pr-pass);
}

.vr-method__title {
  margin: 4px 0 0;
  font-family: var(--pr-font-text);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
}

.vr-method__text {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--pr-text-dim);
  text-wrap: pretty;
}

/* веса общего зачёта: одна полоса из четырёх долей, подписи под ней */
.vr-weights {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 18px;
  border-radius: 18px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-bg-elev);
}

.vr-weights__title {
  margin: 0;
  font-family: var(--pr-font-text);
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0;
}

.vr-weights__bar {
  display: flex;
  gap: 3px;
  height: 10px;
}

.vr-weights__part {
  border-radius: 3px;
  background: var(--pr-cell-pass);
}

.vr-weights__part:nth-child(2) {
  opacity: .75;
}

.vr-weights__part:nth-child(3) {
  opacity: .5;
}

.vr-weights__part:nth-child(4) {
  opacity: .3;
}

.vr-weights__list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
}

.vr-weights__item {
  display: flex;
  flex-direction: column-reverse;
  gap: 2px;
}

.vr-weights__item dt {
  font-size: 13px;
  line-height: 1.4;
  color: var(--pr-text-dim);
}

.vr-weights__item dd {
  margin: 0;
  font-family: var(--pr-font-display);
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -.02em;
  font-variant-numeric: tabular-nums;
}

/* ---------- финал ---------- */

.vr-final {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 18px 28px;
  padding: 28px;
  border-radius: 24px;
  border: 1px solid var(--pr-glass-border);
  background: radial-gradient(120% 140% at 0% 0%, var(--pr-pass-soft), transparent 60%), var(--pr-glass-1);
}

.vr-final__text {
  flex: 1 1 420px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

/* рейтинг ещё не опубликован */
.vr-empty {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 14px;
  padding: 28px;
  border-radius: 24px;
  border: 1px solid var(--pr-glass-border);
  background: var(--pr-glass-1);
}

/* ---------- узкие экраны ---------- */

@container (max-width: 780px) {
  .vr-podium {
    grid-template-columns: minmax(0, 1fr);
  }

  .vr-cols {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* строка: место и имя сверху, метрика с полосой — во всю ширину под ними */
@container (max-width: 600px) {
  .vr-row__sum {
    grid-template-columns: 28px minmax(0, 1fr) 18px;
    gap: 10px 12px;
  }

  .vr-row__score {
    grid-column: 2 / 3;
    grid-row: 2;
  }

  .vr-row__value {
    justify-content: flex-start;
  }
}

@media (max-width: 640px) {
  .vr-main {
    gap: 72px;
  }

  .vr-stats,
  .vr-weights__list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .vr-final,
  .vr-empty {
    padding: 20px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vr-lead,
  .vr-detail,
  details.vr-locgroup[open] > .vr-locs {
    animation: none;
  }

  .vr-chev {
    transition: none;
  }
}

/* в шапке рейтинга лишний пункт уходит раньше, чем у блога: остаются знак, «Рейтинг VPN», тема, «Войти» */
@media (max-width: 560px) {
  .vr-page .blog-nav__link--minor {
    display: none;
  }
}
