/* ==========================================================================
   Блок рейтингов — финальная версия: шапка и флагманы из G, список из D.
   Небольшое скругление (6-8px) только у плашек иконок и логотипов —
   по просьбе Ильи, чтобы квадраты не выглядели «жестко». Карточки без скруглений.
   ========================================================================== */

.rvf-inner { max-width: calc(var(--max-w) + 2 * var(--gutter)); margin: 0 auto; padding: 0 var(--gutter); }

/* ---------- Сцена ----------------------------------------------------------
   Фон светлый: сверху уже синий герой, и второй сплошной синий блок через
   одну белую полосу партнеров давал «синий бутерброд». Темными остаются
   только три карточки флагманов — синий работает акцентом, а не заливкой. */
.rvf-stage {
  position: relative;
  padding: 80px 0 32px;
  background: var(--paper);
  color: var(--ink);
}
.rvf-stage .rvf-inner { position: relative; z-index: 1; }

.rvf-head { display: grid; grid-template-columns: minmax(0,1.3fr) minmax(0,1fr); gap: 64px; align-items: end; margin-bottom: 44px; }
.rvf-kicker { font-family: "JetBrains Mono", monospace; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--blue); margin-bottom: 14px; }
.rvf-h2 { margin: 0; font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 56px; line-height: 1.02; letter-spacing: -.03em; color: var(--ink); }
.rvf-h2 em { color: var(--blue); }
.rvf-note { margin: 0; font-family: "Source Serif 4", Georgia, serif; font-size: 17px; line-height: 1.5; color: var(--ink-2); }

.rvf-flagships { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
/* Флагманы — светлые карточки. Синий под героем только акцентом: полоса
   сверху, иконка, ссылка. Сплошные темные блоки сразу после синего героя
   через белую полосу партнеров читались как «синий подряд» (Илья, 30.09). */
.rvf-fcard {
  display: flex; flex-direction: column; min-width: 0;
  padding: 26px 26px 22px;
  background: #fff;
  border: 1px solid var(--rule-soft);
  border-top: 3px solid var(--blue);
  color: var(--ink);
  transition: transform .16s, box-shadow .16s, border-color .16s;
}
.rvf-fcard:hover { transform: translateY(-3px); box-shadow: 0 14px 34px rgba(10,31,68,.10); border-color: var(--blue); }
.rvf-fcard-top { display: flex; justify-content: space-between; align-items: center; height: 44px; }
.rvf-fmeta { font-family: "JetBrains Mono", monospace; font-size: 10.5px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-4); }
.rvf-ftile {
  width: 44px; height: 44px; display: grid; place-items: center;
  background: var(--blue-pale); color: var(--blue); border-radius: 8px;
}
.rvf-ftile svg { width: 24px; height: 24px; }
.rvf-ftitle { margin-top: 18px; font-family: "Source Serif 4", Georgia, serif; font-size: 38px; line-height: 1; letter-spacing: -.03em; color: var(--ink); }
/* одна строка, чтобы все три карточки шли синхронно по вертикали */
.rvf-fsub { margin-top: 8px; font-family: "Inter", system-ui, sans-serif; font-size: 13.5px; color: var(--ink-3); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rvf-fnums {
  margin-top: 20px;
  display: grid; grid-template-columns: 1.35fr 1fr .8fr; gap: 12px;
  padding: 16px 0; border-top: 1px solid var(--rule-soft); border-bottom: 1px solid var(--rule-soft);
}
.rvf-fnums b { display: block; font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 24px; line-height: 1.1; color: var(--ink); white-space: nowrap; }
.rvf-fnums i { display: block; margin-top: 5px; font-style: normal; font-family: "JetBrains Mono", monospace; font-size: 9px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-4); }
.rvf-up { color: var(--up) !important; }
.rvf-flead { display: flex; flex-direction: column; gap: 8px; margin-top: 16px; }
.rvf-flead-row { display: flex; align-items: center; gap: 10px; min-width: 0; }
.rvf-rank { width: 12px; flex-shrink: 0; font-family: "JetBrains Mono", monospace; font-size: 10px; font-weight: 600; color: var(--blue); }
.rvf-flead-name { min-width: 0; font-family: "Inter", system-ui, sans-serif; font-size: 13.5px; color: var(--ink-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rvf-cta { margin-top: auto; padding-top: 18px; font-family: "JetBrains Mono", monospace; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--blue); }
.rvf-cta span { display: inline-block; transition: transform .15s; }
.rvf-fcard:hover .rvf-cta span { transform: translateX(4px); }

/* Логотипы: мягкий угол вместо жесткого квадрата */
.rvf .v2-logo { border-radius: 8px; }
.rvf .v2-logo-fallback { border-radius: 7px; }

/* ---------- Список отраслевых (из D) ------------------------------------- */
.rvf-markets { padding-top: 48px; padding-bottom: 72px; }
.rvf-list-head, .rvf-row {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) 170px 210px 90px 170px 28px;
  gap: 24px; align-items: center;
}
.rvf-list-head {
  padding: 0 8px 12px;
  font-family: "JetBrains Mono", monospace; font-size: 10px;
  letter-spacing: .16em; text-transform: uppercase; color: var(--ink-4);
}
.rvf-list-head > span:first-child { color: var(--ink-3); font-size: 11px; }
.rvf-list { border-top: 1px solid var(--ink); }
.rvf-row {
  padding: 16px 8px;
  border-bottom: 1px solid var(--rule-soft);
  transition: background .14s;
}
a.rvf-row:hover { background: var(--blue-pale); }
.rvf-row.is-soon { color: var(--ink-4); }

.rvf-name { display: flex; align-items: center; gap: 16px; min-width: 0; }
.rvf-tile {
  width: 48px; height: 48px; flex-shrink: 0;
  display: grid; place-items: center;
  background: var(--blue-pale); color: var(--blue); border-radius: 10px;
}
a.rvf-row:hover .rvf-tile { background: #fff; }
.rvf-row.is-soon .rvf-tile { color: var(--ink-4); background: var(--paper-2); }
/* иконки — единый линейный набор из _rv_icon.html */

.rvf-name-text { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.rvf-name-text b { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 24px; line-height: 1.05; letter-spacing: -.02em; color: var(--ink); }
.rvf-row.is-soon .rvf-name-text b { color: var(--ink-3); }
.rvf-name-text i { font-style: normal; font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-4); }
.rvf-name-text em { font-style: normal; color: #E63946; }

.rvf-logos { display: flex; gap: 8px; }
.rvf-num { text-align: right; }
.rvf-count { font-family: "Source Serif 4", Georgia, serif; font-size: 20px; color: var(--ink); }
.rvf-money { display: flex; flex-direction: column; align-items: flex-end; gap: 3px; }
.rvf-money b { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 22px; line-height: 1.1; color: var(--ink); white-space: nowrap; }
.rvf-money i { font-style: normal; font-family: "JetBrains Mono", monospace; font-size: 11px; font-weight: 600; }
.rvf-up-d { color: var(--up); }
.rvf-down { color: var(--down); }
.rvf-dash { color: var(--ink-5) !important; }
.rvf-go { text-align: right; font-family: "JetBrains Mono", monospace; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-5); transition: transform .14s, color .14s; }
a.rvf-row:hover .rvf-go { color: var(--blue); transform: translateX(4px); }
.rvf-all {
  display: inline-flex; align-items: center; gap: 8px; margin-top: 24px;
  font-family: "JetBrains Mono", monospace; font-size: 12px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--blue);
}
.rvf-all:hover { color: var(--blue-bright); }
.rvf-all span { transition: transform .15s; }
.rvf-all:hover span { transform: translateX(4px); }

@media (max-width: 1200px) {
  .rvf-head { grid-template-columns: 1fr; gap: 18px; }
  .rvf-h2 { font-size: 44px; }
  .rvf-flagships { grid-template-columns: 1fr; }
  .rvf-list-head, .rvf-row { grid-template-columns: minmax(0,1fr) 150px 170px 70px 140px 22px; gap: 14px; }
}
@media (max-width: 820px) {
  .rvf-list-head { display: none; }
  .rvf-row { grid-template-columns: minmax(0,1fr) auto; row-gap: 10px; }
  .rvf-logos { grid-column: 1 / -1; order: 3; }
  .rvf-count { display: none; }
  .rvf-go { display: none; }
  .rvf-h2 { font-size: 34px; }
}


/* ---------- Динамика (классы вешает js/rankings-motion.js, только десктоп) --- */
.rvf-anim .rvf-fcard,
.rvf-anim .rvf-row {
  opacity: 0;
  transform: translateY(22px);
}
.rvf-anim .rvf-fcard.is-in,
.rvf-anim .rvf-row.is-in {
  opacity: 1;
  transform: none;
  transition:
    opacity .6s ease var(--rvf-delay, 0ms),
    transform .6s cubic-bezier(.2,.7,.2,1) var(--rvf-delay, 0ms),
    background .16s, border-color .16s;
}
.rvf-anim .rvf-fcard.is-in:hover { transform: translateY(-3px); }

/* Логотипы — волной, по одному */
.rvf-anim .v2-logo { opacity: 0; transform: scale(.7); }
.rvf-anim .is-in .v2-logo {
  opacity: 1; transform: none;
  transition: opacity .45s ease var(--rvf-logo-delay, 0ms),
              transform .45s cubic-bezier(.3,1.4,.5,1) var(--rvf-logo-delay, 0ms);
}

/* Рост и падение вспыхивают после отсчета цифр */
.rvf-money i { padding: 1px 6px; transition: background .4s; }
.rvf-money i.is-flash.rvf-up-d { animation: rvf-flash-up 1.6s ease-out; }
.rvf-money i.is-flash.rvf-down { animation: rvf-flash-down 1.6s ease-out; background: rgba(192,57,43,.08); }
@keyframes rvf-flash-up {
  0% { background: rgba(15,138,87,0); } 25% { background: rgba(15,138,87,.22); } 100% { background: rgba(15,138,87,0); }
}
@keyframes rvf-flash-down {
  0% { background: rgba(192,57,43,0); } 25% { background: rgba(192,57,43,.28); } 100% { background: rgba(192,57,43,.08); }
}

/* Логотипы: меньше поля внутри плашки — широкие лого читаются крупнее */
.rvf .v2-logo-md { padding: 4px; }


/* ---------- Иконки: единый набор (_rv_icon.html), один размер везде ------- */
.rv-ico { display: block; width: 26px; height: 26px; }
.rvf-ftile .rv-ico { width: 24px; height: 24px; }

/* ---------- Партнеры ------------------------------------------------------ */
.rvf-pmore {
  align-self: center;
  font-family: "JetBrains Mono", monospace; font-size: 11px; letter-spacing: .04em;
  color: var(--ink-4);
}
.rvf-dash-s { color: var(--ink-5); font-family: "JetBrains Mono", monospace; }
.rvf-partners { align-items: center; }

/* слот партнеров на флагманах — одинаковой высоты у всех трех карточек */
.rvf-fpartners {
  display: flex; align-items: center; gap: 12px;
  min-height: 64px; margin-top: 16px; padding-top: 14px;
  border-top: 1px solid var(--rule-soft);
}
.rvf-plabel {
  flex-shrink: 0;
  font-family: "JetBrains Mono", monospace; font-size: 9px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--ink-4);
}
.rvf-plogos { display: flex; align-items: center; gap: 8px; }
.v2-logo-sm-x { width: 48px; height: 48px; padding: 4px; }
.rvf-pnone {
  font-family: "JetBrains Mono", monospace; font-size: 10px;
  letter-spacing: .12em; text-transform: uppercase; color: var(--ink-5);
}

/* Лидеры и партнеры — разные сущности: разделяем тонкой линией */
.rvf-partners { padding-left: 18px; border-left: 1px solid var(--rule-soft); min-height: 40px; }
.rvf-col-partners { padding-left: 18px; }
.rvf-partners.is-empty { border-left: 0; }

/* ==========================================================================
   Три уровня (02.10.2026): 2 флагмана -> 4 ежеквартальных крупно ->
   остальные по три в ряд. Карточки рынков — формат варианта G.
   ========================================================================== */
.rvf-flagships--two { grid-template-columns: repeat(2, minmax(0, 1fr)); }

.rvf-subhead {
  margin-bottom: 16px;
  font-family: "JetBrains Mono", monospace; font-size: 11px;
  letter-spacing: .16em; text-transform: uppercase; color: var(--ink-3);
}
.rvf-subhead--next { margin-top: 44px; }

.rvf-mgrid { display: grid; gap: 20px; }
.rvf-mgrid--big { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.rvf-mgrid--small { grid-template-columns: repeat(3, minmax(0, 1fr)); }

.rvf-mcard {
  position: relative; overflow: hidden; min-width: 0;
  display: flex; flex-direction: column; gap: 18px;
  padding: 24px 24px 20px;
  background: #fff;
  border: 1px solid var(--rule-soft);
  border-top: 3px solid var(--blue);
  color: var(--ink);
  transition: transform .16s, border-color .16s, box-shadow .16s;
}
a.rvf-mcard:hover { transform: translateY(-3px); border-color: var(--blue); box-shadow: 0 14px 34px rgba(10,31,68,.08); }
.rvf-mcard.is-soon { border-top-color: var(--ink-4); }
.rvf-mcard > *:not(.rvf-wm) { position: relative; }

/* водяной знак — та же иконка из набора, крупно и бледно */
.rvf-wm {
  position: absolute; right: -24px; bottom: -24px;
  width: 170px; height: 170px;
  color: var(--blue); opacity: .06; pointer-events: none;
}
.rvf-wm .rv-ico { width: 100%; height: 100%; }
.rvf-mcard.is-big .rvf-wm { width: 230px; height: 230px; }

.rvf-mtop { display: flex; align-items: center; gap: 14px; }
.rvf-mtitle { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.rvf-mtitle b { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 26px; line-height: 1.05; letter-spacing: -.02em; color: var(--ink); }
.rvf-mcard.is-big .rvf-mtitle b { font-size: 32px; }
.rvf-mtitle i { font-style: normal; font-family: "JetBrains Mono", monospace; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-4); }
.rvf-mtitle em { font-style: normal; color: #E63946; }

.rvf-mnums { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; }
.rvf-msum { font-family: "Source Serif 4", Georgia, serif; font-size: 32px; line-height: 1; letter-spacing: -.02em; color: var(--ink); white-space: nowrap; }
.rvf-mcard.is-big .rvf-msum { font-size: 42px; }
.rvf-chip { padding: 3px 8px; font-family: "JetBrains Mono", monospace; font-size: 12px; font-weight: 600; }
.rvf-chip.is-up { background: rgba(15,138,87,.1); color: var(--up); }
.rvf-chip.is-down { background: rgba(192,57,43,.1); color: var(--down); }
.rvf-mcount { margin-left: auto; font-family: "Inter", system-ui, sans-serif; font-size: 13px; color: var(--ink-3); white-space: nowrap; }
.rvf-mcount b { color: var(--ink); font-weight: 600; }

/* лидеры и партнеры — две группы, разделены линией */
.rvf-mpeople {
  display: flex; align-items: flex-start; gap: 20px; flex-wrap: wrap;
  padding-top: 16px; border-top: 1px solid var(--rule-soft);
}
.rvf-mgroup { display: flex; flex-direction: column; gap: 8px; }
.rvf-mgroup > i { font-style: normal; font-family: "JetBrains Mono", monospace; font-size: 9px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-4); }
.rvf-mgroup-partners { padding-left: 20px; border-left: 1px solid var(--rule-soft); }
.rvf-mgroup .rvf-logos { display: flex; align-items: center; gap: 8px; }
/* на мелких карточках логотипы чуть меньше */
.rvf-mgrid--small .rvf-mgroup .v2-logo-md { width: 40px; height: 40px; padding: 3px; }

.rvf-mcta {
  margin-top: auto;
  font-family: "JetBrains Mono", monospace; font-size: 10.5px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--blue);
}
.rvf-mcard.is-soon .rvf-mcta { color: var(--ink-4); }
.rvf-mcta span { display: inline-block; transition: transform .15s; }
a.rvf-mcard:hover .rvf-mcta span { transform: translateX(4px); }

/* динамика: те же правила, что у флагманов и строк */
.rvf-anim .rvf-mcard { opacity: 0; transform: translateY(22px); }
.rvf-anim .rvf-mcard.is-in {
  opacity: 1; transform: none;
  transition: opacity .6s ease var(--rvf-delay, 0ms),
              transform .6s cubic-bezier(.2,.7,.2,1) var(--rvf-delay, 0ms),
              border-color .16s, box-shadow .16s;
}
.rvf-anim a.rvf-mcard.is-in:hover { transform: translateY(-3px); }
.rvf-chip.is-flash.is-up { animation: rvf-flash-up 1.6s ease-out; }
.rvf-chip.is-flash.is-down { animation: rvf-flash-down 1.6s ease-out; }

@media (max-width: 1200px) {
  .rvf-flagships--two, .rvf-mgrid--big { grid-template-columns: 1fr; }
  .rvf-mgrid--small { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 720px) {
  .rvf-mgrid--small { grid-template-columns: 1fr; }
  .rvf-mcount { margin-left: 0; }
}

/* ==========================================================================
   Правки 02.10 (вечер): флагманы заметнее, иконки без рамок, партнеры вправо.
   ========================================================================== */

/* Флагманы: больше воздуха и крупнее типографика — это главные рейтинги,
   они должны весить больше ежеквартальных карточек под ними. */
.rvf-flagships--two .rvf-fcard {
  position: relative; overflow: hidden;
  padding: 34px 36px 28px;
  border-top-width: 4px;
}
.rvf-fcard > *:not(.rvf-wm) { position: relative; }
.rvf-fcard .rvf-wm { width: 260px; height: 260px; right: -30px; bottom: -40px; }
.rvf-fmeta { margin-bottom: 14px; }
.rvf-fhead { display: flex; align-items: center; gap: 16px; }
.rvf-ficon { color: var(--blue); flex-shrink: 0; }
.rvf-ficon .rv-ico { width: 44px; height: 44px; }
.rvf-flagships--two .rvf-ftitle { margin-top: 0; font-size: 52px; }
.rvf-flagships--two .rvf-fsub { margin-top: 10px; font-size: 15px; }
.rvf-flagships--two .rvf-fnums { margin-top: 24px; padding: 20px 0; }
.rvf-flagships--two .rvf-fnums b { font-size: 34px; }
.rvf-flagships--two .rvf-fnums i { font-size: 9.5px; }
.rvf-flagships--two .rvf-flead { gap: 10px; margin-top: 20px; }
.rvf-flagships--two .rvf-flead-name { flex: 1; font-size: 15px; }
.rvf-flead-val {
  flex-shrink: 0; margin-left: auto;
  font-family: "Source Serif 4", Georgia, serif; font-size: 18px; color: var(--ink);
}

/* Иконки без рамок и плашек: голая линейная иконка рядом с названием.
   Плашка с подложкой давала «рамку», которая спорила с тонкой линией иконки. */
.rvf-micon { color: var(--blue); flex-shrink: 0; display: grid; place-items: center; }
.rvf-micon .rv-ico { width: 34px; height: 34px; }
.rvf-mcard.is-big .rvf-micon .rv-ico { width: 40px; height: 40px; }
.rvf-mcard.is-soon .rvf-micon { color: var(--ink-4); }

/* Лидеры слева, партнеры прижаты вправо — без пустого хвоста справа */
.rvf-mpeople { justify-content: space-between; flex-wrap: nowrap; }
.rvf-mgroup-partners { margin-left: auto; align-items: flex-end; }
.rvf-mgroup-partners > i { align-self: flex-end; }

/* Флагманы подсвечены аккуратно, без заливки синим (Илья, 02.10): легкий
   голубой отсвет сверху, голубая рамка, мягкая тень и метка-плашка. Синий
   по-прежнему акцент, а не фон. */
.rvf-flagships--two .rvf-fcard {
  background: linear-gradient(180deg, var(--blue-pale) 0%, #fff 55%);
  border-color: var(--blue-soft);
  border-top-color: var(--blue);
  box-shadow: 0 10px 30px rgba(37, 99, 235, .07);
}
.rvf-flagships--two .rvf-fcard:hover {
  border-color: var(--blue);
  box-shadow: 0 16px 40px rgba(37, 99, 235, .14);
}
.rvf-flagships--two .rvf-fmeta {
  display: inline-block; align-self: flex-start;
  padding: 5px 10px;
  background: var(--blue-soft);
  color: var(--blue);
  font-weight: 600;
}
.rvf-flagships--two .rvf-wm { opacity: .08; }

/* Нет суммы (устаревшие или сомнительные данные) — число компаний не висит
   одиноко справа, а встает на место суммы. */
.rvf-mnums > .rvf-mcount:first-child { margin-left: 0; font-size: 15px; }
.rvf-mnums > .rvf-mcount:first-child b { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; font-size: 32px; }
.rvf-mcard.is-big .rvf-mnums > .rvf-mcount:first-child b { font-size: 42px; }
