/* Компоновка рабочих экранов. Идентификаторы форм и классы состояний не
   меняются: старые AJAX/HTMX/Bootstrap обработчики работают с теми же узлами. */
body.sport-ui :is(.class-grid,.department-grid) { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; }
body.sport-ui :is(.department-page,.class-page,.student-workspace,.stats-page,.selection-page,.student-profile-page) { width:100%; max-width:100%; margin:0; min-width:0; }
body.sport-ui .class-card { display:flex; align-items:center; justify-content:flex-start; gap:16px; min-height:118px; }
body.sport-ui .class-card__glyph { width:22px; height:22px; }
body.sport-ui :is(.class-toolbar,.department-toolbar) { display:block; }
body.sport-ui .class-toolbar__main { display:flex; flex-direction:column-reverse; align-items:flex-start; gap:10px; }
body.sport-ui .class-toolbar__stat { color:var(--sport-muted); font-size:12px; background:none; border:0; padding:0; }
body.sport-ui .student-back-btn { min-height:32px; color:var(--sport-muted); background:none; border-color:transparent; padding-left:0; font-size:12px; }
body.sport-ui .student-profile-topbar { margin-bottom:14px; }
body.sport-ui .student-toolbar__main { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:18px; }
body.sport-ui .student-toolbar__text { min-width:0; flex:1; }
body.sport-ui .student-toolbar__facts { display:flex; flex-wrap:wrap; gap:7px 16px; margin-top:10px; color:var(--sport-muted); }
body.sport-ui .student-toolbar__fact { padding:0; border:0; border-radius:0; background:none; font-size:12px; line-height:1.4; }
body.sport-ui .student-toolbar__fact strong { color:var(--sport-ink); font-weight:550; }
body.sport-ui .student-toolbar__select-actions { display:flex; gap:8px; flex-wrap:wrap; }
body.sport-ui .student-toolbar__select-btn { min-height:40px; padding:9px 12px; font-size:12px; }
body.sport-ui .student-toolbar__select-btn--school { background:var(--sport-accent); color:#fff; border-color:var(--sport-accent); }
body.sport-ui .student-toolbar__select-btn--gto { background:#fff; color:var(--sport-accent); border-color:#b9d6c8; }
body.sport-ui .student-toolbar__source { font-size:11px; color:var(--sport-muted); margin-top:10px; font-weight:400; }
body.sport-ui .student-toolbar__source a { color:var(--sport-accent); }
body.sport-ui .student-workspace>.section-card { border:0; border-radius:0; background:#fff; }
body.sport-ui .student-workspace>.section-card>.section-card__body { padding:0; }
body.sport-ui :is(.student-list-head,.student-row) { display:grid; grid-template-columns:minmax(0,1fr) 320px; align-items:center; gap:12px; width:100%; }
body.sport-ui .student-list-head { padding:12px 16px; background:#fafcfb; border-top:1px solid var(--sport-line); border-bottom:1px solid var(--sport-line); }
body.sport-ui .student-actions { display:grid; grid-template-columns:60px 52px 120px 44px; gap:12px; align-items:center; justify-content:stretch; width:320px; }
body.sport-ui .student-left { min-width:0; }
body.sport-ui .student-item { padding:12px 16px; border-color:var(--sport-line); background:#fff; }
body.sport-ui .student-row { min-height:50px; }
body.sport-ui .name-btn { display:flex; gap:12px; align-items:center; background:none; border:0; border-radius:0; padding:0; min-height:0; color:var(--sport-ink); width:100%; text-align:left; justify-content:flex-start; box-shadow:none; }
body.sport-ui .name-btn-index { font-size:11px; color:var(--sport-muted); min-width:18px; font-weight:400; background:none; padding:0; border:0; }
body.sport-ui .name-lines { min-width:0; display:flex; flex-direction:column; font-size:14px; line-height:1.3; font-weight:600; overflow:visible; }
body.sport-ui .name-lines :is(.ln1,.ln2) { color:var(--sport-ink); font-size:inherit; line-height:inherit; font-weight:inherit; white-space:normal; overflow-wrap:anywhere; }
body.sport-ui .student-col-title { color:var(--sport-muted); background:none; font-size:10px; font-weight:500; line-height:1.3; padding:0; border:0; text-align:center; }
body.sport-ui .student-col-title--fio { text-align:left; }
body.sport-ui .student-col-title__short { display:none; }
body.sport-ui .med-btn { min-height:32px; width:32px; margin:auto; padding:4px; border-radius:5px; font-size:11px; }
body.sport-ui .gto-badge { margin:auto; }
body.sport-ui .result-btn { min-height:46px; min-width:0; width:100%; padding:6px; border-radius:5px; font-size:16px; font-variant-numeric:tabular-nums; }
body.sport-ui .result-btn small { font-size:10px; }
body.sport-ui .btn-input { min-width:0; width:40px; height:40px; min-height:40px; padding:6px; background:var(--sport-soft); color:var(--sport-accent); border:0; border-radius:5px; }
body.sport-ui .student-profile-hero__identity { gap:14px; }
body.sport-ui .student-avatar { width:52px; height:52px; min-width:52px; font-size:23px; background:var(--sport-soft); color:var(--sport-accent); border-radius:8px; box-shadow:none; }
body.sport-ui .student-profile-facts { margin-top:18px; gap:10px 22px; }
body.sport-ui .student-profile-facts>span { border:0; border-radius:0; background:none; padding:0; font-size:12px; color:var(--sport-ink); }
body.sport-ui .student-profile-facts strong { color:var(--sport-muted); font-size:10px; font-weight:400; }
body.sport-ui .student-profile-top-grid { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; }
body.sport-ui .student-panel--input { grid-column:1/-1; }
body.sport-ui .student-measure-form { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(140px,1fr) auto; gap:12px; align-items:end; padding:16px; }
body.sport-ui .student-measure-form label { min-width:0; }
body.sport-ui .student-measure-form label>span { font-size:11px; color:var(--sport-muted); }
body.sport-ui .student-chart-actions { display:flex; flex-wrap:wrap; gap:8px; padding:16px; }
body.sport-ui :is(.bmi-panel,.student-bmi-panel) { border-radius:8px; border-color:var(--sport-line); box-shadow:none; }
body.sport-ui .student-panel--gto-certificate { min-width:0; }
body.sport-ui :is(.tournament-wrap,.school-tm-wrap,.tournament-page) { max-width:none; width:100%; margin-left:0; margin-right:0; }
body.sport-ui .tournament-rounds-full-width { width:100%; max-width:100%; margin:16px 0 0; transform:none; }
body.sport-ui :is(.tm-primary,.tm-secondary,.school-tm-primary,.school-tm-secondary,.tournament-year-tab) { display:inline-flex; justify-content:center; align-items:center; gap:6px; padding:9px 12px; border-radius:5px; font-size:12px; font-weight:600; min-height:40px; }
body.sport-ui :is(.tm-primary,.school-tm-primary) { background:var(--sport-accent); color:#fff; border:1px solid var(--sport-accent); box-shadow:none; }
body.sport-ui :is(.tm-secondary,.school-tm-secondary) { background:#fff; color:var(--sport-ink); border:1px solid var(--sport-line); box-shadow:none; }
body.sport-ui .tournament-actions { justify-content:flex-end; }
body.sport-ui :is(.tournament-year-tabs,.tournament-tabs,.tm-tabs) { gap:8px; flex-wrap:wrap; }
body.sport-ui :is(.tournament-year-tab,.tm-tab,.school-tm-tab) { background:transparent; color:var(--sport-muted); border:1px solid var(--sport-line); box-shadow:none; }
body.sport-ui :is(.tournament-year-tab.is-active,.tm-tab.is-active,.school-tm-tab.is-active) { background:var(--sport-soft); color:var(--sport-accent); border-color:#b9d6c8; }
body.sport-ui :is(.tournament-calendar,.school-tm-calendar) { padding:16px 0; background:#fff; border:1px solid var(--sport-line); border-radius:8px; box-shadow:none; }
body.sport-ui :is(.tournament-calendar-day,.school-tm-day) { border-radius:5px; background:#fff; border-color:var(--sport-line); }
body.sport-ui :is(.tournament-calendar__title,.school-tm-calendar__title) { font-size:20px; color:var(--sport-ink); font-weight:650; }
body.sport-ui :is(.tm-section,.tm-card,.tm-group,.psi-section,.psi-hero,.round-stage-card,.team-match-card) { border-color:var(--sport-line); border-radius:8px; box-shadow:none; background:#fff; }
body.sport-ui :is(.psi-title,.tm-title,.school-tm-title) { font-weight:700; color:var(--sport-ink); }
body.sport-ui .round-stage-card { padding:16px; }
body.sport-ui .team-match-card__header { grid-template-columns:minmax(0,1fr) 180px minmax(0,1fr); background:#f8faf9; }
body.sport-ui :is(.team-board-head,.team-board-row) { grid-template-columns:minmax(0,1fr) 180px minmax(0,1fr); }
body.sport-ui :is(.team-match-card__team-name,.team-board-side__name) { color:var(--sport-ink); font-size:13px; font-weight:650; line-height:1.3; }
body.sport-ui .team-board-side__team { color:var(--sport-accent); }
body.sport-ui .team-board-result { background:#fff; }
body.sport-ui :is(.team-match-card__score,.team-board-result__board) { color:var(--sport-ink); font-variant-numeric:tabular-nums; }
body.sport-ui :is(.team-board-row,.team-board-row:nth-child(even)) { background:#fff; }
body.sport-ui :is(.stats-title-band,.selection-title-band) { background:none; color:var(--sport-ink); padding:0; border-radius:0; box-shadow:none; }
body.sport-ui :is(.filters-grid,.filter-grid-4,.selection-filter-grid) { gap:12px; }
body.sport-ui .filter-group { border:0; border-radius:0; background:none; padding:14px; }
body.sport-ui :is(.filter-group__title,.scope-panel__label) { font-weight:550; font-size:11px; color:var(--sport-muted); }
body.sport-ui .scope-panel__value { font-size:18px; font-weight:650; color:var(--sport-ink); }
body.sport-ui .filter-panel { overflow:visible; }
body.sport-ui :is(.participant-card-form,.participant-card-slot) { border-radius:8px; box-shadow:none; border-color:var(--sport-line); background:#fff; }
body.sport-ui .participant-card-page { max-width:1100px; }
body.sport-ui .export-page { overflow:visible; }
/* Эти старые страницы рассчитывали ширину от всего окна, не учитывая
   компактную боковую панель на планшете. Рабочая область теперь их предел. */
body.sport-ui :is(.export-page,.training-diary-page) { width:100%; max-width:100%; min-width:0; margin-left:0; margin-right:0; }
body.sport-ui .training-diary-hero { background:none; border:0; border-bottom:1px solid var(--sport-line); border-radius:0; box-shadow:none; padding:0 0 20px; color:var(--sport-ink); }
body.sport-ui .training-diary-hero h1 { color:var(--sport-ink); }
body.sport-ui :is(.training-diary-kicker,.training-diary-hero p) { color:var(--sport-muted); }
body.sport-ui .training-diary-card { background:#fff; border:1px solid var(--sport-line); border-radius:8px; box-shadow:none; }
body.sport-ui .message-conversation-row { padding:16px; border-bottom:1px solid var(--sport-line); }
body.sport-ui .message-conversation-main { display:flex; align-items:center; gap:12px; min-width:0; }
body.sport-ui .message-conversation-avatar { color:var(--sport-accent); background:var(--sport-soft); width:36px; height:36px; display:grid; place-items:center; border-radius:50%; }
body.sport-ui :is(.message-thread-body,.messages-thread) { max-width:100%; }
body.sport-ui :is(.training-selection-grid,.training-selection-tile,.training-picker-modal,.ant-hub-admin-row) { border-radius:8px; border-color:var(--sport-line); box-shadow:none; }
body.sport-ui .training-selection-tile { background:#fff; }
body.sport-ui .training-selection-tile>strong { color:var(--sport-ink); font-weight:600; }
/* Выбор числа столбцов работает и на телефоне: старый media-запрос раньше
   принудительно оставлял один столбец независимо от выбранного значения. */
body.sport-ui .training-heart-grid { grid-template-columns:repeat(var(--training-columns,3),minmax(0,1fr)); }
body.sport-ui :is(.training-selection-tile>span,.training-selection-summary) { color:var(--sport-muted); font-weight:500; text-transform:none; }
body.sport-ui .training-heart-grid .training-heart-card { container-type:inline-size; aspect-ratio:1; grid-template-areas:'head' 'meta' 'chart' 'metrics' 'calories'; grid-template-rows:auto auto minmax(0,1fr) auto auto; padding:12px; gap:7px; background:#fff; border:1px solid var(--sport-line); border-radius:8px; box-shadow:none; }
body.sport-ui .training-heart-card__head { grid-area:head; }
body.sport-ui .training-heart-card__meta { grid-area:meta; }
body.sport-ui .training-heart-card .training-heart-chart { grid-area:chart; min-height:0; max-height:100%; max-width:100%; margin:0; }
body.sport-ui .training-heart-card__metrics { grid-area:metrics; }
body.sport-ui .training-heart-card__calories { grid-area:calories; margin:0; min-height:0; }
body.sport-ui .training-heart-card:hover { transform:none; box-shadow:none; border-color:var(--sport-accent); }
body.sport-ui .training-heart-grid .training-heart-card__name { font-size:clamp(11px,6cqw,17px); font-weight:600; color:var(--sport-ink); -webkit-line-clamp:2; }
body.sport-ui .training-heart-grid .training-heart-card__bpm { font-size:clamp(26px,26cqw,70px); font-weight:650; color:var(--sport-ink); line-height:1; }
body.sport-ui .training-heart-card__meta { font-size:10px; }
body.sport-ui .training-heart-card__metrics { margin:0; padding-top:8px; border-top:1px solid var(--sport-line); gap:10px; }
body.sport-ui .training-heart-grid .training-heart-card__metric { border:0; border-radius:0; background:none; padding:0; }
body.sport-ui .training-heart-card__metric span { font-size:10px; font-weight:400; text-transform:none; }
body.sport-ui .training-heart-card__metric strong { font-weight:600; color:var(--sport-ink); }
body.sport-ui .sport-disclosure { padding:0; border:0; }
body.sport-ui .sport-disclosure>summary { padding:16px; color:var(--sport-ink); font-size:14px; font-weight:600; cursor:pointer; }
body.sport-ui .sport-disclosure-content { padding:0 16px 16px; }
/* Невидимая подсказка не должна расширять страницу своим содержимым. */
body.sport-ui .tournament-calendar-events { visibility:hidden; border-radius:6px; box-shadow:0 10px 30px #172d2322; }
body.sport-ui .tournament-calendar-day.has-events:is(:hover,:focus-within) .tournament-calendar-events { visibility:visible; }
body.sport-ui .tournament-home { background:none; min-width:0; }
body.sport-ui .sport-tournament-heading { margin:0 auto 0 0; }
/* Одна строка: статусы слева, календарь и учебные годы справа. При нехватке
   места сохраняем читаемые подписи и прокручиваем панель пальцем/клавиатурой. */
body.sport-ui .competition-list-toolbar { display:flex; align-items:center; gap:20px; min-width:0; max-width:100%; overflow-x:auto; padding:2px 2px 8px; border-bottom:1px solid var(--sport-line); scrollbar-width:thin; scrollbar-color:#b9d6c8 transparent; }
body.sport-ui .competition-list-toolbar:focus-visible { outline:2px solid var(--sport-accent); outline-offset:2px; }
body.sport-ui .competition-list-toolbar .competition-status-tabs { flex:0 0 auto; flex-wrap:nowrap; gap:6px; margin:0; padding:0; border:0; }
body.sport-ui .competition-list-toolbar .tournament-year-tabs { flex:0 0 auto; flex-wrap:nowrap; margin:0 0 0 auto; padding:0; overflow:visible; gap:6px; }
body.sport-ui .competition-list-toolbar :is(.competition-status-tab,.tournament-year-tab) { flex:0 0 auto; min-height:36px; padding:7px 10px; font-size:12px; }
/* Ячейки вдвое ниже прежних 118 px. Кнопка занимает всю ячейку, поэтому
   уменьшение пустого места не уменьшает область нажатия на дату. */
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-home { padding:0; min-height:0; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-hero--compact { margin:0; padding:0 0 10px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-actions { width:100%; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar { padding:10px; gap:6px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__center { display:flex; align-items:center; justify-content:center; gap:10px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__title { font-size:16px; line-height:1.2; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__year { width:82px; min-height:34px; padding:5px 22px 5px 8px; border-radius:5px; font-size:12px; font-weight:600; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__head .tm-secondary { width:36px; min-height:36px; padding:6px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day { height:58px; min-height:58px; padding:0; gap:0; align-content:stretch; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__button { width:100%; height:100%; min-width:0; padding:8px; font-weight:600; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__number { font-size:13px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__button:focus-visible { outline:2px solid var(--sport-accent); outline-offset:-3px; border-radius:5px; }
@media(max-width:760px) {
  body.sport-ui .competition-list-toolbar { gap:16px; }
  body.sport-ui .competition-list-toolbar :is(.competition-status-tab,.tournament-year-tab) { min-height:44px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar { padding:8px 5px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) :is(.tournament-calendar__grid,.tournament-calendar__weekdays) { gap:3px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day { height:46px; min-height:46px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__button { padding:4px; gap:2px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__head .tm-secondary { width:40px; min-height:40px; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar__year { min-height:40px; }
}
@media(max-width:480px) {
  /* В узкой ячейке число и счётчик размещены по диагонали, без наложения. */
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__button { flex-direction:column; align-items:stretch; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .tournament-calendar-day__number { align-self:flex-start; }
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) :is(.tournament-calendar-day__add,.tournament-calendar-day__count) { align-self:flex-end; }
}
@media(max-width:360px) {
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) .sport-tournament-heading { font-size:20px; }
}
@media(max-width:1100px) {
  body.sport-ui :is(.class-grid,.department-grid) { grid-template-columns:repeat(2,minmax(0,1fr)); }
  body.sport-ui .student-profile-top-grid { grid-template-columns:minmax(0,1fr); }
}
@media(max-width:760px) {
  body.sport-ui .tournament-calendar-events { position:fixed; top:calc(var(--sport-preview-height) + var(--sport-header-height) + 12px); left:16px; right:16px; width:auto; min-width:0; max-width:none; max-height:50dvh; transform:none; }
  body.sport-ui .tournament-calendar-day:nth-child(n) .tournament-calendar-events { left:16px; right:16px; }
  body.sport-ui :is(.class-grid,.department-grid) { gap:10px; }
  body.sport-ui .class-card { min-height:92px; gap:12px; }
  body.sport-ui .student-toolbar__main { display:block; }
  body.sport-ui .student-toolbar__select-actions { margin-top:16px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:8px; }
  body.sport-ui .student-toolbar__select-btn { min-width:0; font-size:11px; padding:9px; }
  body.sport-ui .student-toolbar__facts { gap:6px 12px; }.sport-ui .student-toolbar__fact { font-size:11px; }
  body.sport-ui :is(.student-list-head,.student-row) { grid-template-columns:minmax(0,1fr) 166px; gap:7px; }
  body.sport-ui .student-actions { width:166px; grid-template-columns:26px 24px 62px 32px; gap:7px; }
  body.sport-ui .student-list-head { padding:12px 6px; }
  body.sport-ui .student-item { padding:12px 6px; }.sport-ui .student-row { min-height:48px; }
  body.sport-ui .name-btn { gap:5px; }.sport-ui .name-btn-index { min-width:12px; font-size:9px; }.sport-ui .name-lines { font-size:12px; }
  body.sport-ui .student-col-title { font-size:9px; }.sport-ui .student-col-title__full { display:none; }.sport-ui .student-col-title__short { display:inline; }
  body.sport-ui .med-btn { width:26px; min-height:28px; font-size:10px; padding:3px; }
  body.sport-ui .result-btn { min-height:42px; font-size:14px; padding:4px 2px; }.sport-ui .result-btn small { font-size:8px; }
  body.sport-ui .btn-input { width:30px; min-height:34px; height:34px; }
  body.sport-ui .student-measure-form { grid-template-columns:repeat(2,minmax(0,1fr)); padding:14px; gap:12px; }
  body.sport-ui .student-measure-form .btn { width:100%; }
  body.sport-ui .student-profile-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }
  body.sport-ui .team-match-card__header,body.sport-ui :is(.team-board-head,.team-board-row) { grid-template-columns:minmax(0,1fr) 115px minmax(0,1fr); }
  body.sport-ui :is(.team-match-card__team-name,.team-board-side__name) { font-size:11px; }
  body.sport-ui .team-board-side { padding:10px 6px; }
  body.sport-ui .team-board-result { padding:8px 5px; }
  body.sport-ui .team-board-result .result-quick-buttons .btn { padding:6px 1px; font-size:10px; min-height:32px; }
  body.sport-ui :is(.tm-tabs,.tournament-tabs) { width:100%; gap:6px; }
  body.sport-ui :is(.tm-tab,.tournament-year-tab) { min-width:0; font-size:11px; padding:8px; }
  body.sport-ui :is(.tournament-calendar,.school-tm-calendar) { padding:12px 5px; }
  body.sport-ui :is(.tournament-calendar__title,.school-tm-calendar__title) { font-size:17px; }
  body.sport-ui .training-selection-grid { grid-template-columns:minmax(0,1fr); }
  body.sport-ui .training-selection-tile { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:4px 10px; }
  body.sport-ui .training-selection-tile>span { grid-column:1; }.sport-ui .training-selection-tile>strong { grid-column:1; }
  body.sport-ui .training-selection-tile>.btn { grid-column:2; grid-row:1/3; }
  body.sport-ui .training-heart-grid { gap:6px; }
  body.sport-ui .training-heart-grid .training-heart-card { padding:6px; gap:3px; }
  body.sport-ui .training-heart-grid .training-heart-card__bpm { font-size:clamp(24px,24cqw,54px); }
  body.sport-ui .training-student-picker { grid-template-columns:minmax(0,1fr); }
}
/* При четырёх столбцах ориентируемся на саму карточку, не на ширину окна.
   Основные показания остаются внутри квадрата; подробности доступны по нажатию. */
@container (max-width:140px) {
  /* Chart.js задаёт display inline. На узкой карточке мини-график скрыт;
     полный график по нажатию остаётся доступен, числовые данные не обрезаются. */
  body.sport-ui .training-heart-card .training-heart-chart { display:none!important; }
  body.sport-ui .training-heart-grid .training-heart-card__head { gap:3px; }
  body.sport-ui .training-heart-grid .training-heart-card__name { font-size:clamp(6px,9cqw,11px); }
  body.sport-ui .training-heart-grid .training-heart-card__bpm { font-size:clamp(14px,25cqw,28px); }
  body.sport-ui .training-heart-grid .training-heart-card__meta { display:none; }
  body.sport-ui .training-heart-grid .training-heart-card__metrics { align-self:end; padding-top:3px; gap:3px; }
  body.sport-ui .training-heart-grid .training-heart-card__metric span { font-size:clamp(5px,6cqw,8px); }
  body.sport-ui .training-heart-grid .training-heart-card__metric strong { font-size:clamp(7px,10cqw,13px); }
  body.sport-ui .training-heart-grid .training-heart-card__calories { font-size:clamp(6px,7cqw,10px); line-height:1.2; }
}
/* Школьный календарь использует общие размеры методиста и свою проверку доступа. */
body.sport-ui.page-school-tournament-list .school-tm { background:none; padding:0; min-height:0; }
body.sport-ui.page-school-tournament-list .school-tm-head { padding:0 0 10px; border:0; border-radius:0; background:none; box-shadow:none; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; }
body.sport-ui.page-school-tournament-list .school-tm-title { font-size:22px; line-height:1.2; }
body.sport-ui.page-school-tournament-list .school-tm-events { display:none; }
body.sport-ui.page-school-tournament-list .tournament-calendar-day__count { display:inline-flex; justify-content:center; align-items:center; min-width:18px; padding:2px 4px; border-radius:4px; background:var(--sport-accent-soft,#e9f5ef); color:var(--sport-accent); font-size:10px; }
body.sport-ui.page-school-tournament-list .school-tm-day__button { align-self:stretch; }

/* Рабочие панели: у содержимого такой же внутренний отступ, как у заголовка.
   Не меняем отступ всей student-panel: это удвоило бы padding ее body. */
body.sport-ui.page-ant-hub-settings .student-panel > form { margin:0; padding:18px; }
body.sport-ui.page-ant-hub-settings .student-panel > :is(.alert,.input-group,.small,.ant-hub-pin-code,.ant-hub-admin-list) { margin-left:18px; margin-right:18px; }
body.sport-ui.page-ant-hub-settings .student-panel > :last-child { margin-bottom:18px; }
body.sport-ui.page-training-dashboard .training-live-body { padding:12px; }
body.sport-ui.page-training-dashboard .training-live-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
body.sport-ui.page-training-dashboard .training-live-title { display:flex; align-items:center; flex-wrap:wrap; gap:8px; min-width:0; }
body.sport-ui.page-training-dashboard .training-live-title h2 { margin:0; }
body.sport-ui.page-training-dashboard .training-live-title .student-panel__eyebrow { padding:3px 7px; border-radius:4px; background:var(--sport-soft); color:var(--sport-accent); }
body.sport-ui.page-training-dashboard .training-live-controls { display:flex; align-items:center; flex-wrap:wrap; gap:8px; min-width:0; margin-left:auto; }
body.sport-ui.page-training-dashboard .training-live-controls label { margin:0; }
body.sport-ui.page-training-dashboard #trainingColumns { width:76px; min-width:76px; }

/* Названия внутри кнопки истории, включая AJAX-обновленные/краткие списки. */
body.sport-ui .normative-history-card { padding:14px 16px; border-radius:8px; box-shadow:none; }
body.sport-ui .student-data-list > .normative-history-group { display:block; width:auto; margin:10px 12px; min-width:0; }
body.sport-ui .student-normative-picker .normative-btn { padding:10px 12px; min-height:44px; white-space:normal; text-align:left; }
body.sport-ui .student-data-list > .student-history-groups { padding:12px; margin:0; box-sizing:border-box; list-style:none; }
body.sport-ui .normative-history-title strong { white-space:normal; overflow-wrap:anywhere; line-height:1.35; }
body.sport-ui .student-toolbar__select-actions { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); width:min(100%,380px); align-items:stretch; }
body.sport-ui .student-toolbar__select-btn { width:100%; height:100%; min-height:44px; padding:9px 10px; white-space:normal; }
body.sport-ui #normativeModal .normative-option { display:flex; align-items:center; justify-content:flex-start; width:100%; min-height:44px; padding:12px; border:1px solid #cfdfd5; border-radius:6px; background:#f4f8f5; color:var(--sport-ink); text-align:left; white-space:normal; transition:background-color .15s,border-color .15s; }
body.sport-ui #normativeModal .normative-option:is(:hover,:focus-visible) { background:#e2efe7; border-color:var(--sport-accent); color:var(--sport-ink); }
body.sport-ui #normativeModal .normative-option:focus-visible { outline:2px solid #2462bd; outline-offset:2px; }
body.sport-ui.page-teacher-mrds-competitions .mrds-button { color:#202927; }
body.sport-ui.page-teacher-mrds-competitions .mrds-button:is(:hover,:focus-visible) { color:#202927; background:#e9f5ef; }
@media(max-width:480px) {
  body.sport-ui.page-training-dashboard .training-live-controls { width:100%; margin-left:0; }
  body.sport-ui .normative-history-card { padding:12px; }
  /* Пять-шесть столбцов на телефоне не должны превращать показания в
     нечитаемые точки: прокручивается только сетка, а не вся страница. */
  body.sport-ui.page-training-dashboard .training-live-body { overflow-x:auto; }
  body.sport-ui .training-heart-grid.is-dense { min-width:calc(var(--training-columns) * 86px - 6px); }
}

/* Общий акцент выбора шахмат/шашек у методиста и учителя. Это по-прежнему
   вкладка Bootstrap: подсветка не меняет открываемую форму или её настройки. */
body.sport-ui .nav-pills .tournament-chess-choice {
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:44px; padding:10px 14px; border:1px solid var(--sport-accent);
  border-radius:6px; background:var(--sport-soft); color:var(--sport-accent-hover);
  font-weight:650; line-height:1.35; white-space:normal;
}
body.sport-ui .tournament-chess-choice .bi { font-size:18px; flex-shrink:0; }
body.sport-ui .nav-pills .tournament-chess-choice:hover { background:#dceee3; color:var(--sport-accent-hover); }
body.sport-ui .nav-pills .tournament-chess-choice.active {
  background:var(--sport-accent); color:#fff; border-color:var(--sport-accent);
}
body.sport-ui .nav-pills .tournament-chess-choice:focus-visible {
  outline:2px solid var(--sport-accent); outline-offset:3px;
}

/* На телефоне список выбранной даты находится в потоке после календаря.
   Только инициализированный скриптом календарь скрывает старую подсказку:
   при ошибке загрузки JS ссылки всё ещё доступны прежним способом. */
body.sport-ui.page-sport-competition-list .calendar-day-selection { display:none; }
@media(max-width:760px) {
  body.sport-ui.page-sport-competition-list .tournament-calendar[data-mobile-events-ready] .tournament-calendar-events { display:none; }
  body.sport-ui.page-sport-competition-list .calendar-day-selection:not([hidden]) {
    display:grid; gap:10px; padding:12px 0; border-top:1px solid var(--sport-line);
    scroll-margin-top:calc(var(--sport-header-height) + 12px); min-width:0;
  }
  body.sport-ui.page-sport-competition-list .calendar-day-selection__head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
  body.sport-ui.page-sport-competition-list .calendar-day-selection h2 { margin:0; font-size:15px; line-height:1.4; font-weight:650; color:var(--sport-ink); }
  body.sport-ui.page-sport-competition-list .calendar-day-selection__list { display:grid; gap:8px; max-height:45dvh; overflow-y:auto; min-width:0; }
  body.sport-ui.page-sport-competition-list .calendar-day-selection .tournament-calendar-event { padding:12px; border-radius:6px; background:var(--sport-surface); border-color:var(--sport-line); font-weight:600; }
  body.sport-ui.page-sport-competition-list .tournament-calendar-day__button.is-selected { background:var(--sport-soft); box-shadow:inset 0 0 0 2px var(--sport-accent); border-radius:5px; }
}

/* Списки статусов: одна рабочая строка вместо крупных блоков статистики.
   Область календаря не затрагивается. Названия переносятся без обрезания,
   кнопки остаются доступными с клавиатуры и пальцем на узком экране. */
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) :is(.tournament-grid--list,.school-tm-list) { display:grid; grid-template-columns:minmax(0,1fr); gap:8px; }
body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) :is(.tournament-card--compact,.school-tm-card) {
  min-width:0; padding:12px 14px; gap:10px 18px; border:1px solid var(--sport-line);
  border-radius:6px; background:var(--sport-surface); box-shadow:none;
}
body.sport-ui .tournament-card--compact { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; }
body.sport-ui .school-tm-card { display:grid; grid-template-columns:minmax(0,1fr) minmax(240px,.8fr) auto; align-items:center; }
body.sport-ui :is(.tournament-card__top,.school-tm-card__top) { gap:6px 12px; min-width:0; }
body.sport-ui :is(.tournament-card__title,.school-tm-card__title) { margin:0; font-size:14px; font-weight:650; line-height:1.4; overflow-wrap:anywhere; }
body.sport-ui .tournament-card__top .tournament-status { flex-shrink:0; padding:3px 6px; border-radius:4px; font-size:10px; line-height:1.4; }
body.sport-ui .tournament-card__compact-meta { margin-top:5px; gap:4px 10px; font-weight:500; }
body.sport-ui .tournament-card__compact-meta > span { padding:0; background:none; border:0; border-radius:0; font-size:12px; line-height:1.5; }
body.sport-ui .school-tm-card__meta { margin-top:4px; font-size:11px; line-height:1.5; font-weight:500; overflow-wrap:anywhere; }
body.sport-ui .school-tm-stats { display:flex; flex-wrap:wrap; gap:4px 14px; min-width:0; }
body.sport-ui .school-tm-stat { display:flex; align-items:baseline; flex-wrap:wrap; gap:4px; min-width:0; padding:0; background:none; border:0; border-radius:0; }
body.sport-ui .school-tm-stat > span { font-size:12px; font-weight:500; line-height:1.5; text-transform:none; }
body.sport-ui .school-tm-stat > strong { font-size:12px; line-height:1.5; font-weight:650; white-space:normal; overflow-wrap:anywhere; overflow:visible; }
body.sport-ui :is(.tournament-card__footer,.school-tm-card__footer) { display:flex; flex-wrap:nowrap; justify-content:flex-end; align-items:center; gap:6px; min-width:0; margin:0; }
body.sport-ui :is(.tournament-card__footer,.school-tm-card__footer) form { display:inline-flex; margin:0; }
body.sport-ui :is(.tournament-card__footer,.school-tm-card__footer) :is(a,button) { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:40px; min-width:0; padding:8px 10px; border-radius:5px; font-size:12px; line-height:1.3; white-space:nowrap; }
body.sport-ui .competition-row-delete .bi { display:none; }
@media(max-width:1100px) {
  body.sport-ui .school-tm-card { grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; }
  body.sport-ui .school-tm-card__top { grid-column:1/-1; }
}
@media(max-width:760px) {
  body.sport-ui:is(.page-sport-competition-list,.page-school-tournament-list) :is(.tournament-card--compact,.school-tm-card) { padding:10px; gap:8px; }
  body.sport-ui .tournament-card--compact { grid-template-columns:minmax(0,1fr) auto; }
  /* Техническая div-обёртка не создаёт отдельный ряд: метаданные слева,
     действия справа, а заголовок со статусом занимают всю ширину строки. */
  body.sport-ui .tournament-card--compact > .tw-min-w-0 { display:contents; }
  body.sport-ui .tournament-card--compact .tournament-card__top { grid-column:1/-1; }
  body.sport-ui .tournament-card__top { align-items:flex-start; flex-wrap:wrap; }
  body.sport-ui .tournament-card__title { flex:1 1 170px; }
  body.sport-ui .tournament-card__compact-meta { margin-top:0; }
  body.sport-ui .school-tm-stats { gap:3px 10px; }
  body.sport-ui :is(.tournament-card__footer,.school-tm-card__footer) :is(a,button) { min-height:44px; }
  /* Удаление занимает квадрат, но прежний POST, CSRF и подтверждение остаются.
     Название действия сохранено в aria-label и подсказке title. */
  body.sport-ui :is(.tournament-card__footer,.school-tm-card__footer) .competition-row-delete { width:44px; min-width:44px; padding:8px; }
  body.sport-ui .competition-row-delete .bi { display:inline-block; font-size:16px; }
  body.sport-ui .competition-row-delete > span { display:none; }
}
