
/* ============================================================
   Tango Results — Mundial de Tango, unofficial results app.
   Токены — по образцу questena/design/tokens.css (нейтральная
   шкала GoTango, роли поверх сырых значений, тема меняет роли).
   Акценты: green = прошла дальше, red = ниже среза,
   gold = происхождение (официальный источник) и подиум.
   ============================================================ */
:root{
  color-scheme: light dark;
  --n-950:#22222a; --n-800:#33333c; --n-700:#4a4a54; --n-600:#5d5d67;
  --n-500:#6a6a75; --n-400:#b6b6c0; --n-300:#d2d2d9; --n-200:#e3e3e8;
  --n-100:#ececed; --n-50:#f4f4f6; --paper:#fbfbfc;
  --red-l:#b91c1c; --red-text-l:#991b1b;
  --gold-l:#ca8a04; --gold-text-l:#875a00; --gold-line-l:#e6cf94;
  --green-l:#4d8a3f; --green-text-l:#3f7233;
  --dk-surface:#1b1a21; --dk-raised:#24232b; --dk-hairline:#2c2b33;
  --dk-line:#35343b; --dk-line-2:#43424a; --dk-line-3:#53525c;
  --dk-ink:#e2e0e7; --dk-ink-2:#c2c0c9; --dk-ink-3:#adaab5;
  --dk-ink-4:#9a97a3; --dk-ink-5:#908d99; --dk-foot:#141319;
  --red-d:#e96c66; --red-text-d:#f0807a;
  --gold-d:#e5a731; --gold-text-d:#eab544; --gold-line-d:#6b5a2a;
  --green-d:#7fae74; --green-text-d:#8fbb84;

  --surface:var(--n-50); --raised:var(--paper);
  --hairline:var(--n-100); --line:var(--n-200); --line-2:var(--n-300); --line-3:var(--n-400);
  --ink:var(--n-950); --ink-2:var(--n-800); --ink-3:var(--n-700); --ink-4:var(--n-600); --ink-5:var(--n-500);
  --red:var(--red-l); --red-text:var(--red-text-l);
  --gold:var(--gold-l); --gold-text:var(--gold-text-l); --gold-line:var(--gold-line-l);
  --green:var(--green-l); --green-text:var(--green-text-l);
  --btn-bg:#2a2a33; --btn-fg:var(--paper);
  --topbar:rgba(244,244,246,.97);
  --foot-bg:#24232b; --foot-ink:#9a9aa4; --foot-ink-2:#dcdce1;
  --shadow:0 4px 12px rgba(30,30,40,.07);

  --font-sans:"Geist",var(--locale-font,"Noto Sans"),system-ui,-apple-system,sans-serif;
  --font-mono:"Geist Mono",var(--locale-font,"Noto Sans"),ui-monospace,SFMono-Regular,monospace;
  --w-display:300;
  --t-hero:32px; --t-h2:24px; --t-h3:20px; --t-body:15px; --t-small:14px;
  --t-fine:13px; --t-micro:12px; --t-label:10.5px;
  --ls-hero:-.032em; --ls-h2:-.022em; --ls-label:.16em;
  --lh-body:1.6;
  --w-page:1080px;
  --r-card:12px; --r-button:10px; --r-pill:999px; --r-flag:3px;
  --pad-x:22px; --gap:14px;
  --h-topbar:56px;
  --dur:.2s; --ease:ease;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --surface:var(--dk-surface); --raised:var(--dk-raised);
    --hairline:var(--dk-hairline); --line:var(--dk-line); --line-2:var(--dk-line-2); --line-3:var(--dk-line-3);
    --ink:var(--dk-ink); --ink-2:var(--dk-ink-2); --ink-3:var(--dk-ink-3); --ink-4:var(--dk-ink-4); --ink-5:var(--dk-ink-5);
    --red:var(--red-d); --red-text:var(--red-text-d);
    --gold:var(--gold-d); --gold-text:var(--gold-text-d); --gold-line:var(--gold-line-d);
    --green:var(--green-d); --green-text:var(--green-text-d);
    --btn-bg:var(--dk-ink); --btn-fg:var(--dk-surface);
    --topbar:rgba(27,26,33,.97);
    --foot-bg:var(--dk-foot); --foot-ink:var(--dk-ink-4); --foot-ink-2:var(--dk-ink-2);
    --shadow:0 4px 16px rgba(0,0,0,.45);
    --w-display:400;
  }
}
:root[data-theme="dark"]{
  --surface:var(--dk-surface); --raised:var(--dk-raised);
  --hairline:var(--dk-hairline); --line:var(--dk-line); --line-2:var(--dk-line-2); --line-3:var(--dk-line-3);
  --ink:var(--dk-ink); --ink-2:var(--dk-ink-2); --ink-3:var(--dk-ink-3); --ink-4:var(--dk-ink-4); --ink-5:var(--dk-ink-5);
  --red:var(--red-d); --red-text:var(--red-text-d);
  --gold:var(--gold-d); --gold-text:var(--gold-text-d); --gold-line:var(--gold-line-d);
  --green:var(--green-d); --green-text:var(--green-text-d);
  --btn-bg:var(--dk-ink); --btn-fg:var(--dk-surface);
  --topbar:rgba(27,26,33,.97);
  --foot-bg:var(--dk-foot); --foot-ink:var(--dk-ink-4); --foot-ink-2:var(--dk-ink-2);
  --shadow:0 4px 16px rgba(0,0,0,.45);
  --w-display:400;
}

*{box-sizing:border-box;margin:0}
html{-webkit-text-size-adjust:100%}
html.transitioning, html.transitioning *{transition:background-color .3s ease,color .3s ease,border-color .3s ease!important}
body{background:var(--surface);color:var(--ink-2);font-family:var(--font-sans);
  font-size:var(--t-body);line-height:var(--lh-body);min-height:100vh;display:flex;flex-direction:column}
.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
button{font-family:var(--font-sans);font-size:var(--t-small);color:inherit;cursor:pointer;background:none;border:0;padding:0}
a{color:inherit}
:focus-visible{outline:2px solid var(--ink);outline-offset:var(--r-flag)}
@media (prefers-reduced-motion: reduce){ *{transition:none!important;animation:none!important} }

/* ---------- topbar ---------- */
.topbar{position:sticky;top:0;z-index:50;background:var(--topbar);backdrop-filter:blur(6px);
  border-bottom:1px solid var(--line)}
.topbar-in{max-width:var(--w-page);margin:0 auto;padding:0 var(--pad-x);
  display:flex;align-items:center;gap:14px;min-height:var(--h-topbar);position:relative}
.brand-lockup{display:flex;flex-direction:column;line-height:1.2;flex:none}
.brand{font-weight:var(--w-display);font-size:19px;letter-spacing:var(--ls-h2);color:var(--ink);text-decoration:none}
.brand b{font-weight:500}
.descriptor{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--ink-5)}
nav.main{display:flex;gap:4px;margin-left:2px}
nav.main a{font-size:var(--t-small);color:var(--ink-4);text-decoration:none;padding:6px 10px;border-radius:var(--r-button);white-space:nowrap}
nav.main a:hover{background:var(--hairline);color:var(--ink)}
nav.main a.on{color:var(--ink);background:var(--hairline)}
.top-controls{margin-left:auto;display:flex;align-items:center;gap:6px}

/* search (общий стиль: топбар компактный, hero крупный, фильтр в таблице) */
.searchwrap{position:relative}
.searchwrap input{width:100%;font-family:var(--font-sans);border:1px solid var(--line);
  border-radius:var(--r-button);background:var(--raised);color:var(--ink)}
.searchwrap input::placeholder{color:var(--ink-5)}
.searchwrap input:focus{border-color:var(--line-3);outline:none}
.searchwrap .sico{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:var(--ink-5);pointer-events:none;display:flex}
.searchwrap .menu{position:absolute;top:calc(100% + 6px);left:0;right:0;background:var(--raised);
  border:1px solid var(--line);border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden;z-index:60}
.searchwrap .menu button{display:flex;justify-content:space-between;gap:10px;width:100%;text-align:left;
  padding:9px 14px;font-size:var(--t-small);color:var(--ink-3);border-bottom:1px solid var(--hairline)}
.searchwrap .menu button:last-child{border-bottom:0}
.searchwrap .menu button:hover{background:var(--hairline);color:var(--ink)}
.searchwrap .menu .mid{font-family:var(--font-mono);color:var(--ink)}
.searchwrap .menu .myr{font-family:var(--font-mono);font-size:var(--t-micro);color:var(--ink-5)}
.hsearch{flex:0 1 190px;width:190px;min-width:130px;max-width:34vw}
.hsearch input{padding:7px 12px 7px 30px;font-size:var(--t-small)}
.hsearch .menu{width:320px;max-width:80vw;left:auto;right:0}
#hqToggle{display:none}
.herosearch{max-width:520px;margin-top:16px}
.herosearch input{padding:13px 16px 13px 42px;font-size:17px}
.herosearch .sico{left:15px}
.herosearch .sico svg{width:17px;height:17px}

/* icon buttons */
.iconbtn{position:relative;display:inline-grid;place-items:center;width:34px;height:34px;
  border-radius:var(--r-button);color:var(--ink-4);transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease)}
.iconbtn:hover{background:var(--hairline);color:var(--ink)}
.iconbtn svg{width:16px;height:16px}
.theme-ic{position:absolute;transition:opacity .3s var(--ease),transform .3s var(--ease)}
.ic-sun{opacity:1;transform:rotate(0) scale(1)}
.ic-moon{opacity:0;transform:rotate(-90deg) scale(0)}
html[data-theme="dark"] .ic-sun{opacity:0;transform:rotate(90deg) scale(0)}
html[data-theme="dark"] .ic-moon{opacity:1;transform:rotate(0) scale(1)}
@media (prefers-color-scheme: dark){
  html:not([data-theme]) .ic-sun{opacity:0;transform:rotate(90deg) scale(0)}
  html:not([data-theme]) .ic-moon{opacity:1;transform:rotate(0) scale(1)}
}
.ddwrap{position:relative}
.ddbtn{display:inline-flex;align-items:center;gap:4px;height:34px;padding:0 9px;border-radius:var(--r-button);
  font-size:var(--t-fine);color:var(--ink-4);letter-spacing:.04em}
.ddbtn:hover{background:var(--hairline);color:var(--ink)}
.ddbtn.up{text-transform:uppercase}
.ddmenu{position:absolute;top:calc(100% + 6px);right:0;background:var(--raised);border:1px solid var(--line);
  border-radius:var(--r-card);box-shadow:var(--shadow);overflow:hidden;z-index:60;min-width:130px}
.ddmenu button{display:block;width:100%;text-align:left;padding:8px 14px;font-size:var(--t-small);color:var(--ink-3)}
.ddmenu button:hover{background:var(--hairline);color:var(--ink)}
.ddmenu button.on{color:var(--ink);font-weight:500}
.ddmenu .tag{font-size:var(--t-micro);color:var(--green-text);margin-left:6px}

@media(max-width:1100px){
  .topbar-in{flex-wrap:wrap;padding-top:8px;padding-bottom:8px;row-gap:4px}
  nav.main{order:5;width:100%;margin-left:-10px;overflow-x:auto;scrollbar-width:none}
  nav.main::-webkit-scrollbar{display:none}
  .hsearch{flex:0 1 150px;width:150px}
}

@media(max-width:640px){
  /* Бренд встаёт в одну строку с контролами, дескриптор занимает свою строку целиком. */
  .brand-lockup{display:contents}
  .brand{line-height:1.2}
  .descriptor{order:4;width:100%;line-height:1.3}
  .top-controls{gap:4px}
  #hqToggle{display:inline-grid}
  .topbar-in .hsearch{display:none}
  .topbar-in.hq-open .hsearch{display:block;position:absolute;left:var(--pad-x);right:var(--pad-x);top:9px;width:auto;max-width:none;z-index:70}
  .topbar-in.hq-open .hsearch input{width:100%;padding:8px 12px 8px 30px}
  .topbar-in.hq-open .hsearch .menu{left:0;right:0;width:auto;max-width:none}
  nav.main{gap:2px}
  nav.main a{padding:6px 8px}
}

/* ---------- page scaffold ---------- */
main{flex:1;width:100%;max-width:var(--w-page);margin:0 auto;padding:26px var(--pad-x) 56px}
.page-head{margin:6px 0 20px}
.page-head h1{font-weight:var(--w-display);font-size:var(--t-hero);letter-spacing:var(--ls-hero);color:var(--ink);line-height:1.15;text-wrap:balance}
.page-head .lede{margin-top:6px;color:var(--ink-4);font-size:var(--t-small);max-width:64ch}
/* Оговорка стоит рядом с тем, что уточняет, и не переносится в общий футер. */
.note{margin-top:14px;color:var(--ink-4);font-size:var(--t-fine);max-width:70ch}
.eyebrow{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--ink-5);margin-bottom:6px}
.eyebrow .live{color:var(--green-text)}
/* Крошки занимают слот eyebrow — капс-микроподпись над h1; трейл отражает модель
   данных (узел сезона атомарный, «Home» не существует). Контракт —
   docs/decisions/2026-08-29-breadcrumbs-event-dates.md. */
nav.crumbs{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--ink-5);margin-bottom:6px}
nav.crumbs ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;align-items:baseline;row-gap:2px}
nav.crumbs a{color:var(--ink-4);text-decoration:none}
nav.crumbs a:hover{color:var(--ink)}
nav.crumbs .sep{margin:0 7px;color:var(--ink-5)}
nav.crumbs [aria-current]{color:var(--ink-3)}
main>nav.crumbs{margin:0 0 14px}
.season-cal{margin-top:8px;font-size:var(--t-fine);color:var(--ink-4)}
.season-cal .mono{color:var(--ink-3)}
.season-cal span{white-space:nowrap}

.card{background:var(--raised);border:1px solid var(--line);border-radius:var(--r-card);padding:18px 20px}
.card h2{font-weight:var(--w-display);font-size:var(--t-h3);letter-spacing:var(--ls-h2);color:var(--ink);margin-bottom:10px}
.grid2 > *, .grid4 > *{min-width:0}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}
.grid4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}
@media(max-width:860px){ .grid4{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .grid2{grid-template-columns:1fr} }

/* corte hairline — единственный градиент системы (цитата GoTango/Questena) */
.corte-line{height:2px;border-radius:1px;background:linear-gradient(90deg,var(--red),var(--gold),var(--red));opacity:.75}

.stat .k{font-weight:var(--w-display);font-size:30px;letter-spacing:var(--ls-h2);color:var(--ink);font-family:var(--font-mono)}
.stat .l{font-size:var(--t-fine);color:var(--ink-4);margin-top:2px}

/* tables */
table.tbl{width:100%;border-collapse:collapse}
.tbl th{font-size:var(--t-label);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--ink-5);
  font-weight:400;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.tbl th.l{text-align:left}
.tbl th.sortable{cursor:pointer}
.tbl th.sortable:hover{color:var(--ink-2)}
.tbl th .arr{font-size:9px}
.tbl td{padding:8px 10px;border-bottom:1px solid var(--hairline);text-align:right;white-space:nowrap;color:var(--ink-3)}
.tbl td.l{text-align:left;white-space:normal}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr.rowlink{cursor:pointer}
.tbl tbody tr.rowlink:hover td{background:var(--hairline)}
.tbl .name{color:var(--ink);font-weight:500}
.tbl .name .amp{color:var(--ink-5);font-weight:400}
.tbl .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.tbl .id{color:var(--ink-5);font-family:var(--font-mono)}
.tbl .rk{color:var(--ink);font-family:var(--font-mono)}
.tbl .rk .medal{color:var(--gold-text)}
.tbl .pos,.tbl .sub.pos{color:var(--green-text)} .tbl .neg,.tbl .sub.neg{color:var(--red-text)}
.tbl tr.fuera .name{color:var(--ink-4);font-weight:400}
.tbl .ctry{color:var(--ink-4);font-size:var(--t-fine)}
.tbl .sub{display:none}
.tblcard{padding:6px 14px;overflow-x:auto}
.tbl [data-unpin]{padding:3px 10px}

@media(max-width:640px){
  .tbl .hm{display:none}
  .tbl .sub{display:block;font-size:var(--t-micro);color:var(--ink-5);font-weight:400;white-space:normal;line-height:1.4;margin-top:2px}
  .tbl th,.tbl td{padding:8px 6px}
  .tbl th{letter-spacing:.06em} /* длинные локализованные заголовки помещаются в узкую колонку */
  /* Отброшенную оценку показывает зачёркивание; слово-пометка остаётся для скринридеров. */
  .marks-tbl .dnote{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
  .tblcard{padding:6px 10px}
  .tbl [data-unpin]{padding:3px 7px}
}

.pill{display:inline-block;font-size:var(--t-micro);line-height:1;padding:4px 8px;border-radius:var(--r-pill);white-space:nowrap}
.pill.in{color:var(--green-text);border:1px solid var(--green)}
.pill.out{color:var(--red-text);border:1px solid var(--red)}
.pill.gold{color:var(--gold-text);border:1px solid var(--gold-line)}

.controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:var(--gap)}
.seg{display:flex;border:1px solid var(--line);border-radius:var(--r-button);overflow:hidden;background:var(--raised)}
.seg button{padding:6px 12px;font-size:var(--t-fine);color:var(--ink-4);border-right:1px solid var(--hairline);white-space:nowrap}
.seg button:last-child{border-right:0}
.seg button.on{background:var(--btn-bg);color:var(--btn-fg)}
/* Выбор категории. Категория не красится цветом: акценты закреплены за статусом
   строки (прошла / ниже среза / подиум), и четвёртого значения у палитры нет. */
/* Верхний отступ даёт .page-head; снизу — обычный межблочный шаг, иначе контрол
   прилипает к карточкам статистики и к переключателю этапов под ним.
   inline-flex: .seg на блочном уровне растянулся бы во всю ширину, и рядом с
   переключателем этапов, который идёт по содержимому, это читалось бы как разные
   по природе контролы. */
.catseg{display:inline-flex;margin:0 0 var(--gap)}
.catseg button{display:inline-flex;align-items:baseline;gap:7px}
.catseg .cn{font-family:var(--font-mono);font-size:var(--t-micro);color:var(--ink-5);font-variant-numeric:tabular-nums}
.catseg button.on .cn{color:var(--btn-fg);opacity:.7}
.catseg button:disabled{color:var(--ink-5);opacity:.55;cursor:default}
.catseg button:not(.on):not(:disabled):hover{background:var(--hairline);color:var(--ink)}
/* Матрица покрытия: строка — категория, колонка — этап, ячейка — сколько пар вышло.
   Прочерк означает «этап в этой категории не танцевали», а не «данных нет». */
.cmx{width:100%;border-collapse:collapse;font-size:var(--t-small)}
/* Капсовые подписи этапов не переносятся по слогам: на узком экране таблица
   прокручивается в своём боксе, как остальные широкие таблицы приложения. */
.cmx{min-width:400px}
.cmx th,.cmx td{padding:8px 6px;border-bottom:1px solid var(--hairline);text-align:right}
.cmx th:first-child,.cmx td:first-child{text-align:left;padding-left:0}
.cmx td:last-child,.cmx th:last-child{padding-right:0}
.cmx thead th{font-size:var(--t-micro);letter-spacing:var(--ls-label,.16em);text-transform:uppercase;color:var(--ink-5);font-weight:500;border-bottom:1px solid var(--line)}
.cmx tbody tr:last-child td{border-bottom:0}
.cmx .cmc{color:var(--ink-3)}
.cmx .cmc a{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--ink);text-decoration:none;border-bottom:1px solid var(--line-2)}
.cmx .cmc a:hover{border-bottom-color:var(--ink)}
.cmx .cmnone{color:var(--ink-5);font-family:var(--font-mono)}
.cmx .cmname a{color:var(--ink);text-decoration:none}
.cmx .cmname a:hover{text-decoration:underline}
.cmx tr.on td{background:var(--hairline)}
.cmx .cmsub{display:block;font-size:var(--t-micro);color:var(--ink-5);letter-spacing:0;text-transform:none}
@media(max-width:560px){.cmx th,.cmx td{padding:7px 5px}.cmx{font-size:var(--t-fine)}}
.chk{display:inline-flex;align-items:center;gap:7px;font-size:var(--t-fine);color:var(--ink-4);
  border:1px solid var(--line);background:var(--raised);border-radius:var(--r-button);padding:6px 12px}
.chk .box{width:12px;height:12px;border:1.5px solid currentColor;border-radius:3px;display:grid;place-items:center;font-size:9px;line-height:1}
.chk.on{color:var(--green-text);border-color:var(--green)}
.fsearch{flex:1;min-width:170px;max-width:340px}
.fsearch input{padding:7px 12px 7px 32px;font-size:var(--t-small)}

.btn{display:inline-flex;align-items:center;gap:8px;background:var(--btn-bg);color:var(--btn-fg);
  border-radius:var(--r-button);padding:9px 18px;font-size:var(--t-small);font-weight:500;text-decoration:none;
  transition:box-shadow var(--dur) var(--ease),transform var(--dur) var(--ease)}
.btn:hover{box-shadow:var(--shadow);transform:translateY(-1px)}
.btn-ghost{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--line);color:var(--ink-3);
  border-radius:var(--r-button);padding:8px 15px;font-size:var(--t-fine);text-decoration:none;background:var(--raised);cursor:pointer}
.btn-ghost:hover{border-color:var(--line-3);color:var(--ink)}
.btn-ghost.gold-on{color:var(--gold-text);border-color:var(--gold-line)}
.morewrap{text-align:center;margin-top:12px}

.podrow{display:flex;align-items:baseline;gap:10px;padding:7px 0;border-bottom:1px solid var(--hairline);cursor:pointer;text-decoration:none}
.podrow:last-child{border-bottom:0}
.podrow:hover .pname{color:var(--ink)}
.podrow .pr{font-family:var(--font-mono);font-size:var(--t-fine);color:var(--gold-text);width:20px;flex:none}
.podrow .pname{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-2);font-size:var(--t-small)}
.podrow .pavg{font-family:var(--font-mono);font-size:var(--t-small);color:var(--ink)}

@media(max-width:640px){ .podrow .pname{white-space:normal} }

/* funnel (архивные годы) */
.funnel-row{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:var(--t-small)}
.funnel-row .fl{width:110px;flex:none;color:var(--ink-4)}
.funnel-row .ft{flex:1;height:8px;border-radius:4px;background:var(--hairline);position:relative;overflow:hidden}
.funnel-row .ft i{position:absolute;left:0;top:0;bottom:0;background:var(--line-3);border-radius:4px}
.funnel-row .fv{width:44px;flex:none;text-align:right;font-family:var(--font-mono);color:var(--ink)}
.funnel-row a{color:var(--ink-4);text-decoration:none}
.funnel-row a:hover{color:var(--ink)}

/* couple page */
.couple-head{display:flex;align-items:flex-start;gap:18px;flex-wrap:wrap;margin-bottom:16px}
.couple-head .cnum{font-family:var(--font-mono);font-weight:500;font-size:44px;line-height:1;color:var(--ink);
  border:1px solid var(--line);border-radius:var(--r-card);padding:12px 16px;background:var(--raised)}
.couple-head .cnum small{display:block;font-size:var(--t-micro);color:var(--ink-5);text-align:center;margin-top:4px;letter-spacing:.08em}
.couple-head .cwho{flex:1;min-width:240px}
.couple-head h1{font-weight:var(--w-display);font-size:28px;letter-spacing:var(--ls-h2);color:var(--ink);line-height:1.2;text-wrap:balance}
.couple-head .cmeta{color:var(--ink-4);font-size:var(--t-small);margin-top:4px}
.couple-head .cbtns{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.verdict{border-left:2px solid var(--green);padding:4px 0 4px 14px;margin:4px 0 16px;font-size:var(--t-body);color:var(--ink-2)}
.verdict.out{border-left-color:var(--red)}
.verdict.champ{border-left-color:var(--gold)}
.verdict b{color:var(--ink);font-weight:500}
.stage-sec{margin-top:var(--gap)}
.stage-sec .stg-head{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.stage-sec .stg-head h2{margin-bottom:0}
.stage-sec .stg-head .sm{font-size:var(--t-fine);color:var(--ink-5)}
.marks-tbl td:first-child{color:var(--ink-3)}
.marks-tbl .dropped td{color:var(--ink-5)}
.marks-tbl .dropped .mv{text-decoration:line-through;text-decoration-color:var(--red);text-decoration-thickness:1.5px}
.marks-tbl .dnote{font-size:var(--t-micro);color:var(--red-text);text-transform:uppercase;letter-spacing:.08em}
.kv{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--hairline);font-size:var(--t-small)}
.kv:last-child{border-bottom:0}
.kv span{color:var(--ink-4)}
.kv b{font-family:var(--font-mono);font-weight:500;color:var(--ink)}
.srow{display:flex;align-items:center;gap:12px;padding:6px 0;font-size:var(--t-small)}
.srow .sl{width:90px;flex:none;color:var(--ink-4)}
.srow .st{flex:1;height:6px;border-radius:3px;background:var(--hairline);position:relative;overflow:hidden}
.srow .st .ci{position:absolute;top:0;bottom:0;background:var(--line)}
.srow .st i{position:absolute;left:0;top:0;bottom:0;background:var(--ink-4);border-radius:3px}
.srow .sv{width:44px;flex:none;text-align:right;font-family:var(--font-mono);color:var(--ink)}
.whynote{font-size:var(--t-fine);color:var(--ink-5);margin-top:8px}
.srcline{display:flex;align-items:center;gap:8px;font-size:var(--t-fine);flex-wrap:wrap}
.srcline a{color:var(--gold-text);text-decoration-color:var(--gold-line)}
.srcline .slab{font-family:var(--font-mono);font-size:var(--t-micro);letter-spacing:.1em;text-transform:uppercase;color:var(--gold-text)}

/* dot plot */
.dp{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:var(--t-fine)}
.dp .dl{width:170px;flex:none;color:var(--ink-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dp .dt{flex:1;height:14px;position:relative}
.dp .dt::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:var(--hairline);border-radius:1px}
.dp .dot{position:absolute;top:50%;width:10px;height:10px;border-radius:50%;transform:translate(-50%,-50%);background:var(--ink-4)}
.dp .dv{width:52px;flex:none;text-align:right;font-family:var(--font-mono);color:var(--ink)}

@media(max-width:640px){
  .dp{display:grid;grid-template-columns:1fr 52px;column-gap:10px;row-gap:3px}
  .dp .dl{grid-row:1;grid-column:1;width:auto;white-space:normal;overflow:visible;text-overflow:clip}
  .dp .dv{grid-row:1;grid-column:2;width:auto}
  .dp .dt{grid-row:2;grid-column:1 / -1}
}

/* records — полоска судейских оценок: засечка на оценку, ось общая на этап */
.recrow{display:block;padding:9px 0;border-bottom:1px solid var(--hairline);text-decoration:none}
.recrow:last-child{border-bottom:0}
.recrow:hover .rname{color:var(--ink)}
.rhead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.rhead .rname{flex:1;min-width:0;color:var(--ink-2);font-size:var(--t-small)}
.rhead .rval{font-family:var(--font-mono);font-size:var(--t-small);color:var(--ink);flex:0 1 auto;min-width:0}
.rmeta{font-size:var(--t-micro);color:var(--ink-5);margin-top:2px}
.mk{display:flex;align-items:center;gap:8px;margin-top:6px}
.mk .mkt{flex:1;height:14px;position:relative}
.mk .mkt::before{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;background:var(--hairline);border-radius:1px}
.mk i{position:absolute;top:50%;width:2px;height:9px;margin-top:-4.5px;transform:translateX(-50%);background:var(--ink-4);border-radius:1px}
.mk i.drop{background:var(--line-3);height:6px;margin-top:-3px}
.mk i.avg{height:15px;margin-top:-7.5px;background:var(--ink);width:2px}
.recside{font-family:var(--font-mono);font-size:var(--t-fine);flex:0 1 auto;min-width:0}
.recside.in{color:var(--green-text)}
.recside.out{color:var(--red-text)}
.tielab{font-size:var(--t-micro);letter-spacing:var(--ls-label);text-transform:uppercase;color:var(--gold-text);font-family:var(--font-mono);margin:14px 0 4px}
.yrchip{font-family:var(--font-mono);font-size:var(--t-micro);color:var(--ink-5);flex:0 1 auto;min-width:0}
.sclegend{display:flex;justify-content:space-between;gap:12px;margin-top:8px;font-size:var(--t-micro);color:var(--ink-5)}

.allyears{font-weight:var(--w-display);font-size:var(--t-h2);letter-spacing:var(--ls-h2);color:var(--ink);margin:26px 0 12px}
/* Раздел категории на карточке пары: пара одна, категорий у неё может быть несколько. */
.catsec{font-weight:var(--w-display);font-size:var(--t-h3);letter-spacing:var(--ls-h2);color:var(--ink);
  margin:26px 0 10px;padding-top:14px;border-top:1px solid var(--line)}
.catsec:first-of-type{margin-top:18px}
.empty{padding:40px 0;text-align:center;color:var(--ink-4)}
.empty h2{font-weight:var(--w-display);font-size:var(--t-h3);color:var(--ink);margin-bottom:6px}
.empty p{font-size:var(--t-small);max-width:44ch;margin:0 auto}

/* footer */
footer{background:var(--foot-bg);color:var(--foot-ink);padding:44px var(--pad-x);margin-top:40px}
.foot-in{max-width:820px;margin:0 auto;display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}
.foot-brand{color:var(--foot-ink-2);font-size:var(--t-h3);font-weight:var(--w-display);letter-spacing:var(--ls-h2)}
.foot-desc{font-size:var(--t-small)}
.foot-love{display:flex;align-items:center;justify-content:center;gap:7px;font-size:var(--t-small);font-style:normal}
.foot-love svg{display:block;width:18px;height:18px}
.foot-links{display:flex;flex-wrap:wrap;justify-content:center;gap:20px}
.foot-links a{color:var(--foot-ink);font-size:var(--t-fine);text-underline-offset:var(--r-flag)}
.foot-links a:hover{color:var(--foot-ink-2)}
.foot-fine{font-size:var(--t-micro);line-height:1.7;max-width:60ch}

.prose{max-width:680px}
.prose h2{font-weight:var(--w-display);font-size:var(--t-h2);letter-spacing:var(--ls-h2);color:var(--ink);margin:26px 0 8px}
.prose p{margin:8px 0;color:var(--ink-3)}
.prose .champ-row{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--hairline);font-size:var(--t-small);color:var(--ink-3)}
/* International text keeps the approved layout and semantic colors. */
.langwrap{position:relative;display:inline-flex}
.language-select{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer;font:inherit}
.langwrap .ddbtn{pointer-events:none;gap:4px}
.langwrap:hover .ddbtn{background:var(--hairline);color:var(--ink)}
.language-select:focus-visible + .ddbtn{outline:2px solid var(--ink);outline-offset:var(--r-flag)}
nav.main{flex:1 1 auto;min-width:0;overflow-x:auto;scrollbar-width:none}
nav.main::-webkit-scrollbar{display:none}
.top-controls{max-width:100%}
.seg{max-width:100%;flex-wrap:wrap}
.seg button{white-space:normal;overflow-wrap:anywhere;min-height:34px}
.funnel-row .fl,.srow .sl{max-width:36%;width:auto;min-width:90px;overflow-wrap:anywhere}
.card,.cwho,.prose{overflow-wrap:anywhere}
/* Имена и числа переносятся по словам: anywhere занижает min-content и рвёт их посимвольно. */
.tbl .id,.tbl .rk,.tbl .mono{overflow-wrap:normal}
.tbl .name,.podrow .pname,.dp .dl{overflow-wrap:break-word}
.tbl th,.tbl .dnote,.pill,.eyebrow,.descriptor,.seg button,.chk{overflow-wrap:break-word}
html:lang(hy),html:lang(ka),html:lang(zh),html:lang(ja),html:lang(ko){--ls-label:0;--ls-hero:0;--ls-h2:0}
@media(max-width:480px){.topbar-in{gap:8px}.top-controls{gap:4px}.cwho{min-width:0!important;flex-basis:200px}}
