/* Результаты, рейтинг, серии. Язык «плакат» из app.css: прямые углы, волосяные линии, цвет — только текстом. */

/* Сводка экрана результатов */
.res-summary { display: flex; flex-wrap: wrap; gap: 16px 32px; align-items: flex-end; justify-content: space-between; }
.res-actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.res-actions form { margin: 0; }
.res-nav { margin-top: 24px; }
.res-nav a span { font-weight: 400; color: var(--muted); margin-left: 6px; }

/* Площадка */
.area-block { margin-top: 40px; scroll-margin-top: 84px; }
.area-block .head h2 small { font-family: var(--font); font-size: 15px; font-weight: 400; text-transform: none; color: var(--muted); margin-left: 12px; }
.area-foot { position: sticky; bottom: 0; z-index: 5; display: flex; gap: 16px; align-items: center; justify-content: flex-end; flex-wrap: wrap;
  margin-top: 8px; padding: 12px 0; background: var(--paper); border-top: 1px solid var(--line); }
.area-foot .dirty-note { font-size: 14px; font-weight: 600; color: var(--warn); }
.res-table tr.is-dirty td:first-child { box-shadow: inset 4px 0 0 var(--warn); }

.res-table td { vertical-align: top; }
.res-table .no { font: 600 20px/1.2 var(--serif); width: 44px; }
.res-table th.red { color: var(--red-ink); }
.res-table th.blue { color: var(--blue); }
.res-table .who b { display: block; font-weight: 600; }
.res-table .who span { display: block; font-size: 13px; color: var(--muted); }
.res-table .grp { font-size: 14px; max-width: 220px; }
.res-table .grp span { display: block; color: var(--muted); font-size: 13px; }
/* Справа место под стрелку списка: длинный способ победы не заезжает под неё */
.res-table select { width: auto; max-width: 100%; padding: 6px 28px 6px 8px; font-size: 14px; background-position: right 10px center; }
.res-table .changed { font-size: 13px; color: var(--muted); white-space: nowrap; }
.res-table tr.is-done .no { color: var(--ok); }
.res-table tr.has-error td { background: #fcecec; }
.res-table .row-error { display: block; font-size: 13px; color: var(--red-dark); margin-top: 4px; }
/* Чёткая сетка и цвет угла полоской: строки боёв не сливаются (просьба ЦРЕ 09.10) */
@media (min-width: 601px) {
  .res-table th { padding: 8px 10px; border: 1px solid var(--line3); border-bottom: 2px solid var(--ink); }
  .res-table td { padding: 8px 10px; border: 1px solid var(--line2); }
  .res-table td:last-child, .res-table th:last-child { padding-right: 10px; }
  .res-table .no { text-align: center; background: var(--cell); }
  .res-table .r-red { box-shadow: inset 4px 0 0 var(--red); padding-left: 14px; }
  .res-table .r-blue { box-shadow: inset 4px 0 0 var(--blue); padding-left: 14px; }
  .res-table tr.is-done .no { background: #e6f3eb; }
}

/* Выбор итога: обычные радиокнопки, выбранный вариант подчёркнут */
/* Всегда одинаково: «Красный» и «Синий» в первой строке, «Ничья» / «Сбросить» — во второй */
.pick { display: grid; grid-template-columns: repeat(2, max-content); justify-content: start; gap: 6px 16px; }
.pick .draw, .pick .reset { grid-row: 2; }
.pick label { display: inline-flex; gap: 6px; align-items: center; font-weight: 600; font-size: 14px; cursor: pointer; white-space: nowrap; padding: 2px 0; border-bottom: 2px solid transparent; }
.pick input[type=radio] { width: 18px; height: 18px; margin: 0; }
.pick .red { color: var(--red-ink); } .pick .red input { accent-color: var(--red); }
.pick .blue { color: var(--blue); } .pick .blue input { accent-color: var(--blue); }
.pick .draw, .pick .reset { color: var(--muted); } .pick .draw input, .pick .reset input { accent-color: var(--ink); }
.pick label:has(input:checked) { border-bottom-color: currentColor; }
.pick label.reset:has(input:checked) { color: var(--red-dark); }

@media (max-width: 700px) {
  .res-table .grp { max-width: none; }
  .area-foot .btn { width: 100%; }
}
/* Ввод итогов на телефоне: номер и группа, ниже углы рядом, под ними выбор итога и способа */
@media (max-width: 600px) {
  .res-table thead { display: none; }
  .res-table, .res-table tbody { display: block; }
  .res-table tr { display: grid; grid-template-columns: 36px minmax(0, 1fr) minmax(0, 1fr); column-gap: 12px; row-gap: 8px;
    grid-template-areas: "no grp grp" ". red blue" ". pick pick" ". method method" ". changed changed";
    padding: 10px; border: 1px solid var(--line2); background: var(--paper); }
  .res-table tr + tr { margin-top: 8px; }
  .res-table tr.is-done { border-left: 4px solid var(--ok); }
  .res-table td { display: block; border: 0; padding: 0; }
  .res-table .r-red { border-left: 3px solid var(--red); padding-left: 8px; }
  .res-table .r-blue { border-left: 3px solid var(--blue); padding-left: 8px; }
  .res-table .no { grid-area: no; width: auto; }
  .res-table .grp { grid-area: grp; }
  .res-table .r-red { grid-area: red; } .res-table .r-blue { grid-area: blue; }
  .res-table .r-red::before, .res-table .r-blue::before { display: block; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
  .res-table .r-red::before { content: "Красный"; color: var(--red-ink); }
  .res-table .r-blue::before { content: "Синий"; color: var(--blue); }
  .res-table .r-pick { grid-area: pick; } .res-table .r-method { grid-area: method; }
  .res-table .changed { grid-area: changed; white-space: normal; }
  .res-table .changed:empty { display: none; }
}

/* Рейтинг: вид спорта, архив сезонов */
/* Фильтры рейтинга спортсменов: на телефоне по два в ряд */
.rating-filters { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 12px; align-items: end; margin: -8px 0 20px; }
.rating-filters label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.rating-filters select { width: 100%; min-height: 40px; padding: 8px 10px; font-size: 15px; }
.rating-filters .filter-buttons { display: flex; gap: 4px 12px; align-items: center; min-width: 0; }
.rating-filters .filter-buttons a { padding: 10px 0; }
.rating-filters .filter-buttons:empty { display: none; }
@media (max-width: 600px) { .rating-filters { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); } }
@media (pointer: coarse) { .rating-filters select { min-height: 44px; } }
.season-bar { display: flex; gap: 12px 24px; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; margin-bottom: 24px; }
.season-bar .switch { margin: 0; flex: 1 1 280px; }
.season-bar form { flex: 0 1 300px; margin: 0; }
.season-bar label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 4px; }
.season-note { margin: 0 0 8px; }
.season-note .mark { margin-left: 8px; }
.series-links { margin-top: 32px; }
.series-links .rowlink { grid-template-columns: minmax(0, 1fr) auto; }
@media (max-width: 600px) {
  .season-bar form { flex-basis: 100%; }
  .season-bar.rating-bar .switch { flex-basis: auto; }
}

/* Серия */
.stages { list-style: none; margin: 0 0 32px; padding: 0; }
.stages li { display: grid; grid-template-columns: 112px 140px 1fr auto auto; gap: 20px; padding: 14px 0; border-bottom: 1px solid var(--line); align-items: center; }
.stages .st-pic { display: block; } .stages .st-pic .cover, .stages .st-pic .slot { width: 112px; }
.stages .kind { white-space: nowrap; }
@media (max-width: 600px) {
  .stages li { grid-template-columns: 88px minmax(0, 1fr); gap: 2px 14px; }
  .stages .st-pic { grid-row: 1 / span 4; }
  .stages .status { justify-self: start; } .stages .st-pic .cover, .stages .st-pic .slot { width: 88px; }
}
.adm-table input[type=text] { padding: 6px 8px; font-size: 14px; min-width: 180px; }
.adm-table select { width: auto; max-width: 100%; padding: 6px 28px 6px 8px; font-size: 14px; background-position: right 10px center; }

/* Протокол победителей и призёров: тот же лист на экране и на А4 */
.pr-bar { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-bottom: 28px; }
.protocol { max-width: 920px; }
.pr-head { border-bottom: 2px solid var(--line-strong); padding-bottom: 16px; margin-bottom: 8px; }
.pr-org { margin: 0 0 4px; font-size: 14px; color: var(--muted); }
.pr-doc-title { display: none; font-size: 26px; margin: 0 0 4px; }
.pr-title { font-size: 20px; font-weight: 600; line-height: 1.25; margin: 0 0 14px; }
.pr-disc { margin-top: 36px; }
.pr-disc h2 { margin: 0 0 12px; padding-bottom: 6px; border-bottom: 2px solid var(--ink); }
/* Категории призёров карточками: плашка категории, места 1/2/3 с медальным кружком */
.pr-cats { display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); gap: 16px; }
.pr-cat { border: 1px solid var(--line2); background: var(--paper); min-width: 0; break-inside: avoid; }
.pr-cat-head { margin: 0; padding: 8px 12px; background: var(--mist); border-bottom: 1px solid var(--line2); border-left: 4px solid var(--blue);
  font: 600 15px/1.3 var(--font); color: var(--ink); }
.pr-places { list-style: none; margin: 0; padding: 0; }
.pr-row { display: grid; grid-template-columns: 30px minmax(0, 1fr) auto; column-gap: 12px; align-items: start; padding: 8px 12px; }
.pr-row + .pr-row { border-top: 1px solid var(--line); }
.pr-medal { width: 28px; height: 28px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  font: 600 14px/1 var(--font); font-variant-numeric: tabular-nums; border: 2px solid var(--line2); background: #f4f4f6; color: var(--ink); }
.pr-p1 .pr-medal { background: #f7e7b4; border-color: #c9a227; color: #5c4600; }
.pr-p2 .pr-medal { background: #e9eaee; border-color: #9aa0ab; color: #3b3f47; }
.pr-p3 .pr-medal { background: #f1dcc8; border-color: #b87a45; color: #5a3416; }
.pr-person { min-width: 0; line-height: 1.3; padding-top: 3px; }
.pr-person b { font-weight: 600; font-size: 16px; }
.pr-year { font-size: 13px; color: var(--ink2); white-space: nowrap; }
.pr-sub { display: block; margin-top: 2px; font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.pr-shared { align-self: center; font-size: 12px; font-weight: 600; padding: 2px 6px; border: 1px solid var(--line2); color: var(--ink2); }
@media (max-width: 600px) { .pr-cats { grid-template-columns: minmax(0, 1fr); } }
.pr-table { min-width: 560px; }
.pr-table .pr-group th { padding-top: 18px; font: 600 15px/1.2 var(--font); text-transform: none; letter-spacing: 0; color: var(--ink); border-bottom: 1px solid var(--line-strong); white-space: normal; }
.pr-table .pr-place { font: 600 20px/1 var(--head); width: 64px; font-variant-numeric: tabular-nums; }
.pr-table .pr-place span { display: block; font: 400 12px var(--font); color: var(--muted); margin-top: 2px; }
.pr-table .pr-who { font-weight: 600; }
.pr-table .pr-who span { display: block; font-weight: 400; font-size: 13px; color: var(--muted); }
.pr-teams .pr-table { min-width: 480px; }
.pr-table .pr-who .pr-sub { display: none; }
@media (max-width: 600px) {
  .pr-table, .pr-teams .pr-table { min-width: 0; }
  .pr-table .pr-wide { display: none; }
  .pr-table .pr-who .pr-sub { display: block; }
}
.pr-sign { display: flex; gap: 24px 48px; flex-wrap: wrap; margin-top: 48px; }
.pr-sign div { flex: 1 1 260px; display: grid; grid-template-columns: max-content minmax(80px, 1fr); column-gap: 12px; align-items: end; }
.pr-sign span { font-weight: 600; }
.pr-sign i { border-bottom: 1px solid var(--ink); height: 1.4em; }
.pr-sign small { grid-column: 2; font-size: 12px; color: var(--muted); text-align: center; }
@media print {
  .topbar, .footer, .page-head, .pr-bar, .cookie-bar, .alert { display: none !important; }
  body { font-size: 11pt; }
  .container.section { padding: 0; max-width: none; }
  .protocol { max-width: none; }
  .pr-doc-title { display: block; }
  .table-wrap { overflow: visible; }
  .pr-table { min-width: 0; }
  .pr-table td { padding-top: 3px; padding-bottom: 3px; }
  .pr-table .pr-group th { padding-top: 10px; }
  .pr-head { padding-bottom: 10px; }
  .pr-table tbody { break-inside: avoid; }
  .pr-cats { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 8px; }
  .pr-cat-head { background: none; padding: 4px 8px; }
  .pr-row { padding: 3px 8px; }
  .pr-medal { width: 22px; height: 22px; font-size: 12px; -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .pr-disc { margin-top: 20px; }
  .pr-sign { break-inside: avoid; margin-top: 28px; }
  a { color: inherit; text-decoration: none; }
}
@page { size: A4; margin: 14mm 12mm; }

/* Афиша для соцсетей (только сотрудникам) */
.poster-block { margin-top: 40px; }
.poster-grid { display: grid; grid-template-columns: minmax(0, 420px) 280px; gap: 32px 64px; margin-top: 20px; align-items: start; }
.poster-form { max-width: 420px; }
.poster-form .field { margin-bottom: 16px; }
.poster-form input[type=number] { max-width: 120px; }
.poster-preview { margin: 0; }
.poster-preview img { display: block; width: 100%; height: auto; background: var(--brand-dark); border: 1px solid var(--line-strong); }
.poster-preview figcaption { margin-top: 8px; }
@media (max-width: 700px) {
  .poster-grid { grid-template-columns: minmax(0, 1fr); }
  .poster-form { max-width: none; }
  .poster-form .btn { width: 100%; }
  .poster-preview { max-width: 280px; }
}

/* Ввод результатов и допуск: поля плотнее */
.res-table select, .adm-table select, .adm-table input[type=text] { min-height: 40px; }
@media (pointer: coarse) { .res-table select, .adm-table select, .adm-table input[type=text] { min-height: 44px; } }
/* Счёт по очкам под способом победы */
.res-table .r-method .score { display: block; width: 72px; margin-top: 6px; padding: 4px 6px; font: inherit; font-size: 14px; }

/* Пометки в строке боя: «идёт в судейской программе», расхождение с программой */
.res-table .row-note { display: block; margin-top: 4px; font-size: 13px; white-space: normal; }
.res-table a.row-sudya { color: var(--warn); font-weight: 600; text-decoration: none; border-bottom: 1px solid currentColor; display: inline; }

/* Блок «Судейская программа» */
.sudya-lead { max-width: 860px; }
.sudya-attention { display: grid; gap: 8px; margin: 16px 0; }
.sudya-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px 24px; align-items: center; padding: 12px 16px;
  background: var(--mist); border-left: 3px solid var(--warn); }
.sudya-item.is-error { border-left-color: var(--red); }
.sudya-item.is-pending { border-left-color: var(--line3); }
.sudya-item .si-text b { margin-right: 8px; }
.sudya-item .si-note { display: block; margin-top: 2px; }
.sudya-item .si-actions { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; }
.sudya-areas td { vertical-align: top; }
.sudya-areas .sa-count b { display: block; font-size: 20px; line-height: 1.2; }
.sudya-areas .sa-count span { display: block; font-size: 13px; color: var(--muted); }
.sudya-areas .sa-token { display: flex; flex-wrap: wrap; gap: 4px 12px; align-items: center; font-size: 14px; }
.sudya-areas .sa-token + .sa-token { margin-top: 6px; }
.sudya-areas .sa-token form { margin: 0; }
.sudya-areas .sa-rejected { margin: 8px 0 0; font-size: 13px; max-width: 360px; white-space: normal; }
.sudya-areas .sa-rejected .mark { font-size: 13px; white-space: normal; }
.sudya-areas .sa-actions { min-width: 300px; }
.sudya-areas .sa-actions form { margin: 0 0 8px; }
.sudya-areas .sa-upload { display: flex; flex-wrap: wrap; gap: 4px 8px; align-items: center; }
.sudya-areas .sa-upload label { flex-basis: 100%; font-size: 13px; color: var(--muted); }
.sudya-areas .sa-upload input[type=file] { flex: 1 1 240px; width: auto; min-width: 0; min-height: 40px; padding-top: 3px; padding-bottom: 3px; }
.sudya-areas .sa-issued td { background: var(--mist); padding: 16px; border-left: 3px solid var(--ok); }
.sudya-areas .sa-issued p { margin: 0 0 12px; max-width: 860px; white-space: normal; }
.sa-copy { display: grid; grid-template-columns: max-content minmax(0, 1fr) auto; gap: 8px 12px; align-items: center; max-width: 960px; }
.sa-copy label { font-size: 14px; font-weight: 600; color: var(--ink2); }
.sa-copy input { min-height: 40px; padding: 7px 10px; font-size: 14px; font-variant-numeric: tabular-nums; }
.sudya-uploads { margin-top: 24px; }
.sudya-uploads h3, .sudya-rules summary { font: 600 16px/1.3 var(--font); }
.sudya-uploads ul { list-style: none; margin: 8px 0 0; padding: 0; }
.sudya-uploads li { display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; justify-content: space-between; padding: 8px 0;
  border-bottom: 1px solid var(--line); font-size: 14px; }
.sudya-uploads li.is-new { box-shadow: inset 3px 0 0 var(--ok); padding-left: 12px; }
.sudya-rules { margin-top: 24px; }
.sudya-rules summary { cursor: pointer; padding: 8px 0; }
.sudya-rules .sr-grid { display: grid; grid-template-columns: max-content minmax(0, 320px); gap: 8px 16px; align-items: center; margin: 8px 0 16px; }
.sudya-rules .sr-grid label { font-weight: 600; font-size: 14px; }
.sudya-rules select { min-height: 40px; padding-top: 6px; padding-bottom: 6px; font-size: 14px; }
@media (max-width: 700px) {
  .sudya-item { grid-template-columns: minmax(0, 1fr); }
  .sa-copy { grid-template-columns: minmax(0, 1fr) auto; }
  .sa-copy label { grid-column: 1 / -1; margin-top: 4px; }
  .sudya-rules .sr-grid { grid-template-columns: minmax(0, 1fr); }
  .sudya-areas .sa-actions { min-width: 0; }
}
/* Таблица площадок на телефоне — карточками, как ввод итогов */
@media (max-width: 600px) {
  .sudya-areas thead { display: none; }
  .sudya-areas, .sudya-areas tbody, .sudya-areas tr, .sudya-areas td { display: block; }
  .sudya-areas tr { padding: 10px 0; border-bottom: 1px solid var(--line2); }
  .sudya-areas td { padding: 4px 0; border: 0; }
  .sudya-areas .sa-issued td { padding: 12px; }
}

/* Столбец турнира: дата и короткое имя под ней (два турнира в один день различимы) */
.table th.t-col { min-width: 6.5em; max-width: 9em; white-space: normal; vertical-align: bottom; line-height: 1.2; }
.table th.t-col .sub { font-size: 12px; text-transform: none; letter-spacing: 0; font-weight: 500; }

/* ---------- Тёмная тема (data-theme="dark", см. app.css): светлые подложки плашек — тёмными оттенками ---------- */
[data-theme="dark"] .res-table tr.has-error td { background: rgba(255, 107, 112, .1); }
[data-theme="dark"] .res-table tr.is-done .no { background: rgba(76, 196, 126, .13); }
/* Кружок без медали — тёмный; медальные (pr-p1…3) остаются как на бумаге */
[data-theme="dark"] .pr-row:not(.pr-p1, .pr-p2, .pr-p3) > .pr-medal { background: var(--slot); }

/* Серия, допуск к финалу: место на этапе медальным кружком, победы — точками, решение — плашкой статуса */
.stg { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; color: var(--ink2); white-space: nowrap; }
.stg .place-1, .stg .place-2, .stg .place-3 { width: 24px; height: 24px; font-size: 12px; border-width: 1.5px; }
.stg-win { font-weight: 600; color: var(--ink); }
.stg-draw { display: inline-block; margin-left: 6px; padding: 1px 6px; border: 1px solid var(--line2); font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--ink3); }
.stg-none { font-size: 13px; color: var(--ink3); }
.stg-none::before { content: ""; display: inline-block; width: 14px; height: 1px; margin-right: 8px; vertical-align: middle; background: var(--line2); }
.pips { display: inline-flex; gap: 4px; margin-right: 10px; vertical-align: 1px; }
.pips i { width: 9px; height: 9px; border: 1.5px solid var(--line2); border-radius: 50%; }
.pips i.on { border-color: var(--ok); background: var(--ok); }
.series-adm td { vertical-align: middle; }
.series-adm .f-act .status { font-size: 13px; }
.series-adm .f-act .sub { display: block; margin-top: 4px; }
@media (max-width: 700px) { .pips { display: none; } .stg { gap: 6px; } }
