/* ==========================================================================
   РОО «ФВВС СО» — стили страниц
   ========================================================================== */

/* ---------- общие карточки ---------- */
.news-card,
.event-card,
.cal-row,
.album,
.discipline,
.hub__card,
.comp-card,
.res-card,
.athlete,
.judge,
.person,
.doc,
.ccard,
.partner {
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

/* ---------- HERO ---------- */
.hero {
  padding-block: clamp(32px, 5vw, 64px) clamp(32px, 4vw, 48px);
  background: linear-gradient(180deg, var(--surface) 0%, var(--bg) 100%);
  border-bottom: 1px solid var(--line);
}

.hero__grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
}

.hero__title {
  max-width: 19ch;
  margin-bottom: 18px;
  font-size: clamp(2rem, 3.8vw, 3rem);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -.015em;
}

.hero__lead {
  max-width: 54ch;
  margin-bottom: 28px;
  font-size: 1.125rem;
  color: var(--text-2);
}

.hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
}

.hero__visual {
  margin: 0;
  overflow: hidden;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  box-shadow: var(--shadow);
}

.hero__visual img {
  width: 100%;
}

.hero__caption {
  padding: 10px 16px;
  font-size: .8125rem;
  color: var(--muted);
  border-top: 1px solid var(--line);
}

.hero__cards {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: 20px;
  margin-top: clamp(32px, 4vw, 48px);
}

.hero-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.hero-card__kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--muted);
}

.hero-card__title {
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}

.hero-card__title a {
  color: var(--text);
  text-decoration: none;
}

.hero-card__title a:hover {
  color: var(--coral-dark);
  text-decoration: underline;
}

.hero-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin: auto 0 0;
  font-size: .8125rem;
  color: var(--muted);
}

.hero-card__place {
  margin: 4px 0 0;
  font-size: .875rem;
  color: var(--text-2);
}

.hero-card--news {
  flex-direction: row;
  gap: 18px;
  padding: 14px;
}

.hero-card__media {
  flex: 0 0 42%;
  overflow: hidden;
  border-radius: var(--r-sm);
}

.hero-card__media svg {
  width: 100%;
  height: 100%;
  min-height: 140px;
  max-height: 260px;
}

.hero-card__body {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 6px 6px 6px 0;
}

.hero-card__start {
  display: flex;
  gap: 14px;
  align-items: flex-start;
}

.date-badge {
  display: flex;
  flex: none;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-width: 64px;
  padding: 8px 6px;
  color: var(--coral-dark);
  text-align: center;
  background: var(--coral-soft);
  border-radius: var(--r-sm);
}

.date-badge__day {
  font-size: 1.25rem;
  font-weight: 600;
  line-height: 1.1;
  white-space: nowrap;
}

.date-badge__month {
  font-size: .75rem;
  font-weight: 500;
  text-transform: uppercase;
}

.hero-card--live {
  color: #ffffff;
  text-decoration: none;
  background: var(--dark);
  border-color: var(--dark);
  transition: background-color .2s;
}

.hero-card--live:hover {
  color: #ffffff;
  background: #262d3d;
}

.hero-card--live .hero-card__kicker {
  color: #ffb19f;
}

.hero-card--live .hero-card__title {
  color: #ffffff;
}

.hero-card--live .hero-card__place {
  color: #c3c8d1;
}

.figures {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: 32px;
  list-style: none;
  border-top: 1px solid var(--line);
}

.figures__item {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 20px 20px 4px 0;
}

.figures__item + .figures__item {
  padding-left: 20px;
  border-left: 1px solid var(--line);
}

.figures__num {
  font-size: clamp(1.75rem, 3vw, 2.25rem);
  font-weight: 600;
  line-height: 1.2;
  color: var(--teal-dark);
  font-variant-numeric: tabular-nums;
}

.figures__label {
  font-size: .875rem;
  color: var(--text-2);
}

/* ---------- новости ---------- */
.news-card {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: box-shadow .2s, border-color .2s;
}

.news-card:hover {
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.news-card:focus-within {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

.news-card__media {
  flex: none;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--surface);
}

.news-card__media svg {
  width: 100%;
  height: 100%;
}

.news-card__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  padding: 16px 18px 20px;
}

.news-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  margin: 0;
  font-size: .8125rem;
  color: var(--muted);
}

.news-card__title {
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}

.news-card__link {
  color: var(--text);
  text-decoration: none;
}

.news-card__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.news-card__link:hover {
  color: var(--coral-dark);
}

.news-card__link:focus-visible {
  outline: none;
}

.news-card__lead {
  margin: 0;
  font-size: .9375rem;
  color: var(--text-2);
}

.news-card--feature .news-card__title {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.3;
}

.news-card--feature .news-card__body {
  padding: 20px 22px 24px;
}

.news-card--row {
  flex-direction: row;
  align-items: stretch;
}

.news-card--row .news-card__media {
  flex: 0 0 38%;
  aspect-ratio: auto;
  min-height: 112px;
}

.news-card--row .news-card__body {
  padding: 12px 16px;
}

.news-card--row .news-card__title {
  font-size: .9375rem;
}

.news-card--mini .news-card__body {
  padding: 14px 16px;
}

.news-card--mini .news-card__title {
  font-size: .9375rem;
}

.news-card--wide {
  flex-direction: row;
}

.news-card--wide .news-card__media {
  flex: 0 0 52%;
  aspect-ratio: auto;
  min-height: 280px;
}

.news-card--wide .news-card__body {
  justify-content: center;
  padding: 28px;
}

.news-card--wide .news-card__title {
  font-size: clamp(1.25rem, 2vw, 1.625rem);
}

.news-home {
  display: grid;
  grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
  gap: 24px;
}

.news-side {
  display: grid;
  gap: 16px;
}

.news-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 24px;
}

.news-grid > .news-card--wide {
  grid-column: 1 / -1;
}

/* ---------- дисциплины ---------- */
.disciplines {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 20px;
}

.discipline {
  position: relative;
  overflow: hidden;
  transition: box-shadow .2s;
}

.discipline:hover {
  box-shadow: var(--shadow);
}

.discipline__media img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}

.discipline__body {
  padding: 16px 18px 20px;
}

.discipline__title {
  margin-bottom: 6px;
  font-size: 1.125rem;
}

.discipline__link {
  color: var(--text);
  text-decoration: none;
}

.discipline__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.discipline__link:hover {
  color: var(--coral-dark);
}

.discipline__text {
  margin: 0;
  font-size: .9375rem;
  color: var(--text-2);
}

/* ---------- мероприятия (без изображений) ---------- */
.events-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.event-card {
  position: relative;
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  overflow: hidden;
  transition: box-shadow .2s, border-color .2s;
}

.event-card:hover {
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.event-card:focus-within {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

.event-card__date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 14px 6px;
  color: var(--coral-dark);
  text-align: center;
  background: var(--coral-soft);
}

.event-card__day {
  font-size: 1.5rem;
  font-weight: 600;
  line-height: 1.1;
  white-space: nowrap;
}

.event-card__month {
  font-size: .8125rem;
  font-weight: 500;
  text-transform: uppercase;
}

.event-card__wd {
  margin-top: 4px;
  font-size: .75rem;
  color: var(--text-2);
}

.event-card__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 14px 18px 16px;
}

.event-card__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin: 0;
}

.event-card__type {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--teal-dark);
}

.event-card__title {
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
}

.event-card__link {
  color: var(--text);
  text-decoration: none;
}

.event-card__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.event-card__link:hover {
  color: var(--coral-dark);
}

.event-card__link:focus-visible {
  outline: none;
}

.event-card__info {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 14px;
  margin: 0;
  font-size: .875rem;
  color: var(--muted);
}

.event-card--past .event-card__date {
  color: var(--muted);
  background: var(--surface-2);
}

.event-card--compact {
  grid-template-columns: 82px minmax(0, 1fr);
}

/* ---------- слайдер фотоальбомов ---------- */
.gslider {
  border-radius: var(--r);
}

.gslider:focus-visible {
  outline-offset: 6px;
}

.gslider__viewport {
  overflow: hidden;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  touch-action: pan-y;
}

.gslider__track {
  --i: 0;
  --drag: 0px;
  display: flex;
  translate: calc(var(--i) * -100% + var(--drag)) 0;
  transition: translate .5s var(--ease);
}

.gslider.is-dragging .gslider__track {
  transition: none;
}

.gslider__slide {
  display: grid;
  flex: 0 0 100%;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
  margin: 0;
}

.gslider__media {
  display: block;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--surface);
  -webkit-user-drag: none;
}

.gslider__media svg {
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.gslider__caption {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 10px;
  padding: clamp(20px, 3vw, 32px);
  border-left: 1px solid var(--line);
}

.gslider__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  margin: 0;
  font-size: .8125rem;
  color: var(--muted);
}

.gslider__title {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.3;
}

.gslider__title a {
  color: var(--text);
  text-decoration: none;
}

.gslider__title a:hover {
  color: var(--coral-dark);
  text-decoration: underline;
}

.gslider__desc {
  margin: 0;
  color: var(--text-2);
}

.gslider__facts {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  margin: 0 0 6px;
  font-size: .875rem;
  color: var(--muted);
}

.gslider__nav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  margin-top: 16px;
}

.gslider__arrow,
.gslider__pause {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  padding: 0;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: 50%;
  transition: background-color .2s, border-color .2s;
}

.gslider__arrow:hover,
.gslider__pause:hover {
  background: var(--surface);
  border-color: var(--text-2);
}

.gslider__arrow svg {
  width: 20px;
  height: 20px;
}

.gslider__dots {
  display: flex;
  gap: 6px;
}

.gslider__dot {
  position: relative;
  width: 28px;
  height: 6px;
  padding: 0;
  overflow: hidden;
  background: var(--line);
  border: 0;
  border-radius: 3px;
}

.gslider__dot.is-active {
  background: var(--line-strong);
}

.gslider__dot-fill {
  position: absolute;
  inset: 0;
  background: var(--coral);
  transform-origin: left center;
  scale: var(--progress, 0) 1;
}

.gslider__dot.is-active .gslider__dot-fill {
  background: var(--coral);
}

.gslider.is-user-paused .gslider__dot.is-active .gslider__dot-fill {
  scale: 1 1;
}

.gslider__counter {
  margin: 0 0 0 auto;
  font-size: .875rem;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.gslider__num {
  font-weight: 600;
  color: var(--text);
}

.gslider__pause-icon {
  width: 10px;
  height: 12px;
  border-left: 3px solid var(--text);
  border-right: 3px solid var(--text);
}

.gslider__pause[aria-pressed='true'] .gslider__pause-icon {
  width: 0;
  height: 0;
  margin-left: 3px;
  border-left: 10px solid var(--text);
  border-right: 0;
  border-top: 6px solid transparent;
  border-bottom: 6px solid transparent;
}

/* ---------- календарь-виджет ---------- */
.calw {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: 24px;
  align-items: stretch;
}

.calw__board,
.calw__side {
  padding: clamp(16px, 2.4vw, 24px);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.calw__head {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 14px;
}

.calw__month {
  flex: 1;
  font-size: 1.25rem;
  text-align: center;
}

.calw__nav {
  display: grid;
  place-items: center;
  flex: none;
  width: 38px;
  height: 38px;
  padding: 0;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: 50%;
}

.calw__nav:hover {
  background: var(--surface);
}

.calw__nav svg {
  width: 18px;
  height: 18px;
}

.calw__filters {
  margin-bottom: 14px;
}

.calw__filters .chip {
  padding: 4px 11px;
  font-size: .8125rem;
}

.calw__weekdays,
.calw__grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
}

.calw__weekdays {
  margin-bottom: 4px;
  font-size: .75rem;
  font-weight: 500;
  text-align: center;
  text-transform: uppercase;
  color: var(--muted);
}

.calw__cell {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  min-height: 40px;
  aspect-ratio: 3 / 2;
  padding: 0;
  font-size: .9375rem;
  color: var(--text-2);
  background: var(--bg);
  border: 1px solid transparent;
  border-radius: var(--r-sm);
  cursor: default;
  transition: background-color .15s, border-color .15s;
}

.calw__cell--blank {
  background: transparent;
}

.calw__cell.has-events {
  font-weight: 600;
  color: var(--text);
  background: var(--surface);
  border-color: var(--line);
  cursor: pointer;
}

.calw__cell.has-events:hover {
  border-color: var(--line-strong);
}

.calw__cell.is-today {
  border-color: var(--teal);
  box-shadow: inset 0 0 0 1px var(--teal);
}

.calw__cell.is-selected {
  color: #ffffff;
  background: var(--coral);
  border-color: var(--coral);
}

.calw__dots {
  display: flex;
  gap: 3px;
  min-height: 6px;
}

.calw__dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  background: var(--muted);
  border-radius: 50%;
}

.calw__dot--teal { background: var(--teal); }
.calw__dot--coral { background: var(--coral); }
.calw__dot--slate { background: var(--slate); }
.calw__dot--sun { background: var(--sun); }

.calw__cell.is-selected .calw__dot {
  background: #ffffff;
}

.calw__foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-top: 16px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.calw__legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 14px;
  list-style: none;
  font-size: .8125rem;
  color: var(--text-2);
}

.calw__legend-item {
  display: flex;
  align-items: center;
  gap: 6px;
}

.calw__side {
  display: flex;
  flex-direction: column;
  min-width: 0;
}

.calw__side-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 14px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--line);
}

.calw__side-title {
  font-size: 1.125rem;
}

.calw__count {
  font-size: .875rem;
  color: var(--muted);
}

.calw__list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  max-height: 460px;
  overflow: auto;
  list-style: none;
}

.calw__link {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 10px;
  color: var(--text);
  text-decoration: none;
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  transition: border-color .2s, background-color .2s;
}

.calw__link:hover {
  color: var(--text);
  background: var(--surface);
  border-color: var(--line-strong);
}

.calw__item-date {
  display: flex;
  flex-direction: column;
  align-items: center;
  padding: 6px 2px;
  font-size: .6875rem;
  text-transform: uppercase;
  color: var(--text-2);
  background: var(--surface);
  border-radius: 6px;
  border-top: 3px solid var(--muted);
}

.calw__item-date b {
  font-size: .9375rem;
  font-weight: 600;
  color: var(--text);
}

.calw__item-date--teal { border-top-color: var(--teal); }
.calw__item-date--coral { border-top-color: var(--coral); }
.calw__item-date--slate { border-top-color: var(--slate); }
.calw__item-date--sun { border-top-color: var(--sun); }

.calw__item-title {
  display: block;
  font-size: .9375rem;
  font-weight: 500;
  line-height: 1.35;
}

.calw__item-meta {
  display: block;
  margin-top: 3px;
  font-size: .8125rem;
  color: var(--muted);
}

.calw__next {
  margin-top: 6px;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}

.calw__item--soon .calw__link {
  border-style: dashed;
}

.calw__empty {
  padding: 14px;
  font-size: .9375rem;
  color: var(--text-2);
  background: var(--surface);
  border-radius: var(--r-sm);
}

/* ---------- детско-юношеские программы ---------- */
.kids {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: center;
}

.kids__text .section-title {
  margin-bottom: 14px;
}

.kids__text > p {
  color: var(--text-2);
}

.kids__list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px 24px;
  margin: 8px 0 26px;
  list-style: none;
}

.kids__list li {
  display: flex;
  flex-direction: column;
  padding-left: 12px;
  border-left: 2px solid var(--teal);
}

.kids__list span {
  font-size: .875rem;
  color: var(--text-2);
}

.kids__visual {
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--r);
  background: var(--bg);
}

.kids__visual img {
  width: 100%;
}

/* ---------- партнёры ---------- */
.partners {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  list-style: none;
}

.partner {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
}

.partner__mark {
  display: grid;
  flex: none;
  place-items: center;
  width: 48px;
  height: 48px;
  font-size: .875rem;
  font-weight: 600;
  color: var(--slate);
  background: var(--slate-soft);
  border-radius: 50%;
}

.partner__body {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.partner__name {
  font-size: .9375rem;
  font-weight: 500;
  line-height: 1.35;
}

.partner__role {
  font-size: .8125rem;
  color: var(--muted);
}

/* ---------- федерация ---------- */
.about {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: clamp(28px, 5vw, 64px);
  align-items: start;
}

.about__text .section-title {
  margin-bottom: 16px;
}

.about__text p {
  color: var(--text-2);
}

.about__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  list-style: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}

.about__stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 20px;
  border-bottom: 1px solid var(--line);
}

.about__stat:nth-child(odd) {
  border-right: 1px solid var(--line);
}

.about__stat:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.about__stat b {
  font-size: 1.875rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--teal-dark);
  font-variant-numeric: tabular-nums;
}

.about__stat span {
  font-size: .875rem;
  color: var(--text-2);
}

.hub {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.hub__card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 22px 22px 24px;
  color: var(--text);
  text-decoration: none;
  transition: box-shadow .2s, border-color .2s;
}

a.hub__card:hover {
  color: var(--text);
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.hub__count {
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--teal-dark);
}

.hub__title {
  max-width: calc(100% - 36px);
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.35;
}

.hub__text {
  font-size: .9375rem;
  color: var(--text-2);
}

.hub__go {
  position: absolute;
  top: 20px;
  right: 20px;
  width: 22px;
  height: 22px;
  color: var(--coral);
  transition: translate .2s var(--ease);
}

a.hub__card:hover .hub__go {
  translate: 3px 0;
}

.hub__card--wide {
  grid-column: 1 / -1;
  flex-direction: row;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 16px 24px;
}

.hub__main-link {
  display: flex;
  flex-direction: column;
  gap: 6px;
  color: var(--text);
  text-decoration: none;
}

.hub__main-link:hover {
  color: var(--coral-dark);
}

.hub__sub {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  list-style: none;
}

.hub__sub a {
  display: inline-flex;
  padding: 7px 16px;
  font-size: .9375rem;
  color: var(--text);
  text-decoration: none;
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  transition: background-color .2s, border-color .2s;
}

.hub__sub a:hover {
  background: var(--surface);
  border-color: var(--text-2);
}

.timeline {
  position: relative;
  display: grid;
  gap: 0;
  max-width: 860px;
  list-style: none;
}

.timeline__item {
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr);
  gap: 24px;
  padding: 16px 0;
  border-bottom: 1px solid var(--line);
}

.timeline__item:first-child {
  border-top: 1px solid var(--line);
}

.timeline__year {
  font-size: 1.25rem;
  font-weight: 600;
  color: var(--coral-dark);
}

.timeline__text {
  margin: 0;
  color: var(--text-2);
}

.fed-fresh {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(24px, 4vw, 48px);
  align-items: start;
}

.fed-fresh .section-title {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
}

.fed-fresh__list {
  display: grid;
  gap: 12px;
}

/* ---------- статья ---------- */
.article {
  max-width: 820px;
  margin-inline: auto;
}

.article__head {
  margin-bottom: 24px;
}

.article__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 16px;
  font-size: .875rem;
  color: var(--muted);
}

.article__title {
  margin: 12px 0 16px;
  font-size: clamp(1.75rem, 3.4vw, 2.5rem);
  line-height: 1.2;
}

.article__lead {
  margin: 0;
  padding-left: 16px;
  font-size: clamp(1.0625rem, 1.6vw, 1.1875rem);
  color: var(--text-2);
  border-left: 3px solid var(--coral);
}

.article__media {
  position: relative;
  margin: 0 0 28px;
  overflow: hidden;
  border-radius: var(--r);
}

.article__media svg {
  width: 100%;
  height: auto;
  aspect-ratio: 16 / 9;
}

.article__caption {
  padding: 8px 0 0;
  font-size: .8125rem;
  color: var(--muted);
}

.article__body {
  font-size: 1.0625rem;
  line-height: 1.75;
}

.article__foot {
  display: flex;
  flex-direction: column;
  gap: 24px;
  margin-top: 32px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}

.share {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  margin-top: 20px;
}

.share__label {
  margin-right: 4px;
  font-size: .875rem;
  color: var(--muted);
}

.share__btn {
  padding: 5px 12px;
  font-size: .875rem;
  color: var(--text);
  text-decoration: none;
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  transition: background-color .2s;
}

.share__btn:hover {
  color: var(--text);
  background: var(--surface);
}

.pager {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.pager__link {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 14px 16px;
  color: var(--text);
  text-decoration: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  transition: border-color .2s, background-color .2s;
}

.pager__link:hover {
  color: var(--text);
  background: var(--surface);
  border-color: var(--line-strong);
}

.pager__link--next {
  grid-column: 2;
  text-align: right;
}

.pager__dir {
  font-size: .8125rem;
  color: var(--muted);
}

.pager__title {
  font-weight: 500;
  line-height: 1.35;
}

.related {
  margin-top: clamp(48px, 6vw, 72px);
  padding-top: clamp(28px, 4vw, 40px);
  border-top: 1px solid var(--line);
}

.related > .section-title {
  margin-bottom: 22px;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
}

.related__grid,
.albums.albums--three {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.related__events {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
  gap: 16px;
}

.related__rows {
  display: grid;
  gap: 12px;
}

/* ---------- мероприятия: страницы ---------- */
.next-event {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas:
    'kicker cd'
    'title cd'
    'info cd';
  gap: 6px 32px;
  align-items: center;
  margin-bottom: 28px;
  padding: clamp(20px, 3vw, 28px);
  color: #ffffff;
  background: var(--dark);
  border-radius: var(--r);
}

.next-event:empty {
  display: none;
}

.next-event__kicker {
  grid-area: kicker;
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #ffb19f;
}

.next-event__title {
  grid-area: title;
  font-size: clamp(1.25rem, 2.2vw, 1.625rem);
}

.next-event__title a {
  color: #ffffff;
  text-decoration: none;
}

.next-event__title a:hover {
  text-decoration: underline;
}

.next-event :focus-visible {
  outline-color: #ffffff;
}

.next-event__info {
  grid-area: info;
  margin: 0;
  color: #c3c8d1;
}

.next-event .countdown {
  grid-area: cd;
}

.event-page__head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: clamp(18px, 3vw, 32px);
  align-items: start;
  margin-bottom: 28px;
}

.event-page__date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: clamp(104px, 12vw, 132px);
  padding: 18px 8px;
  color: var(--coral-dark);
  text-align: center;
  background: var(--coral-soft);
  border-radius: var(--r);
}

.event-page__day {
  font-size: clamp(1.625rem, 3vw, 2.25rem);
  font-weight: 600;
  line-height: 1.1;
}

.event-page__month {
  margin-top: 4px;
  font-size: .8125rem;
  font-weight: 500;
  text-transform: uppercase;
}

.event-page__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 14px;
  margin: 0 0 12px;
}

.event-page__title {
  margin-bottom: 12px;
  font-size: clamp(1.625rem, 3.2vw, 2.375rem);
  line-height: 1.2;
}

.event-page__lead {
  max-width: 64ch;
  font-size: 1.0625rem;
  color: var(--text-2);
}

.event-page__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 18px;
}

.event-page__info {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0 0 32px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.event-page__info-item {
  padding: 14px 18px;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.event-page__info-item:nth-child(3n) {
  border-right: 0;
}

.event-page__info-item:nth-last-child(-n + 3) {
  border-bottom: 0;
}

.event-page__info dt,
.fact dt {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}

.event-page__info dd,
.fact dd {
  margin: 4px 0 0;
  font-weight: 500;
  word-break: break-word;
}

.event-page__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
  gap: clamp(24px, 4vw, 48px);
  align-items: start;
}

.event-page__text p {
  font-size: 1.0625rem;
  line-height: 1.7;
  color: var(--text-2);
}

.program {
  padding: 22px;
  background: var(--surface);
  border-radius: var(--r);
}

.program__title {
  margin-bottom: 14px;
  font-size: 1.125rem;
}

.program__list {
  display: flex;
  flex-direction: column;
  list-style: none;
}

.program__item {
  display: grid;
  grid-template-columns: 72px minmax(0, 1fr);
  gap: 12px;
  padding: 10px 0;
  border-top: 1px solid var(--line);
}

.program__item:first-child {
  border-top: 0;
}

.program__time {
  font-weight: 600;
  color: var(--coral-dark);
  font-variant-numeric: tabular-nums;
}

.program__what {
  color: var(--text-2);
}

.program--days {
  margin-top: 28px;
}

.program--days .program__item {
  grid-template-columns: 84px minmax(0, 1fr);
}

/* ---------- спортсмены ---------- */
.athletes {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
  gap: 20px;
}

.athlete {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.athlete__pic {
  padding: 22px 22px 0;
}

.athlete__pic svg {
  width: 96px;
  height: 96px;
  overflow: hidden;
  border-radius: 50%;
}

.athlete__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 4px;
  padding: 14px 22px 22px;
}

.athlete__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 12px;
  margin: 0;
}

.athlete__rank {
  padding: 1px 8px;
  font-size: .75rem;
  font-weight: 600;
  color: var(--coral-dark);
  background: var(--coral-soft);
  border-radius: 4px;
}

.athlete__name {
  margin-top: 6px;
  font-size: 1.1875rem;
}

.athlete__born,
.athlete__club,
.athlete__coach {
  margin: 0;
  font-size: .875rem;
  color: var(--text-2);
}

.athlete__coach {
  color: var(--muted);
}

.athlete__bests {
  display: flex;
  flex-direction: column;
  margin-top: 12px;
  list-style: none;
  border-top: 1px solid var(--line);
}

.athlete__best {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0 12px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line);
}

.athlete__event {
  font-size: .875rem;
}

.athlete__result {
  font-weight: 600;
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.athlete__note {
  grid-column: 1 / -1;
  font-size: .75rem;
  color: var(--muted);
}

/* ---------- судьи ---------- */
.jstats {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  margin-bottom: 28px;
  list-style: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}

.jstat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 16px 18px;
}

.jstat + .jstat {
  border-left: 1px solid var(--line);
}

.jstat__num {
  font-size: 1.75rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--teal-dark);
}

.jstat__cat {
  font-weight: 600;
}

.jstat__name {
  font-size: .8125rem;
  color: var(--muted);
}

.judges {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.judge {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  padding: 14px 18px;
}

.judge__mono {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  font-size: .9375rem;
  font-weight: 600;
  color: var(--slate);
  background: var(--slate-soft);
  border-radius: 50%;
}

.judge__name {
  font-size: 1rem;
  font-weight: 600;
}

.judge__role {
  margin: 2px 0 6px;
  font-size: .875rem;
  color: var(--text-2);
}

.judge__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  margin: 0;
  font-size: .8125rem;
  color: var(--muted);
}

.judge__cat {
  display: grid;
  place-items: center;
  min-width: 48px;
  padding: 6px 8px;
  font-size: .875rem;
  font-weight: 600;
  color: var(--teal-dark);
  background: var(--teal-soft);
  border-radius: var(--r-sm);
}

.info-box {
  margin-top: 32px;
  padding: clamp(20px, 3vw, 28px);
  background: var(--surface);
  border-left: 3px solid var(--teal);
  border-radius: 0 var(--r) var(--r) 0;
}

.info-box__title {
  margin-bottom: 8px;
  font-size: 1.125rem;
}

.info-box p {
  max-width: 72ch;
  color: var(--text-2);
}

/* ---------- президиум ---------- */
.people {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.person {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.person--lead {
  grid-column: 1 / -1;
  flex-direction: row;
  align-items: center;
  background: var(--surface);
}

.person__pic {
  padding: 22px 22px 0;
}

.person__pic svg {
  width: 112px;
  height: 112px;
  overflow: hidden;
  border-radius: 50%;
}

.person--lead .person__pic {
  flex: none;
  padding: 24px;
}

.person--lead .person__pic svg {
  width: clamp(140px, 16vw, 180px);
  height: auto;
  aspect-ratio: 1;
}

.person__body {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 6px;
  padding: 16px 22px 22px;
}

.person__role {
  margin: 0;
  font-size: .8125rem;
  font-weight: 600;
  color: var(--teal-dark);
}

.person__name {
  font-size: 1.125rem;
}

.person--lead .person__name {
  font-size: clamp(1.375rem, 2.6vw, 1.875rem);
}

.person__text {
  margin: 0;
  font-size: .9375rem;
  color: var(--text-2);
}

.person__mail {
  margin-top: auto;
  font-size: .9375rem;
}

.krk {
  margin-top: 28px;
  padding: clamp(20px, 3vw, 28px);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.krk--in-grid {
  grid-column: span 2;
  margin-top: 0;
}

.krk__title {
  margin-bottom: 12px;
  font-size: 1.125rem;
}

.krk__list {
  display: grid;
  gap: 6px;
  margin-bottom: 16px;
  list-style: none;
  color: var(--text-2);
}

/* ---------- документы ---------- */
.hub--three {
  margin-bottom: 0;
}

.docs {
  display: grid;
  gap: 10px;
  list-style: none;
}

.doc {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 16px;
  align-items: center;
  padding: 14px 18px;
  transition: border-color .2s, box-shadow .2s;
}

.doc:hover {
  border-color: var(--line-strong);
}

.doc__icon {
  display: grid;
  place-items: center;
  width: 44px;
  height: 52px;
  font-size: .6875rem;
  font-weight: 600;
  color: #ffffff;
  background: var(--slate);
  border-radius: 4px 12px 4px 4px;
}

.doc__icon--pdf { background: var(--coral); }
.doc__icon--docx { background: var(--slate); }
.doc__icon--xlsx { background: var(--teal); }

.doc__title {
  margin-bottom: 4px;
  font-size: 1rem;
  font-weight: 500;
  line-height: 1.35;
}

.doc__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 2px 16px;
  margin: 0;
  font-size: .8125rem;
  color: var(--muted);
}

.doc__cat {
  color: var(--teal-dark);
  font-weight: 500;
}

/* ---------- устав ---------- */
.read-progress {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 70;
  height: 3px;
  pointer-events: none;
}

.read-progress::after {
  content: '';
  display: block;
  height: 100%;
  background: var(--teal);
  transform-origin: left center;
  scale: var(--p, 0) 1;
}

.charter {
  display: grid;
  grid-template-columns: 280px minmax(0, 1fr);
  gap: clamp(24px, 4vw, 56px);
  align-items: start;
}

.charter__aside {
  position: sticky;
  top: 160px;
}

.charter__toc {
  padding: 16px;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.charter__toc-title {
  margin-bottom: 8px;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--muted);
}

.charter__toc ol {
  display: flex;
  flex-direction: column;
  gap: 2px;
  list-style: none;
}

.charter__toc a {
  display: flex;
  gap: 8px;
  padding: 6px 10px;
  font-size: .9375rem;
  line-height: 1.35;
  color: var(--text-2);
  text-decoration: none;
  border-left: 2px solid transparent;
  border-radius: 0 6px 6px 0;
  transition: background-color .15s, color .15s;
}

.charter__toc a span {
  flex: none;
  min-width: 18px;
  color: var(--muted);
}

.charter__toc a:hover {
  color: var(--text);
  background: var(--surface);
}

.charter__toc a.is-active {
  color: var(--coral-dark);
  background: var(--coral-soft);
  border-left-color: var(--coral);
}

.charter__toc-toggle {
  display: none;
}

.charter__chapter {
  margin-bottom: 32px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--line);
  scroll-margin-top: 150px;
}

.charter__h {
  margin-bottom: 16px;
  font-size: clamp(1.25rem, 2.2vw, 1.5rem);
}

.charter__n {
  color: var(--coral-dark);
}

.charter__points {
  display: flex;
  flex-direction: column;
  gap: 12px;
  list-style: none;
}

.charter__points li {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 8px;
}

.charter__pn {
  font-weight: 500;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.charter__points p {
  margin: 0;
  line-height: 1.7;
  color: var(--text-2);
}

/* ---------- контакты ---------- */
.contact-cards {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 16px;
}

.ccard {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px 20px;
}

.ccard__label {
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}

.ccard__value {
  margin: 0;
  font-size: 1.0625rem;
  font-weight: 500;
  line-height: 1.4;
  word-break: break-word;
}

.ccard__value a {
  color: var(--text);
  text-decoration: none;
}

.ccard__value a:hover {
  color: var(--coral-dark);
  text-decoration: underline;
}

.ccard__note {
  margin: 0;
  font-size: .875rem;
  color: var(--text-2);
}

.ccard__copy {
  align-self: flex-start;
  margin-top: auto;
  padding: 4px 10px;
  font-size: .8125rem;
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: 6px;
}

.ccard__copy:hover {
  background: var(--surface);
}

.contact-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(24px, 4vw, 48px);
  align-items: start;
}

.contact-grid .section-title {
  margin-bottom: 18px;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
}

.map-frame {
  overflow: hidden;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.map {
  width: 100%;
  height: auto;
}

.map-note {
  margin-top: 14px;
  font-size: .9375rem;
  color: var(--text-2);
}

.form {
  display: flex;
  flex-direction: column;
  gap: 16px;
  padding: clamp(18px, 3vw, 26px);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.form__row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 16px;
}

.form .btn {
  align-self: flex-start;
}

.field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-width: 0;
}

.field__label {
  font-size: .875rem;
  font-weight: 500;
}

.field__hint {
  margin: 0;
  font-size: .75rem;
  text-align: right;
  color: var(--muted);
}

.field__error {
  margin: 0;
  font-size: .8125rem;
  color: #b42318;
}

.field__error:empty {
  display: none;
}

.field.is-invalid .input,
.field.is-invalid select {
  border-color: #b42318;
  box-shadow: 0 0 0 3px #fde4e1;
}

.field--check {
  flex-direction: row;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 10px;
}

.field--check label {
  flex: 1;
  min-width: 0;
  font-size: .875rem;
  color: var(--text-2);
}

.field--check .field__error {
  flex-basis: 100%;
}

.check {
  display: grid;
  flex: none;
  place-items: center;
  width: 20px;
  height: 20px;
  margin: 2px 0 0;
  appearance: none;
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: 4px;
  cursor: pointer;
}

.check:checked {
  background: var(--teal);
  border-color: var(--teal);
}

.check:checked::after {
  content: '';
  width: 5px;
  height: 10px;
  margin-top: -2px;
  border-right: 2px solid #ffffff;
  border-bottom: 2px solid #ffffff;
  rotate: 45deg;
}

.field--check.is-invalid .check {
  border-color: #b42318;
}

.form__note {
  margin: 0;
  font-size: .8125rem;
  color: var(--muted);
}

.form-success {
  margin-top: 20px;
  padding: 20px 22px;
  background: var(--teal-soft);
  border-left: 3px solid var(--teal);
  border-radius: 0 var(--r) var(--r) 0;
}

.form-success:focus {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

.form-success__title {
  margin-bottom: 6px;
  font-size: 1.125rem;
  font-weight: 600;
}

.requisites {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.requisites > div {
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
}

.requisites > div:nth-child(odd) {
  border-right: 1px solid var(--line);
}

.requisites > div:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.requisites dt {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}

.requisites dd {
  margin: 4px 0 0;
  font-weight: 500;
  word-break: break-word;
  font-variant-numeric: tabular-nums;
}

/* ---------- соревнования ---------- */
.comp-hub {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.comp-card {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 22px;
}

.comp-card__head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 12px;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid var(--line);
}

.comp-card__head svg {
  width: 22px;
  height: 22px;
  color: var(--coral);
  transition: translate .2s var(--ease);
}

.comp-card__head:hover {
  color: var(--coral-dark);
}

.comp-card__head:hover svg {
  translate: 3px 0;
}

.comp-card__title {
  font-size: 1.25rem;
  font-weight: 600;
}

.comp-card__links {
  display: flex;
  flex-direction: column;
  list-style: none;
}

.comp-card__links a {
  display: block;
  padding: 8px 0;
  color: var(--text);
  text-decoration: none;
  border-bottom: 1px solid var(--line);
}

.comp-card__links li:last-child a {
  border-bottom: 0;
}

.comp-card__links a:hover {
  color: var(--coral-dark);
}

.comp-card__text {
  margin: 0;
  font-size: .9375rem;
  color: var(--text-2);
}

.comp-card__cats {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  list-style: none;
}

.comp-card__cats li {
  padding: 2px 10px;
  font-size: .8125rem;
  font-weight: 600;
  color: var(--teal-dark);
  background: var(--teal-soft);
  border-radius: 4px;
}

.comp-next {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr);
  gap: clamp(24px, 4vw, 48px);
  align-items: start;
}

.next-start {
  position: sticky;
  top: 160px;
  padding: 24px;
  color: #ffffff;
  background: var(--dark);
  border-radius: var(--r);
}

.next-start:empty {
  display: none;
}

.next-start__kicker {
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #ffb19f;
}

.next-start__title {
  margin: 8px 0;
  font-size: 1.25rem;
}

.next-start__title a {
  color: #ffffff;
  text-decoration: none;
}

.next-start__title a:hover {
  text-decoration: underline;
}

.next-start :focus-visible {
  outline-color: #ffffff;
}

.next-start__info {
  color: #c3c8d1;
}

.countdown--sm .countdown__cell {
  min-width: 56px;
}

.countdown--sm .countdown__num {
  font-size: 1.25rem;
}

.comp-next .section-title {
  font-size: clamp(1.25rem, 2vw, 1.5rem);
}

.cal-rows {
  display: grid;
  gap: 12px;
}

.live-banner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px 20px;
  padding: 18px 24px;
  color: #ffffff;
  text-decoration: none;
  background: var(--dark);
  border-radius: var(--r);
  transition: background-color .2s;
}

.live-banner:hover {
  color: #ffffff;
  background: #262d3d;
}

.live-banner__badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 4px 12px;
  font-size: .8125rem;
  font-weight: 600;
  color: var(--dark);
  background: #ffffff;
  border-radius: 999px;
}

.live-banner__text {
  flex: 1 1 320px;
}

.live-banner__go {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-weight: 500;
}

.live-banner__go svg {
  width: 18px;
  height: 18px;
}

/* строки календаря */
.cal-row {
  position: relative;
  display: grid;
  grid-template-columns: 96px minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 14px 18px 14px 14px;
  transition: border-color .2s, box-shadow .2s;
}

.cal-row:hover {
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.cal-row:focus-within {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

.cal-row__date {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 72px;
  padding: 8px 4px;
  text-align: center;
  background: var(--surface);
  border-top: 3px solid var(--muted);
  border-radius: var(--r-sm);
}

.cal-row__date--teal { border-top-color: var(--teal); }
.cal-row__date--coral { border-top-color: var(--coral); }
.cal-row__date--slate { border-top-color: var(--slate); }
.cal-row__date--sun { border-top-color: var(--sun); }

.cal-row__day {
  font-size: 1.125rem;
  font-weight: 600;
  line-height: 1.2;
  white-space: nowrap;
}

.cal-row__month {
  font-size: .75rem;
  color: var(--muted);
}

.cal-row__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 12px;
  margin: 0 0 6px;
}

.cal-row__level {
  font-size: .75rem;
  color: var(--muted);
}

.cal-row__title {
  margin-bottom: 4px;
  font-size: 1rem;
  font-weight: 600;
  line-height: 1.35;
}

.cal-row__link {
  color: var(--text);
  text-decoration: none;
}

.cal-row__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.cal-row__link:hover {
  color: var(--coral-dark);
}

.cal-row__link:focus-visible {
  outline: none;
}

.cal-row__place,
.cal-row__age {
  margin: 0;
  font-size: .875rem;
  color: var(--muted);
}

.cal-row__age b {
  font-weight: 500;
  color: var(--text-2);
}

.cal-row__status {
  align-self: start;
}

/* ---------- результаты ---------- */
.res-hub {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) repeat(3, minmax(0, 1fr));
  gap: 20px;
}

.res-card {
  display: flex;
  flex-direction: column;
  gap: 6px;
  min-height: 200px;
  padding: 22px;
  color: var(--text);
  text-decoration: none;
  transition: border-color .2s, box-shadow .2s;
}

.res-card:hover {
  color: var(--text);
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.res-card__title {
  margin-top: auto;
  font-size: 1.125rem;
  font-weight: 600;
}

.res-card__text {
  font-size: .875rem;
  color: var(--text-2);
}

/* ---------- онлайн-табло ---------- */

/* ---------- рекорды ---------- */
.rstats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 24px;
  list-style: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}

.rstat {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 18px 20px;
}

.rstat + .rstat {
  border-left: 1px solid var(--line);
}

.rstat__num {
  font-size: 1.875rem;
  font-weight: 600;
  line-height: 1.2;
  color: var(--teal-dark);
}

.rstat span {
  font-size: .875rem;
  color: var(--text-2);
}

.toolbar--records {
  align-items: center;
  justify-content: space-between;
}

.rtable-wrap {
  overflow-x: auto;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.rtable {
  width: 100%;
  border-collapse: collapse;
  font-variant-numeric: tabular-nums;
}

.rtable__caption {
  padding: 14px 18px;
  font-size: 1rem;
  font-weight: 600;
  text-align: left;
  border-bottom: 1px solid var(--line);
}

.rtable th,
.rtable td {
  padding: 11px 14px;
  text-align: left;
  vertical-align: middle;
  border-bottom: 1px solid var(--line);
}

.rtable thead th {
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--surface);
}

.rtable tbody th {
  font-weight: 500;
}

.rtable tbody tr:last-child th,
.rtable tbody tr:last-child td {
  border-bottom: 0;
}

.rtable tbody tr:nth-child(even) {
  background: #fcfbf9;
}

.rtable__time {
  font-weight: 600;
  white-space: nowrap;
}

.rtable td:nth-last-child(-n + 2) {
  white-space: nowrap;
}

.rtable__row.is-new {
  background: var(--coral-soft);
}

.rtable tbody tr.rtable__row.is-new {
  background: #fff3ef;
}

.rtable__new {
  display: inline-block;
  margin-left: 8px;
  padding: 0 6px;
  font-size: .6875rem;
  font-weight: 600;
  line-height: 1.6;
  color: #ffffff;
  vertical-align: middle;
  background: var(--coral);
  border-radius: 4px;
}

/* ---------- итоги ---------- */

/* ---------- архивы ---------- */

.month-groups {
  display: flex;
  flex-direction: column;
  gap: 32px;
}

.month-group__title {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 14px;
  padding-bottom: 8px;
  font-size: 1.25rem;
  border-bottom: 2px solid var(--coral);
}

.month-group__title span {
  font-size: .9375rem;
  font-weight: 400;
  color: var(--muted);
}

.month-group__rows {
  display: grid;
  gap: 12px;
}

/* ---------- страница соревнования ---------- */
.start__head {
  margin-bottom: 26px;
}

.start__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin-bottom: 12px;
}

.start__title {
  max-width: 26ch;
  font-size: clamp(1.75rem, 3.4vw, 2.5rem);
  line-height: 1.2;
}

.start__dates {
  margin: 12px 0 0;
  font-size: 1.125rem;
  font-weight: 500;
  color: var(--coral-dark);
}

.start__grid {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: clamp(20px, 3.5vw, 40px);
  align-items: start;
}

.start__facts {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin: 0;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.fact {
  padding: 14px 18px;
  border-bottom: 1px solid var(--line);
}

.fact:nth-child(odd) {
  border-right: 1px solid var(--line);
}

.fact:nth-last-child(-n + 2) {
  border-bottom: 0;
}

.start__side {
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.cal-state {
  padding: 20px;
  color: #ffffff;
  background: var(--dark);
  border-radius: var(--r);
}

.cal-state :focus-visible {
  outline-color: #ffffff;
}

.cal-state__title {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 12px;
  font-weight: 600;
}

.cal-state--done {
  color: var(--text);
  background: var(--surface);
}

.cal-state--done :focus-visible {
  outline-color: var(--teal);
}

.cal-state__result {
  color: var(--text-2);
}

.start__docs {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.start__docs-title {
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--muted);
}

.doc-chip {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  font-size: .9375rem;
  text-align: left;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  transition: background-color .2s, border-color .2s;
}

.doc-chip:hover {
  background: var(--surface);
  border-color: var(--line-strong);
}

.doc-chip__type {
  padding: 1px 6px;
  font-size: .6875rem;
  font-weight: 600;
  color: #ffffff;
  background: var(--slate);
  border-radius: 3px;
}

/* ---------- галерея ---------- */
.albums {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 270px), 1fr));
  gap: 20px;
}

.album {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: box-shadow .2s, border-color .2s;
}

.album:hover {
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.album:focus-within {
  outline: 2px solid var(--teal);
  outline-offset: 2px;
}

.album__media {
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--surface);
}

.album__media svg {
  width: 100%;
  height: 100%;
}

.album__count {
  position: absolute;
  right: 10px;
  bottom: 10px;
  padding: 2px 8px;
  font-size: .75rem;
  font-weight: 500;
  color: #ffffff;
  background: rgba(29, 35, 48, .75);
  border-radius: 4px;
}

.album__body {
  padding: 14px 16px 18px;
}

.album__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 12px;
  margin: 0 0 6px;
  font-size: .8125rem;
  color: var(--muted);
}

.album__title {
  margin-bottom: 4px;
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}

.album__link {
  color: var(--text);
  text-decoration: none;
}

.album__link::after {
  content: '';
  position: absolute;
  inset: 0;
}

.album__link:hover {
  color: var(--coral-dark);
}

.album__link:focus-visible {
  outline: none;
}

.album__place {
  margin: 0;
  font-size: .875rem;
  color: var(--muted);
}

.album-head {
  margin-bottom: 28px;
}

.album-head__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 16px;
  margin: 0;
  font-size: .875rem;
  color: var(--muted);
}

.album-head__title {
  margin: 10px 0;
  font-size: clamp(1.75rem, 3.4vw, 2.5rem);
  line-height: 1.2;
}

.album-head__text {
  max-width: 70ch;
  margin: 0;
  color: var(--text-2);
}

.photo-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr));
  gap: 16px;
  list-style: none;
}

.photo {
  display: flex;
  flex-direction: column;
  width: 100%;
  padding: 0;
  overflow: hidden;
  text-align: left;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r-sm);
  transition: box-shadow .2s, border-color .2s;
}

.photo:hover {
  border-color: var(--line-strong);
  box-shadow: var(--shadow);
}

.photo__img {
  display: block;
  aspect-ratio: 4 / 3;
  overflow: hidden;
}

.photo__img svg {
  width: 100%;
  height: 100%;
}

.photo__cap {
  padding: 8px 12px 10px;
  font-size: .875rem;
  color: var(--text-2);
}

/* лайтбокс */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 200;
  display: grid;
  place-items: center;
  padding: 16px;
}

.lightbox[hidden] {
  display: none;
}

.lightbox__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(17, 21, 30, .88);
}

.lightbox__frame {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: min(100%, 960px, calc(72vh * 4 / 3 + 2px));
  opacity: 0;
  transition: opacity .25s;
}

.lightbox.is-open .lightbox__frame {
  opacity: 1;
}

.lightbox :focus-visible {
  outline-color: #ffffff;
}

.lightbox__top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  color: #ffffff;
}

.lightbox__counter {
  margin: 0;
  font-size: .9375rem;
  font-variant-numeric: tabular-nums;
}

.lightbox__close,
.lightbox__btn {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  padding: 0;
  color: #ffffff;
  background: rgba(255, 255, 255, .1);
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 50%;
  transition: background-color .2s;
}

.lightbox__close:hover,
.lightbox__btn:hover {
  background: rgba(255, 255, 255, .2);
}

.lightbox__close svg,
.lightbox__btn svg {
  width: 22px;
  height: 22px;
}

.lightbox__figure {
  margin: 0;
  overflow: hidden;
  background: var(--bg);
  border-radius: var(--r-sm);
  touch-action: pan-y;
  user-select: none;
}

.lightbox__img {
  aspect-ratio: 4 / 3;
}

.lightbox__img svg {
  width: 100%;
  height: 100%;
}

.lightbox__cap {
  padding: 10px 14px 12px;
  font-size: .9375rem;
  color: var(--text-2);
}

.lightbox__btn {
  position: absolute;
  top: 50%;
  z-index: 2;
  translate: 0 -50%;
}

.lightbox__btn--prev { left: 10px; }
.lightbox__btn--next { right: 10px; }

/* не найдено */
.not-found {
  max-width: 640px;
  margin: 24px auto;
  padding: clamp(24px, 4vw, 40px);
  text-align: center;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.not-found__code {
  margin-bottom: 8px;
  font-size: .8125rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--coral-dark);
}

.not-found__title {
  margin-bottom: 10px;
  font-size: clamp(1.5rem, 3vw, 2rem);
}

.not-found__text {
  max-width: 48ch;
  margin: 0 auto 20px;
  color: var(--text-2);
}

/* ---------- функциональные анимации ---------- */
@media (prefers-reduced-motion: no-preference) {
  .hero__visual {
    animation: fade-in .5s var(--ease) both;
  }

  .lightbox__img.is-shown {
    animation: fade-in .3s var(--ease);
  }
}

@media (prefers-reduced-motion: reduce) {
  .gslider__track,
.lightbox__frame {
    transition: none;
  }
}

/* ---------- адаптив ---------- */
@media (max-width: 1180px) {
  

  

  

  .res-hub {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .contact-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .disciplines {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero__cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .hero-card--news {
    grid-column: 1 / -1;
  }

  .jstats {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .jstat:nth-child(4) {
    border-left: 0;
  }

  .jstat:nth-child(n + 4) {
    border-top: 1px solid var(--line);
  }
}

@media (max-width: 1024px) {
  .hero__grid,
.news-home,
.about,
.fed-fresh,
.contact-grid,
.comp-next,
.event-page__grid,
.start__grid,
.kids,
.calw {
    grid-template-columns: minmax(0, 1fr);
  }

  .hero__title {
    max-width: 20ch;
  }

  .news-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .gslider__slide {
    grid-template-columns: minmax(0, 1fr);
  }

  .gslider__caption {
    border-left: 0;
    border-top: 1px solid var(--line);
  }

  .calw__list {
    max-height: none;
  }

  .next-start,
  .charter__aside {
    position: static;
  }

  .people {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .krk--in-grid {
    grid-column: span 1;
  }

  .comp-hub,
  .partners {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .judges {
    grid-template-columns: minmax(0, 1fr);
  }

  

  
}

@media (max-width: 900px) {
  .events-grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .hub {
    grid-template-columns: minmax(0, 1fr);
  }

  .related__grid,
  .albums.albums--three {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .charter {
    grid-template-columns: minmax(0, 1fr);
  }

  .charter__toc-toggle {
    display: inline-flex;
  }

  .charter__toc {
    display: none;
    margin-top: 12px;
  }

  .charter__toc.is-open {
    display: block;
  }

  .next-event {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      'kicker'
      'title'
      'info'
      'cd';
  }

  .next-event .countdown {
    margin-top: 12px;
  }

  .event-page__info {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .event-page__info-item:nth-child(3n) {
    border-right: 1px solid var(--line);
  }

  .event-page__info-item:nth-child(2n) {
    border-right: 0;
  }

  .event-page__info-item:nth-last-child(-n + 3) {
    border-bottom: 1px solid var(--line);
  }

  .event-page__info-item:nth-last-child(-n + 2) {
    border-bottom: 0;
  }

  .rstats {
    grid-template-columns: minmax(0, 1fr);
  }

  .rstat + .rstat {
    border-left: 0;
    border-top: 1px solid var(--line);
  }

  .rtable thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }

  .rtable,
  .rtable tbody,
  .rtable tr,
  .rtable th,
  .rtable td {
    display: block;
  }

  .rtable__caption {
    display: block;
  }

  .rtable tbody {
    padding: 12px;
  }

  .rtable tr,
  .rtable tbody tr:nth-child(even) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 14px;
    margin-bottom: 10px;
    padding: 12px 14px;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
  }

  .rtable tbody tr.rtable__row.is-new {
    background: #fff3ef;
  }

  .rtable tr:last-child {
    margin-bottom: 0;
  }

  .rtable th,
  .rtable td,
  .rtable tbody tr:last-child th,
  .rtable tbody tr:last-child td {
    padding: 0;
    border: 0;
  }

  .rtable tbody th {
    grid-column: 1 / -1;
  }

  .rtable td::before {
    content: attr(data-label);
    display: block;
    font-size: .6875rem;
    font-weight: 600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--muted);
  }

  

  
}

@media (max-width: 760px) {
  

  

  

  

  

  

  

  

  

  .figures {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .figures__item:nth-child(3) {
    padding-left: 0;
    border-left: 0;
  }

  .figures__item:nth-child(n + 3) {
    border-top: 1px solid var(--line);
  }
}

@media (max-width: 640px) {
  .hero__actions .btn {
    flex: 1 1 100%;
  }

  .hero__cards {
    grid-template-columns: minmax(0, 1fr);
  }

  .hero-card--news {
    flex-direction: column;
    padding: 0;
  }

  .hero-card--news .hero-card__media {
    flex: none;
    aspect-ratio: 16 / 9;
    border-radius: 0;
  }

  .hero-card--news .hero-card__body {
    padding: 0 16px 16px;
  }

  .news-grid,
  .related__grid,
  .albums.albums--three,
  .disciplines,
  .partners,
  .comp-hub,
  .people {
    grid-template-columns: minmax(0, 1fr);
  }

  .news-card--wide {
    flex-direction: column;
  }

  .news-card--wide .news-card__media {
    flex: none;
    min-height: 0;
    aspect-ratio: 16 / 10;
  }

  .news-card--wide .news-card__body {
    padding: 16px 18px 20px;
  }

  .news-card--row .news-card__media {
    flex-basis: 34%;
  }

  .event-card {
    grid-template-columns: 80px minmax(0, 1fr);
  }

  .gslider__nav {
    gap: 8px;
  }

  .gslider__dot {
    width: 18px;
  }

  .gslider__counter {
    display: none;
  }

  .calw__cell {
    min-height: 36px;
  }

  .calw__legend {
    display: none;
  }

  .kids__list {
    grid-template-columns: minmax(0, 1fr);
  }

  .about__stats {
    grid-template-columns: minmax(0, 1fr);
  }

  .about__stat:nth-child(odd) {
    border-right: 0;
  }

  .about__stat:nth-last-child(2) {
    border-bottom: 1px solid var(--line);
  }

  .timeline__item {
    grid-template-columns: minmax(0, 1fr);
    gap: 4px;
  }

  .person--lead {
    flex-direction: column;
    align-items: flex-start;
  }

  .person--lead .person__pic {
    padding-bottom: 0;
  }

  .doc {
    grid-template-columns: 44px minmax(0, 1fr);
  }

  .doc__btn {
    grid-column: 2;
    justify-self: start;
  }

  .contact-cards,
  .requisites,
  .form__row,
  .event-page__info,
  .start__facts {
    grid-template-columns: minmax(0, 1fr);
  }

  .requisites > div:nth-child(odd),
  .fact:nth-child(odd),
  .event-page__info-item:nth-child(n) {
    border-right: 0;
  }

  .requisites > div:nth-last-child(2),
  .fact:nth-last-child(2),
  .event-page__info-item:nth-last-child(2) {
    border-bottom: 1px solid var(--line);
  }

  .jstats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .jstat:nth-child(n) {
    border-left: 0;
    border-top: 1px solid var(--line);
  }

  .jstat:nth-child(even) {
    border-left: 1px solid var(--line);
  }

  .jstat:nth-child(-n + 2) {
    border-top: 0;
  }

  .event-page__head {
    grid-template-columns: minmax(0, 1fr);
  }

  .judge {
    grid-template-columns: 44px minmax(0, 1fr);
  }

  .judge__mono {
    width: 44px;
    height: 44px;
  }

  .judge__cat {
    grid-column: 2;
    justify-self: start;
  }

  .cal-row {
    grid-template-columns: 76px minmax(0, 1fr);
    gap: 10px 14px;
    padding: 12px;
  }

  .cal-row__status {
    grid-column: 2;
  }

  .pager {
    grid-template-columns: minmax(0, 1fr);
  }

  .pager__link--next {
    grid-column: auto;
  }

  

  

  

  

  

  

  .lightbox {
    padding: 10px;
  }

  .lightbox__btn {
    top: auto;
    bottom: 54px;
    translate: 0 0;
  }
}

@media (min-width: 1100px) {
  .lightbox__btn--prev { left: -64px; }
  .lightbox__btn--next { right: -64px; }
}

/* ==========================================================================
   Протоколы SPLASH Meet Manager
   ========================================================================== */

/* ---------- карточка текущего соревнования (главная, «Результаты») ---------- */
.hero-card--live {
  padding: 0;
}

.now-card {
  display: flex;
  flex: 1;
  flex-direction: column;
  gap: 8px;
  padding: 20px;
  color: #ffffff;
}

.now-card__kicker {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #ffb19f;
}

.now-card__title {
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}

.now-card__title a {
  color: #ffffff;
  text-decoration: none;
}

.now-card__title a:hover {
  color: #ffffff;
  text-decoration: underline;
}

.now-card__meta,
.now-card__count {
  margin: 0;
  font-size: .8125rem;
  color: #c3c8d1;
}

.now-card__sub {
  margin: 6px 0 0;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #8f96a3;
}

.now-card__list {
  display: grid;
  gap: 6px;
  margin-bottom: 6px;
  list-style: none;
  font-size: .8125rem;
  line-height: 1.35;
  color: #e8ebf0;
}

.now-card__list li {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 8px;
}

.now-card__time {
  font-weight: 600;
  color: #ffffff;
  font-variant-numeric: tabular-nums;
}

.now-card__btn {
  align-self: flex-start;
  margin-top: auto;
}

.now-card :focus-visible {
  outline-color: #ffffff;
}

.now-card--wide {
  padding: clamp(20px, 3vw, 28px);
  background: var(--dark);
  border-radius: var(--r);
}

.now-card--wide .now-card__title {
  font-size: clamp(1.25rem, 2.2vw, 1.625rem);
}

.now-card--wide .now-card__list {
  font-size: .9375rem;
}

.now-card--wide .now-card__list li {
  grid-template-columns: 52px minmax(0, 1fr);
}

/* ---------- лендинг «Результаты» ---------- */
.res-top {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  gap: 24px;
  align-items: stretch;
}

.res-top__now {
  display: flex;
}

.res-top .res-hub {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.res-card {
  position: relative;
  min-height: 0;
  padding-right: 52px;
}

.res-card .hub__go {
  top: 22px;
}

.res-card .res-card__title {
  margin-top: 0;
}

.subhead {
  margin: 36px 0 14px;
  font-size: 1.125rem;
  font-weight: 600;
}

.subhead--first {
  margin-top: 0;
}

/* ---------- строки итогов и архива ---------- */
.meet-rows {
  display: grid;
  gap: 12px;
}

.meet-row {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr) auto;
  gap: 18px;
  align-items: center;
  padding: 16px 18px;
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
  transition: border-color .2s, box-shadow .2s;
}

.meet-row:hover {
  border-color: var(--line-strong);
}

.meet-row__date b {
  display: block;
  font-size: .9375rem;
  font-weight: 600;
  line-height: 1.35;
  color: var(--coral-dark);
}

.meet-row__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 12px;
  margin: 0 0 6px;
  font-size: .8125rem;
  color: var(--muted);
}

.meet-row__title {
  margin-bottom: 4px;
  font-size: 1.0625rem;
  font-weight: 600;
  line-height: 1.35;
}

.meet-row__title a {
  color: var(--text);
  text-decoration: none;
}

.meet-row__title a:hover {
  color: var(--coral-dark);
  text-decoration: underline;
}

.meet-row__meta {
  margin: 0;
  font-size: .875rem;
  color: var(--muted);
}

.meet-row__actions,
.meet-row__files {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.meet-row__actions .btn svg,
.meet-card__actions .btn svg {
  width: 18px;
  height: 18px;
}

.meet-row__files {
  flex-direction: column;
  align-items: stretch;
  width: 330px;
}

.doc-chip__size {
  flex: none;
  white-space: nowrap;
  margin-left: auto;
  padding-left: 8px;
  font-size: .75rem;
  color: var(--muted);
}

/* ---------- экран протоколов ---------- */
.meet__loading {
  padding: 32px 0;
  color: var(--muted);
}

.meet-card {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: 18px 32px;
  margin-bottom: 20px;
  padding: clamp(20px, 3vw, 28px);
  background: var(--bg);
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.meet-card--online {
  border-top: 3px solid var(--coral);
}

.meet-card__kicker {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 6px 14px;
  margin: 0 0 10px;
  font-size: .8125rem;
  color: var(--muted);
}

.meet-card__title {
  font-size: clamp(1.375rem, 2.6vw, 1.875rem);
  line-height: 1.25;
}

.meet-card__meta {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 18px;
  margin: 10px 0 0;
  color: var(--text-2);
}

.meet-card__facts {
  display: grid;
  align-content: start;
  gap: 10px;
  margin: 0;
}

.meet-card__facts div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}

.meet-card__facts dt {
  font-size: .875rem;
  color: var(--muted);
}

.meet-card__facts dd {
  margin: 0;
  font-weight: 600;
  font-variant-numeric: tabular-nums;
}

.meet-card__foot {
  display: flex;
  flex-wrap: wrap;
  grid-column: 1 / -1;
  align-items: center;
  justify-content: space-between;
  gap: 12px 24px;
  padding-top: 14px;
  border-top: 1px solid var(--line);
}

.meet-card__sync {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 14px;
  margin: 0;
  font-size: .875rem;
}

.sync {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 2px 10px;
  font-weight: 500;
  border-radius: 999px;
}

.sync--live {
  color: var(--teal-dark);
  background: var(--teal-soft);
}

.sync--live .live-dot {
  background: var(--teal);
}

.sync--demo {
  color: var(--sun-dark);
  background: var(--sun-soft);
}

.sync--archive {
  color: var(--text-2);
  background: var(--surface);
}

.sync__time {
  color: var(--muted);
}

.meet-card__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.meet-tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 16px;
  border-bottom: 1px solid var(--line);
}

.meet-tab {
  padding: 12px 18px;
  font-size: 1rem;
  font-weight: 500;
  color: var(--text-2);
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}

.meet-tab:hover {
  color: var(--text);
}

.meet-tab[aria-selected='true'] {
  color: var(--coral-dark);
  border-bottom-color: var(--coral);
}

.meet-filters {
  margin-bottom: 20px;
}

.meet-filters__count {
  flex-basis: 100%;
  margin: 0;
  font-size: .875rem;
  color: var(--text-2);
  font-variant-numeric: tabular-nums;
}

.meet-days {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 18px;
}

.meet-day {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 128px;
  padding: 8px 14px;
  text-align: left;
  background: var(--bg);
  border: 1px solid var(--line-strong);
  border-radius: var(--r-sm);
  transition: background-color .2s, border-color .2s;
}

.meet-day b {
  font-weight: 600;
}

.meet-day span {
  font-size: .8125rem;
  color: var(--muted);
}

.meet-day em {
  font-size: .75rem;
  font-style: normal;
  font-weight: 600;
  color: var(--coral-dark);
}

.meet-day:hover {
  background: var(--surface);
}

.meet-day[aria-selected='true'] {
  color: #ffffff;
  background: var(--coral);
  border-color: var(--coral);
}

.meet-day[aria-selected='true'] span,
.meet-day[aria-selected='true'] em {
  color: #ffffff;
}

.session {
  margin-bottom: 28px;
}

.session__head {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 4px 16px;
  margin-bottom: 10px;
}

.session__title {
  font-size: 1.125rem;
}

.session__meta {
  margin: 0;
  color: var(--text-2);
}

.session__count {
  margin: 0 0 0 auto;
  font-size: .875rem;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}

.mtable-wrap {
  overflow-x: auto;
  border: 1px solid var(--line);
  border-radius: var(--r);
}

.mtable {
  width: 100%;
  table-layout: fixed;
  border-collapse: collapse;
  font-size: .9375rem;
  font-variant-numeric: tabular-nums;
}

.mtable th:nth-child(1) { width: 44px; }
.mtable th:nth-child(2) { width: 64px; }
.mtable th:nth-child(3) { width: 92px; }
.mtable th:nth-child(5) { width: 17%; }
.mtable th:nth-child(6) { width: 118px; }
.mtable th:nth-child(7) { width: 182px; }
.mtable th:nth-child(8) { width: 236px; }



.mtable thead th {
  padding: 9px 12px;
  font-size: .6875rem;
  font-weight: 600;
  letter-spacing: .05em;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
  color: var(--muted);
  background: var(--surface);
  border-bottom: 1px solid var(--line);
}

.mrow td {
  padding: 8px 12px;
  vertical-align: middle;
  border-bottom: 1px solid var(--line);
}

.mrow:last-child td {
  border-bottom: 0;
}

.mrow__n {
  color: var(--muted);
}

.mrow__time {
  font-weight: 600;
}

.mrow__gender,
.mrow__age,
.mrow__round {
  color: var(--text-2);
}

.mrow__event b {
  font-weight: 500;
}

.mrow__next {
  display: inline-block;
  margin-left: 8px;
  padding: 0 7px;
  font-size: .6875rem;
  font-weight: 600;
  line-height: 1.7;
  color: #ffffff;
  vertical-align: middle;
  background: var(--coral);
  border-radius: 4px;
}

.mrow__pdf {
  white-space: nowrap;
}

.mrow__pdf .pdf:first-child {
  margin-left: 0;
}

.mrow.is-next td {
  background: #fff6f2;
}

.mrow.is-next td:first-child {
  box-shadow: inset 3px 0 0 var(--coral);
}

.mrow--ceremony td {
  color: var(--muted);
  background: #fcfbf9;
}

.mrow--ceremony .mrow__event b {
  font-weight: 400;
}

.mstatus {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: .8125rem;
  white-space: nowrap;
  color: var(--text-2);
}

.mstatus::before {
  content: '';
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--line-strong);
}

.mstatus--results::before { background: var(--teal); }
.mstatus--start::before { background: var(--sun); }
.mstatus--ceremony::before { background: var(--slate); }
.mstatus--wait { color: var(--muted); }

.pdf {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-height: 32px;
  margin: 2px 0 2px 6px;
  padding: 4px 10px;
  font-size: .8125rem;
  font-weight: 500;
  line-height: 1.2;
  color: var(--teal-dark);
  text-decoration: none;
  white-space: nowrap;
  background: var(--bg);
  border: 1px solid #9ad3cc;
  border-radius: 6px;
  transition: background-color .2s, color .2s, border-color .2s;
}

.pdf svg {
  width: 16px;
  height: 16px;
  flex: none;
}

.pdf:hover {
  color: #ffffff;
  background: var(--teal);
  border-color: var(--teal);
}

.pdf--start {
  color: var(--text-2);
  border-color: var(--line-strong);
}

.pdf--start:hover {
  color: #ffffff;
  background: var(--text-2);
  border-color: var(--text-2);
}

.pdf--off {
  color: #b4b8c0;
  border-style: dashed;
  border-color: var(--line);
  cursor: default;
}

.pdf--off:hover {
  color: #b4b8c0;
  background: var(--bg);
  border-color: var(--line);
}

/* ---------- вкладка «Дистанции» ---------- */
.dgroup {
  margin-bottom: 26px;
}

.dgroup__title {
  margin-bottom: 10px;
  padding-bottom: 8px;
  font-size: 1.125rem;
  border-bottom: 2px solid var(--coral);
}

.dgroup__cols {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 20px;
}

.dgroup__cols--one {
  grid-template-columns: minmax(0, 1fr);
}

.dgroup__gender {
  margin-bottom: 6px;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--slate);
}

.dgroup__col + .dgroup__col .dgroup__gender {
  color: var(--coral-dark);
}

.dgroup__list {
  list-style: none;
  border: 1px solid var(--line);
  border-radius: var(--r);
  overflow: hidden;
}

.dgroup__empty {
  padding: 12px 14px;
  font-size: .875rem;
  color: var(--muted);
  border: 1px dashed var(--line);
  border-radius: var(--r);
}

.ditem {
  display: grid;
  grid-template-columns: 64px minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  padding: 8px 12px;
  border-bottom: 1px solid var(--line);
  font-variant-numeric: tabular-nums;
}

.ditem:last-child {
  border-bottom: 0;
}

.ditem__dist {
  font-weight: 600;
}

.ditem__info {
  display: flex;
  flex-wrap: wrap;
  gap: 0 12px;
  font-size: .875rem;
  color: var(--text-2);
}

.ditem__n {
  color: var(--muted);
}

.ditem__pdf {
  white-space: nowrap;
}

.info-box--row {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 14px 28px;
  margin: 0 0 24px;
}

.info-box--row p {
  margin: 0;
}

.info-box__actions {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

/* ---------- адаптив протоколов ---------- */
@media (max-width: 1024px) {
  .res-top,
  .meet-card {
    grid-template-columns: minmax(0, 1fr);
  }

  .meet-row {
    grid-template-columns: 130px minmax(0, 1fr);
  }

  .meet-row__actions,
  .meet-row__files {
    grid-column: 2;
    justify-content: flex-start;
    width: auto;
    max-width: 420px;
  }
}

@media (max-width: 900px) {
  .mtable-wrap {
    overflow: visible;
    border: 0;
  }

  .mtable thead {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
  }

  .mtable,
  .mtable tbody {
    display: block;
  }

  .mrow {
    display: grid;
    grid-template-columns: 56px minmax(0, 1fr) minmax(0, 1fr);
    gap: 2px 12px;
    margin-bottom: 8px;
    padding: 12px 14px;
    background: var(--bg);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
  }

  .mrow td,
  .mrow.is-next td,
  .mrow--ceremony td {
    display: block;
    width: auto;
    padding: 0;
    background: transparent;
    border: 0;
    box-shadow: none;
  }

  .mrow.is-next {
    background: #fff6f2;
    border-color: var(--coral);
  }

  .mrow--ceremony {
    background: #fcfbf9;
  }

  .mrow td.mrow__n {
    grid-column: 1;
    grid-row: 2;
    font-size: .8125rem;
  }

  .mrow__n:not(:empty)::before {
    content: '№ ';
  }

  .mrow td.mrow__time {
    grid-column: 1;
    grid-row: 1;
  }

  .mrow td.mrow__event {
    grid-column: 2 / -1;
    grid-row: 1;
  }

  .mrow td.mrow__gender,
  .mrow td.mrow__age,
  .mrow td.mrow__round {
    font-size: .875rem;
  }

  .mrow td.mrow__gender {
    grid-column: 2;
    grid-row: 2;
  }

  .mrow td.mrow__age {
    grid-column: 3;
    grid-row: 2;
  }

  .mrow td.mrow__round {
    grid-column: 2 / -1;
    grid-row: 3;
  }

  .mrow td.mrow__status {
    grid-column: 2 / -1;
    grid-row: 4;
    margin-top: 2px;
  }

  .mrow td.mrow__pdf {
    display: grid;
    grid-column: 1 / -1;
    grid-row: 5;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    margin-top: 10px;
  }

  .mrow td.mrow__pdf:empty {
    display: none;
  }

  .mrow .pdf {
    justify-content: center;
    min-height: 44px;
    margin: 0;
    font-size: .9375rem;
  }

  .dgroup__cols {
    grid-template-columns: minmax(0, 1fr);
  }

  .session__count {
    margin-left: 0;
  }
}

@media (max-width: 640px) {
  .meet-row {
    grid-template-columns: minmax(0, 1fr);
    gap: 10px;
  }

  .meet-row__actions,
  .meet-row__files {
    grid-column: 1;
  }

  .meet-row__actions .btn {
    flex: 1 1 auto;
    min-height: 44px;
  }

  .doc-chip {
    flex: 1 1 100%;
    min-height: 44px;
  }

  .res-top .res-hub {
    grid-template-columns: minmax(0, 1fr);
  }

  .meet-tabs {
    overflow-x: auto;
  }

  .meet-tab {
    flex: 1 1 auto;
    padding: 12px 10px;
    font-size: .9375rem;
    white-space: nowrap;
  }

  .meet-days {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .meet-day {
    min-width: 0;
    padding: 8px 10px;
  }

  .meet-card__actions .btn {
    flex: 1 1 100%;
    min-height: 44px;
  }

  .ditem {
    grid-template-columns: 56px minmax(0, 1fr);
  }

  .ditem__pdf {
    display: grid;
    grid-column: 1 / -1;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
  }

  .ditem .pdf {
    justify-content: center;
    min-height: 44px;
    margin: 0;
  }
}
