/* Жеребьёвка, площадки и очередь боёв. Язык «плакат» из app.css: прямые углы, волосяные линии. */

.container.wide { max-width: 1440px; }
input[type=time] { width: 100%; font: 16px var(--font); padding: 10px 12px; border: 1px solid var(--field); border-radius: 0; background: var(--field-bg); color: var(--ink); }

/* Шапка секретаря: вкладки и действия */
.draw-tabs { display: flex; gap: 12px 24px; align-items: flex-end; justify-content: space-between; flex-wrap: wrap; border-bottom: 1px solid var(--line); margin-bottom: 24px; }
.draw-tabs .switch { border-bottom: 0; margin-bottom: 0; }
.draw-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; padding-bottom: 8px; }
.draw-actions form { margin: 0; }
/* Плашка «после публикации изменено» */
.changed-bar { display: flex; gap: 10px 20px; align-items: center; justify-content: space-between; flex-wrap: wrap;
  background: #fdf3e2; border-left: 4px solid var(--warn); padding: 12px 16px; margin: -12px 0 24px; }
.changed-bar p { margin: 0; color: var(--warn); }
.changed-bar p .muted { margin-left: 4px; }
@media (max-width: 600px) { .changed-bar p .muted { display: block; margin: 2px 0 0; } }
.changed-bar form { margin: 0; }
.changed-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* Фильтры таблицей */
.draw-filters { display: grid; grid-template-columns: repeat(auto-fill, minmax(130px, 1fr)); gap: 12px; align-items: end; margin-bottom: 24px; }
.draw-filters .field label { font-size: 13px; }
.draw-filters input, .draw-filters select { padding: 8px 10px; font-size: 15px; }
.draw-filters .range { display: flex; gap: 6px; }
.draw-filters .range input { min-width: 0; }
.draw-filters .filter-buttons { display: flex; gap: 4px 12px; align-items: center; flex-wrap: wrap; min-width: 0; }
.draw-filters .filter-buttons a { padding: 10px 0; }
/* Поля сжимаются, а кнопки берут свою ширину: на 1024 «Показать» не вылезает за сетку вправо */
@media (min-width: 900px) { .draw-filters { grid-template-columns: minmax(0, 140px) minmax(0, 140px) minmax(0, 200px) minmax(0, 200px) minmax(0, 150px) max-content; } }

/* Таблица участников */
.draw-table td { padding-top: 8px; padding-bottom: 8px; }
.draw-table td.pick { width: 30px; }
.draw-table label.who { display: block; font-weight: 600; cursor: pointer; }
.draw-table tr.picked { background: var(--blue-tint); }
.draw-table .w { font-weight: 600; }
.draw-table .gender-F { color: var(--red-dark); }
.draw-table .near-link { font-size: 13px; white-space: nowrap; }
.near-row > td { background: var(--mist); padding: 12px 16px !important; border-bottom: 2px solid var(--blue) !important; }
.near-row .near-head { display: flex; gap: 12px; align-items: baseline; justify-content: space-between; margin-bottom: 6px; }
.near-list { list-style: none; margin: 0; padding: 0; }
.near-list li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 4px 12px; align-items: center; padding: 6px 0; border-top: 1px solid var(--line); }
.near-list li:first-child { border-top: 0; }
.near-list .near-meta { font-size: 14px; }

/* Панель «составить» внизу экрана */
.pick-bar { position: sticky; bottom: 0; z-index: 20; background: var(--paper); border-top: 2px solid var(--line-strong); padding: 12px 0; margin-top: 8px;
  display: flex; gap: 12px 20px; align-items: center; flex-wrap: wrap; }
.pick-bar .hint { font-size: 14px; color: var(--muted); }

/* Составленные пары и группы */
.groups-table .members { list-style: none; margin: 0; padding: 0; }
.groups-table .members li + li { margin-top: 2px; }
.groups-table .bouts { list-style: none; margin: 0; padding: 0; font-size: 14px; }
.groups-table .bouts li + li { margin-top: 4px; }
.groups-table td { vertical-align: top; }
.groups-table .glabel { font-weight: 600; }

/* Углы: цвет текстом, без заливки */
.corner-red { color: var(--red-ink); }
.corner-blue { color: var(--blue); }
.corner-tag { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; }
.corner-tag.red { color: var(--red-ink); } .corner-tag.blue { color: var(--blue); }

/* Площадки секретаря */
.area-tools { display: grid; grid-template-columns: minmax(0, 1fr); gap: 20px; margin-bottom: 28px; }
@media (min-width: 900px) { .area-tools { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto; align-items: end; } }
.area-tools form { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; margin: 0; }
.area-tools .field { flex: 1 1 120px; }
.area-tools .field input, .area-tools .field select { padding: 8px 10px; }
/* Доска площадок: каждая площадка — отдельная колонка в рамке, бой — карточка в рамке.
   Просьба ЦРЕ 09.10: «границы почётче, а то всё сливается» */
.board { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; align-items: start; }
/* Все площадки в один ряд: пятая колонка не уезжает вниз под длинный столбец «Без площадки». Больше — прокрутка вбок */
@media (min-width: 900px) { .board { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(250px, 1fr); overflow-x: auto; padding-bottom: 8px; } }
.board-col { border: 1px solid var(--line3); background: var(--mist); min-width: 0; }
.board-col .head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin: 0; padding: 10px 12px;
  background: var(--brand); color: #fff; border-bottom: 0; }
.board-col .head h3 { margin: 0; font-size: 20px; color: #fff; }
.board-col .head .muted { color: #fff; font-weight: 600; font-size: 14px; background: rgba(255, 255, 255, .18); padding: 1px 9px; border-radius: 999px; }
.board-col.is-free .head { background: var(--ink2); }
.board-col .col-meta { font-size: 13px; color: var(--ink2); margin: 0; padding: 8px 12px 0; font-variant-numeric: tabular-nums; }
.board-col .col-links { display: flex; gap: 12px; flex-wrap: wrap; font-size: 13px; margin: 0; padding: 4px 12px 8px; border-bottom: 1px solid var(--line2); }
.board-col .col-links form { margin: 0; }
.queue { list-style: none; margin: 0; padding: 10px; min-height: 64px; display: grid; gap: 10px; }
.queue:empty::after { content: "Перетащите сюда бой"; display: block; padding: 16px; color: var(--ink2); font-size: 14px; text-align: center;
  border: 1px dashed var(--line2); background: var(--paper); }

/* Карточка боя секретаря */
.bout-card { background: var(--paper); border: 1px solid var(--line2); border-left: 4px solid var(--ink2); cursor: grab; min-width: 0; }
.bout-card.is-done { border-left-color: var(--ok); }
.bout-card:target { box-shadow: 0 0 0 2px var(--blue); }
.bc-head { display: flex; gap: 6px 8px; align-items: center; flex-wrap: wrap; padding: 6px 10px; background: var(--cell); border-bottom: 1px solid var(--line); }
.bc-head .q-no { font: 600 20px/1 var(--serif); font-variant-numeric: lining-nums; white-space: nowrap; }
.bc-time { font-weight: 600; font-variant-numeric: tabular-nums; }
.bc-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-left: auto; }
.bc-tag { font-size: 12px; font-weight: 600; line-height: 1.2; padding: 2px 6px; border: 1px solid var(--line2); background: var(--paper); white-space: nowrap; }
.bc-tag.bc-wc { background: var(--ink); border-color: var(--ink); color: var(--on-ink); }
.bc-tag.bc-ok { background: #e6f3eb; border-color: var(--ok); color: var(--ok); }
.bc-corner { display: flex; flex-direction: column; padding: 5px 10px 5px 12px; border-left: 4px solid; margin-left: 8px; line-height: 1.3; min-width: 0; }
.bc-corner + .bc-corner { border-top: 1px solid var(--line); }
.bc-head + .bc-corner { margin-top: 6px; }
.bc-corner.red { border-left-color: var(--red); }
.bc-corner.blue { border-left-color: var(--blue); }
.bc-side { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.bc-name { font-size: 15px; font-weight: 600; overflow-wrap: anywhere; }
.bc-club, .bc-wait { font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.bc-cat { margin: 6px 10px 0; padding-top: 6px; border-top: 1px dashed var(--line); font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.bc-warn { list-style: none; margin: 6px 10px 0; padding: 5px 8px; background: #fdf3e2; border-left: 3px solid var(--warn); color: var(--warn);
  font-size: 13px; font-weight: 600; line-height: 1.3; overflow-wrap: anywhere; }
.bc-warn li + li { margin-top: 3px; }
.q-controls { display: flex; gap: 6px; flex-wrap: wrap; align-items: center; margin: 8px 0 0; padding: 6px 10px; border-top: 1px solid var(--line); background: #fafafb; }
/* В узкой колонке «На площадку» переносится под список, а не вылезает за карточку */
.q-controls form { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; align-items: center; min-width: 0; max-width: 100%; }
.q-controls select { width: auto; min-width: 0; max-width: 100%; flex: 1 1 9.5em; padding: 4px 30px 4px 8px; font-size: 14px; }
.q-controls .btn-sm { padding: 4px 10px; font-size: 12px; }
.sortable-ghost { opacity: .35; }
.sortable-chosen { box-shadow: 0 4px 14px rgba(20, 20, 20, .18); }

/* Публичная очередь площадки — в первую очередь телефон */
.pub-tools { background: var(--paper); margin-bottom: 32px; }
.pub-search { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 12px; }
.pub-search[hidden] { display: none; }
.pub-search input { padding: 8px 10px; }
.pub-tabs { display: flex; gap: 20px; overflow-x: auto; border-bottom: 1px solid var(--line); margin-top: 12px; scrollbar-width: none; }
.pub-tabs a { flex: none; padding: 10px 0; color: var(--muted); text-decoration: none; font-weight: 600; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.pub-tabs a.on { color: var(--ink); border-bottom-color: var(--blue); }
.pub-tabs .num { display: inline-block; min-width: 20px; margin-left: 6px; padding: 0 6px; border-radius: 10px; background: var(--mist);
  font-size: 12px; font-weight: 600; line-height: 18px; text-align: center; color: var(--ink); }
.pub-tabs .num:empty { display: none; }
.pub-none { padding: 16px 0; font-weight: 600; }
.pub-waiting { margin: 0; padding: 0; list-style: none; }
.pub-waiting > li { margin: 12px 0; padding: 12px 16px; border: 1px solid var(--line); border-left: 4px solid var(--blue); background: var(--mist); }
.pub-none-area { padding: 16px 0; color: var(--muted); }
.pub-elsewhere { padding: 0 0 16px; font-weight: 600; }
.pub-area { scroll-margin-top: var(--pub-offset, 200px); min-width: 0; }
.pub-area .head { margin-bottom: 4px; }
.pub-area .head .pub-span { margin-right: auto; color: var(--muted); font-weight: 600; white-space: nowrap; }
.pub-board > .pub-area ~ .pub-area { margin-top: 40px; }

.pub-queue { list-style: none; margin: 0; padding: 0; }
.pub-queue > li[hidden] { display: none; }
.pub-group { margin: 20px 0 8px; padding: 8px 12px; background: var(--mist); border-left: 4px solid var(--blue); }
.pub-queue > .pub-group:first-child { margin-top: 0; }
.pub-group h2, .pub-group h3 { margin: 0; font: 600 16px/1.3 var(--font); }
.pub-group h2 span, .pub-group h3 span { font: 400 14px var(--font); text-transform: none; color: var(--muted); }
.pub-group p { margin: 2px 0 0; font-size: 13px; color: var(--muted); }
.pub-group.is-none h2, .pub-group.is-none h3 { color: var(--muted); }
@media (max-width: 600px) { .pub-group h2, .pub-group h3 { font-size: 15px; } }

.pub-bout { position: relative; border: 1px solid var(--line2); background: var(--paper); scroll-margin-top: var(--pub-offset, 200px); }
.pub-bout + .pub-bout { margin-top: 10px; }
.pub-bout:target { box-shadow: 0 0 0 2px var(--blue); }
.pub-bout.is-live { border-color: var(--red); box-shadow: inset 0 0 0 1px var(--red); }
/* Шапка: «Бой 27» и «Время 11:40» крупными цифрами с подписями, справа плашки стадии, веса, категории */
.pb-top { display: flex; align-items: center; gap: 14px; padding: 8px 12px; background: var(--cell); border-bottom: 1px solid var(--line); }
.pb-no, .pb-time { display: flex; flex-direction: column; line-height: 1; }
.pb-no-label { font-size: 10px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: var(--muted); margin-bottom: 3px; }
.pb-no b { font: 600 26px/1 var(--serif); font-variant-numeric: lining-nums; }
.pb-time b { font-size: 18px; font-weight: 700; font-variant-numeric: tabular-nums; }
.pb-time { padding-left: 14px; border-left: 1px solid var(--line2); }
.pb-chips { margin-left: auto; display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 4px; }
.pb-chip { font-size: 12px; font-weight: 700; line-height: 1; padding: 5px 7px; border: 1px solid var(--line2); background: var(--paper); white-space: nowrap; }
.pb-chip.pb-wc { background: var(--ink); border-color: var(--ink); color: var(--on-ink, #fff); }
.pb-chip.stage-final { background: #ffe14d; border-color: #c9a400; color: #3d3100; }
.pb-chip.stage-sf { background: #b6ec9a; border-color: #4f9a2f; color: #1f4a0d; }
.pb-chip.stage-qf, .pb-chip.stage-r16 { background: #cfe3ff; border-color: #5b8fd6; color: #12396e; }
.pb-chip.is-live { background: var(--red); border-color: var(--red); color: #fff; }
.pb-chip.is-off { color: var(--muted); text-decoration: line-through; }
.pub-bout.is-live .pb-top { background: #fdeceb; }
/* Угол: цветная полоса слева, имя крупно, клуб и тренер мелко, справа метка итога */
.pb-corner { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: 10px; align-items: start;
  padding: 7px 12px 7px 14px; line-height: 1.3; border-left: 4px solid transparent; }
.pb-corner + .pb-corner { border-top: 1px solid var(--line); }
.pb-corner.red { border-left-color: var(--red); }
.pb-corner.blue { border-left-color: var(--blue); }
.pb-side { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.pb-name { grid-column: 1; font-size: 17px; font-weight: 700; overflow-wrap: break-word; }
.pb-club, .pb-wait { grid-column: 1; font-size: 13px; color: var(--muted); overflow-wrap: break-word; }
.pb-sub { grid-column: 1; display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 8px; min-width: 0; }
.pb-note { padding: 0 5px; font-size: 12px; line-height: 1.5; color: var(--ink); border: 1px solid var(--line-strong); white-space: nowrap; }
.pb-mark { grid-column: 2; grid-row: 1; align-self: start; margin-top: 2px; font-size: 11px; font-weight: 700; line-height: 1; text-transform: uppercase; letter-spacing: .06em; padding: 4px 6px; color: #fff; }
.pb-corner.red .pb-mark { background: var(--red); }
.pb-corner.blue .pb-mark { background: var(--brand); }
.pb-corner.drew .pb-mark { background: none; color: var(--ink); border: 1px solid var(--ink); padding: 3px 5px; }
.pb-corner.red.won .pb-name { color: var(--red-dark); }
.pb-corner.blue.won .pb-name { color: var(--blue); }
.is-done .pb-corner:not(.won):not(.drew) .pb-name { color: var(--muted); font-weight: 400; }
.pub-queue mark { background: var(--blue-tint); color: inherit; border-bottom: 2px solid var(--blue); }
/* Низ: возрастная группа и дисциплина, «О бое» */
.pb-foot { display: flex; gap: 4px 12px; align-items: baseline; padding: 6px 12px; border-top: 1px dashed var(--line); font-size: 12.5px; }
.pb-foot .pb-meta { color: var(--muted); flex: 1 1 auto; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pb-foot .pb-act { margin-left: auto; font-weight: 600; white-space: nowrap; padding: 10px 0 10px 16px; margin-top: -10px; margin-bottom: -10px; }

@media (max-width: 759px) {
  .pub-tools { position: sticky; top: calc(var(--hdr) + 1px); z-index: 40; padding-top: 12px; margin-top: -12px; border-bottom: 1px solid var(--line); }
  .pub-tools .pub-tabs { border-bottom: 0; }
  .pub-board.tabbed .pub-area { display: none; }
  .pub-board.tabbed .pub-area.on { display: block; }
  .pub-board.tabbed > .pub-area ~ .pub-area { margin-top: 0; }
  /* во вкладках название площадки уже в табе — остаётся только её время */
  .pub-board.tabbed .pub-area .head { border: 0; padding: 0 0 8px; }
  .pub-board.tabbed .pub-area .head > :not(.pub-span) { display: none; }
}
@media (min-width: 760px) {
  .pub-tabs, .pub-elsewhere { display: none; }
  .pub-search { max-width: 640px; }
  .pub-board { display: grid; grid-template-columns: repeat(auto-fit, minmax(340px, 1fr)); gap: 40px 32px; align-items: start; }
  .pub-board > .pub-area ~ .pub-area { margin-top: 0; }
  /* «Все площадки» на компьютере: доска во всю ширину, площадки колонками в один ряд, каждая колонка высотой
     в экран и листается сама; полоса прокрутки вбок всегда видна внизу экрана, поиск прилипает под шапкой */
  .pub-wide { max-width: none; }
  /* Вкладки площадок и на компьютере: до татами справа не надо листать — нажал, и доска прокрутилась */
  .pub-wide .pub-tabs { display: flex; gap: 6px; border: 0; margin-top: 12px; flex-wrap: wrap; }
  .pub-wide .pub-tabs a { padding: 6px 14px; border: 1px solid var(--line2); border-bottom-width: 1px; margin: 0; color: var(--ink); background: var(--paper); }
  .pub-wide .pub-tabs a:hover { border-color: var(--blue); }
  .pub-wide .pub-tabs a.on { background: var(--blue); border-color: var(--blue); color: #fff; }
  .pub-wide .pub-tabs a.on .num { background: #fff; color: var(--blue); }
  .pub-wide .pub-tools { position: sticky; top: calc(var(--hdr) + 1px); z-index: 40; padding: 12px 0; margin: -12px 0 16px; border-bottom: 1px solid var(--line); }
  .pub-wide .pub-board { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: minmax(320px, 1fr); gap: 16px;
    align-items: stretch; overflow-x: auto; overflow-y: hidden; height: calc(100vh - var(--pub-offset, 200px) - 12px); min-height: 480px; padding-bottom: 6px; }
  .pub-wide .pub-area { display: flex; flex-direction: column; min-height: 0; border: 1px solid var(--line2); background: var(--cell); }
  .pub-wide .pub-area .head { flex: none; margin: 0; padding: 10px 14px; background: var(--paper); border-bottom: 1px solid var(--line2); gap: 2px 12px; }
  .pub-wide .pub-area .head h2 { margin: 0; font-size: 24px; }
  .pub-wide .pub-area .pub-queue { flex: 1 1 auto; min-height: 0; overflow-y: auto; padding: 10px; }
  .pub-wide .pub-area > .empty, .pub-wide .pub-none-area { flex: none; padding: 16px 14px; }
  /* В колонке доски карточки плотнее: номер уже, имена и клубы мельче, клуб не рвётся посреди слова */
  .pub-wide .pb-top { gap: 10px; padding: 7px 10px; }
  .pub-wide .pb-no b { font-size: 22px; }
  .pub-wide .pb-time { padding-left: 10px; }
  .pub-wide .pb-time b { font-size: 16px; }
  .pub-wide .pb-chip { font-size: 11px; padding: 4px 6px; }
  .pub-wide .pb-name { font-size: 15px; }
  .pub-wide .pb-club, .pub-wide .pb-wait { font-size: 12px; }
  .pub-wide .pb-corner { padding: 5px 10px 5px 12px; }
  .pub-wide .pb-mark { font-size: 10px; padding: 3px 5px; }
  .pub-wide .pub-group { margin: 14px 0 6px; padding: 6px 10px; }
  .pub-wide .pub-group h2, .pub-wide .pub-group h3 { font-size: 14px; }
}

/* Олимпийская сетка. На телефоне — круги списком сверху вниз, шире — деревом: колонки по кругам,
   волосяные линии от боя к следующему бою */
.brk-list { margin-top: 48px; }
.brk-group { margin-top: 20px; }
.brk-group + .brk-group { margin-top: 36px; }
.brk-group h3 { margin: 0 0 12px; font-size: 20px; }
.brk-round { margin: 0 0 6px; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); }
.brk-col + .brk-col { margin-top: 16px; }
.brk-cells { list-style: none; margin: 0; padding: 0; }
.brk-cell { padding: 4px 0; }
.brk-cell.is-empty { display: none; }
.brk-match, .brk-bye { position: relative; width: 100%; border: 1px solid var(--line-strong); background: var(--paper); }
.brk-side { display: grid; grid-template-columns: 4px minmax(0, 1fr); column-gap: 8px; padding: 5px 8px 5px 0; line-height: 1.25; }
.brk-side::before { content: ""; grid-row: 1 / span 2; background: var(--red); }
.brk-side.blue::before { background: var(--blue); }
.brk-side + .brk-side { border-top: 1px solid var(--line); }
.brk-name { grid-column: 2; font-size: 15px; overflow-wrap: anywhere; }
.brk-club, .brk-wait { grid-column: 2; font-size: 12px; color: var(--muted); overflow-wrap: anywhere; }
.brk-side.won .brk-name { font-weight: 600; }
.brk-side.lost .brk-name { color: var(--muted); }
.brk-meta { margin: 0; padding: 3px 8px; font-size: 12px; color: var(--muted); border-top: 1px solid var(--line); }
.brk-bye { border-style: dashed; padding: 5px 8px; }
.brk-bye .brk-name { display: block; }
.brk-bye .brk-note { display: block; font-size: 12px; color: var(--muted); }
.brk-row > td { padding-top: 4px; padding-bottom: 20px; }

@media (min-width: 760px) {
  .brk { --brk-gap: 20px; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); }
  .brk-col { display: flex; flex-direction: column; min-width: 0; }
  .brk-col + .brk-col { margin-top: 0; }
  .brk-col:not(:first-child) .brk-round { padding-left: var(--brk-gap); }
  .brk-cells { flex: 1; display: flex; flex-direction: column; }
  .brk-cell { flex: 1 1 0; display: flex; align-items: center; position: relative; padding: 6px var(--brk-gap); }
  .brk-cell.is-empty { display: flex; }
  .brk-col:first-child .brk-cell { padding-left: 0; }
  .brk-col:last-child .brk-cell { padding-right: 0; }
  /* линия вправо и половина скобы к соседу по паре */
  .brk-col:not(:last-child) .brk-cell:not(.is-empty)::after { content: ""; position: absolute; right: 0; top: 50%; width: var(--brk-gap); border-top: 1px solid var(--line-strong); }
  .brk-col:not(:last-child) .brk-cell:not(.is-empty)::before { content: ""; position: absolute; right: 0; border-right: 1px solid var(--line-strong); }
  .brk-col:not(:last-child) .brk-cell:nth-child(odd)::before { top: 50%; bottom: 0; }
  .brk-col:not(:last-child) .brk-cell:nth-child(even)::before { top: 0; bottom: 50%; }
  /* линия слева к бою следующего круга */
  .brk-col:not(:first-child) .brk-match::before { content: ""; position: absolute; top: 50%; left: calc(-1 * var(--brk-gap) - 1px); width: var(--brk-gap); border-top: 1px solid var(--line-strong); }
}

/* Порядок в сетке перед созданием */
.seed-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; margin-top: 20px; }
@media (min-width: 1000px) {
  .seed-grid { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); align-items: start; }
  .seed-live { position: sticky; top: 16px; }
}
.seed-live .brk { margin-top: 12px; }
.seed-live .brk-match.is-clash { background: #fdf3e2; border-color: var(--warn); }
.seed-live .brk-meta.mark { white-space: normal; }
.seed-bad { margin-top: 10px; padding: 8px 12px; border-left: 3px solid var(--warn); background: #fdf3e2; font-size: 14px; }
.seed-bad p { margin: 0; }
.seed-bad p + p { margin-top: 6px; }
.seed-table input.seed-pos.is-bad { border-color: var(--warn); box-shadow: 0 0 0 2px rgba(214, 137, 16, .3); }
.seed-table input.seed-pos { width: 64px; padding: 6px 8px; font-size: 16px; }
.seed-table td { vertical-align: middle; }
.seed-table th:first-child, .seed-table td:first-child { width: 1%; text-align: left; }
.seed-pairs { list-style: none; margin: 0; padding: 0; counter-reset: pair; }
.seed-pairs li { padding: 10px 0; border-bottom: 1px solid var(--line); line-height: 1.4; }
.seed-pairs li.is-clash { background: #fdf3e2; }
.seed-pairs .seed-vs { color: var(--muted); font-size: 13px; margin: 0 4px; }
.seed-pairs .corner-red, .seed-pairs .corner-blue { font-weight: 600; }
.seed-actions { margin-top: 24px; flex-wrap: wrap; }

/* Подсказки родителям под парами */
.pub-help { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px; margin-top: 56px; padding-top: 24px; border-top: 2px solid var(--ink); }
.pub-help h2 { font: 600 17px/1.3 var(--font); margin: 0 0 8px; }
.pub-help p { margin: 0; font-size: 15px; color: var(--ink2); }
@media (max-width: 900px) { .pub-help { grid-template-columns: minmax(0, 1fr); gap: 20px; margin-top: 40px; } }

/* Рабочие экраны секретаря: поля плотнее, чем на публичных страницах */
.draw-filters input, .draw-filters select, .area-tools input, .area-tools select, .seed-table input,
.q-controls select, .near-row select { min-height: 40px; }
.q-controls select { min-height: 36px; padding-top: 4px; padding-bottom: 4px; }
.q-controls .btn-sm { min-height: 36px; }
@media (pointer: coarse) { .q-controls select, .q-controls .btn-sm { min-height: 44px; } }
/* Служебный комментарий секретаря: тихое поле под фамилией, заметно, когда заполнено */
.draw-table .draw-note { display: block; width: 100%; max-width: 260px; margin-top: 4px; padding: 3px 6px; border: 1px dashed transparent;
  border-radius: 6px; background: transparent; font: inherit; font-size: 13px; color: var(--ink-2, #555); }
.draw-table .draw-note:hover, .draw-table .draw-note:focus { border-color: var(--line, #ccd); background: var(--bg, #fff); outline: none; }
.draw-table .draw-note:not(:placeholder-shown) { background: #fff6d6; color: #5a4300; }
.sec-note { display: block; margin-top: 2px; font-size: 13px; color: #5a4300; }
.sec-note::before { content: "✎ "; }
/* Пожелание тренера из заявки: видит только секретарь */
.coach-note { display: block; margin-top: 2px; font-size: 13px; color: var(--blue); overflow-wrap: anywhere; }
/* «Снять» под «Ближайшие»: тихая красная ссылка, чтобы не нажать случайно вместо пары */
.draw-table .withdraw-btn { display: block; margin-top: 6px; font-size: 13px; color: var(--red-dark, #b3261e); }
.draw-table .walkover-btn { display: block; margin-top: 6px; font-size: 13px; }
.draw-table .move-disc { display: flex; gap: 6px; align-items: center; margin-top: 6px; font-size: 13px; white-space: nowrap; }
.draw-table .move-disc select { width: auto; min-height: 0; padding: 2px 22px 2px 6px; font-size: 13px; background-position: right 4px center; }
.alert .inline-form { display: inline; margin-left: 6px; }
/* «Поставить на №» в карточке боя */
/* Номер боя в очереди — поле ввода, похожее на подпись: рамка видна при наведении и фокусе */
.q-no-form { display: inline; margin: 0; }
.q-item .q-no-input { width: 3.2em; min-height: 0; height: 30px; padding: 0 6px; border: 1px solid var(--line2); background: var(--paper);
  font: 600 18px/1 var(--serif); font-variant-numeric: lining-nums; -moz-appearance: textfield; appearance: textfield; vertical-align: middle; }
.q-item .q-no-input::-webkit-inner-spin-button, .q-item .q-no-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.q-item .q-no-input:hover, .q-item .q-no-input:focus { border-color: var(--blue); background: var(--field-bg); outline: none; box-shadow: 0 0 0 1px var(--blue); }
@media (pointer: coarse) { .q-item .q-no-input { height: 40px; width: 3.6em; } }

/* Снятые с турнира: мягкий красный, не тревожный */
.withdrawn-table td { background: #fbefef; color: #6b2323; }
.withdrawn-table .sub { display: block; margin-top: 2px; font-size: 13px; color: #9a3a3a; }
.mark-off { display: inline-block; padding: 1px 8px; border-radius: 999px; background: #f6dcdc; color: #8f2a2a; font-size: 12px; font-weight: 600; vertical-align: 1px; }
.members li.is-off { background: #fbefef; color: #6b2323; padding: 2px 6px; border-radius: 6px; }

/* Таблицы жеребьёвки — плотнее (больше строк на экране) и с чёткой сеткой: просьба ЦРЕ 09.10 */
.draw-table, .groups-table, .withdrawn-table { font-size: 14px; }
.draw-table th, .groups-table th, .withdrawn-table th { padding: 6px 8px; border: 1px solid var(--line3); border-bottom: 2px solid var(--ink); }
.draw-table td, .groups-table td, .withdrawn-table td { padding: 3px 8px; border: 1px solid var(--line2); line-height: 1.3; }
.draw-table td:last-child, .draw-table th:last-child, .groups-table td:last-child, .groups-table th:last-child,
.withdrawn-table td:last-child, .withdrawn-table th:last-child { padding-right: 8px; }
.draw-table td.pick { width: 30px; text-align: center; }
.draw-table input.draw-note { margin-top: 0; padding: 0 6px; height: 20px; min-height: 0; line-height: 18px; font-size: 13px; }
.draw-table .near-link, .draw-table .withdraw-btn, .draw-table .walkover-btn { display: inline; margin: 0 10px 0 0; font-size: 13px; }
/* Действия «Без пары» переносятся по кнопкам в 2–3 строки внутри ячейки: на 1000–1440 таблица без прокрутки,
   «Снять» не обрезается краем (просьба ЦРЕ 23.10) */
.draw-table td:last-child { width: 180px; white-space: normal; line-height: 1.2; }
@media (min-width: 1200px) { .draw-table td:last-child { width: 320px; } }  /* кнопки — одной строкой, перенос — второй */
@media (max-width: 1199px) {
  .draw-table th, .draw-table td { padding-left: 5px; padding-right: 5px; }
  .draw-table .move-disc select { max-width: 100px; }
}
.draw-table td:last-child .link-btn { margin: 0 8px 0 0; font-size: 13px; white-space: nowrap; }
.draw-table td:last-child .near-link { margin-right: 8px; }
.draw-table .move-disc { display: inline-flex; flex-wrap: nowrap; gap: 6px; margin-top: 1px; white-space: nowrap; }
.draw-table .move-disc select { height: 19px; padding-top: 0; padding-bottom: 0; line-height: 17px; text-overflow: ellipsis; }
/* Строки ниже — больше людей на экране: год и возраст, ФИО тренера и телефон в одну строку, «кат.» мелко */
.draw-table td { padding-top: 2px; padding-bottom: 2px; line-height: 1.2; }
.draw-table input.draw-note { height: 17px; line-height: 15px; font-size: 12px; }
.draw-table td.num { white-space: nowrap; }
.draw-table td.w .sub { font-size: 11px; font-weight: 400; line-height: 1.2; margin-top: 0; }
.draw-table .coach-phone { display: inline; margin: 0 0 0 4px; font-size: 12px; }
.draw-table .other-pair { font-size: 13px; text-decoration: underline dotted; text-underline-offset: 2px; }
.groups-table .other-pair { display: block; text-decoration: underline dotted; text-underline-offset: 2px; }
/* Переход «… — в паре» к паре другой дисциплины: строка пары не прячется под шапкой и подсвечивается */
.groups-table tr[id^="group-"] { scroll-margin-top: calc(var(--hdr, 80px) + 20px); }
.groups-table tr:target > td { background: #fff1bf; }
[data-theme="dark"] .groups-table tr:target > td { background: #4a3c12; }
/* Телефон тренера не рвётся по дефисам на две строки; обрезанная подсказка комментария — с многоточием */
.draw-table td .sub { white-space: nowrap; }
.draw-table input.draw-note { text-overflow: ellipsis; }
.draw-table .coach-note { font-size: 12px; }
.draw-table .coach-note, .groups-table .sub, .withdrawn-table .sub { margin-top: 0; line-height: 1.25; }
.groups-table .members li + li, .groups-table .bouts li + li { margin-top: 1px; }
.groups-table .bouts { font-size: 13px; }
/* Бой в «Составленных парах»: метки стадии и веса, где идёт, ниже — пара; бои отделены линией */
.groups-table .bouts li { padding: 4px 0 4px 8px; border-left: 3px solid var(--line2); }
.groups-table .bouts li + li { margin-top: 4px; }
.bs-top { display: flex; flex-wrap: wrap; gap: 3px 4px; align-items: center; }
.bs-top .bc-tag { font-size: 11px; padding: 1px 5px; }
.bs-where { color: var(--ink2); margin-left: 2px; }
.bs-pair { display: block; font-weight: 600; margin-top: 1px; }
.groups-table form + form { margin-top: 4px; }
.withdrawn-table td { border-color: #c79a9a; }
@media (min-width: 901px) {
  .groups-table .btn-sm, .withdrawn-table .btn-sm { min-height: 28px; padding: 2px 12px; font-size: 13px; }
}

/* «Не допущены» — длинный список именами в несколько колонок, а не простынёй */
.ins-alert ul { columns: 3 240px; column-gap: 32px; }
.ins-alert ul li { break-inside: avoid; }
@media (max-width: 600px) { .pb-top { gap: 10px; padding: 7px 10px; } .pb-time { padding-left: 10px; } }

/* ---------- Тёмная тема (data-theme="dark", см. app.css): светлые подложки плашек — тёмными оттенками ---------- */
[data-theme="dark"] input[type=time] { color-scheme: dark; }
[data-theme="dark"] .changed-bar, [data-theme="dark"] .bc-warn, [data-theme="dark"] .seed-pairs li.is-clash, [data-theme="dark"] .seed-live .brk-match.is-clash, [data-theme="dark"] .seed-bad { background: rgba(240, 169, 74, .1); }
[data-theme="dark"] .bc-tag.bc-ok { background: rgba(76, 196, 126, .13); }
[data-theme="dark"] .q-controls { background: var(--cell); }
[data-theme="dark"] .pub-bout.is-live .pb-top { background: rgba(255, 107, 112, .14); }
[data-theme="dark"] .draw-table .draw-note:hover, [data-theme="dark"] .draw-table .draw-note:focus { background: var(--field-bg); }
[data-theme="dark"] .draw-table .draw-note:not(:placeholder-shown) { background: rgba(240, 169, 74, .14); color: #f3c98a; }
[data-theme="dark"] .sec-note { color: #f3c98a; }
[data-theme="dark"] .withdrawn-table td, [data-theme="dark"] .members li.is-off { background: rgba(255, 107, 112, .1); color: #f0b4b4; }
[data-theme="dark"] .withdrawn-table .sub { color: #e59a9a; }
[data-theme="dark"] .withdrawn-table td { border-color: #6e3a44; }
[data-theme="dark"] .mark-off { background: rgba(255, 107, 112, .16); color: #ffb3b5; }
[data-theme="dark"] .board-col.is-free .head { background: #3a3a52; }

/* Площадки: своё начало и минуты на бой в карточке площадки */
/* Отступы как у строк карточки выше и ниже: поля не прилипают к рамке колонки */
.area-timing { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin: 4px 0 8px; padding: 0 12px; font-size: 14px; }
.area-timing label { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); }
/* Оба поля одной высоты: у числового иначе общие 48px, а у времени — 33px */
.area-timing input[type=time] { width: 96px; min-height: 36px; padding: 4px 6px; }
.area-timing input[type=number] { width: 56px; min-height: 36px; padding: 4px 6px; }
.area-timing .btn-sm { min-height: 36px; padding: 4px 12px; }
.area-break-fields { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; flex-basis: 100%; }
.area-break-note input { width: 150px; min-height: 36px; padding: 4px 6px; }
.q-break { margin: -2px 0 8px; padding: 6px 10px; background: #fff4d6; color: #6b4a00; font-weight: 600; font-size: 14px;
  border-left: 4px solid #e0a100; }
.pub-break { margin: 12px 0 8px; padding: 10px 12px; background: #fff4d6; color: #6b4a00; border-left: 4px solid #e0a100; font-size: 15px; }
:root[data-theme="dark"] .q-break, :root[data-theme="dark"] .pub-break { background: #3a2f12; color: #ffd98a; }
@media (pointer: coarse) { .area-timing input[type=time], .area-timing input[type=number], .area-timing .btn-sm { min-height: 44px; } }

/* Составленные пары: своя весовая категория */
/* «ОК» уходит на следующую строку, а не распирает колонку: иначе на планшете и телефоне сжимаются участники и бои */
.gw-form { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 6px; margin-top: 8px; }
.gw-form label { white-space: nowrap; }
/* Компактный список: без общих 48px высоты и с местом справа под стрелку, иначе «по весу участников» наезжает на неё */
.gw-form select { width: auto; max-width: 100%; min-height: 32px; padding: 3px 26px 3px 6px; font-size: 13px; background-position: right 8px center; }

/* «Без площадки»: сортировка по порядку, дисциплине, возрасту */
.free-sort { display: flex; flex-wrap: wrap; gap: 4px 12px; margin: 0; padding: 8px 12px; font-size: 13px; border-bottom: 1px solid var(--line2); }
.free-sort a.on { font-weight: 700; color: var(--ink); text-decoration: none; }

/* Площадки и жеребьёвка: блоки обновляются без перезагрузки (htmx, outerHTML) — новый вставляется перед старым.
   Привязка прокрутки браузера держалась за старый и уводила страницу вниз на высоту блока
   («На площадку» кидало в самый низ). Отключаем её только на этих страницах */
html:has(#board-live), html:has(#board-live) body, html:has(#draw-results), html:has(#draw-results) body { overflow-anchor: none; }

/* «Ещё бой» у участника составленной пары */
.extra-form { display: inline; margin: 0 0 0 6px; }

/* Площадки: вторая полоса прокрутки вбок — сверху, прилипает под шапкой */
.board-scroll-top { position: sticky; top: var(--hdr); z-index: 5; overflow-x: auto; overflow-y: hidden; height: 16px;
  margin-bottom: 8px; background: var(--paper); }
.board-scroll-top > div { height: 1px; }

/* Площадки: бои девочек заметны сразу — розовая полоса сверху карточки и имя розовым (просьба секретаря) */
.bout-card.has-girls { border-top: 4px solid #d6457f; background-image: linear-gradient(rgba(214, 69, 127, .06), rgba(214, 69, 127, .06)); }
.bc-name.is-f { color: #b0245e; }
[data-theme="dark"] .bout-card.has-girls { border-top-color: #f07aa8; background-image: linear-gradient(rgba(240, 122, 168, .09), rgba(240, 122, 168, .09)); }
[data-theme="dark"] .bc-name.is-f { color: #f7a1c4; }

/* Стадии разными цветами, как в списках пар ЦРЕ (Excel): финал — жёлтый, 1/2 — зелёный, 1/4 и 1/8 — голубой */
.bc-tag.stage-final { background: #ffe14d; border-color: #c9a400; color: #3d3100; }
.bc-tag.stage-sf { background: #b6ec9a; border-color: #4f9a2f; color: #1f4a0d; }
.bc-tag.stage-qf, .bc-tag.stage-r16 { background: #cfe3ff; border-color: #5b8fd6; color: #12396e; }
.pub-group.stage-final { border-left-color: #e0b400; background: #fff6c2; }
.pub-group.stage-sf { border-left-color: #4f9a2f; background: #e5f7da; }
[data-theme="dark"] .bc-tag.stage-final { background: rgba(240, 200, 60, .22); border-color: #e0b93a; color: #f6dc84; }
[data-theme="dark"] .bc-tag.stage-sf { background: rgba(110, 200, 90, .2); border-color: #79c25a; color: #b4e69d; }
[data-theme="dark"] .bc-tag.stage-qf, [data-theme="dark"] .bc-tag.stage-r16 { background: rgba(110, 160, 240, .2); border-color: #7aa6e8; color: #b9d2fa; }
[data-theme="dark"] .pub-group.stage-final { border-left-color: #e0b93a; background: rgba(240, 200, 60, .12); }
[data-theme="dark"] .pub-group.stage-sf { border-left-color: #79c25a; background: rgba(110, 200, 90, .1); }

/* Площадки: поиск по клубу или фамилии — выпадающий список боёв */
.board-find { position: relative; max-width: 560px; margin: 0 0 12px; }
.board-find input { width: 100%; }
.board-find-list { position: absolute; z-index: 20; left: 0; top: calc(100% + 4px); width: min(860px, calc(100vw - 32px));
  max-height: 60vh; overflow: auto; padding: 8px 10px; background: var(--paper); border: 1px solid var(--line2);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .15); }
.board-find-list p { margin: 0 0 6px; }
.board-find-list .table { margin: 0; font-size: 14px; }
.board-find-list td, .board-find-list th { padding: 4px 8px; white-space: nowrap; }
.board-find-list tbody tr { cursor: pointer; }
.board-find-list tbody tr:hover { background: var(--mist); }
.board-find-list .corner-red { color: #c62828; font-weight: 600; }
.board-find-list .corner-blue { color: #1f5fbf; font-weight: 600; }
[data-theme="dark"] .board-find-list .corner-red { color: #ff8a80; }
[data-theme="dark"] .board-find-list .corner-blue { color: #8ab4ff; }
.bout-card.is-found { outline: 3px solid var(--blue); outline-offset: -1px; }
@keyframes find-flash { 0%, 60% { box-shadow: 0 0 0 4px var(--blue); } 100% { box-shadow: none; } }
.bout-card.is-flash { animation: find-flash 1.6s ease-out; }

/* «Ещё бой»: страница приходит к новой строке «доп.» — она под шапкой и подсвечена */
.draw-table tr[id^="row-"] { scroll-margin-top: calc(var(--hdr, 80px) + 120px); }
.draw-table tr:target > td { background: #fff1bf; }
[data-theme="dark"] .draw-table tr:target > td { background: #4a3c12; }
/* «Отметить «МВ»» не рвётся на две строки в узкой колонке действий пары */
.groups-table .mv-form .link-btn { white-space: nowrap; }
/* Площадки на телефоне: подсказка «следующий» в поле номера не обрезается */
@media (max-width: 600px) { .area-tools input::placeholder { font-size: 14px; } }

/* «Пары»: всплывашка после действий без перезагрузки; «Отменить» — заметнее остального текста */
#draw-toast[hidden] { display: none; }
.alert .undo-form .link-btn { font-weight: 700; }
.flash-float .alert-error .undo-form .link-btn, .flash-float .alert-warning .undo-form .link-btn { color: #fff; }
/* Группа из трёх: кто проходит в финал без боя — окно поверх страницы */
.bye-dialog { width: min(520px, calc(100% - 32px)); padding: 24px; border: 0; border-radius: 6px; background: var(--paper); color: var(--ink);
  box-shadow: 0 16px 48px rgba(0, 0, 0, .35); }
.bye-dialog::backdrop { background: rgba(27, 26, 46, .55); }
.bye-dialog h2 { margin: 0 0 6px; font-size: 22px; }
.bye-list { display: grid; gap: 8px; margin: 16px 0 20px; }
.bye-list label { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px; padding: 10px 12px; border: 1px solid var(--line2); border-radius: 4px; cursor: pointer; }
.bye-list label:has(input:checked) { border-color: var(--blue); box-shadow: inset 0 0 0 1px var(--blue); }
.bye-dialog .row { display: flex; flex-wrap: wrap; gap: 12px; }

/* Карточка боя в списках пар: плашки стадии в тёмной теме — как у карточек площадок */
[data-theme="dark"] .pb-chip.stage-final { background: rgba(240, 200, 60, .22); border-color: #e0b93a; color: #f6dc84; }
[data-theme="dark"] .pb-chip.stage-sf { background: rgba(110, 200, 90, .2); border-color: #79c25a; color: #b4e69d; }
[data-theme="dark"] .pb-chip.stage-qf, [data-theme="dark"] .pb-chip.stage-r16 { background: rgba(110, 160, 240, .2); border-color: #7aa6e8; color: #b9d2fa; }

/* Площадки: всплывашка после действий без перезагрузки (с «Отменить») */
#board-toast[hidden] { display: none; }
/* Вкладки «Все площадки · Татами 1 · Ринг 1…»: страница одной площадки */
.area-tabs { display: flex; gap: 4px 20px; overflow-x: auto; border-bottom: 1px solid var(--line); margin: 0 0 16px; scrollbar-width: thin; }
.area-tabs a { flex: none; padding: 10px 0; color: var(--muted); text-decoration: none; font-weight: 600; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.area-tabs a:hover { color: var(--ink); }
.area-tabs a.on { color: var(--ink); border-bottom-color: var(--blue); }
.area-tabs .num { font-weight: 400; color: var(--muted); margin-left: 6px; font-variant-numeric: tabular-nums; }
.board-col .col-links .col-open { font-weight: 700; }
details.elsewhere { background: var(--mist); border-left-color: var(--line3); }
details.elsewhere summary { cursor: pointer; font-weight: 600; }
details.elsewhere ul { margin: 8px 0 0; }

/* Страница площадки: очередь крупно, справа «Без площадки» — прилипает и прокручивается сама, чтобы перетаскивать */
.area-board { grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) {
  .board.area-board { grid-auto-flow: row; grid-template-columns: minmax(0, 1fr) minmax(300px, 380px); overflow: visible; }
  .area-board .is-free { position: sticky; top: calc(var(--hdr) + 12px); display: flex; flex-direction: column;
    max-height: calc(100vh - var(--hdr) - 24px); }
  .area-board .is-free .queue { overflow-y: auto; flex: 1 1 auto; min-height: 120px; }
}
.area-main .head h3 { font-size: 24px; }
.area-main .queue { gap: 12px; padding: 12px; }
@media (min-width: 1100px) {
  /* Карточка боя в широкой очереди: углы рядом, имена крупнее */
  .area-main .bout-card { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .area-main .bc-head, .area-main .bc-cat, .area-main .bc-warn, .area-main .q-controls { grid-column: 1 / -1; }
  .area-main .bc-corner { margin-top: 6px; }
  .area-main .bc-corner + .bc-corner { border-top: 0; }
  .area-main .bc-name { font-size: 17px; }
  .area-main .bc-head .q-no { font-size: 24px; }
  .area-main .bc-time { font-size: 17px; }
}

/* Галочка переноса на карточке; отмеченная — рамкой */
.q-pick { flex: none; width: 20px; height: 20px; margin: 0; cursor: pointer; }
@media (pointer: coarse) { .q-pick { width: 26px; height: 26px; } }
.bout-card.is-picked { outline: 3px solid var(--warn); outline-offset: -1px; background-color: #fff8e6; }
[data-theme="dark"] .bout-card.is-picked { background-color: #2c2614; }
/* Заголовок категории в «Без площадки»: галочка — вся категория */
.q-section { list-style: none; margin: 4px 0 -2px; font-size: 13px; font-weight: 700; color: var(--ink); }
.q-section label { display: flex; gap: 8px; align-items: center; cursor: pointer; overflow-wrap: anywhere; }
.q-section input { flex: none; width: 18px; height: 18px; margin: 0; }
.q-section:first-child { margin-top: 0; }
/* «На время», «В начало», «В конец» */
.q-controls .q-time input[type=time] { width: 104px; min-height: 30px; padding: 2px 6px; font-size: 14px; }
@media (pointer: coarse) { .q-controls .q-time input[type=time] { min-height: 40px; } }

/* Панель «Отмечено: N → площадка [Перенести]» — внизу экрана, пока есть отметки */
.pick-bar { position: fixed; z-index: 55; left: 50%; bottom: 16px; transform: translateX(-50%); display: flex; flex-wrap: wrap; align-items: center;
  gap: 8px 12px; width: max-content; max-width: calc(100% - 32px); margin: 0; padding: 10px 14px; background: var(--paper);
  border: 2px solid var(--warn); box-shadow: 0 8px 28px rgba(0, 0, 0, .25); }
.pick-bar[hidden] { display: none; }
.pick-bar .pick-count { white-space: nowrap; }
.pick-bar .pick-to { display: inline-flex; align-items: center; gap: 6px; }
.pick-bar select { width: auto; min-height: 36px; padding: 4px 30px 4px 8px; }
.pick-bar .btn-sm { min-height: 36px; }
body.has-pick-bar { padding-bottom: 90px; }
@media (max-width: 600px) { .pick-bar { bottom: 8px; padding: 8px 10px; } .pick-bar .pick-to { flex: 1 1 100%; } .pick-bar select { flex: 1; } }
/* Страница площадки: предупреждения компактнее, длинный список прокручивается сам — очередь видна сразу */
.area-page #board-live > .alert { padding: 8px 12px; margin-bottom: 10px; font-size: 14px; }
.area-page #board-live > .alert ul { margin: 4px 0 0; padding-left: 20px; max-height: 7.6em; overflow-y: auto; }
