
  @font-face { font-family: 'Golos Text'; src: url('../../fonts/golos-text-cyrillic.woff2') format('woff2');
               unicode-range: U+0400-04FF; font-display: swap; }
  @font-face { font-family: 'Golos Text'; src: url('../../fonts/golos-text-latin.woff2') format('woff2');
               unicode-range: U+0000-024F; font-display: swap; }

  :root {
    --ink: #f4f6fa;
    /* Вторичный текст подтянут до контраста 7:1 к фону карточки: на скриншотах
       прежний серый читался с трудом, а это половина подписей интерфейса. */
    --dim: #b6bfcd;
    --faint: #8d97a6;
    --bg: #090a0d;
    --card: #15171d;
    --card-2: #1b1e26;
    --line: #2c313c;
    --line-2: #3a4150;
    --start: #7ad4f5;
    --pro: #ff4a8d;
    --top: #e8eef8;
    --gold: #ffd479;
    --ok: #74e0af;
    --focus: #ffd479;
    --r: 16px;
    --tap: 44px;              /* минимальная зона нажатия */
  }
  * { box-sizing: border-box; }
  html { -webkit-text-size-adjust: 100%; }
  body {
    margin: 0; background: var(--bg); color: var(--ink);
    font: 16px/1.55 'Golos Text', ui-sans-serif, -apple-system, "Segoe UI", Roboto, sans-serif;
    background-image:
      radial-gradient(130% 70% at 8% -8%, #1a1d26 0%, transparent 58%),
      radial-gradient(90% 55% at 108% 6%, #191420 0%, transparent 52%);
    background-attachment: fixed;
    overflow-x: hidden;               /* на 390 px горизонтали быть не должно */
  }
  a { color: inherit; text-decoration: none; }
  h1, h2, h3 { letter-spacing: -.022em; }
  .name, .brandname, .lead b, .place { letter-spacing: -.012em; }

  /* Видимый фокус с клавиатуры — на всём, что кликается. */
  a:focus-visible, button:focus-visible, input:focus-visible, summary:focus-visible {
    outline: 3px solid var(--focus); outline-offset: 3px; border-radius: 10px; }

  .wrap { max-width: 780px; margin: 0 auto; padding: 0 16px 64px; }
  .wide { max-width: 1200px; }

  /* ------------------------------------------------------------ шапка */
  .top { padding: 20px 0 14px; display: flex; align-items: center; gap: 12px; }
  .top .mark { width: 42px; height: 42px; flex: none; }
  .brandname { font-weight: 800; font-size: 17px; letter-spacing: .01em; }
  .brandname span { color: var(--dim); font-weight: 600; font-size: 14px;
                    display: block; letter-spacing: 0; }

  .tabs { display: flex; gap: 8px; margin: 4px 0 12px; }
  .tabs a {
    flex: 1; min-height: var(--tap); display: flex; align-items: center;
    justify-content: center; padding: 10px 12px; border-radius: 12px;
    background: var(--card); border: 1px solid var(--line); color: var(--dim);
    font-weight: 700; font-size: 15px;
  }
  .tabs a[aria-current] { color: var(--ink); border-color: var(--line-2);
                          background: var(--card-2); }

  .bar { display: flex; gap: 10px; align-items: center; margin: 10px 0 14px;
         flex-wrap: wrap; }
  .switch { display: flex; gap: 4px; background: var(--card); padding: 4px;
            border: 1px solid var(--line); border-radius: 999px; }
  .switch a { min-height: 36px; display: flex; align-items: center;
              padding: 4px 16px; border-radius: 999px; font-size: 15px;
              color: var(--dim); font-weight: 600; }
  .switch a[aria-current] { background: #262c38; color: var(--ink); font-weight: 700; }

  .search { display: flex; gap: 8px; flex: 1; min-width: 240px; }
  .search input {
    flex: 1; font: inherit; font-size: 16px; min-height: var(--tap);
    padding: 10px 14px; border-radius: 12px;
    border: 1px solid var(--line); background: var(--card); color: var(--ink);
  }
  .search input::placeholder { color: var(--faint); }
  .search button {
    font: inherit; font-weight: 700; min-height: var(--tap); padding: 10px 18px;
    border-radius: 12px; border: 1px solid var(--line-2); background: var(--card-2);
    color: var(--ink); cursor: pointer;
  }

  /* ------------------------------------------------------------ строка команды */
  .rows { display: flex; flex-direction: column; gap: 10px; }
  .row {
    display: block; padding: 14px 16px; border-radius: var(--r);
    background: var(--card); border: 1px solid var(--line);
  }
  .row:hover { border-color: var(--line-2); }
  .row-head { display: flex; align-items: center; gap: 10px; }
  .name { font-weight: 800; font-size: 18px; letter-spacing: -.01em; line-height: 1.2;
          flex: 1; min-width: 0; }
  /* Лига — всегда ТЕКСТ, а не только цвет: без цвета страница обязана
     оставаться понятной. */
  .lg { font-size: 12px; font-weight: 800; letter-spacing: .1em; white-space: nowrap;
        text-transform: uppercase; padding: 4px 10px; border-radius: 999px;
        border: 1px solid var(--line-2); }
  .lg[data-league="Старт"] { color: var(--start); border-color: #2c5a70; }
  .lg[data-league="Про"]   { color: var(--pro);   border-color: #6d2547; }
  .lg[data-league="Топ"]   { color: var(--top);   border-color: #5a6273; }
  .lg[data-league="Калибровка"] { color: var(--dim); }

  /* Главная строка прогресса — крупная, читается за один взгляд. */
  .lead { margin-top: 8px; font-size: 15px; color: var(--dim); }
  .lead b { color: var(--ink); font-weight: 800; font-size: 17px; }
  /* Вторичные метрики — мельче, но не мельче комфортного: 14px. */
  .meta { color: var(--faint); font-size: 14px; margin-top: 4px;
          display: flex; gap: 14px; flex-wrap: wrap; }

  /* ------------------------------------------------------------ баблы */
  /* Ячейка — официальный знак в кружке цвета лиги. Знак не перекрашивается:
     цвет живёт в рамке, фоне и свечении вокруг него. */
  /* Десять в одну строку при любой ширине: nowrap плюс сжимаемый зазор. Перенос
     «девять и один» читается как две разные шкалы. */
  .bubrow { display: flex; gap: 4px; margin-top: 10px; align-items: center;
            flex-wrap: nowrap; max-width: 100%; }
  @media (max-width: 400px) { .bubrow { gap: 3px; } }
  .bub { position: relative; display: inline-flex; align-items: center;
         justify-content: center; flex: none; border-radius: 50%;
         border: 1.5px solid var(--lg-soft); background: #101319; }
  .bub img { width: 76%; height: 76%; object-fit: contain; display: block; }

  .bub[data-state="filled"] { border-color: var(--lg);
    background: color-mix(in srgb, var(--lg) 14%, #101319);
    box-shadow: 0 0 6px color-mix(in srgb, var(--lg) 45%, transparent); }
  /* Пустой: знак приглушён, но узнаваем — форма и надпись на месте. */
  .bub[data-state="empty"] img { opacity: .22; }
  .bub[data-state="empty"] { border-color: #2c313c; }
  /* Следующая отметка — тонкая подсветка, без заливки: это цель, а не награда. */
  .bub[data-state="next"] { border-color: var(--lg);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--lg) 22%, transparent); }
  .bub[data-state="next"] img { opacity: .42; }

  /* Десятый — простая золотистая рамка. */
  .bub[data-mark="gold"] { border-color: var(--gold); border-width: 2px;
    box-shadow: 0 0 9px rgba(255,212,121,.55); }
  /* Ачивка — искра отдельным слоем поверх, знак не трогаем. */
  .bub .spark { position: absolute; top: -3px; right: -3px; width: 9px; height: 9px;
    background: var(--ok); border-radius: 50%; border: 2px solid var(--bg); }

  /* Топ: белое/серебряное свечение, но сдержаннее розового неона — дороже, а
     не ярче. */
  .bub.lg-top[data-state="filled"] { box-shadow: 0 0 5px rgba(232,238,248,.35); }

  .emblem { display: inline-flex; align-items: center; justify-content: center;
            border-radius: 50%; border: 2px solid var(--lg);
            background: radial-gradient(circle at 50% 30%,
                        color-mix(in srgb, var(--lg) 18%, #0e1116), #0b0d11 72%);
            box-shadow: 0 0 26px color-mix(in srgb, var(--lg) 30%, transparent);
            margin: 2px auto 8px; }
  .emblem img { width: 74%; height: 74%; object-fit: contain; display: block; }
  .emblem.lg-top { box-shadow: 0 0 22px rgba(232,238,248,.22),
                               inset 0 0 18px rgba(232,238,248,.06); }

  .progress { height: 6px; border-radius: 6px; background: #242a35; margin-top: 10px;
              overflow: hidden; }
  .progress i { display: block; height: 100%; border-radius: 6px; background: var(--dim); }
  [data-league="Старт"] .progress i { background: #7ad4f5; }
  [data-league="Про"]   .progress i { background: #ff4a8d; }
  [data-league="Топ"]   .progress i { background: linear-gradient(90deg,#8b93a3,#e8eef8); }

  .soon { display: inline-block; font-size: 12px; font-weight: 800; letter-spacing: .07em;
          color: var(--gold); text-transform: uppercase; white-space: nowrap;
          border: 1px solid #5c5233; border-radius: 999px; padding: 2px 10px; }

  /* ------------------------------------------------------------ ачивки */
  .chips { display: flex; gap: 7px; flex-wrap: wrap; margin-top: 10px; }
  .chip { font-size: 13.5px; padding: 5px 11px; border-radius: 999px;
          border: 1px solid var(--line-2); background: #1d212a; color: var(--ink);
          line-height: 1.25; }
  .chip[data-scope="permanent"] { border-color: #6a5c37; color: var(--gold); }
  .chip[data-new] { border-color: #35705a; color: var(--ok); }
  .chip.more { color: var(--dim); border-style: dashed; }
  .muted-in-chip { color: var(--dim); }

  /* ------------------------------------------------------------ карточка */
  .hero { border-radius: 22px; padding: 22px 20px 24px; margin: 2px 0 18px;
          border: 1px solid var(--line); background: var(--card);
          position: relative; overflow: hidden; }
  .hero::after {                       /* единый мягкий блик, без «обоев» */
    content: ""; position: absolute; inset: -40% -20% auto -20%; height: 70%;
    background: radial-gradient(60% 100% at 30% 0%, rgba(255,255,255,.07), transparent 70%);
    pointer-events: none; }
  .hero[data-league="Старт"] { border-color: #26505f; }
  .hero[data-league="Про"]   { border-color: #5b2340; }
  .hero[data-league="Топ"]   { border-color: #4e5666;
    background: linear-gradient(180deg, #101218 0%, #16191f 60%, #101218 100%); }
  .hero h1 { font-size: 28px; margin: 12px 0 0; letter-spacing: -.02em; line-height: 1.15; }
  .emblem { display: block; margin: 2px auto 6px; }
  .hero .lead { font-size: 17px; margin-top: 14px; }
  .hero .lead b { font-size: 20px; }
  .next { margin-top: 10px; color: var(--dim); font-size: 15px; }

  .sec { margin-top: 26px; }
  .sec h2 { font-size: 14px; text-transform: uppercase; letter-spacing: .1em;
            color: var(--dim); margin: 0 0 10px; font-weight: 800; }
  .panel { background: var(--card); border: 1px solid var(--line);
           border-radius: var(--r); overflow: hidden; }
  .panel .line { display: flex; align-items: center; gap: 12px; padding: 13px 16px;
                 border-top: 1px solid var(--line); font-size: 15px; }
  .panel .line:first-child { border-top: none; }
  .panel .line .grow { flex: 1; min-width: 0; overflow: hidden;
                       text-overflow: ellipsis; white-space: nowrap; }
  .panel .line .num { color: var(--dim); font-variant-numeric: tabular-nums; }
  .place { font-weight: 800; min-width: 44px;
           font-variant-numeric: tabular-nums; }
  .place[data-medal="1"] { color: var(--gold); }
  .place[data-medal="2"] { color: #dbe2ee; }
  .place[data-medal="3"] { color: #d8a273; }

  /* Лента событий: получен бабл / переход / ачивка. Не график с числами —
     игрок должен видеть события, а не измерения. */
  .feed { position: relative; padding-left: 26px; }
  .feed::before { content: ""; position: absolute; left: 9px; top: 8px; bottom: 8px;
                  width: 2px; background: var(--line); }
  .ev { position: relative; padding: 9px 0; }
  .ev::before { content: ""; position: absolute; left: -22px; top: 15px;
                width: 10px; height: 10px; border-radius: 50%;
                background: var(--faint); box-shadow: 0 0 0 3px var(--bg); }
  .ev[data-kind="league"]::before { background: var(--gold); }
  .ev[data-kind="award"]::before  { background: var(--ok); }
  .ev-t { font-weight: 700; font-size: 15px; }
  .ev-s { color: var(--dim); font-size: 14px; }

  .explain { color: var(--dim); font-size: 15px; line-height: 1.65; }
  .empty { color: var(--dim); font-size: 15px; padding: 16px; }
  .btn { display: inline-flex; align-items: center; min-height: var(--tap);
         padding: 10px 18px; border-radius: 12px; border: 1px solid var(--line-2);
         background: var(--card-2); color: var(--ink); font-weight: 700; }
  .crumbs { margin: 4px 0 14px; font-size: 15px; color: var(--dim); }
  .crumbs a { color: var(--dim); display: inline-flex; align-items: center;
              min-height: 36px; }

  /* ------------------------------------------------------------ пустой архив */
  .blank { text-align: center; padding: 40px 20px; }
  .blank .emblem { margin-bottom: 14px; }
  .blank p { color: var(--dim); font-size: 16px; margin: 0 0 20px; }

  @media (min-width: 900px) {
    .rows { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
            gap: 14px; align-items: start; }
    .row { padding: 18px 20px; }
    .name { font-size: 20px; }
    .lead { font-size: 16px; }
    .lead b { font-size: 19px; }
    .top { padding-top: 30px; }
    .hero h1 { font-size: 36px; }
    .two { display: grid; grid-template-columns: 1.05fr .95fr; gap: 22px;
           align-items: start; }
  }

  /* Неон, блики и любое движение выключаются по просьбе системы. */
  @media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation: none !important; transition: none !important; }
    .bub { filter: none !important; }
    .hero::after { display: none; }
  }


:root{--bg:#300044;--surface:#450366;--card:#521470;--card-2:#5c1f7a;--row:#521470;--active:#5c1f7a;--pink:#e60045;--ink:#fff;--dim:#edcaff;--faint:#dcbae9;--line:#6b2887;--line-2:#824398;--gold:#ffdf20;--start:#7ad4f5;--pro:#ff8ab4;--top:#e8eef8}
html{scroll-padding:24px}body{background:var(--bg);background-image:none;overflow-x:visible;font-size:16px}
h1,h2,h3,p{margin:0}h1{font-size:48px;font-weight:600;line-height:1.17;letter-spacing:-1.3px}h2{font-size:26px;line-height:1.3;font-weight:600;letter-spacing:-.5px}
button,input{font:inherit}img{max-width:100%;object-fit:contain}button{cursor:pointer}
.sr-only,.skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.skip:focus{position:fixed;z-index:100;top:8px;left:8px;padding:12px;background:white;color:#300044}
.site-header{max-width:1440px;margin:auto;display:flex;align-items:center;gap:24px;padding:20px 80px;min-height:96px}
.preview-label{font-size:12px;color:var(--dim)}.past-awards{margin-top:20px}.past-awards summary{min-height:44px;cursor:pointer;color:var(--dim);padding:10px 0}.past-awards .awards-grid{margin-top:16px}
.mark{display:flex;align-items:center;flex-shrink:0}.mark img{display:block;width:78px;height:56px}
.city{display:flex;align-items:center;gap:8px;min-height:48px;border:1px solid #55216d;border-radius:99px;padding:10px 16px;font-size:15px;font-weight:500}.header-link{margin-left:auto;padding:12px 0;font-weight:500}
.wrap,.wrap.wide{max-width:1440px;margin:auto;background:var(--surface);border-radius:46px 46px 0 0;padding:48px 80px 122px;min-height:calc(100vh - 96px)}
.page-intro{margin-bottom:48px}.page-intro p{max-width:740px;font-size:18px;line-height:28px;margin:20px 0 32px}
.btn,.search .btn{min-height:48px;border-radius:99px;padding:11px 22px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:16px;font-weight:600;line-height:24px;border:1px solid var(--line)}
.outline{background:transparent}.outline:hover{background:var(--active)}.primary,.search .primary{background:var(--pink);border-color:var(--pink);color:white}.primary:hover{background:#c9003c}
.filters{display:flex;flex-direction:column;gap:16px;margin-bottom:30px}.filter-top{display:flex;gap:12px;align-items:center}
.search{display:flex;gap:12px;flex:1;min-width:0}.search-field{display:flex;align-items:center;gap:10px;border-radius:99px;background:var(--row);padding:0 16px;min-height:48px;flex:1;min-width:0}
.search-field input{min-width:0;width:100%;border:0;background:none;color:white;min-height:48px;padding:8px 0;border-radius:0}.search-field input::placeholder{color:var(--dim);opacity:1}
.search-field:focus-within{outline:2px solid #d8a5f0;outline-offset:2px}.search-field input:focus-visible{outline:none}
.switch{display:flex;gap:4px;border:1px solid var(--line);padding:3px;border-radius:99px;background:transparent;flex-shrink:0}
.switch a{padding:8px 16px;min-height:40px;border-radius:99px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;white-space:nowrap}
.switch a[aria-current]{background:var(--active);font-weight:600}
.filter-bottom{display:flex;align-items:center;gap:16px;justify-content:space-between;flex-wrap:wrap}.format-tabs,.league-tabs{display:flex;gap:8px;flex-wrap:wrap}
.format-tabs a{min-height:48px;border-radius:99px;border:1px solid var(--line);padding:11px 16px;font-weight:600}.format-tabs a[aria-current]{background:var(--active);border-color:var(--active)}
.league-tabs{gap:4px}.league-tabs a{min-height:44px;padding:10px 12px;border-radius:99px;font-size:14px;color:var(--dim)}.league-tabs a[aria-current]{color:white;background:var(--active)}.league-tabs a:hover,.switch a:hover{background:var(--active)}
.table-caption{display:flex;justify-content:space-between;gap:16px;color:var(--dim);font-size:14px;margin-bottom:20px}.active-filter{font-size:14px;margin:-6px 0 18px}.active-filter a{text-decoration:underline;text-underline-offset:4px}
.table-head,.team-table .row{display:grid;grid-template-columns:48px minmax(180px,1fr) 254px 106px 110px 20px;align-items:center;gap:8px}
.table-head{padding:0 12px 10px;font-size:14px;color:var(--dim);font-weight:500}.table-head>span:not(:nth-child(2)){text-align:center}.rows{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.row{border-radius:16px;padding:12px;background:var(--row);border:0;transition:background .15s}.team-table .row{min-height:76px;padding:10px 12px}
.row:hover{background:#642083}.row:hover .row-chevron{transform:rotate(-90deg) translateY(3px)}
.rank{background:#642183;border-radius:12px;width:48px;height:48px;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:20px}
.rank[data-medal="1"],.place[data-medal="1"]{background:#ffdf20;color:#733e0a}.rank[data-medal="2"],.place[data-medal="2"]{background:#f1d4ff;color:#450366}.rank[data-medal="3"],.place[data-medal="3"]{background:#894b00;color:white}
.team-name{min-width:0;display:flex;flex-direction:column;align-items:flex-start}.name{font-size:18px;line-height:26px;font-weight:500;overflow-wrap:anywhere;letter-spacing:0}
.row-hint,.new-note{font-size:12px;line-height:20px;color:var(--dim)}.new-note{color:#ffb3d0}.row-hint{display:none}
.team-progress{display:flex;align-items:center;justify-content:center;gap:12px;min-width:0}.bubble-count{font-size:22px;font-weight:600;white-space:nowrap}.bubble-count small{font-size:13px;color:var(--dim);font-weight:400}.team-games{text-align:center;font-size:22px}.team-games b{font-weight:600}.mobile-label{display:none}
.lg{display:inline-flex;align-items:center;justify-content:center;justify-self:center;border:1px solid currentColor;border-radius:99px;padding:4px 12px;font-size:13px;font-weight:600;line-height:20px;white-space:nowrap;color:var(--dim);letter-spacing:0;text-transform:none}
.lg[data-league="Старт"]{color:var(--start);background:#233c6c;border-color:#508cad}.lg[data-league="Про"]{color:var(--pro);background:#69184f;border-color:#b95786}.lg[data-league="Топ"]{color:var(--top);background:#24202f;border-color:#9193a5}.lg[data-league="Калибровка"]{font-size:11px;padding:4px 9px}
.row-chevron{transform:rotate(-90deg);opacity:.75;transition:transform .15s}.calibration-text{font-size:13px;color:var(--dim)}
.bubrow{gap:3px;margin-top:0}.bub,.bub[data-state="filled"],.bub[data-state="next"],.bub.lg-top[data-state="filled"]{border:0;background:none;box-shadow:none}
.bub img{width:100%;height:100%}.bub[data-mark="gold"]{outline:2px solid var(--gold);outline-offset:2px}
.emblem,.emblem.lg-top{display:inline-flex;flex-shrink:0;background:none;box-shadow:none;border:0;margin:0}.emblem img{width:100%;height:100%}
.progress{height:6px;border-radius:99px;background:#71328d;max-width:390px;margin-top:16px}.progress i{background:var(--pro)}[data-league="Топ"] .progress i{background:var(--top)}
.pagination{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:24px;color:var(--dim);font-size:14px}.pagination>div{display:flex;gap:8px}.period-note{color:var(--dim);font-size:13px;margin-top:16px}
.guide{margin-top:64px;padding-top:32px;border-top:1px solid var(--line);max-width:850px;scroll-margin:24px}.guide p{color:var(--dim);margin-top:16px;line-height:26px}.site-footer{margin-top:40px;color:var(--dim);font-size:13px}
.dock{position:fixed;z-index:20;bottom:30px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:6px;padding:5px;background:#5c1f7af2;border:1px solid #794297;border-radius:26px;backdrop-filter:blur(12px);box-shadow:0 8px 40px #24003560}
.dock a{display:flex;align-items:center;gap:10px;padding:13px 20px;min-height:54px;border-radius:20px;white-space:nowrap;color:var(--dim)}
.dock a[aria-current]{color:white;background:#793697}.dock a.dock-primary{background:var(--pink);color:white;font-weight:600}.dock a:hover{filter:brightness(1.12)}
.crumbs{margin:0;color:var(--dim);font-size:14px}.crumbs a{min-height:44px;text-decoration:underline;text-underline-offset:4px}
.team-topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.team-topbar .format-tabs a{font-size:14px}
.hero,.hero[data-league="Топ"]{border-radius:24px;padding:28px;background:var(--row);border:0;margin:0 0 32px;overflow:visible}.hero::after{display:none}
.team-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,390px);gap:32px;align-items:center}.team-identity{display:flex;align-items:center;gap:24px;min-width:0}.team-identity>div{min-width:0}.team-identity h1{font-size:36px;margin:12px 0 4px;overflow-wrap:anywhere;line-height:1.18}.team-identity p{color:var(--dim);font-size:14px}
.hero .lead{font-size:18px;margin:0 0 16px}.hero .lead b{font-size:28px;font-weight:600}.next{font-size:14px;line-height:22px;color:var(--dim);margin-top:12px}.team-hero .bubrow{gap:8px}.team-hero .bub{width:30px!important;height:30px!important}
.stats-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:40px}.stat{background:var(--row);padding:20px 24px;border-radius:16px;display:flex;flex-direction:column;gap:4px}.stat b{font-size:28px;font-weight:600;line-height:1.3}.stat span{font-size:14px;color:var(--dim)}
.section-heading{display:flex;align-items:baseline;gap:12px;margin-bottom:20px}.section-heading>span{font-size:14px;color:var(--dim)}.sec{margin-top:32px;scroll-margin:24px}
.sec h2{font-size:26px;line-height:1.3;font-weight:600;color:white;letter-spacing:-.5px;text-transform:none;margin:0 0 20px}.section-heading h2{margin:0}
.awards-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.award-card{background:var(--row);border:1px solid transparent;border-radius:16px;padding:20px;display:grid;grid-template-columns:44px 1fr;column-gap:12px;align-content:start;min-width:0}
.award-card img{grid-column:1;grid-row:1/4;width:44px;height:44px}.award-card h3{font-size:17px;line-height:24px;overflow-wrap:anywhere;font-weight:600;letter-spacing:0}.award-card .award-context{color:#e4b7f9;font-size:12px;margin:5px 0 10px}.award-card p{grid-column:2;color:var(--dim);font-size:14px;line-height:22px}.award-card[data-scope="permanent"]{border-color:#8c5b83}
.two{display:grid;grid-template-columns:1fr 1fr;gap:32px}.panel{background:var(--row);padding:8px 16px;border:0;border-radius:16px}
.panel .line{padding:14px 0;gap:12px}.panel .line .grow{overflow:visible;text-overflow:clip;white-space:normal;overflow-wrap:anywhere}
.place{min-width:44px;min-height:44px;display:flex;align-items:center;justify-content:center;background:var(--active);border-radius:12px;font-weight:600}
.chip{background:#672487;border-color:#884a9e;font-size:14px;padding:8px 14px;line-height:20px}.chip[data-new]{background:#771c5b;color:#ffd7e7;border-color:#a95786}
.empty-state{padding:48px 24px;text-align:center;background:var(--row);border-radius:16px}.empty-state p{color:var(--dim);margin:12px 0 24px}
@media(min-width:1024px) and (max-width:1200px){.table-head,.team-table .row{grid-template-columns:48px minmax(140px,1fr) 214px 88px 106px 18px}.team-progress{gap:6px}.team-progress .bubrow{gap:1px}.team-progress .bub{width:16px!important;height:16px!important}}
@media(max-width:1023px){.site-header{padding:18px 32px}.wrap,.wrap.wide{padding:40px 32px 122px;border-radius:32px 32px 0 0}h1{font-size:36px}.page-intro{margin-bottom:32px}
.table-head,.team-table .row{grid-template-columns:40px minmax(140px,1fr) 178px 74px 102px}.rank{width:40px;height:44px}.row-chevron{display:none}.team-progress{gap:6px}.team-progress .bubrow{gap:1px}.team-progress .bub{width:13px!important;height:13px!important}.bubble-count{font-size:20px}.bubble-count small{font-size:11px}.team-games{font-size:20px}.table-head{font-size:12px}
.team-hero{grid-template-columns:1fr}.team-identity h1{font-size:32px}.awards-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.team-hero .bubrow{max-width:390px;justify-content:space-between}.filter-top{flex-wrap:wrap}.search{min-width:300px}}
@media(max-width:767px){h1{font-size:32px;line-height:38px;letter-spacing:-.8px}h2,.sec h2{font-size:23px}.site-header{padding:14px 16px;gap:16px;min-height:84px}.mark img{width:66px;height:48px}.city{padding:8px 12px;font-size:13px;min-height:40px}.header-link{display:none}
.preview-label{margin-left:auto;max-width:70px;line-height:16px;text-align:right;font-size:10px}
.wrap,.wrap.wide{padding:32px 16px 108px;border-radius:24px 24px 0 0;min-height:calc(100vh - 84px)}.page-intro{margin-bottom:24px}.page-intro p{font-size:16px;line-height:25px;margin:18px 0 20px}.page-intro .btn{width:100%}
.filter-top{gap:12px}.search{min-width:0;flex-basis:100%;gap:8px}.search-field{padding:0 12px}.search .btn{padding:10px 16px;font-size:14px}.search-field input{font-size:16px}.switch{width:100%}.switch a{flex:1}
.filter-bottom{gap:12px}.format-tabs{width:100%;gap:8px}.format-tabs a{flex:1;display:flex;justify-content:center;padding:10px 12px;font-size:14px}.league-tabs{gap:3px;flex-wrap:wrap}.league-tabs a{font-size:12px;padding:9px 10px;min-height:40px}
.filters{gap:12px;margin-bottom:20px}.table-caption{font-size:12px;gap:10px;margin-bottom:12px}.table-caption p:last-child{text-align:right}.table-head{display:none}
.team-table .row{grid-template-columns:40px minmax(0,1fr) auto;gap:6px 12px;min-height:124px;padding:14px 12px;align-items:start}
.rank{grid-column:1;grid-row:1/4;height:44px;font-size:20px}.team-name{grid-column:2;grid-row:1;align-self:center}.name{font-size:16px;line-height:23px;font-weight:600}
.team-table .lg{grid-column:3;grid-row:1;align-self:center;font-size:11px;padding:3px 8px}.team-table .lg[data-league="Калибровка"]{grid-column:2/4;grid-row:4;justify-self:start}
.team-progress{grid-column:2/4;grid-row:2;justify-content:flex-start;gap:10px;align-self:center}.team-progress .bubrow{gap:2px}.team-progress .bub{width:16px!important;height:16px!important}.bubble-count{font-size:19px}.bubble-count small{font-size:12px}
.team-games{grid-column:2/4;grid-row:3;text-align:left;font-size:12px;color:var(--dim)}.team-games b{font-size:12px}.mobile-label{display:inline}.row-hint{display:none}.new-note{font-size:11px;line-height:16px}.calibration-text{font-size:12px}
.pagination{align-items:flex-start;flex-direction:column}.pagination>div{width:100%}.pagination .btn{flex:1;font-size:14px;padding:10px 12px}.guide{margin-top:40px;padding-top:24px}.guide p{font-size:15px;line-height:24px}
.dock{bottom:0;left:0;transform:none;width:100%;border-radius:22px 22px 0 0;padding:6px 8px calc(6px + env(safe-area-inset-bottom));gap:4px}
.dock a{flex:1;flex-direction:column;justify-content:center;gap:3px;padding:7px 8px;min-height:56px;border-radius:16px;font-size:11px}.dock img{width:22px;height:22px}.dock a.dock-primary{flex:1.25}
.crumbs{font-size:13px}.team-topbar{margin-bottom:16px;gap:12px}.team-topbar .format-tabs a{font-size:13px;padding:10px}.hero{padding:20px;border-radius:20px;margin-bottom:20px}.team-hero{gap:24px}.team-identity{gap:14px}.team-identity .emblem{width:66px!important;height:66px!important}.team-identity h1{font-size:26px;line-height:32px;margin:10px 0 6px}.team-identity p{font-size:12px}
.team-hero .bubrow{gap:4px}.team-hero .bub{width:25px!important;height:25px!important}.team-progress-block{min-width:0}.hero .lead{font-size:16px;margin-bottom:16px}.hero .lead b{font-size:24px}.next{font-size:13px;line-height:21px}.soon{display:none}
.stats-strip{gap:8px;margin-bottom:28px}.stat{padding:14px 12px;gap:6px;border-radius:14px}.stat b{font-size:23px}.stat span{font-size:11px;line-height:16px}
.awards-grid{grid-template-columns:1fr}.award-card{padding:18px;grid-template-columns:40px 1fr}.award-card img{width:40px;height:40px}.award-card h3{font-size:16px}.award-card p{font-size:13px;line-height:21px}.section-heading{margin-bottom:16px}.section-heading>span{font-size:13px}
.two{grid-template-columns:1fr;gap:0}.sec{margin-top:28px}.sec>h2{margin-bottom:16px}.panel{padding:8px 14px}.panel .line{font-size:14px;gap:10px}.place{font-size:15px;min-width:42px}.line .num{font-size:12px}.empty-state{padding:32px 20px}.chip{font-size:13px}.site-footer{font-size:12px}}
@media(max-width:359px){.team-progress{gap:6px}.team-progress .bubrow{gap:1px}.team-progress .bub{width:14px!important;height:14px!important}.team-hero .bub{width:20px!important;height:20px!important}.team-hero .bubrow{gap:3px}.team-identity{align-items:flex-start}.team-identity h1{font-size:23px;line-height:29px}.team-identity .emblem{width:48px!important;height:48px!important}.team-table .lg{font-size:10px;padding:2px 6px}.name{font-size:14px;line-height:21px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
@media(max-width:767px){
 .switch a,.league-tabs a{min-height:44px}
 .team-identity{display:grid;grid-template-columns:48px minmax(0,1fr);gap:10px 12px}
 .team-identity>div{display:contents}
 .team-identity .emblem{grid-column:1;grid-row:1;width:48px!important;height:48px!important}
 .team-identity .lg{grid-column:2;grid-row:1;justify-self:start;align-self:center}
 .team-identity h1{grid-column:1/-1;margin:4px 0 0}
 .team-identity p{grid-column:1/-1}
}


/* Functional native meter; all illustrated badges remain original brand files. */
.team-table .row{min-height:96px}
.source-badges{display:flex;align-items:center;gap:12px;min-height:28px;margin-top:5px;max-width:100%;flex-wrap:wrap}
.source-rank{display:inline-flex;align-items:center;gap:12px;min-width:0}
/* Размер задан атрибутами width/height из реестра: значки выровнены по
   видимой площади, а не по одной стороне. Здесь только правила показа. */
.source-rank img{max-width:100%;max-height:44px;height:auto;width:auto;object-fit:contain;image-rendering:pixelated}
.source-oscar{display:inline-flex;align-items:center;padding:3px 6px;border-radius:6px;background:#f5e6cb}
.source-oscar img{height:28px;width:auto;max-width:50px;image-rendering:pixelated}
.league-score{display:flex;flex-direction:column;align-items:center;gap:4px;justify-self:center}
.score-value{font-size:23px;line-height:1.2;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.1px;color:white}
.team-progress{padding:0 14px;min-width:0}
.xp{width:100%;min-width:0;--xp-color:var(--dim)}
.xp-label{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;font-size:9px;letter-spacing:1.25px;color:var(--dim);font-weight:500}
.xp-track{position:relative;padding:3px;border:1px solid var(--line-2);border-radius:8px;background:#300044;box-shadow:inset 0 2px 4px #21002f66}
.xp-marker{position:absolute;top:50%;transform:translateY(-50%);height:22px;width:22px;filter:drop-shadow(0 1px 3px #23002e);pointer-events:none}
.xp meter{appearance:none;-webkit-appearance:none;display:block;width:100%;height:12px;border:0;background:transparent;border-radius:4px;overflow:hidden}
.xp meter::-webkit-meter-bar{height:12px;border:0;background:#62207d;box-shadow:none;border-radius:4px}
.xp meter::-webkit-meter-optimum-value{background:var(--xp-color);border-radius:4px;box-shadow:inset 0 2px #ffffff50}
.xp meter::-moz-meter-bar{background:var(--xp-color);border-radius:4px}
.xp-next{margin-top:7px;font-size:11px;color:var(--dim);line-height:17px}
.xp-unknown{font-size:12px;color:var(--dim)}
.team-table .xp-label{display:none}
.team-table .row:hover .xp-track{border-color:var(--xp-color)}
.team-league-score{display:flex;align-items:center;gap:14px}
.team-league-score .score-value{display:flex;align-items:center;gap:8px;font-size:28px}
.score-value small{color:var(--dim);font-size:11px;font-weight:400;letter-spacing:0}
.source-badges-large{margin-top:18px;gap:18px}
.source-badges-large .source-rank img{max-width:100%}
.source-badges-large .source-caption{font-size:13px;color:var(--dim)}
.source-badges-large .source-oscar img{height:40px;max-width:68px}
.xp-large{padding:20px 22px;background:#300044;border:1px solid #793694;border-radius:16px}
.xp-large .xp-label{font-size:11px;margin-bottom:14px;letter-spacing:1.3px}
.xp-large .xp-season{font-size:11px;letter-spacing:0}
.xp-large .xp-track{border-color:var(--xp-color);padding:4px;box-shadow:0 0 16px #20002f40}
.xp-large meter,.xp-large meter::-webkit-meter-bar{height:22px}
.xp-large .xp-next{font-size:13px;line-height:21px;margin-top:14px}
.team-hero{align-items:center}.team-progress-block{width:38%;min-width:300px}
@media(min-width:768px) and (max-width:1023px){.team-progress{padding:0 6px}.xp-next{font-size:10px}.source-rank img{zoom:.86}.source-oscar img{height:24px}.team-progress-block{min-width:260px}.source-badges-large .source-rank{flex-wrap:wrap}}
@media(max-width:767px){
 .team-table .row{grid-template-columns:34px minmax(0,1fr) 69px;gap:10px;min-height:156px;padding:14px 12px}
 .team-table .rank{width:34px;height:40px;font-size:18px;grid-row:1/4}
 .team-name{grid-column:2;grid-row:1;align-self:start}.team-name .name{font-size:15px;line-height:21px}
 .source-badges{gap:10px;margin-top:6px;min-height:24px}
 .source-rank img{zoom:.82}.source-oscar img{height:24px;max-width:42px}
 .league-score{grid-column:3;grid-row:1;gap:6px;align-self:start}.league-score .lg{font-size:11px;padding:2px 9px}
 .league-score .score-value{font-size:21px}
 .team-table .league-score .lg[data-league="Калибровка"]{font-size:9px;white-space:normal;text-align:center;line-height:14px;padding:4px}
 .team-progress{grid-column:2/4;grid-row:2;padding:0;width:100%;align-self:center}
 .team-games{grid-column:2/4;grid-row:3;font-size:11px}.xp-next{font-size:10px;margin-top:5px}.xp meter,.xp meter::-webkit-meter-bar{height:10px}
 .team-hero{gap:22px;align-items:stretch}.team-progress-block{width:100%;min-width:0}
 .team-identity .team-league-score{grid-column:2;grid-row:1;gap:9px;flex-wrap:wrap}.team-identity .team-league-score .score-value{font-size:24px}.team-league-score .score-value small{display:none}
 .team-identity .source-badges-large{grid-column:1/-1;margin-top:8px}.source-badges-large .source-rank img{zoom:.86}.source-badges-large .source-rank span{font-size:12px}.source-badges-large .source-oscar img{height:36px}
 .xp-large{padding:16px}.xp-large .xp-label{font-size:9px;letter-spacing:1px;gap:6px}.xp-large .xp-season{font-size:10px}.xp-large meter,.xp-large meter::-webkit-meter-bar{height:20px}.xp-large .xp-next{font-size:12px}
}
@media(max-width:359px){.team-table .row{grid-template-columns:30px minmax(0,1fr) 65px;gap:8px}.team-table .rank{width:30px}.team-name .name{font-size:14px}.source-rank img{zoom:.74}.league-score .score-value{font-size:19px}.xp-large .xp-season{display:none}}


  .league-faq { --faq-dim: var(--dim, var(--muted, #b6bfcd));
                --faq-line: var(--line, #2c313c);
                --faq-focus: var(--focus, var(--pink, #ffd479));
                margin-top: 18px; max-width: 750px; }
  .league-faq .faq-lead { margin: 0 0 14px; color: var(--faq-dim);
                          font-size: 15px; line-height: 1.5; }
  .league-faq .faq-item { margin: 8px 0; border: 1px solid var(--faq-line);
                          border-radius: 12px; background: #ffffff08; }
  .league-faq .faq-item[open] { background: #ffffff12; }
  /* Нажимается вся плашка целиком, а не значок: summary — блок на всю ширину
     с зоной не меньше 44 px. */
  .league-faq summary { display: flex; align-items: center; gap: 10px;
                        min-height: 44px; padding: 11px 14px; cursor: pointer;
                        font-size: 16px; font-weight: 500; line-height: 1.35;
                        list-style: none; border-radius: 12px; }
  .league-faq summary::-webkit-details-marker { display: none; }
  .league-faq summary::after { content: "+"; margin-left: auto; font-size: 20px;
                               line-height: 1; color: var(--faq-dim); }
  .league-faq .faq-item[open] > summary::after { content: "−"; }
  .league-faq summary:hover { background: #ffffff0f; }
  .league-faq summary:focus-visible { outline: 3px solid var(--faq-focus);
                                      outline-offset: -3px; }
  .league-faq .faq-answer { padding: 0 14px 14px; }
  .league-faq .faq-answer p { margin: 0; color: var(--faq-dim);
                              font-size: 15px; line-height: 1.6; }
  @media (max-width: 650px) {
    .league-faq summary { font-size: 15px; padding: 10px 12px; }
    .league-faq .faq-answer { padding: 0 12px 12px; }
    .league-faq .faq-answer p { font-size: 14px; }
  }


.ranking-view .filter-top{display:block}
.ranking-view .search{align-items:center;width:100%}
.ranking-view .search>.primary{min-width:96px;padding:11px 16px}
.ranking-view .switch{background:var(--row);border-color:transparent}
/* Колонок РОВНО столько, сколько ячеек в строке: эмблема, место, команда,
   баллы, игры, ранг, [оскары], стрелка. Колонка Оскаров существует только у
   формата, где Оскары бывают, — поэтому две сетки, а не одна с пустой
   полосой. Когда добавили баллы и игры, шаблон остался шестиколоночным —
   ранг попадал в 18-пиксельную колонку стрелки и вылезал из плитки. */
.floppy-table .table-head,.team-table.floppy-table .row{grid-template-columns:56px 36px minmax(0,1fr) 96px 64px 148px 18px;column-gap:12px}
.floppy-table.with-oscars .table-head,.team-table.floppy-table.with-oscars .row{grid-template-columns:56px 36px minmax(0,1fr) 96px 64px 148px 64px 18px}
.floppy-table .table-head{padding:0 12px 10px;color:var(--ink);font-size:14px;line-height:24px;font-weight:500}
.floppy-table .table-head>span{text-align:center}.floppy-table .table-head>span:nth-child(3){text-align:left}
.team-table.floppy-table .row{min-height:76px;padding:8px 12px;border-radius:16px;position:relative}
/* Ссылка растянута на всю плитку: строка целиком остаётся кликабельной, но
   элементом строки больше не является — иначе внутрь нельзя положить
   раскрытие номинаций. Сам заголовок остаётся настоящей ссылкой, поэтому
   клавиатура и чтение с экрана работают как раньше. */
.floppy-table .row-link{color:inherit;text-decoration:none}
.floppy-table .row-link::after{content:"";position:absolute;inset:0;z-index:1;border-radius:16px}
.floppy-table .row:has(.row-link:focus-visible){outline:3px solid var(--focus);outline-offset:3px}
.floppy-table .league-emblem{display:flex;align-items:center;justify-content:center;width:56px;min-height:56px}
.floppy-table .league-emblem img{display:block;width:56px;height:56px;object-fit:contain;image-rendering:pixelated}
.floppy-table .league-pending{font-size:22px;color:var(--faint)}
.floppy-table .rank{width:36px;height:48px;background:none;border-radius:0;color:var(--ink);font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}
.floppy-table .team-name .name{font-size:18px;line-height:28px;font-weight:500}
.floppy-table .team-games{font-size:24px;line-height:32px;color:var(--ink)}
/* Блок ранга: картинка и подпись под ней во всю ширину ячейки. overflow:hidden
   здесь был бы маскировкой — он прячет вылет, а не устраняет его, поэтому
   размеры подобраны так, чтобы всё помещалось. */
.floppy-table .team-source{min-width:0;align-self:center}
.floppy-table .source-badges{min-width:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:6px;flex-wrap:nowrap;margin:0}
/* Высота не задаётся здесь: размер приходит атрибутами из реестра
   (leagues/source_badges.py), где значки выровнены по видимой площади.
   Прежние 40px делали узкий значок вчетверо мельче широкого. */
.floppy-table .source-rank{display:flex;align-items:center;justify-content:center;
  min-width:0;max-width:100%;padding:0;background:none}
.floppy-table .source-rank img{display:block;max-height:40px;width:auto;height:auto;
  max-width:100%;object-fit:contain;image-rendering:pixelated}
.floppy-table .source-caption{display:block;max-width:100%;text-align:center;
  font-size:12px;line-height:1.25;color:var(--dim);overflow-wrap:anywhere}
/* Official classic files use a 250px-high canvas. Tight-cropped local files
   keep the same 0.16 pixel scale inside a 40px slot, including all stars. */
.floppy-table .source-rank img[src*="/ranks/classic/"]{height:38.4px}
.floppy-table .source-rank img[src*="/ranks/classic/legend"],
.floppy-table .source-rank img[src*="/ranks/classic/hraniteli"],
.floppy-table .source-rank img[src*="/ranks/classic/golds"]{height:31.2px}
.floppy-table .source-missing{display:block;text-align:center;color:var(--dim);font-size:12px;line-height:20px}
/* Своя колонка Оскаров. Поверх растянутой ссылки — иначе клик по значку
   уходил бы на карточку вместо раскрытия. */
/* z-index работает на элементе сетки и без position — а без position панель
   отсчитывается от самой плитки и всегда уходит ПОД неё целиком, независимо
   от того, растянулась ячейка на высоту строки или нет. */
.floppy-table .team-oscar{z-index:2;display:flex;align-items:center;justify-content:center;min-width:0}
/* В списке подсказка отсчитывается от ПЛИТКИ, а не от самого значка:
   открывается под строкой целиком и не накрывает подпись ранга своей же
   строки. Плитка с открытой подсказкой поднимается над соседними. */
.floppy-table .oscar-tip{position:static}
.floppy-table .oscar-pop-body{right:12px}
.floppy-table .oscar-trigger{min-width:44px;min-height:44px}
.floppy-table .oscar-tip img{display:block;height:40px;width:auto;max-width:none;image-rendering:pixelated}
/* Поднимается САМА ЯЧЕЙКА, а не строка. У ячейки есть z-index, то есть свой
   слой, и панель внутри него не может оказаться выше соседних ячеек, какой бы
   z-index ей ни поставить: значки соседних строк рисовались поверх текста
   подсказки. Поднимаем ячейку — вместе с ней поднимается и панель. */
html:not([data-pointer="coarse"]) .floppy-table .team-oscar:hover,
.floppy-table .team-oscar:has(.oscar-tip[data-open]),
.floppy-table .team-oscar:has(.oscar-trigger:focus-visible){z-index:20}
.floppy-table .new-note{margin-top:2px}
@media(min-width:768px) and (max-width:1023px){
 .floppy-table .table-head,.team-table.floppy-table .row{grid-template-columns:52px 30px minmax(0,1fr) 78px 52px 130px;column-gap:10px}
 .floppy-table.with-oscars .table-head,.team-table.floppy-table.with-oscars .row{grid-template-columns:52px 30px minmax(0,1fr) 78px 52px 130px 56px}
 .floppy-table .league-emblem{width:52px}.floppy-table .league-emblem img{width:52px;height:52px}
 .floppy-table .rank{width:30px}.floppy-table .table-head>span:last-child{display:none}
 .floppy-table .team-name .name{font-size:16px;line-height:24px}
 .floppy-table .team-games{font-size:22px}.floppy-table .source-badges{gap:12px}
}
@media(max-width:767px){
 .ranking-view .search{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px}
 .ranking-view .search-field{grid-column:1/-1;min-height:48px}
 .ranking-view .switch{grid-column:1;width:auto;min-width:0}
 .ranking-view .switch a{min-height:40px;padding:8px 12px;font-size:13px}
 .ranking-view .search>.primary{grid-column:2;min-width:82px;min-height:48px;font-size:14px}
 /* Колонка Оскаров живёт только в широкой сетке. Правило `.with-oscars`
    старше по весу, поэтому мобильную сетку оно обязано получить ЯВНО: иначе
    восьмиколоночная раскладка остаётся на телефоне и колонка команды
    схлопывается в ноль (нашлось браузерной проверкой, не тестом разметки). */
 .team-table.floppy-table .row,
 .team-table.floppy-table.with-oscars .row{grid-template-columns:42px 26px minmax(0,1fr);grid-template-rows:auto auto auto;column-gap:10px;row-gap:8px;min-height:156px;padding:12px;align-items:start}
 .floppy-table .league-emblem{grid-column:1;grid-row:1/3;width:42px;min-height:48px;align-self:start}
 .floppy-table .league-emblem img{width:42px;height:42px}
 .floppy-table .rank{grid-column:2;grid-row:1/3;width:26px;height:48px;font-size:18px;align-self:start}
 .floppy-table .team-name{grid-column:3;grid-row:1;align-self:start}
 .floppy-table .team-name .name{font-size:16px;line-height:24px;font-weight:600}
 .floppy-table .team-games{grid-column:3;grid-row:2;font-size:12px;line-height:20px;text-align:left;align-self:start;color:var(--ink)}
 .floppy-table .team-games b{font-size:16px;font-weight:600}
 .floppy-table .team-games .mobile-label{margin-left:4px}
 .floppy-table .team-source{grid-column:3;grid-row:3;align-self:start;padding-top:8px}
 /* На телефоне колонок всего три, поэтому ранг и Оскар делят нижнюю строку
    по краям: ранг слева, Оскар справа. Ячейку под эмблемой занимают баллы —
    занять её Оскаром значило бы выкинуть их на четвёртую строку. */
 .floppy-table .team-source{justify-self:start;max-width:calc(100% - 68px)}
 .floppy-table .team-oscar{grid-column:3;grid-row:3;justify-self:end;align-self:start;padding-top:8px}
 .floppy-table .source-badges{justify-content:flex-start;gap:6px}
 .floppy-table .source-missing{text-align:left}
}
@media(max-width:359px){
 .team-table.floppy-table .row,
 .team-table.floppy-table.with-oscars .row{grid-template-columns:38px 20px minmax(0,1fr);column-gap:8px;padding:12px 10px}
 .floppy-table .league-emblem{width:38px}.floppy-table .league-emblem img{width:38px;height:38px}
 .floppy-table .rank{width:20px;font-size:17px}
 .floppy-table .source-badges{gap:12px}
 .ranking-view .switch a{font-size:12px;padding:8px}
}


.oscar-tip{position:relative;display:inline-flex;
  --pop-bg:var(--card-2,var(--active,#1b1e26));
  --pop-line:var(--line-2,var(--line,#3a4150));
  --pop-ink:var(--ink,#f4f6fa);
  --pop-dim:var(--dim,var(--muted,#b6bfcd));
  --pop-faint:var(--faint,var(--muted,#8d97a6));
  --pop-mark:var(--gold,var(--pink,#ffd479))}
.oscar-trigger{appearance:none;-webkit-appearance:none;background:none;border:0;margin:0;
  padding:0;font:inherit;color:inherit;cursor:pointer;border-radius:10px;
  display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}
/* Панель НЕ занимает места в потоке и не двигает вёрстку: она вне потока, а
   показ и скрытие идут через visibility/opacity, а не display. */
.oscar-pop-body{position:absolute;top:100%;right:0;z-index:30;
  /* Отступ до карточки — ВНУТРИ панели: между значком и карточкой не остаётся
     полосы «не наведено», иначе подсказка гасла на полпути к ней. */
  padding-top:8px;
  width:max-content;max-width:min(280px,calc(100vw - 24px));
  transform:translateX(var(--tip-shift,0px));
  visibility:hidden;opacity:0;
  /* Закрытие с небольшой задержкой: короткий проход указателя мимо края не
     должен мигать подсказкой. */
  transition:opacity .14s ease .18s,visibility 0s linear .32s}
.oscar-tip[data-place="up"] .oscar-pop-body{top:auto;bottom:100%;padding:0 0 8px}
.oscar-tip[data-open] .oscar-pop-body,
.oscar-tip:has(.oscar-trigger:focus-visible) .oscar-pop-body{
  visibility:visible;opacity:1;transition:opacity .14s ease 0s,visibility 0s linear 0s}
/* Наведение открывает подсказку везде, КРОМЕ пальца: после касания :hover на
   телефоне «залипает», и повторное касание не закрывало бы. Признак ставит
   скрипт по типу указателя — `@media(hover)` для этого не годится: планшет с
   мышью и безголовый браузер отвечают на него неверно, и проверить правило
   было бы нечем. */
html:not([data-pointer="coarse"]) .oscar-tip:hover .oscar-pop-body{
  visibility:visible;opacity:1;transition:opacity .14s ease 0s,visibility 0s linear 0s}
/* Escape закрывает и наведённую подсказку. Правило стоит последним и с
   !important намеренно: это состояние обязано перебивать :hover, который
   никуда не делся — указатель всё ещё на значке. */
.oscar-tip[data-hidden] .oscar-pop-body{visibility:hidden!important;opacity:0!important}
@media(prefers-reduced-motion:reduce){.oscar-pop-body{transition-duration:0s}}
/* Длинный перечень прокручивается ВНУТРИ карточки: страница из-за подсказки
   расти не должна, а к самой карточке можно подвести мышку и прокрутить. */
.oscar-pop-card{max-height:min(46vh,320px);overflow-y:auto;overscroll-behavior:contain;
  padding:12px 14px;text-align:left;
  background:var(--pop-bg);border:1px solid var(--pop-line);border-radius:14px;
  box-shadow:0 16px 40px rgba(0,0,0,.55)}
.oscar-pop-head{margin:0 0 8px;font-size:13px;line-height:18px;font-weight:600;color:var(--pop-ink)}
.oscar-pop-list{margin:0;padding:0 0 0 16px;font-size:13px;line-height:19px;color:var(--pop-dim)}
.oscar-pop-list li{margin:2px 0;overflow-wrap:anywhere}
.oscar-times{color:var(--pop-mark);font-variant-numeric:tabular-nums;white-space:nowrap}
.oscar-pop-empty{margin:0;font-size:13px;line-height:19px;color:var(--pop-dim);overflow-wrap:anywhere}
.oscar-pop-note{margin:8px 0 0;font-size:11px;line-height:16px;color:var(--pop-faint)}


.latest-change{margin:0 0 20px;border:1px solid var(--line,#3b2351);border-radius:16px;background:rgba(255,255,255,.04)}
.latest-change summary{display:flex;align-items:center;gap:12px;padding:12px 16px;cursor:pointer;list-style:none;min-height:56px}
.latest-change summary::-webkit-details-marker{display:none}
.latest-change .lc-icon{flex:none;fill:#ffd23f;filter:drop-shadow(0 0 6px rgba(255,210,63,.35))}
.latest-change .lc-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.latest-change .lc-text strong{font-size:16px;line-height:1.25;font-weight:600}
.latest-change .lc-note{color:var(--muted,#bfa4d2);font-size:13px;line-height:1.3}
.latest-change .lc-open{flex:none;width:10px;height:10px;border:solid currentColor;border-width:0 2px 2px 0;transform:rotate(45deg);margin:-4px 4px 0 0;opacity:.8;transition:transform .15s}
.latest-change[open] .lc-open{transform:rotate(-135deg);margin-top:4px}
.latest-change .lc-body{padding:0 16px 16px;text-align:center}
.latest-change img{display:block;width:100%;max-width:540px;height:auto;margin:0 auto 10px;border-radius:12px;background:#100329}
.latest-change .lc-big{display:inline-block;color:var(--muted,#bfa4d2);font-size:14px;text-decoration:underline;padding:6px 8px}
@media(max-width:650px){.latest-change{margin-bottom:16px}.latest-change summary{padding:10px 14px}.latest-change .lc-body{padding:0 12px 12px}}
