/* Akademia Bilardowa Rokietnica: style strony. Bez kroku budowania, tokeny w :root. */

/* ---------- Fonty (lokalnie, OFL, licencje w /assets/fonts/OFL.txt) ---------- */
/* Zastępczy Arial o metrykach Inter: przy pierwszej wizycie podmiana czcionki nie przesuwa układu (CLS) */
@font-face {
  font-family: "Inter Fallback";
  src: local("Arial");
  size-adjust: 107.12%;
  ascent-override: 90.44%;
  descent-override: 22.52%;
  line-gap-override: 0%;
}
@font-face {
  font-family: "Marcellus";
  src: url("../fonts/marcellus-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Marcellus";
  src: url("../fonts/marcellus-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-ext-400-normal.woff2") format("woff2");
  font-weight: 400;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-600-normal.woff2") format("woff2");
  font-weight: 600;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "Inter";
  src: url("../fonts/inter-latin-ext-600-normal.woff2") format("woff2");
  font-weight: 600;
  font-display: swap;
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}

/* ---------- Tokeny ---------- */
:root {
  /* Kolory sprawdzone pipetą na logo: czerwony #ba181b, złoty #a3966d */
  --c-bg: #121110;
  --c-surface: #1c1a17;
  --c-surface-2: #24211d;
  --c-line: #2e2a25;
  --c-text: #f3efe7;
  --c-muted: #a8a196;
  --c-red: #ba181b;
  --c-red-hover: #d0262a;
  --c-gold: #a3966d;
  --c-gold-light: #cbbd92;
  --c-felt: #1e88c8;
  --c-paper: #ece6da;
  --c-medal-gold: #d4af37;
  --c-medal-silver: #c0c0c0;
  --c-medal-bronze: #cd7f32;
  --c-open: #4caf50;

  --font-head: "Marcellus", Georgia, "Times New Roman", serif;
  --font-body: "Inter", "Inter Fallback", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  --fs-sm: 0.875rem;
  --fs-base: 1rem;
  --fs-lead: 1.125rem;
  --fs-h3: 1.25rem;
  --fs-h2: clamp(1.5rem, 1.2rem + 1.2vw, 2rem);
  --fs-h1: clamp(2rem, 1.4rem + 2.6vw, 3.25rem);

  --tap: 44px; /* minimalny cel dotykowy */
  --space-1: 0.25rem;
  --space-2: 0.5rem;
  --space-3: 0.75rem;
  --space-4: 1rem;
  --space-5: 1.5rem;
  --space-6: 2rem;
  --space-7: 3rem;
  --space-8: 4.5rem;

  --radius: 6px;
  --radius-lg: 12px;
  --container: 1200px;
  --header-h: 72px;
  --shadow: 0 10px 30px rgb(0 0 0 / 0.35);
}

/* ---------- Reset ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--header-h) + 2rem); }
body, h1, h2, h3, h4, p, figure, blockquote, dl, dd, ul, ol { margin: 0; }
/* Uwaga: ul[class] ma wyższą specyficzność niż sama klasa, więc marginesy list z klasą trzeba pisać z nazwą znacznika (ul.features). */
ul[class], ol[class], .site-nav ul { list-style: none; padding: 0; margin: 0; }
img, picture, svg, video { display: block; max-width: 100%; height: auto; }
input, button, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }

/* ---------- Typografia ---------- */
body {
  background: var(--c-bg);
  color: var(--c-text);
  font-family: var(--font-body);
  font-size: var(--fs-base);
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
h1, h2, h3, .page-title, .section__title {
  font-family: var(--font-head);
  font-weight: 400;
  line-height: 1.2;
  letter-spacing: 0.01em;
}
h1 { font-size: var(--fs-h1); }
h2 { font-size: var(--fs-h2); }
h3 { font-size: var(--fs-h3); }
p + p { margin-top: var(--space-4); }
strong, b { font-weight: 600; }
address { font-style: normal; }

a { color: var(--c-gold-light); text-decoration-thickness: 1px; text-underline-offset: 0.18em; }
a:hover { color: var(--c-text); }

:focus-visible { outline: 3px solid var(--c-felt); outline-offset: 2px; border-radius: 2px; }

.lead { font-size: var(--fs-lead); color: var(--c-text); }
.muted { color: var(--c-muted); }
.eyebrow {
  color: var(--c-gold-light);
  font-size: var(--fs-sm);
  font-weight: 600;
}
/* Etykieta nad tytułem w hero: zwykła pisownia ze złotą kreską jak pod tytułami sekcji (bez wersalików z rozstrzeleniem) */
.hero .eyebrow {
  display: flex; align-items: center; gap: var(--space-3);
  font-family: var(--font-head); font-weight: 400; font-size: var(--fs-lead); letter-spacing: 0.02em;
  text-shadow: 0 1px 2px rgb(0 0 0 / 0.9), 0 2px 12px rgb(0 0 0 / 0.6); /* czytelność na jasnej górze zdjęcia */
}
.hero .eyebrow::before { content: ""; flex: none; width: 32px; height: 2px; background: var(--c-gold); }
.nowrap { white-space: nowrap; }
.sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

.prose { max-width: 70ch; }
.prose h2 { font-size: var(--fs-h3); color: var(--c-gold-light); margin: var(--space-6) 0 var(--space-3); }
.prose h2:first-child { margin-top: 0; }
.prose ul { padding-left: 1.2em; }

.skip-link {
  position: absolute; left: var(--space-4); top: -100px; z-index: 100;
  background: var(--c-text); color: var(--c-bg); padding: var(--space-2) var(--space-4); border-radius: var(--radius);
}
.skip-link:focus { top: var(--space-2); }

/* ---------- Układ ---------- */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: var(--space-4); }
@media (min-width: 720px) { .container { padding-inline: var(--space-6); } }

.section { padding-block: var(--space-7); }
.section--tight { padding-block: var(--space-6); }
.section--alt { background: var(--c-surface); border-block: 1px solid var(--c-line); }
@media (min-width: 720px) { .section { padding-block: var(--space-8); } }

.section__head {
  display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-4);
  margin-bottom: var(--space-5);
}
.section__title { font-size: var(--fs-h2); }
.section__title::after {
  content: ""; display: block; width: 48px; height: 2px; margin-top: var(--space-3);
  background: var(--c-gold);
}
.section__head .section__title::after { display: none; }
.section__head { border-bottom: 1px solid var(--c-line); padding-bottom: var(--space-3); }
.section__more { font-size: var(--fs-sm); font-weight: 600; white-space: nowrap; }
.section__more::after { content: " →"; }

/* Nagłówek podstrony (uwaga Adama 2026-10-25: zajmował za dużo miejsca): niższe odstępy, mniejszy tytuł niż w hero Startu, treść tuż pod spodem */
.page-head { padding-block: var(--space-6) var(--space-4); border-bottom: 1px solid var(--c-line); background: linear-gradient(180deg, var(--c-surface) 0%, var(--c-bg) 100%); }
.page-head .lead { margin-top: var(--space-2); color: var(--c-muted); }
.page-title, .page-head h1 { font-size: clamp(1.75rem, 1.3rem + 1.6vw, 2.5rem); }
/* Złota kreska pod tytułem podstrony, jak pod tytułami sekcji i przy etykiecie w hero Startu */
.page-head .page-title::after { content: ""; display: block; width: 48px; height: 2px; margin-top: var(--space-3); background: var(--c-gold); }
.page-head + .section { padding-top: var(--space-5); }

.grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: var(--space-6); }
@media (min-width: 720px) {
  .grid--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-7); }
  .grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .grid--center { align-items: center; }
}
.stack > * + * { margin-top: var(--space-5); }

/* ---------- Nagłówek i menu ---------- */
.site-header {
  position: sticky; top: 0; z-index: 50;
  background: rgb(18 17 16 / 0.94);
  border-bottom: 1px solid var(--c-line);
  backdrop-filter: blur(8px);
}
.site-header__inner {
  display: flex; align-items: center; gap: var(--space-4);
  min-height: var(--header-h);
  padding-block: var(--space-3);
}
.site-logo { flex: none; display: block; margin-right: var(--space-5); padding: var(--space-1) 0; }
.site-logo img { width: auto; height: 52px; }
.site-header__cta { margin-left: auto; flex: none; }
.site-header__fb {
  flex: none; display: inline-flex; align-items: center; justify-content: center;
  width: var(--tap); height: var(--tap); border-radius: var(--radius);
  border: 1px solid var(--c-gold); color: var(--c-text);
  transition: background 0.2s ease, border-color 0.2s ease;
}
.site-header__fb .icon { width: 22px; height: 22px; fill: currentColor; }
.site-header__fb:hover { background: #1877f2; border-color: #1877f2; color: #fff; }
.site-header__fb { margin-left: auto; }
.site-header__fb + .site-header__cta { margin-left: 0; }

.site-nav ul { display: flex; flex-wrap: nowrap; gap: var(--space-1); }
.site-nav a {
  display: block; padding: var(--space-2) var(--space-3);
  color: var(--c-text); text-decoration: none; font-weight: 600; font-size: 0.95rem; white-space: nowrap;
  border-radius: var(--radius);
}
.site-nav a:hover { background: var(--c-surface-2); }
.site-nav a[aria-current="page"] { color: var(--c-gold-light); box-shadow: inset 0 -2px 0 var(--c-gold); border-radius: 0; }

.nav-toggle {
  display: inline-flex; align-items: center; gap: var(--space-2);
  min-height: var(--tap); padding: var(--space-2) var(--space-3);
  background: transparent; border: 1px solid var(--c-line); border-radius: var(--radius);
  font-weight: 600;
}
.nav-toggle__bars, .nav-toggle__bars::before, .nav-toggle__bars::after {
  display: block; width: 18px; height: 2px; background: currentColor; position: relative;
  transition: transform 0.2s ease;
}
.nav-toggle__bars::before, .nav-toggle__bars::after { content: ""; position: absolute; left: 0; }
.nav-toggle__bars::before { top: -6px; }
.nav-toggle__bars::after { top: 6px; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars { background: transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::before { transform: translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle__bars::after { transform: translateY(-6px) rotate(-45deg); }

/* Mobile: bez JS menu jest zawsze widoczne pod logo; z JS zwijane przyciskiem */
@media (max-width: 1279.98px) {
  .site-header__inner { flex-wrap: wrap; }
  .site-nav { order: 10; width: 100%; padding-bottom: var(--space-3); }
  .site-nav ul { flex-wrap: wrap; } /* bez JS menu w kilku rzędach zamiast poza ekranem */
  html:not(.js-nav) .site-header { position: static; } /* bez JS rozwinięte menu jest wysokie, więc nagłówek nie jedzie z przewijaniem */
  .js-nav .site-nav { display: none; }
  .js-nav .site-nav.is-open { display: block; }
  .js-nav .site-nav ul { flex-direction: column; }
  .js-nav .site-nav a { padding: var(--space-3); font-size: var(--fs-base); border-bottom: 1px solid var(--c-line); border-radius: 0; }
  .js-nav .site-nav a[aria-current="page"] { box-shadow: inset 3px 0 0 var(--c-gold); }
}
@media (min-width: 1280px) {
  .nav-toggle { display: none !important; }
  .site-nav { margin-left: auto; }
  .site-header__cta, .site-header__fb { margin-left: 0; }
  .site-logo img { height: 60px; }
  .site-header__inner { gap: var(--space-3); }
}
@media (max-width: 479.98px) {
  .site-header__inner { gap: var(--space-2); }
  .site-logo { margin-right: var(--space-2); }
  .site-logo img { height: 40px; }
  .site-header__fb { width: 40px; height: 40px; }
  .nav-toggle { padding-inline: var(--space-2); min-height: 40px; }
  .site-header__cta { padding-inline: var(--space-3); }
  .site-header__cta span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* ---------- Przyciski ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: var(--space-2);
  min-height: var(--tap); padding: var(--space-2) var(--space-5);
  border: 1px solid transparent; border-radius: var(--radius);
  font-weight: 600; font-size: 0.95rem; line-height: 1.2; text-decoration: none; text-align: center;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.btn--primary { background: var(--c-red); color: #fff; }
.btn--primary:hover { background: var(--c-red-hover); color: #fff; }
.btn--ghost { border-color: var(--c-gold); color: var(--c-text); background: transparent; }
.btn--ghost:hover { background: var(--c-gold); color: var(--c-bg); }
.btn--lg { min-height: 52px; padding-inline: var(--space-6); font-size: var(--fs-base); }
.btn-row { display: flex; flex-wrap: wrap; gap: var(--space-3); margin-top: var(--space-5); }
.icon { width: 18px; height: 18px; fill: currentColor; flex: none; }

/* ---------- Hero ---------- */
.hero { position: relative; isolation: isolate; min-height: min(78vh, 680px); display: flex; align-items: flex-end; overflow: hidden; }
.hero picture, .hero__img { position: absolute; inset: 0; width: 100%; height: 100%; z-index: -2; }
.hero__img { object-fit: cover; object-position: 50% 60%; z-index: -2; }
.hero__overlay {
  position: absolute; inset: 0; z-index: -1;
  background:
    linear-gradient(180deg, rgb(18 17 16 / 0.2) 0%, rgb(18 17 16 / 0.55) 45%, rgb(18 17 16 / 0.96) 100%),
    linear-gradient(90deg, rgb(18 17 16 / 0.75) 0%, rgb(18 17 16 / 0) 70%);
}
.hero__content { position: relative; padding-block: var(--space-8) var(--space-7); }
.hero__title { font-size: var(--fs-h1); margin-top: var(--space-2); max-width: 16ch; text-shadow: 0 2px 16px rgb(0 0 0 / 0.5); }
.hero__lead { font-size: var(--fs-lead); max-width: 52ch; margin-top: var(--space-4); }
.hero__open { display: inline-flex; align-items: center; gap: var(--space-2); margin-top: var(--space-5); padding: var(--space-1) var(--space-3); background: rgb(18 17 16 / 0.7); border: 1px solid var(--c-line); border-radius: 999px; font-weight: 600; font-size: var(--fs-sm); }
.status-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--c-open); box-shadow: 0 0 0 3px rgb(76 175 80 / 0.25); }
.status-dot--closed { background: var(--c-muted); box-shadow: none; }

/* ---------- Karty ---------- */
.card {
  background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg);
  padding: var(--space-5);
}
.section--alt .card { background: var(--c-bg); }
.card__title { font-size: var(--fs-h3); margin-bottom: var(--space-3); color: var(--c-gold-light); }
.card__kicker { color: var(--c-gold-light); font-size: var(--fs-sm); font-weight: 600; }
.card__kicker + p { margin-top: var(--space-2); }
.card--placeholder { border-style: dashed; border-color: #4a443b; color: var(--c-muted); }
.card--placeholder p:not(.card__kicker) { color: var(--c-text); }

/* ---------- Zdjęcia ---------- */
.photo img { border-radius: var(--radius-lg); box-shadow: var(--shadow); width: 100%; }
.photo figcaption { margin-top: var(--space-2); color: var(--c-muted); font-size: var(--fs-sm); }

/* ---------- Wyposażenie ---------- */
ul.features { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); margin-top: var(--space-5); }
.features__item { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3); background: var(--c-bg); border: 1px solid var(--c-line); border-radius: var(--radius); font-weight: 600; font-size: 0.95rem; }
.features__item img { width: 40px; height: 40px; flex: none; }
.features__noicon { width: 40px; height: 40px; flex: none; border-radius: 50%; border: 2px solid var(--c-gold); position: relative; }
.features__noicon::after { content: ""; position: absolute; inset: 11px; border-radius: 50%; background: var(--c-gold); }

/* ---------- Godziny, kontakt ---------- */
.hours div { display: flex; justify-content: space-between; gap: var(--space-4); padding-block: var(--space-1); border-bottom: 1px dotted var(--c-line); }
.hours dt { color: var(--c-muted); white-space: nowrap; }
.hours dd { font-variant-numeric: tabular-nums; text-align: right; }
.hours--large { margin-top: var(--space-4); font-size: var(--fs-lead); max-width: 26rem; }
.hours--large div { padding-block: var(--space-2); }

.contact-list li { display: flex; flex-direction: column; padding-block: var(--space-2); border-bottom: 1px solid var(--c-line); }
.contact-list li:last-child { border-bottom: 0; }
.contact-list__label { color: var(--c-muted); font-size: var(--fs-sm); }
.contact-list__value { font-size: var(--fs-lead); font-weight: 600; overflow-wrap: anywhere; }
.plain-list li + li { margin-top: var(--space-1); }

/* ---------- Mapa (Google Maps, ładowana od razu) ---------- */
.map { position: relative; min-height: 360px; border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--c-line); background: var(--c-surface-2); }
.map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
@media (min-width: 720px) { .map { min-height: 100%; } }
/* Kontakt: zdjęcie wejścia nad mapą; mapa w wersji ciemnej. Osadzenie bez klucza API nie ma stylów Google,
   więc odwrócenie kolorów z obrotem barwy (woda zostaje niebieska, zieleń zielona), lekko przygaszone */
/* Kontakt: przycisk Google Maps po prawej obok adresu (zawija się pod adres, gdy brakuje miejsca) */
.address-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: var(--space-4); }
.address-row address { margin: 0; }
.address-row .btn { flex: none; }
.contact-media { display: flex; flex-direction: column; gap: var(--space-4); min-width: 0; }
.contact-photo img { display: block; width: 100%; height: auto; aspect-ratio: 2 / 1; object-fit: cover; border-radius: var(--radius-lg); border: 1px solid var(--c-line); }
.contact-media .map { flex: 1 1 auto; min-height: 320px; background: #1b1d21; }
.map iframe { filter: invert(0.9) hue-rotate(180deg) brightness(0.95) contrast(0.9); }

/* ---------- Tabele ---------- */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--c-line); border-radius: var(--radius); }
:where(.table-wrap) + p { margin-top: var(--space-3); } /* dopisek albo przycisk pod tabelą nie przykleja się do ramki */
.table { width: 100%; border-collapse: collapse; font-size: 0.95rem; }
.table th, .table td { padding: var(--space-2) var(--space-3); text-align: left; border-bottom: 1px solid var(--c-line); white-space: nowrap; }
.table th { background: var(--c-surface-2); color: var(--c-gold-light); font-weight: 600; font-size: var(--fs-sm); }
.table tbody tr:hover { background: rgb(243 239 231 / 0.045); } /* rozjaśnienie zamiast koloru karty: widoczne także w kartach i sekcjach z tłem */
.table .num { text-align: right; font-variant-numeric: tabular-nums; }

/* ---------- Tagi cykli i filtry ---------- */
.tag {
  display: inline-block; padding: 0.1em 0.6em; border-radius: 999px;
  border: 1px solid var(--c-gold); color: var(--c-gold-light);
  font-size: 0.8rem; font-weight: 600; white-space: nowrap;
}
.tag--budmar { border-color: var(--c-red); color: #f0a3a4; }
.tag--rlb { border-color: var(--c-felt); color: #8cc8ec; }
.tag--mpa { border-color: var(--c-gold); color: var(--c-gold-light); }
.tag--brizzon { border-color: #f2c230; color: #f6d35f; }
.tag--quay { border-color: transparent; color: var(--c-text); background: linear-gradient(90deg, rgb(30 136 200 / 0.35), rgb(242 194 48 / 0.35)) padding-box, linear-gradient(var(--c-bg), var(--c-bg)) padding-box, linear-gradient(90deg, var(--c-felt), #f2c230) border-box; }
.filter[aria-pressed="true"], .filter[aria-current="page"] { background: var(--c-felt); border-color: var(--c-felt); color: #fff; }

/* ---------- Medale ---------- */
.medal {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.6em; height: 1.6em; border-radius: 50%;
  font-size: 0.85rem; font-weight: 600; color: #1a1a1a;
}
.medal--gold { background: var(--c-medal-gold); }
.medal--silver { background: var(--c-medal-silver); }
.medal--bronze { background: var(--c-medal-bronze); }
/* Ten sam wzór co ikonki medali (partials/medal-icon.php): krążek z obwódką i wstążką nad nim, numer miejsca w środku */
.medal--gold, .medal--silver, .medal--bronze {
  position: relative; margin-top: 0.45em; vertical-align: -0.15em;
  box-shadow: inset 0 0 0 0.16em rgb(0 0 0 / 0.16);
}
.medal--gold::before, .medal--silver::before, .medal--bronze::before {
  content: ""; position: absolute; left: 50%; bottom: 88%; width: 0.95em; height: 0.6em; transform: translateX(-50%);
  background: #8a2a2c; clip-path: polygon(0 0, 42% 0, 50% 40%, 58% 0, 100% 0, 72% 100%, 28% 100%);
}
.medal--place { border: 1px solid #4a443b; color: var(--c-muted); } /* miejsce poza podium: kółko bez koloru, żeby tekst stał równo z medalami */

/* ---------- Stopka ---------- */
.site-footer { margin-top: var(--space-7); border-top: 1px solid var(--c-line); background: var(--c-surface); color: var(--c-muted); font-size: 0.95rem; }
.site-footer a { color: var(--c-text); }
.site-footer a:hover { color: var(--c-gold-light); }
.site-footer__fb { display: inline-flex; align-items: center; gap: 0.4em; }
.site-footer__fb .icon { width: 1.15em; height: 1.15em; flex: none; fill: currentColor; }
.site-footer__grid { display: grid; gap: var(--space-6); padding-block: var(--space-7); }
@media (min-width: 720px) { .site-footer__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.site-footer__heading { font-size: var(--fs-h3); color: var(--c-text); margin-bottom: var(--space-3); }
.site-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: var(--space-3); padding-block: var(--space-4); border-top: 1px solid var(--c-line); font-size: var(--fs-sm); }

/* Partnerzy: szklane kafelki, złota i czerwona poświata w tle */
.partners {
  padding-block: var(--space-8);
  background:
    radial-gradient(circle at 15% 20%, rgb(163 150 109 / 0.35), transparent 45%),
    radial-gradient(circle at 85% 80%, rgb(186 24 27 / 0.3), transparent 45%),
    #16140f;
  border-block: 1px solid var(--c-line);
}
.partners__title { font-family: var(--font-head); font-size: var(--fs-lead); color: var(--c-gold-light); text-align: center; margin-bottom: var(--space-5); }
.partners__list { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--space-4); }
.partners__item a, .partners__plain {
  display: block; padding: 14px 18px; border-radius: 16px;
  background: rgb(255 255 255 / 0.08);
  -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
  border: 1px solid rgb(203 189 146 / 0.45);
  transition: border-color 0.25s ease, background 0.25s ease;
}
.partners__item a:hover { border-color: var(--c-gold-light); background: rgb(255 255 255 / 0.14); }
.partners__item img {
  display: block; width: auto; height: 48px; max-width: 140px; object-fit: contain;
  background: #fff; border-radius: 8px; padding: 6px 8px;
}
@media (min-width: 720px) { .partners__item img { height: 60px; max-width: 170px; } }
.partners__item--large img { height: 72px; max-width: 160px; }
@media (min-width: 720px) { .partners__item--large img { height: 92px; max-width: 220px; } }

/* ---------- Wyniki: filtry i lista ---------- */
.filters { display: grid; gap: var(--space-3); margin-bottom: var(--space-5); padding: var(--space-4); background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); }
.filters__field { display: flex; flex-direction: column; gap: var(--space-1); min-width: 0; }
.filters label { font-size: var(--fs-sm); color: var(--c-muted); font-weight: 600; }
.filters input, .filters select {
  min-height: var(--tap); padding: var(--space-2) var(--space-3); width: 100%;
  background: var(--c-bg); border: 1px solid #4a443b; border-radius: var(--radius); color: var(--c-text);
}
.filters input::placeholder { color: var(--c-muted); }
.filters__actions { display: flex; gap: var(--space-3); align-items: flex-end; }
.js-live .filters__actions .btn--primary { display: none; }
@media (min-width: 720px) {
  .filters { grid-template-columns: minmax(0, 2fr) minmax(0, 1.4fr) minmax(0, 1fr) auto; align-items: end; }
}
.results-count { margin-bottom: var(--space-3); color: var(--c-muted); font-size: var(--fs-sm); }
.results-count strong { color: var(--c-text); }
/* Wyniki bez filtrów: „Aktualne” (turnieje w trakcie) nad „Archiwum” */
.results-group__title { display: flex; align-items: baseline; flex-wrap: wrap; gap: var(--space-2) var(--space-3); margin: var(--space-6) 0 var(--space-3); font-size: var(--fs-h2, 1.75rem); }
.results-list > .results-group__title:first-of-type, .results-count + .results-group__title { margin-top: var(--space-4); }
.results-group__count { font-family: var(--font-body); font-size: var(--fs-sm); color: var(--c-muted); }
.results-group__title::after { content: ""; flex: 0 0 100%; height: 2px; margin-top: var(--space-1); background: linear-gradient(var(--c-gold), var(--c-gold)) left / 48px 2px no-repeat; } /* kreska 48 px w nowej linii pod tytułem i licznikiem (element na całą szerokość, żeby flex go zawinął) */
.results-list[aria-busy="true"] { opacity: 0.6; }
.table--results .cell-name { white-space: normal; min-width: 16rem; }
.table--results td:nth-child(5), .table--results td:nth-child(6) { white-space: normal; min-width: 11rem; }
.table--results .medal, .table--standings .medal { margin-right: var(--space-1); }
/* Plakietka cyklu (wycinek z grafik z Facebooka) przed nazwą turnieju */
.cell-name__inner { display: flex; align-items: center; gap: var(--space-3); }
.series-badge { flex: none; width: 72px; height: 48px; border-radius: var(--radius); box-shadow: 0 0 0 1px var(--c-line); }
.series-badge--lg { width: 144px; height: 96px; }
@media (max-width: 719.98px) { .series-badge--lg { width: 96px; height: 64px; } }
/* Statystyki: plakietka przy tytule karty cyklu i w nagłówku strony cyklu */
.stat-card__head, .page-head__badged { display: flex; align-items: center; gap: var(--space-3); }
.stat-card__head .card__title { margin: 0; }
.stat-card__head { margin-bottom: var(--space-2); }
.podium-item { display: flex; align-items: flex-start; gap: var(--space-2); }
.podium-item + .podium-item { margin-top: var(--space-1); }
.podium-item .medal { flex: none; margin: 0; }
.table a { color: var(--c-text); text-decoration-color: var(--c-gold); }
.table a:hover { color: var(--c-gold-light); }
.table--standings td { white-space: normal; }
.table--standings .num { width: 5rem; }

/* ---------- Szczegóły wydarzenia ---------- */
.notice { padding: var(--space-3) var(--space-4); background: var(--c-surface); border-left: 3px solid var(--c-gold); border-radius: var(--radius); color: var(--c-muted); }
/* /status: alarm na górze (zadanie bez sukcesu od 24 h, blokada ochronna) i potwierdzenie, gdy wszystko działa */
.status-alert { margin-bottom: var(--space-5); padding: var(--space-4) var(--space-5); border: 2px solid var(--c-red); border-radius: var(--radius); background: rgb(186 24 27 / 0.14); }
.status-alert__title { font-size: var(--fs-h3); color: #f0a3a4; margin-bottom: var(--space-2); }
.status-alert ul { margin: 0; padding-left: 1.2em; }
.status-alert li + li { margin-top: var(--space-1); }
.status-alert__hint { margin-top: var(--space-3); color: var(--c-muted); font-size: var(--fs-sm); }
.status-ok { margin-bottom: var(--space-5); padding: var(--space-3) var(--space-4); border-left: 3px solid var(--c-open); border-radius: var(--radius); background: var(--c-surface); }
.facts div { display: flex; justify-content: space-between; gap: var(--space-4); padding-block: var(--space-1); border-bottom: 1px dotted var(--c-line); }
.facts dt { color: var(--c-muted); }
.facts dd { text-align: right; }
@media (max-width: 599.98px) {
  /* Rekordy: długie wartości (nazwisko, daty, nazwa edycji), więc etykieta nad wartością */
  .facts--records div { display: block; padding-block: var(--space-2); }
  .facts--records dd { text-align: left; }
}
.card > summary { cursor: pointer; list-style-position: inside; }
.card > summary.card__title { margin-bottom: 0; }
.card[open] > summary.card__title { margin-bottom: var(--space-3); }
.participants { columns: 2 12rem; column-gap: var(--space-5); }
.participants li { break-inside: avoid; }

/* ---------- Strona błędu ---------- */
.error-page { text-align: center; }
.error-page .btn-row { justify-content: center; }
.error-page .lead { color: var(--c-muted); margin-top: var(--space-3); }
.error-page__code { font-family: var(--font-head); font-size: clamp(5rem, 3rem + 10vw, 9rem); line-height: 1; color: var(--c-gold); opacity: 0.5; }

/* ---------- Ruch ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}

/* ---------- Statystyki ---------- */
.stat-cards { margin-top: var(--space-5); }
.filter-bar { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-bottom: var(--space-5); }
.filter {
  display: inline-block; padding: 0.35em 0.9em; min-height: 36px; border-radius: 999px;
  border: 1px solid #4a443b; color: var(--c-text); text-decoration: none; font-size: var(--fs-sm); font-weight: 600;
}
.filter:hover { border-color: var(--c-gold); color: var(--c-gold-light); }
.filter[aria-current="page"]:hover { color: #fff; }
ol.top-list { margin-block: var(--space-3); }
.top-list li { padding-block: var(--space-1); border-bottom: 1px dotted var(--c-line); }
.top-list .muted { float: right; font-variant-numeric: tabular-nums; }
.table--stats .cell-name, .table--winners .cell-name, .table--divisions .cell-name { white-space: normal; min-width: 11rem; }
.table--winners td:nth-child(n+3), .table--divisions td:nth-child(n+2) { white-space: normal; min-width: 9rem; }
.table--stats .num { min-width: 3.5rem; }
.player-summary { margin-bottom: var(--space-5); }
p + .player-summary { margin-top: var(--space-4); } /* przycisk „Profil zawodnika” nad kartą */
.muted + .table-wrap { margin-top: var(--space-3); } /* opis nad tabelą (np. Zawodniczki z największą liczbą medali) */
.table--summary th[scope="row"] { text-align: left; font-weight: 600; color: var(--c-text); background: transparent; font-size: inherit; }
.table--summary .row-total th, .table--summary .row-total td { border-top: 2px solid var(--c-gold); background: var(--c-surface-2); }
.results-list .notice { margin-bottom: var(--space-4); }
/* Kolor aktywnego filtru zależy od cyklu (jak znaczniki .tag--*) */
.filter-bar--budmar .filter:hover { border-color: var(--c-red); color: #f0a3a4; }
.filter-bar--budmar .filter[aria-current="page"] { background: var(--c-red); border-color: var(--c-red); color: #fff; }
.filter-bar--rlb .filter:hover { border-color: var(--c-felt); color: #8cc8ec; }
.filter-bar--rlb .filter[aria-current="page"] { background: var(--c-felt); border-color: var(--c-felt); color: #fff; }
.filter-bar--mpa .filter[aria-current="page"], .filter-bar--other .filter[aria-current="page"] { background: var(--c-gold); border-color: var(--c-gold); color: #1a1712; }
.filter-bar--brizzon .filter:hover { border-color: #f2c230; color: #f6d35f; }
.filter-bar--brizzon .filter[aria-current="page"] { background: #f2c230; border-color: #f2c230; color: #1a1712; }
.filter-bar--quay .filter:hover { border-color: #f2c230; color: var(--c-text); }
.filter-bar--quay .filter[aria-current="page"] { border-color: transparent; color: #1a1712; background: linear-gradient(90deg, #5fb4e6, #f2c230); }

/* ---------- Kalendarz ---------- */
.tag--home { border-color: var(--c-open); color: #9fd8a2; }
.tag--away { border-color: var(--c-away); color: #ffb08f; }
.tag--past { border-color: #4a443b; color: var(--c-muted); }
.cal-toolbar { display: grid; gap: var(--space-3); margin-bottom: var(--space-5); }
.cal-nav { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); }
.cal-nav__month { font-size: var(--fs-h3); text-align: center; text-transform: capitalize; flex: 1; }
.cal-nav .btn { min-width: var(--tap); padding-inline: var(--space-3); }
.cal-nav__text { display: none; text-transform: capitalize; }
.filter-bar--cal { margin-bottom: 0; justify-content: center; }
.filter-bar--cal .filter[aria-current="page"] { background: var(--c-gold); border-color: var(--c-gold); color: #1a1712; }
.cal-list-title { font-size: var(--fs-h3); margin-block: var(--space-6) var(--space-4); color: var(--c-gold-light); }
.cal-list { list-style: none; display: grid; gap: var(--space-3); }
.cal-item { scroll-margin-top: var(--space-6); }
.cal-item--past { opacity: 0.7; }
.cal-item.is-target .cal-event { border-color: var(--c-gold); }
.cal-event { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); }
.cal-event__summary { display: flex; gap: var(--space-4); align-items: flex-start; padding: var(--space-4); cursor: pointer; list-style: none; }
.cal-event__summary::-webkit-details-marker { display: none; }
.cal-event__summary::after { content: "+"; margin-left: auto; color: var(--c-gold-light); font-size: 1.5rem; line-height: 1; }
.cal-event[open] > .cal-event__summary::after { content: "−"; }
.cal-date { flex: none; min-width: 4.75rem; padding: var(--space-2); text-align: center; background: var(--c-bg); border: 1px solid var(--c-line); border-radius: var(--radius); line-height: 1.15; }
.cal-date__day { display: block; font-family: var(--font-head); font-size: 1.35rem; white-space: nowrap; }
.cal-date__month { display: block; color: var(--c-muted); font-size: var(--fs-sm); text-transform: uppercase; }
.cal-event__main { display: grid; gap: var(--space-1); min-width: 0; }
/* Plakietka cyklu przed tytułem wydarzenia (jak na liście wyników) */
.cal-event__head { display: flex; align-items: center; gap: var(--space-3); min-width: 0; }
@media (max-width: 599.98px) { .cal-event__head { flex-direction: column; align-items: flex-start; gap: var(--space-2); } }
.cal-event__title { font-weight: 600; font-size: var(--fs-lead); overflow-wrap: anywhere; }
.cal-event__summary:hover .cal-event__title { color: var(--c-gold-light); }
.cal-event__meta { color: var(--c-muted); font-size: var(--fs-sm); }
.cal-event__tags { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-1); }
.cal-event__body { padding: 0 var(--space-4) var(--space-4); border-top: 1px solid var(--c-line); padding-top: var(--space-4); }
.cal-facts { display: grid; gap: var(--space-2); }
.cal-facts > div { display: grid; grid-template-columns: 6rem 1fr; gap: var(--space-3); }
.cal-facts dt { color: var(--c-muted); font-size: var(--fs-sm); }
.cal-event__desc { margin-top: var(--space-4); overflow-wrap: anywhere; }
.cal-event__links { margin-top: var(--space-4); }
.cal-subscribe { margin-top: var(--space-7); }
/* od 1000 px przycisk po prawej obok tekstu (węższe ekrany: pod tekstem) */
@media (min-width: 1000px) {
  .cal-subscribe { display: flex; align-items: center; justify-content: space-between; gap: var(--space-6); }
  .cal-subscribe__action { flex: none; margin: 0; }
}
/* Siatka miesiąca jak w Kalendarzu Google: tydzień = warstwa dni (tło, numer, dziś) i nad nią siatka 7 kolumn z paskami turniejów.
   Pasek wielodniowy przechodzi przez kolejne dni (klasy cal-c = pierwsza kolumna, cal-s = liczba dni, cal-r = rząd), bez stylów inline (CSP) */
.cal-month { border: 1px solid var(--c-line); border-radius: var(--radius); overflow: hidden; background: var(--c-surface); margin-bottom: var(--space-2); }
.cal-month__head, .cal-week__days, .cal-week__bars { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.cal-month__head span { padding: var(--space-2) 2px; color: var(--c-muted); font-size: var(--fs-sm); font-weight: 600; text-align: center; border-bottom: 1px solid var(--c-line); }
.cal-week { position: relative; border-top: 1px solid var(--c-line); }
.cal-week:first-of-type { border-top: 0; }
.cal-week__days { position: absolute; inset: 0; }
.cal-day { border-left: 1px solid var(--c-line); }
.cal-day:first-child { border-left: 0; }
.cal-day--out { background: var(--c-bg); }
.cal-day--today { box-shadow: inset 0 0 0 2px var(--c-gold); }
.cal-day__num { display: block; padding: 4px 6px 0; color: var(--c-muted); font-size: var(--fs-sm); font-weight: 600; line-height: 1.4; font-variant-numeric: tabular-nums; }
.cal-day--out .cal-day__num { color: #8a8378; }
.cal-day--today .cal-day__num { color: var(--c-gold-light); }
.cal-week__bars { position: relative; grid-auto-rows: 1.5rem; row-gap: 3px; align-content: start; min-height: 7.5rem; padding: 1.75rem 0 var(--space-2); } /* rząd 24 px: cel dotyku WCAG 2.5.8 (telefon: niżej, decyzja Adama) */
.cal-c1 { grid-column-start: 1; } .cal-c2 { grid-column-start: 2; } .cal-c3 { grid-column-start: 3; } .cal-c4 { grid-column-start: 4; }
.cal-c5 { grid-column-start: 5; } .cal-c6 { grid-column-start: 6; } .cal-c7 { grid-column-start: 7; }
.cal-s1 { grid-column-end: span 1; } .cal-s2 { grid-column-end: span 2; } .cal-s3 { grid-column-end: span 3; } .cal-s4 { grid-column-end: span 4; }
.cal-s5 { grid-column-end: span 5; } .cal-s6 { grid-column-end: span 6; } .cal-s7 { grid-column-end: span 7; }
.cal-r1 { grid-row: 1; } .cal-r2 { grid-row: 2; } .cal-r3 { grid-row: 3; } .cal-r4 { grid-row: 4; } .cal-r5 { grid-row: 5; }
.cal-chip { display: block; min-width: 0; padding: 0 6px; overflow: hidden; border-left: 3px solid var(--c-open); border-radius: 3px; background: rgb(76 175 80 / 0.16); color: var(--c-text); font-size: 0.78rem; line-height: 1.5rem; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.cal-bar { margin-inline: 3px; }
.cal-bar--from-before { margin-left: 0; border-left-width: 0; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.cal-bar--to-after { margin-right: 0; border-top-right-radius: 0; border-bottom-right-radius: 0; }
.cal-chip--away { border-left-color: var(--c-away); background: rgb(255 122 69 / 0.2); }
.cal-chip:hover { background: rgb(243 239 231 / 0.18); color: var(--c-text); }
.cal-chip:focus-visible, .cal-more:focus-visible { outline-offset: -2px; } /* obrys w środku paska: siatka ma overflow hidden, przy krawędzi byłby ucięty */
.cal-chip__time { color: #c9c2b6; font-variant-numeric: tabular-nums; }
.cal-more { margin-inline: 3px; padding-left: 4px; color: var(--c-gold-light); font-size: 0.78rem; font-weight: 600; line-height: 1.5rem; text-decoration: none; white-space: nowrap; }
.cal-more:hover { text-decoration: underline; }
.cal-more--phone { display: none; }
/* Godzina w pasku dopiero od 1000 px; węższa kolumna pokazuje samą nazwę (godzina jest w podpowiedzi i na liście) */
@media (max-width: 999.98px) { .cal-chip__time { display: none; } }
/* Telefon: 3 rzędy pasków, mniejsze pismo (11 px), bez godzin; siatka na całą szerokość ekranu, żeby nazwy miały więcej miejsca */
@media (max-width: 599.98px) {
  .cal-list-title { margin-top: var(--space-5); }
  .cal-month { margin-inline: calc(-1 * var(--space-4)); border-inline: 0; border-radius: 0; }
  .cal-month__head span { padding-block: var(--space-1); font-size: 0.75rem; }
  .cal-day__num { padding: 2px 4px 0; font-size: 0.75rem; }
  .cal-week__bars { grid-auto-rows: 1.15rem; row-gap: 2px; min-height: 5.25rem; padding-top: 1.35rem; padding-bottom: var(--space-1); }
  .cal-chip { padding: 0 3px; border-left-width: 2px; font-size: 0.6875rem; line-height: 1.15rem; letter-spacing: -0.01em; }
  .cal-bar { margin-inline: 1px; }
  .cal-bar--from-before { margin-left: 0; }
  .cal-bar--to-after { margin-right: 0; }
  .cal-bar--wide-only, .cal-more--wide { display: none; }
  .cal-more--phone { display: block; }
  .cal-more { margin-inline: 1px; padding-left: 3px; font-size: 0.6875rem; line-height: 1.15rem; }
}
@media (min-width: 480px) {
  .cal-nav__text { display: inline; }
}
@media (min-width: 720px) {
  .cal-toolbar { grid-template-columns: 1fr auto; align-items: center; }
  .cal-nav { justify-content: flex-start; }
  .cal-nav__month { flex: none; min-width: 12rem; }
  .filter-bar--cal { justify-content: flex-end; }
}

/* ---------- Najbliższe wydarzenia na stronie głównej ---------- */
.upcoming { list-style: none; display: grid; gap: var(--space-3); }
.upcoming__item { display: flex; gap: var(--space-4); align-items: center; padding: var(--space-4); background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); }
.upcoming__body { display: grid; gap: var(--space-1); min-width: 0; }
.upcoming__title { font-weight: 600; font-size: var(--fs-lead); color: var(--c-text); text-decoration: none; overflow-wrap: anywhere; }
.upcoming__title:hover { color: var(--c-gold-light); }
.upcoming__meta { color: var(--c-muted); font-size: var(--fs-sm); }
@media (min-width: 720px) {
  .upcoming { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .upcoming__item { align-items: flex-start; }
}

/* Partnerzy na desktopie: jedna linijka, niższy pas */
.partners { padding-block: var(--space-6); }
.partners__title { margin-bottom: var(--space-4); }
@media (min-width: 1000px) {
  .partners { padding-block: var(--space-5); }
  .partners__title { margin-bottom: var(--space-3); }
  .partners__list { flex-wrap: nowrap; gap: var(--space-3); }
  .partners__item { min-width: 0; }
  .partners__item a, .partners__plain { padding: 8px 10px; border-radius: 12px; }
  .partners__item img { height: 44px; max-width: 120px; padding: 4px 6px; }
  .partners__item--large img { height: 60px; max-width: 110px; }
}

/* ---------- Zawodnicy (PZBil) ---------- */
.player-group + .player-group { margin-top: var(--space-7); }
.player-group__title { font-size: var(--fs-h2); margin-bottom: var(--space-4); }
.player-group__title::after { content: ""; display: block; width: 32px; height: 2px; margin-top: var(--space-3); background: var(--c-gold); }
.player-grid { list-style: none; padding: 0; margin: 0; display: grid; gap: var(--space-3); grid-template-columns: repeat(2, minmax(0, 1fr)); }
@media (min-width: 720px) { .player-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--space-4); } }
@media (min-width: 1000px) { .player-grid { grid-template-columns: repeat(6, minmax(0, 1fr)); } }
.player-card__link {
  display: flex; flex-direction: column; align-items: center; gap: var(--space-2); height: 100%;
  padding: var(--space-4) var(--space-2); text-align: center; text-decoration: none; color: var(--c-text);
  background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg);
}
.player-card__link:hover { border-color: var(--c-gold); color: var(--c-gold-light); }
.player-card__name { font-weight: 600; overflow-wrap: anywhere; }
.avatar { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; background: var(--c-line); border: 2px solid var(--c-gold); }
.avatar--empty { display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-head); font-size: 1.8rem; color: var(--c-gold-light); }
.avatar--large { width: 128px; height: 128px; flex: none; }
.profile-head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-5); margin-top: var(--space-3); }
.medal-counts { display: flex; flex-wrap: wrap; gap: var(--space-5); margin-bottom: var(--space-4); }
.table--pzbil th[scope="row"] { font-weight: 600; text-align: left; }
.more { margin-top: var(--space-4); }
.more > summary { cursor: pointer; color: var(--c-gold-light); font-weight: 600; margin-bottom: var(--space-3); }
.team-league { margin: 0 0 var(--space-4); display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); }
.team-history { margin-top: var(--space-5); }
.team-history__season { font-size: var(--fs-lead); color: var(--c-gold-light); margin: var(--space-4) 0 var(--space-2); }
.table--league th[scope="row"] { font-weight: 400; text-align: left; }
.outcome { display: inline-block; margin-left: var(--space-2); padding: 0 0.5em; border-radius: 999px; font-size: 0.8rem; border: 1px solid var(--c-line); color: var(--c-muted); }
.outcome--W { border-color: #4f9a5f; color: #8fd19e; }
.outcome--P { border-color: #a24a4c; color: #e59a9b; }

/* ---------- Aktualności (Facebook) ---------- */
.post-list { display: grid; gap: var(--space-5); max-width: 46rem; }
.post { background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); overflow: hidden; }
.section--alt .post { background: var(--c-bg); }
.post__images { display: grid; gap: 2px; background: var(--c-line); }
.post__images img { width: 100%; height: 100%; object-fit: cover; aspect-ratio: 16 / 10; background: var(--c-line); }
.post__images--1 img { aspect-ratio: 16 / 9; }
.post__images--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.post__images--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.post__images--3 > :first-child { grid-column: 1 / -1; }
.post__images--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.post__body { padding: var(--space-4) var(--space-5) var(--space-5); }
.post__date { color: var(--c-muted); font-size: var(--fs-sm); margin: 0 0 var(--space-2); }
.page-head .post__date { margin-top: var(--space-2); } /* data pod tytułem wpisu */
.post__text { margin: 0; overflow-wrap: anywhere; }
/* Tekst wpisów z Facebooka wyjustowany od 600 px (prośba Adama), z dzieleniem wyrazów (lang="pl"); linie przed <br> (listy, krótkie akapity) zostają do lewej.
   Na telefonie do lewej: Chrome nie dzieli polskich wyrazów, więc w wąskiej kolumnie powstawały duże odstępy między słowami */
@media (min-width: 600px) {
  .post__text, .post-full__text { text-align: justify; hyphens: auto; -webkit-hyphens: auto; }
}
/* Tytuł karty wpisu (h2 dla nawigacji nagłówkami w czytniku), krojem jak w karuzeli na Start */
.post__title { margin: 0 0 var(--space-2); font-family: var(--font-body); font-size: 1.0625rem; font-weight: 700; line-height: 1.35; letter-spacing: 0; overflow-wrap: anywhere; }
.post__title a { color: var(--c-text); text-decoration: none; }
.post__title a:hover { color: var(--c-gold-light); text-decoration: underline; }
/* Archiwum: wpisy starsze niż rok z dopiskiem, że informacje mogą być nieaktualne */
.post__old { display: block; width: fit-content; margin-top: var(--space-1); padding: 0.1em 0.6em; border: 1px solid #4a443b; border-radius: var(--radius); color: var(--c-gold-light); font-size: 0.8125rem; line-height: 1.5; }
.post__old--block { display: block; margin: var(--space-3) 0 0; padding: var(--space-2) var(--space-3); border-radius: var(--radius); max-width: 65ch; }
.post__old--block a { color: inherit; }
.post-list__summary { color: var(--c-muted); font-size: var(--fs-sm); margin: 0 0 var(--space-4); }
.post__more { margin: var(--space-3) 0 0; font-weight: 600; }
.pager { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-3); margin-top: var(--space-6); }

/* Nagłówek: ciaśniejsze menu w jednej linii na węższych ekranach desktopowych */
@media (min-width: 1280px) and (max-width: 1319.98px) {
  .site-logo { margin-right: var(--space-2); }
  .site-nav a { padding-inline: var(--space-2); font-size: 0.9rem; }
  .site-header__cta { padding-inline: var(--space-3); }
}
@media (max-width: 419.98px) {
  .site-logo { margin-right: 0; padding-block: 5px; }
  .site-logo img { height: 34px; }
  .nav-toggle__label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* ---------- Aktualności: paginacja, pojedynczy wpis ---------- */
.post__sep { color: var(--c-muted); margin-inline: var(--space-2); }
.post__fb { color: var(--c-muted); font-weight: 400; }
.pager { flex-wrap: wrap; justify-content: center; gap: var(--space-3) var(--space-2); max-width: 46rem; }
.pager__pages { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-1); list-style: none; padding: 0; margin: 0; }
.pager__num, .pager__step { display: inline-flex; align-items: center; justify-content: center; min-width: var(--tap); min-height: var(--tap); padding-inline: var(--space-3); border: 1px solid var(--c-line); border-radius: var(--radius); text-decoration: none; color: var(--c-text); background: var(--c-surface); font-variant-numeric: tabular-nums; }
.pager__num:hover, .pager__step:hover { border-color: var(--c-gold); color: var(--c-gold-light); }
.pager__num--current { background: var(--c-felt); border-color: var(--c-felt); color: #fff; font-weight: 600; }
.pager__gap { display: inline-flex; align-items: center; min-height: var(--tap); padding-inline: var(--space-1); color: var(--c-muted); }
.pager__step { font-weight: 600; }
.page-title--post { font-size: var(--fs-h2); max-width: 30ch; }
.post-full { max-width: 46rem; }
.post-full__text { font-size: var(--fs-lead); overflow-wrap: anywhere; }
/* Galeria wpisu: siatka zależna od liczby zdjęć (1–4), klik otwiera powiększenie (main.js), bez JS sam plik zdjęcia */
.gallery { display: grid; gap: 4px; margin-top: var(--space-5); border-radius: var(--radius-lg); overflow: hidden; background: var(--c-bg); }
.gallery__item { position: relative; display: block; overflow: hidden; background: #000; aspect-ratio: 1 / 1; cursor: zoom-in; }
.gallery__img, .gallery__backdrop { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; transition: transform 0.4s ease, opacity 0.2s; }
.gallery__item--tall .gallery__img { object-fit: contain; object-position: 50% 50%; }
.gallery__backdrop { filter: blur(18px) brightness(0.5); transform: scale(1.15); }
.gallery__zoom {
  position: absolute; right: var(--space-3); bottom: var(--space-3); display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px; border-radius: 50%; background: rgb(18 17 16 / 0.75); color: var(--c-text); opacity: 0; transition: opacity 0.2s;
}
.gallery__zoom svg { width: 20px; height: 20px; }
.gallery__item:hover .gallery__zoom, .gallery__item:focus-visible .gallery__zoom { opacity: 1; }
.gallery__item:focus-visible { outline-offset: -3px; }
@media (hover: hover) { .gallery__item:not(.gallery__item--tall):hover .gallery__img { transform: scale(1.03); } }
@media (hover: none) { .gallery__item:first-child .gallery__zoom { opacity: 1; } } /* na dotyku znak tylko na pierwszym zdjęciu */
.gallery--1 .gallery__item { aspect-ratio: auto; }
.gallery--1 .gallery__img { position: static; height: auto; max-height: 80vh; object-fit: contain; }
.gallery--1 .gallery__item--tall { aspect-ratio: 4 / 5; max-height: 80vh; }
.gallery--1 .gallery__item--tall .gallery__img { position: absolute; height: 100%; max-height: none; }
.gallery--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.gallery--2 .gallery__item { aspect-ratio: 4 / 5; }
.gallery--3 { grid-template-columns: 2fr 1fr; grid-template-rows: repeat(2, minmax(0, 1fr)); aspect-ratio: 3 / 2; }
.gallery--3 .gallery__item { aspect-ratio: auto; }
.gallery--3 .gallery__item:first-child { grid-row: 1 / -1; }
.gallery--4 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.gallery--4 .gallery__item:first-child { grid-column: 1 / -1; aspect-ratio: 16 / 10; }
.gallery__hint { margin: var(--space-2) 0 0; color: var(--c-muted); font-size: var(--fs-sm); }
@media (prefers-reduced-motion: reduce) { .gallery__img { transition: none; } }
.post-full__source { margin-top: var(--space-5); }
/* Grafiki z opisu turnieju (online-brackets) w szczegółach wyniku: w całości, bez przycinania */
.event-posters { display: grid; gap: var(--space-3); margin-bottom: var(--space-3); }
.event-posters a { display: block; border-radius: var(--radius); }
.event-posters img { width: 100%; height: auto; border-radius: var(--radius); background: var(--c-line); }
.post-nav { display: grid; gap: var(--space-3); max-width: 46rem; margin-top: var(--space-6); }
@media (min-width: 720px) { .post-nav { grid-template-columns: repeat(2, minmax(0, 1fr)); } .post-nav__item--older { grid-column: 2; text-align: right; } }
.post-nav__item { display: flex; flex-direction: column; gap: var(--space-1); padding: var(--space-4); border: 1px solid var(--c-line); border-radius: var(--radius-lg); background: var(--c-surface); text-decoration: none; color: var(--c-text); }
.post-nav__item:hover { border-color: var(--c-gold); }
.post-nav__label { color: var(--c-muted); font-size: var(--fs-sm); }
.post-nav__title { font-weight: 600; overflow-wrap: anywhere; }

/* ---------- Typy wydarzeń w kalendarzu (rozpoznawane po tytule) ---------- */
:root { --c-liga: #b58be0; --c-away: #ff7a45; --c-brizzon: #f2c230; }
.tag--liga { border-color: var(--c-liga); color: #d3b8f0; }
.cal-chip--budmar { border-left-color: var(--c-red); background: rgb(186 24 27 / 0.28); }
.cal-chip--rlb { border-left-color: var(--c-felt); background: rgb(30 136 200 / 0.24); }
.cal-chip--mpa { border-left-color: var(--c-medal-gold); background: rgb(212 175 55 / 0.22); }
.cal-chip--liga { border-left-color: var(--c-liga); background: rgb(181 139 224 / 0.22); }
ul.cal-legend { display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-4); margin: 0 0 var(--space-4); padding: 0; list-style: none; color: var(--c-muted); font-size: var(--fs-sm); }
.cal-legend__item::before { content: ""; display: inline-block; width: 0.7rem; height: 0.7rem; margin-right: 0.4rem; border-radius: 2px; background: var(--legend, var(--c-muted)); vertical-align: -0.05rem; }
.cal-legend__item--budmar { --legend: var(--c-red); }
.cal-legend__item--rlb { --legend: var(--c-felt); }
.cal-legend__item--mpa { --legend: var(--c-medal-gold); }
.cal-legend__item--liga { --legend: var(--c-liga); }
.cal-legend__item--home { --legend: var(--c-open); }
.cal-legend__item--away { --legend: var(--c-away); }
.cal-legend__item--brizzon { --legend: var(--c-brizzon); }
.cal-legend__item--quay { --legend: linear-gradient(90deg, var(--c-felt) 50%, var(--c-brizzon) 50%); }
.cal-chip--brizzon { border-left-color: var(--c-brizzon); background: rgb(242 194 48 / 0.2); }
.cal-chip--quay { border-left-color: var(--c-felt); background: linear-gradient(90deg, rgb(30 136 200 / 0.3), rgb(242 194 48 / 0.25)); }
.cal-event[data-kind] { border-left: 4px solid var(--kind, var(--c-open)); }
.cal-event[data-kind="away"] { --kind: var(--c-away); }
.cal-event[data-kind="budmar"] { --kind: var(--c-red); }
.cal-event[data-kind="rlb"] { --kind: var(--c-felt); }
.cal-event[data-kind="mpa"] { --kind: var(--c-medal-gold); }
.cal-event[data-kind="liga"] { --kind: var(--c-liga); }
.cal-event[data-kind="brizzon"] { --kind: var(--c-brizzon); }
.cal-event[data-kind="quay"] { --kind: var(--c-felt); }

/* ---------- Ostatnie wyniki na stronie głównej ---------- */
.recent { list-style: none; margin: 0; padding: 0; }
/* Data w wąskiej kolumnie po lewej, nazwa turnieju w kolorze tekstu (podkreślenie po najechaniu), zwycięzca pod nią */
.recent__item { display: grid; grid-template-columns: 5.5rem minmax(0, 1fr); gap: 0.15rem var(--space-4); padding: var(--space-4) 0; border-bottom: 1px solid var(--c-line); }
.recent__item:first-child { padding-top: 0; }
.recent__date { grid-row: 1 / span 2; padding-top: 0.2em; color: var(--c-muted); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; }
.recent__title { font-weight: 600; font-size: var(--fs-lead); line-height: 1.35; color: var(--c-text); text-decoration: none; overflow-wrap: anywhere; }
.recent__title:hover { color: var(--c-gold-light); text-decoration: underline; }
.recent__winner { color: var(--c-gold-light); }
@media (max-width: 359.98px) { .recent__item { grid-template-columns: minmax(0, 1fr); } .recent__date { grid-row: auto; padding-top: 0; } }
.section--alt .upcoming__item { background: var(--c-bg); }

/* Najbliższe turnieje w połowie szerokości (Start): jedna kolumna, kafelek daty nie kurczy się, znaczniki zawijają */
.grid--2 .upcoming { grid-template-columns: minmax(0, 1fr); }
.grid--2 .upcoming__item { align-items: center; }
.upcoming .cal-date { flex: none; }
.upcoming .cal-event__tags { display: flex; flex-wrap: wrap; gap: var(--space-2); }

/* ---------- Nocne poprawki układu (2026-10-11) ---------- */
/* Tytuł sekcji bezpośrednio przed lead i tabelą: oddech pod linią akcentu */
.section__title + .lead, .section__title + p { margin-top: var(--space-4); }
.section__title + .table-wrap, .section__title + .grid, .section__title + .facts, .section__title + .card { margin-top: var(--space-5); } /* jak nad kartami cykli (.stat-cards) */
.lead + .table-wrap { margin-top: var(--space-4); }
/* Sekcje mają własny padding, więc stopka nie potrzebuje marginesu (był widoczny pas tła między sekcją a stopką) */
.site-footer, .partners { margin-top: 0; }
/* Długie akapity w pełnej szerokości: komfortowa długość wiersza */
.section__title ~ p:not(.lead) { max-width: 75ch; }
/* Godziny w karcie kontaktu wypełniają szerokość karty */
.card .hours--large { max-width: none; }
/* Aktualności na desktopie: dwie kolumny zamiast wąskiej kolumny przy lewej krawędzi i pustej połowy ekranu */
@media (min-width: 1000px) {
  .post-list { grid-template-columns: repeat(2, minmax(0, 1fr)); max-width: none; align-items: stretch; }
  .pager { max-width: none; }
}
/* Wyniki: tabela mieści się w kontenerze na 1440 px (bez ucinania kolumny podium) */
.table--results th { white-space: normal; }
/* Znacznik cyklu w jednej linii (krótkie nazwy z Series::shortLabel), żeby kolumna „Cykl” nie wypychała podium poza kontener */
.table--results .cell-name { min-width: 13rem; }
.table--results td:nth-child(5), .table--results td:nth-child(6) { min-width: 10rem; }
.site-footer__bottom { align-items: baseline; }

/* Telefon: partnerzy w trzech kolumnach (9 kafelków w trzech rzędach zamiast dwukolumnowej ściany) */
@media (max-width: 719.98px) {
  .partners { padding-block: var(--space-5); }
  .partners__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
  .partners__item { min-width: 0; }
  .partners__item a, .partners__plain { display: flex; align-items: center; justify-content: center; height: 100%; padding: 6px; border-radius: 12px; }
  .partners__item img, .partners__item--large img { width: 100%; height: 44px; max-width: none; padding: 4px 6px; object-fit: contain; }
}

/* Paginacja na telefonie: „Nowsze” i „Starsze” w jednym rzędzie, numery strony pod nimi (wcześniej trzy rzędy jeden pod drugim) */
@media (max-width: 719.98px) {
  .pager { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: var(--space-3); }
  .pager__pages { grid-column: 1 / -1; grid-row: 2; }
  .pager__step--prev { grid-column: 1; grid-row: 1; justify-self: start; }
  .pager__step--next { grid-column: 2; grid-row: 1; justify-self: end; }
}
@media (max-width: 719.98px) {
  .pager__pages { flex-wrap: nowrap; gap: 4px; }
  .pager__num { min-width: 36px; padding-inline: 4px; }
  .pager__gap { min-width: 16px; justify-content: center; padding-inline: 0; }
}

/* Paginacja: wyśrodkowana, stała szerokość „Nowsze”/„Starsze” (na skrajnych stronach są wyszarzone, więc numery nie skaczą) */
.pager { justify-content: center; align-items: center; }
.pager__step { min-width: 7.5rem; }
/* Nieaktywny krok: przygaszony obrys, tekst nadal z kontrastem AA (przy opacity 0.35 było 2,2:1) */
.pager__step--off { color: #8a8378; border-color: var(--c-line); cursor: default; pointer-events: none; }
.btn--off { color: #8a8378; border-color: var(--c-line); cursor: default; pointer-events: none; } /* nieaktywny krok nawigacji, jak w paginacji */
.pager__num--current { box-shadow: 0 0 0 2px rgb(30 136 200 / 0.35); }
@media (max-width: 719.98px) {
  .pager__step { min-width: 0; }
  .pager__step--prev { grid-column: 1; grid-row: 1; justify-self: start; }
  .pager__step--next { grid-column: 2; grid-row: 1; justify-self: end; }
}

/* Paginacja w złocie marki (jak aktywny filtr w kalendarzu), zamiast niebieskiego sukna */
.pager__num--current { background: var(--c-gold); border-color: var(--c-gold); color: #1a1712; box-shadow: 0 0 0 2px rgb(163 150 109 / 0.3); }
.pager__num, .pager__step { background: var(--c-surface); border-color: #4a443b; }
.pager__num:hover, .pager__step:hover { background: var(--c-surface-2); border-color: var(--c-gold); color: var(--c-gold-light); }
.pager__step { color: var(--c-gold-light); }
.pager .pager__num--current, .pager .pager__num--current:hover { background: var(--c-gold); border-color: var(--c-gold); color: #1a1712; }

/* Cele dotykowe na telefonie: linki „Wszystkie →” i linki w stopce min. 44 px wysokości */
.section__more { display: inline-flex; align-items: center; min-height: var(--tap); }
.section__head { align-items: center; padding-bottom: 0; }
@media (max-width: 719.98px) {
  .site-footer .plain-list a, .site-footer address + p a, .site-footer__bottom a { display: inline-flex; align-items: center; min-height: var(--tap); }
  .site-footer .plain-list li + li { margin-top: 0; }
  .site-footer__bottom p { margin: 0; }
}
@media (max-width: 719.98px) {
  .filter { min-height: var(--tap); display: inline-flex; align-items: center; }
  .more > summary { display: flex; align-items: center; min-height: var(--tap); }
}

/* ---------- Start: właściciel w hero (klik prowadzi do profilu z osiągnięciami) ---------- */
.hero__person { display: none; }
@media (min-width: 1000px) {
  .hero__person {
    position: absolute; z-index: 1; display: block; text-decoration: none; color: var(--c-text);
    right: max(var(--space-4), calc((100% - var(--container)) / 2 + var(--space-6))); bottom: var(--space-6);
    width: min(360px, 30vw);
    border: 2px solid var(--c-gold); border-radius: var(--radius-lg); overflow: hidden;
    box-shadow: var(--shadow); background: var(--c-surface);
    transition: transform 0.2s ease, border-color 0.2s ease;
  }
  .hero__person:hover { transform: translateY(-4px); border-color: var(--c-gold-light); color: var(--c-text); }
  .hero__person img { width: 100%; height: auto; }
  .hero__person-caption {
    position: absolute; inset: auto 0 0 0; display: grid; gap: 0.1rem; padding: var(--space-5) var(--space-4) var(--space-3);
    background: linear-gradient(180deg, transparent, rgb(18 17 16 / 0.92) 55%); line-height: 1.3;
  }
  .hero__person-caption strong { font-family: var(--font-head); font-weight: 400; font-size: var(--fs-h3); }
  .hero__person-caption span { font-size: var(--fs-sm); color: var(--c-muted); }
  .hero__person-caption .hero__person-more { color: var(--c-gold-light); font-weight: 600; }
  /* Wycięty portret: bez ramki, stoi na dolnej krawędzi hero */
  .hero__person--cutout { width: auto; bottom: 0; border: 0; border-radius: 0; background: none; box-shadow: none; overflow: visible; }
  .hero__person--cutout:hover { transform: none; }
  .hero__person--cutout img { width: auto; height: var(--person-h); filter: drop-shadow(0 12px 28px rgb(0 0 0 / 0.55)); }
  .hero__person--cutout .hero__person-caption { inset: auto auto var(--space-4) 44%; transform: translateX(-50%); width: max-content; border-radius: var(--radius); background: rgb(18 17 16 / 0.82); border: 1px solid var(--c-gold); padding: var(--space-3) var(--space-4); } /* 44%: środek tułowia, puchar poszerza zdjęcie w prawo */
}

/* Partnerzy: główni partnerzy klubu */
.hero .hero__person picture { position: static; inset: auto; z-index: auto; width: 100%; height: auto; display: block; }
.hero .hero__person img { position: static; z-index: auto; object-fit: initial; }
.hero .hero__person--cutout picture { width: auto; }
.section__more::after { content: "→"; margin-left: 0.35em; }
@media (min-width: 1000px) {
  .hero__person:not(.hero__person--cutout) .hero__person-caption { position: static; background: var(--c-surface); padding: var(--space-3) var(--space-4); }
}

/* ---------- Właściciel: panel z informacjami po najechaniu (zamiast przejścia do profilu) ---------- */
.hero { --person-h: clamp(380px, 56vh, 540px); }
.owner-panel { display: none; }
.owner-panel.is-open { display: block; margin-top: var(--space-4); padding: var(--space-4); background: rgb(28 26 23 / 0.94); border: 1px solid var(--c-gold); border-radius: var(--radius-lg); box-shadow: var(--shadow); }
.owner-panel__role { color: var(--c-gold-light); font-size: var(--fs-sm); font-weight: 600; }
.owner-panel__name { font-size: var(--fs-h3); margin-top: var(--space-1); }
.owner-panel__intro { margin-top: var(--space-2); color: var(--c-muted); font-size: var(--fs-sm); }
.owner-panel__medals { display: flex; gap: var(--space-4); list-style: none; margin: var(--space-3) 0 0; padding: 0; }
.owner-panel__medals li { display: inline-flex; align-items: center; gap: var(--space-2); font-size: var(--fs-lead); }
.owner-panel__more { margin-top: var(--space-3); font-size: var(--fs-sm); font-weight: 600; }
@media (min-width: 1000px) {
  .owner-panel, .owner-panel.is-open {
    display: block; position: absolute; z-index: 3; width: 340px; margin: 0;
    right: calc(var(--space-6) + var(--person-h) * 0.756 - 36px); bottom: var(--space-8);
    opacity: 0; visibility: hidden; transform: translateX(10px); transition: opacity 0.2s ease, transform 0.2s ease, visibility 0.2s;
  }
  .hero:has(.hero__person:hover) .owner-panel, .hero:has(.owner-panel:hover) .owner-panel,
  .hero:has(.hero__person:focus-visible) .owner-panel, .owner-panel.is-open { opacity: 1; visibility: visible; transform: none; }
}
.owner-panel { padding: var(--space-4); background: rgb(28 26 23 / 0.97); border: 1px solid var(--c-gold); border-radius: var(--radius-lg); box-shadow: var(--shadow); }

/* Tło za wyciętą sylwetką: ciemne „zamalowanie” baneru, skośna krawędź; sylwetka podniesiona o 50 px */
.hero__backdrop { display: none; }
@media (min-width: 1000px) {
  .hero__backdrop {
    display: block; position: absolute; z-index: 0; top: 0; bottom: 0; right: 0; width: 31%;
    clip-path: polygon(14% 0, 100% 0, 100% 100%, 0 100%);
    background:
      radial-gradient(ellipse 70% 55% at 62% 62%, rgb(163 150 109 / 0.32), transparent 70%),
      linear-gradient(180deg, #1b1814 0%, #12100e 100%);
  }
  .hero__person--cutout { bottom: 50px; }
  .hero__person--cutout img { -webkit-mask-image: linear-gradient(#000 88%, transparent); mask-image: linear-gradient(#000 88%, transparent); }
  .hero__person--cutout .hero__person-caption { bottom: calc(var(--space-4) - 50px); }
}

/* Tło za sylwetką (wersja 2): miękkie przejście w zdjęcie sali zamiast ostrej krawędzi, reflektor za głową, ukośna smuga światła i czerwona poświata od dołu */
@media (min-width: 1000px) {
  .hero__backdrop {
    width: 44%; clip-path: none;
    -webkit-mask-image: linear-gradient(90deg, transparent 0, rgb(0 0 0 / 0.6) 16%, #000 38%);
    mask-image: linear-gradient(90deg, transparent 0, rgb(0 0 0 / 0.6) 16%, #000 38%);
    background:
      linear-gradient(115deg, transparent 36%, rgb(203 189 146 / 0.2) 45%, transparent 58%),
      radial-gradient(ellipse 48% 62% at 60% 46%, rgb(203 189 146 / 0.42), transparent 72%),
      radial-gradient(ellipse 85% 60% at 100% 105%, rgb(186 24 27 / 0.42), transparent 70%),
      linear-gradient(180deg, #1d1915, #0f0d0b);
  }
  .hero__backdrop::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 70%, rgb(18 17 16 / 0.7)); }
}

/* Szeroki ekran: Radek bliżej prawej krawędzi (o 1/3 marginesu poza kontenerem), panel z informacjami razem z nim */
@media (min-width: 1400px) {
  .hero { --person-shift: calc((100vw - var(--container)) / 3); }
  .hero__person { right: max(var(--space-4), calc((100% - var(--container)) / 2 + var(--space-6) - var(--person-shift))); }
  .owner-panel, .owner-panel.is-open { right: calc(var(--space-6) + var(--person-h) * 0.756 - 36px - var(--person-shift)); }
}

/* Najważniejsze osiągnięcia właściciela (panel na Start i profil) */
.owner-panel__highlights { list-style: none; margin: var(--space-3) 0 0; padding: 0; font-size: var(--fs-sm); }
.owner-panel__highlights li { position: relative; padding: var(--space-1) 0 var(--space-1) 1.4rem; border-top: 1px solid var(--c-line); font-weight: 600; }
.owner-panel__highlights li::before { content: "★"; position: absolute; left: 0; color: var(--c-medal-gold); }
.owner-panel__highlights--profile { max-width: 36rem; font-size: var(--fs-base); }

/* Panel właściciela: logotypy głównych partnerów (QUAY, Formuła B 1-3-5) jako przygaszone tło */
.owner-panel { position: relative; overflow: hidden; isolation: isolate; }
.owner-panel::before {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none; opacity: 0.3;
  background:
    url("/assets/img/partners/quay.webp") no-repeat left -30px top 30px / 130px auto,
    url("/assets/img/partners/formula-b-135.webp") no-repeat right -26px top 30px / 120px auto;
}
@media (min-width: 1000px) { .owner-panel, .owner-panel.is-open { position: absolute; } }
/* Okno było wyższe niż hero i wchodziło pod górny pasek (Radek, 2026-10-26). Szersze okno z osiągnięciami
   w dwóch kolumnach, bez przewijania (suwak w oknie Radek odrzucił); na niskim ekranie ciaśniejsze odstępy. */
@media (min-width: 1000px) {
  .owner-panel, .owner-panel.is-open { width: min(600px, calc(100vw - var(--space-6) * 2 - 340px)); bottom: var(--space-6); }
  /* dwie kolumny jak w gazecie (nie siatka): wiersze nie wyrównują się do dłuższej gwiazdki, więc nie ma pustych miejsc */
  .owner-panel__highlights { columns: 2; column-gap: var(--space-4); }
  .owner-panel__highlights li { break-inside: avoid; }
}
@media (min-width: 1000px) and (max-height: 720px) {
  .owner-panel, .owner-panel.is-open { padding: var(--space-3) var(--space-4); bottom: var(--space-4); }
  .owner-panel__intro { margin-top: var(--space-1); }
  .owner-panel__medals { margin-top: var(--space-2); }
  .owner-panel__medals li { font-size: var(--fs-base); }
  .owner-panel__highlights { margin-top: var(--space-2); font-size: 0.8125rem; line-height: 1.35; }
  .owner-panel__more { margin-top: var(--space-2); }
}

/* ---------- Runda 3 (2026-10-11) ---------- */
/* Kalendarz, szczegóły turnieju na telefonie: etykieta nad wartością zamiast wąskiej kolumny (data zawijała się na trzy linie) */
@media (max-width: 719.98px) {
  .cal-facts > div { grid-template-columns: 1fr; gap: 0; }
}
/* Wyniki poniżej 1280 px: wiersz tabeli jako karta (data i cykl, nazwa, zwycięzca, podium), od 720 px w dwóch kolumnach; tabela przewijana miała 1120 px */
@media (max-width: 1279.98px) {
  .results-list .table-wrap:has(.table--results) { border: 0; overflow: visible; }
  .table--results, .table--results tbody { display: block; }
  .table--results thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  /* Karta jako flex z zawijaniem: data, znacznik cyklu i liczba graczy w pierwszej linii; gdy się nie mieszczą,
     liczba graczy przechodzi niżej zamiast nachodzić na znacznik. Kolejność przez order (w HTML nazwa jest przed cyklem). */
  .table--results tbody tr {
    display: flex; flex-wrap: wrap; gap: var(--space-2) var(--space-3); align-items: center;
    margin-bottom: var(--space-3); padding: var(--space-4); background: var(--c-surface);
    border: 1px solid var(--c-line); border-radius: var(--radius-lg);
  }
  .table--results tbody tr:hover { background: var(--c-surface); }
  .table--results td { display: block; padding: 0; border: 0; white-space: normal; min-width: 0; }
  .table--results .cell-date { order: 1; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--results .cell-series { order: 2; }
  .table--results .cell-count { order: 3; margin-left: auto; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--results .cell-count::before { content: attr(data-label) ": "; }
  .table--results .cell-name { order: 4; flex: 1 1 100%; min-width: 0; font-weight: 600; font-size: var(--fs-lead); }
  .table--results .cell-winner { order: 5; flex: 1 1 100%; }
  .table--results .cell-podium { order: 6; flex: 1 1 100%; min-width: 0; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--results .cell-podium:empty, .table--results .cell-podium:not(:has(.podium-item)) { display: none; }
}
@media (max-width: 719.98px) {
  .table--results .cell-count { white-space: nowrap; }
  .table--results .cell-name a { text-decoration: none; }
  /* Filtry wyników: Cykl i Rok obok siebie, żeby lista zaczynała się wyżej */
  .filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .filters__field--grow, .filters__actions { grid-column: 1 / -1; }
  .filters select { padding-inline: var(--space-2); }
}
@media (min-width: 720px) and (max-width: 1279.98px) {
  .table--results tbody { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); align-items: stretch; }
  .table--results tbody tr { margin-bottom: 0; align-content: start; }
  .table--results .cell-count { white-space: nowrap; }
  .table--results .cell-name a { text-decoration: none; }
}

/* Tabele statystyk na telefonie: numer i nazwisko przyklejone do lewej krawędzi podczas przewijania w bok */
@media (max-width: 719.98px) {
  .table--stats { --stick-bg: var(--c-bg); }
  .section--alt .table--stats { --stick-bg: var(--c-surface); }
  .table--stats th:nth-child(1), .table--stats td:nth-child(1),
  .table--stats th:nth-child(2), .table--stats td:nth-child(2) { position: sticky; z-index: 1; background: var(--stick-bg); }
  .table--stats th:nth-child(1), .table--stats td:nth-child(1) { left: 0; min-width: 2.25rem; width: 2.25rem; padding-inline: var(--space-2); text-align: center; }
  .table--stats th:nth-child(2), .table--stats td:nth-child(2) { left: 2.25rem; min-width: 8.5rem; box-shadow: 6px 0 8px -6px rgb(0 0 0 / 0.6); }
  .table--stats thead th:nth-child(1), .table--stats thead th:nth-child(2) { background: var(--c-surface-2); }
  .table--stats tbody tr:hover td:nth-child(1), .table--stats tbody tr:hover td:nth-child(2) { background: var(--c-surface); }
}

/* Paski filtrów (cykle, sezony, dywizje) na telefonie: jeden rząd przewijany w bok zamiast 4-5 rzędów znaczników */
@media (max-width: 719.98px) {
  .filter-bar:not(.filter-bar--cal) {
    flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch;
    margin-inline: calc(var(--space-4) * -1); padding-inline: var(--space-4); padding-bottom: var(--space-1);
    scrollbar-width: none;
  }
  .filter-bar:not(.filter-bar--cal)::-webkit-scrollbar { display: none; }
  .filter-bar:not(.filter-bar--cal) .filter { flex: none; white-space: nowrap; }
}
.filter-bar { position: relative; }

/* Zawodnicy na telefonie: trzy kolumny z mniejszym zdjęciem (58 kart w dwóch kolumnach to 5600 px przewijania) */
@media (max-width: 719.98px) {
  .player-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--space-2); }
  .player-card__link { padding: var(--space-3) var(--space-1); gap: var(--space-1); }
  .player-card__name { font-size: var(--fs-sm); line-height: 1.3; overflow-wrap: break-word; hyphens: auto; }
  .player-grid .avatar { width: 72px; height: 72px; font-size: 1.4rem; }
}

/* Nagłówek na telefonie: przyciski menu i Facebook mają cel dotykowy 44 px (wcześniej 36–40 px) */
@media (max-width: 479.98px) {
  .site-header__fb { width: var(--tap); height: var(--tap); }
  .nav-toggle { min-width: var(--tap); min-height: var(--tap); justify-content: center; }
}

/* Dostępność: biały tekst na sukienku #1e88c8 miał kontrast 3,9:1 (AA wymaga 4,5:1), więc tło znaczników z tekstem jest odrobinę ciemniejsze (5,2:1); kolor marki --c-felt bez zmian */
:root { --c-felt-ui: #1873aa; }
.filter[aria-pressed="true"], .filter[aria-current="page"],
.filter-bar--rlb .filter[aria-current="page"] { background: var(--c-felt-ui); border-color: var(--c-felt-ui); }
/* Wynik turnieju: nagłówek klasyfikacji w lewej kolumnie, bez dolnego marginesu z .card__title (odstęp daje .stack) */
.stack > .card__title { margin-bottom: 0; }
/* Kontakt na telefonie: telefony, e-mail i Facebook jako pełnowymiarowe cele dotykowe */
@media (max-width: 719.98px) {
  .contact-list__value { display: flex; align-items: center; min-height: var(--tap); }
}
/* Nagłówki sekcji z linkiem po prawej (Start): tytuł „Najbliższe turnieje” nie zawija się do dwóch linii na wąskim telefonie */
@media (max-width: 479.98px) {
  .section__head .section__title { font-size: 1.35rem; }
}

/* Mecze drużyn na telefonie: wiersz jako karta (kolejka i data, mecz, wynik) zamiast tabeli 970 px przewijanej w bok */
@media (max-width: 1099.98px) {
  .team-history .table-wrap:has(.table--league) { border: 0; overflow: visible; }
  .table--league, .table--league tbody { display: block; }
  .table--league thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .table--league tbody tr {
    display: grid; grid-template-columns: 1fr auto; gap: var(--space-1) var(--space-3);
    margin-bottom: var(--space-2); padding: var(--space-3); background: var(--c-surface);
    border: 1px solid var(--c-line); border-radius: var(--radius);
  }
  .table--league tbody tr:hover { background: var(--c-surface); }
  .table--league td, .table--league th[scope="row"] { display: block; padding: 0; border: 0; white-space: normal; }
  .table--league td:nth-child(1) { grid-column: 1; grid-row: 1; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--league td:nth-child(1)::before { content: "Kolejka "; }
  .table--league td:nth-child(2) { grid-column: 2; grid-row: 1; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--league th[scope="row"] { grid-column: 1 / -1; grid-row: 2; font-weight: 600; }
  .table--league td.num { grid-column: 1 / -1; grid-row: 3; text-align: left; }
}
@media (max-width: 719.98px) {
  .table--league th[scope="row"] { background: none; color: var(--c-text); font-size: var(--fs-base); }
}

/* Szerokie tabele z kilkoma wierszami (dywizje RLB) na telefonie: wiersz jako karta z etykietami zamiast przewijania w bok.
   Komórka bez data-label (nazwa turnieju lub dywizji) jest tytułem karty. */
@media (max-width: 899.98px) {
  .table-wrap:has(.table--stack) { border: 0; overflow: visible; }
  .table--stack, .table--stack tbody { display: block; }
  .table--stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .table--stack tbody tr {
    display: flex; flex-direction: column; gap: var(--space-1);
    margin-bottom: var(--space-2); padding: var(--space-3); background: var(--c-surface);
    border: 1px solid var(--c-line); border-radius: var(--radius);
  }
  .section--alt .table--stack tbody tr, .card .table--stack tbody tr { background: var(--c-bg); }
  .table--stack tbody tr:hover { background: var(--c-surface); }
  .section--alt .table--stack tbody tr:hover, .card .table--stack tbody tr:hover { background: var(--c-bg); }
  .table--stack td, .table--stack th[scope="row"] {
    display: flex; align-items: baseline; gap: var(--space-3); padding: 0; border: 0;
    white-space: normal; min-width: 0; text-align: left; background: none; width: auto;
  }
  .table--stack td[data-label]::before { content: attr(data-label); flex: none; width: 5.75rem; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--stack td:not([data-label]), .table--stack th[scope="row"] {
    order: -2; display: block; margin-bottom: var(--space-1); font-weight: 600; font-size: var(--fs-lead); color: var(--c-text);
  }
  .table--stack td[data-label="Data"], .table--stack td[data-label="Sezon"] { order: -1; }
  .table--stack td.num { text-align: left; }
}
/* Zwycięzcy i sukcesy PZBil mają po 100 i więcej wierszy: zostają tabelą, ale węższą (kolumna Graczy bez minimalnej szerokości); sukcesy PZBil poniżej 720 px w zwartych wierszach (niżej, 2026-10-24) */
.table--winners td.num, .table--divisions td.num { min-width: 0; }
@media (max-width: 719.98px) {
  .table--summary th, .table--summary td { padding-inline: var(--space-2); }
  .table--summary th[scope="row"] { white-space: normal; min-width: 5.5rem; }
}
/* Karty tabel: liczba graczy w linii tytułu po prawej, reszta pod spodem */
@media (max-width: 899.98px) {
  .table--stack tbody tr { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: var(--space-1) var(--space-3); }
  .table--stack td, .table--stack th[scope="row"] { grid-column: 1 / -1; }
  .table--stack td:not([data-label]), .table--stack th[scope="row"] { grid-column: 1; grid-row: 1; order: 0; margin-bottom: 0; }
  .table--stack td.num[data-label="Graczy"] { grid-column: 2; grid-row: 1; color: var(--c-muted); font-size: var(--fs-sm); }
  .table--stack td.num[data-label="Graczy"]::before { width: auto; }
}
@media (min-width: 720px) and (max-width: 1099.98px) {
  .table--league tbody { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
  .table--league tbody tr { margin-bottom: 0; }
}
@media (min-width: 720px) and (max-width: 899.98px) {
  .table--stack tbody { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
  .table--stack tbody tr { margin-bottom: 0; }
}

/* Telefon: linki na kartach cykli (nazwa cyklu, zawodnik z listy, „Pełne statystyki”) mają cel dotykowy 44 px */
@media (max-width: 719.98px) {
  .stat-cards .card__title a, .stat-cards .card > p > a, .top-list a { display: inline-flex; align-items: center; min-height: var(--tap); }
  .top-list li { padding-block: 0; }
  .top-list .muted { line-height: var(--tap); }
}

/* Kalendarz: minione turnieje miesiąca zwinięte w jedną pozycję nad bieżącymi i przyszłymi */
.cal-past-wrap { list-style: none; }
.cal-past > .cal-list { margin-top: var(--space-3); }
.cal-past__summary {
  display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); min-height: var(--tap);
  padding: var(--space-2) var(--space-4); cursor: pointer; list-style: none; color: var(--c-gold-light); font-weight: 600;
  border: 1px dashed #4a443b; border-radius: var(--radius-lg);
}
.cal-past__summary::-webkit-details-marker { display: none; }
.cal-past__summary::after { content: "+"; font-size: 1.5rem; line-height: 1; }
.cal-past[open] > .cal-past__summary::after { content: "−"; }
.cal-past__summary:hover { border-color: var(--c-gold); }

/* Start na telefonie i tablecie (< 1000 px): Radek ucięty do pasa stoi na dolnej krawędzi hero po prawej, obok linku do osiągnięć, na złotej poświacie.
   Dotknięcie sylwetki albo linku otwiera panel z osiągnięciami jako wyskakujące okno nad treścią hero (zamknięcie: dotknięcie poza panelem lub Esc). */
@media (max-width: 999.98px) {
  .hero { --person-h-m: clamp(360px, 105vw, 440px); --person-crop: calc(var(--person-h-m) * 0.6); }
  .hero__backdrop {
    display: block; position: absolute; z-index: 0; right: 0; bottom: 0; width: 100%; height: calc(var(--person-crop) + 60px);
    background:
      radial-gradient(ellipse 55% 70% at 74% 60%, rgb(203 189 146 / 0.38), transparent 70%),
      radial-gradient(ellipse 80% 55% at 100% 105%, rgb(186 24 27 / 0.4), transparent 70%);
    pointer-events: none;
  }
  .hero__person--cutout {
    display: block; position: absolute; z-index: 1; right: var(--space-2); bottom: 0; line-height: 0;
    height: var(--person-crop); overflow: hidden;
  }
  .hero__person--cutout img { width: auto; max-width: none; height: var(--person-h-m); filter: drop-shadow(0 8px 20px rgb(0 0 0 / 0.55)); } /* bez max-width: szersze od ekranu zdjęcie nie jest ściskane */
  .hero__person--cutout .hero__person-caption { display: none; }
  .owner-panel.is-open {
    display: block; position: absolute; z-index: 5; left: var(--space-4); right: var(--space-4); bottom: var(--space-4); margin: 0;
    max-height: calc(100% - var(--space-6)); overflow-y: auto; box-shadow: 0 0 0 100vmax rgb(0 0 0 / 0.55), var(--shadow);
  }
}
/* Plakietka Radka: ikona pucharu przy nazwisku */
.hero__person-caption strong { display: inline-flex; align-items: center; gap: var(--space-2); }
.icon--trophy { width: 1.15em; height: 1.15em; color: var(--c-medal-gold); }

/* Plakietka Radka także na telefonie: na dole sylwetki, zamiast linku tekstowego; tekst „Dotknij” zamiast „Najedź” */
.hero__person-more--touch { display: none; }
@media (max-width: 999.98px) {
  .hero__person-more--hover { display: none; }
  .hero__person-more--touch { display: inline; color: var(--c-gold-light); font-weight: 600; }
  .hero__content { padding-bottom: calc(var(--person-crop) + var(--space-5)); }
  .hero__person--cutout { position: static; height: auto; overflow: visible; }
  .hero .hero__person--cutout picture { display: block; position: absolute; z-index: 1; right: var(--space-2); bottom: 0; width: auto; height: var(--person-crop); overflow: hidden; }
  .hero__person--cutout .hero__person-caption {
    display: grid; position: absolute; z-index: 2; inset: auto auto var(--space-3) var(--space-4); width: max-content; max-width: calc(100vw - 2 * var(--space-4));
    gap: 0.1rem; line-height: 1.3; padding: var(--space-3) var(--space-4); border-radius: var(--radius);
    background: rgb(18 17 16 / 0.86); border: 1px solid var(--c-gold); color: var(--c-text);
  }
  .hero__person-caption strong { font-family: var(--font-head); font-weight: 400; font-size: var(--fs-h3); }
  .hero__person-caption span { font-size: var(--fs-sm); color: var(--c-muted); }
}

@media (max-width: 999.98px) {
  .hero__person--cutout .hero__person-caption { max-width: 190px; padding: var(--space-2) var(--space-3); }
  .hero__person-caption strong { font-size: 1.05rem; }
  .hero__person-caption span { font-size: 0.78rem; }
}

/* Medale klubu na /statystyki */
.table--club-medals th[scope="row"] { text-align: left; font-weight: 600; color: var(--c-text); background: transparent; font-size: inherit; white-space: normal; }
.table--club-medals .row-total th, .table--club-medals .row-total td { border-top: 2px solid var(--c-gold); background: var(--c-surface-2); }
#medale-klubu .table-wrap + .muted { margin-top: var(--space-3); }
@media (max-width: 719.98px) {
  .table--club-medals th, .table--club-medals td { padding-inline: var(--space-2); }
  .table--club-medals th[scope="row"] { min-width: 7.5rem; }
}

/* Runda 4, cykl 1: karty wpisów w jednym rzędzie mają link „Czytaj całość” na tej samej wysokości (stopka karty przy dolnej krawędzi) */
.post { display: flex; flex-direction: column; }
.post__body { flex: 1; display: flex; flex-direction: column; }
.post__more { margin-top: auto; padding-top: var(--space-3); }

/* Runda 4, cykl 2: tekst prozy (Prywatność) miał ok. 140 znaków w wierszu, bo .container przykrywał max-width; ograniczamy dzieci, kontener zostaje wyrównany z tytułem strony */
.container.prose > * { max-width: 70ch; }
.page-head .lead, .section > .container > .lead { max-width: 75ch; }

/* Runda 4, cykl 4: bardzo długie słowa (nazwy, adresy) zawijają się zamiast poszerzać stronę */
main :is(h1, h2, h3, p, li, dd, dt, summary) { overflow-wrap: anywhere; }

/* Wyskakujące okno z osiągnięciami na telefonie: tło nieprzezroczyste, tekst hero pod spodem nie przebija */
@media (max-width: 999.98px) {
  .owner-panel.is-open { background-color: rgb(28 26 23); }
}

/* Przycisk zamknięcia okna z osiągnięciami (tylko telefon i tablet, gdzie okno otwiera się dotknięciem) */
.owner-panel__close { display: none; }
@media (max-width: 999.98px) {
  .owner-panel__close {
    display: inline-flex; align-items: center; justify-content: center; position: absolute; top: var(--space-1); right: var(--space-1); z-index: 1;
    width: var(--tap); height: var(--tap); padding: 0; border: 0; border-radius: var(--radius); background: transparent; color: var(--c-text); font-size: 1.75rem; line-height: 1; cursor: pointer;
  }
  .owner-panel__close:hover { color: var(--c-gold-light); }
  .owner-panel__role { padding-right: var(--tap); }
}

/* Tabela podsumowania zawodnika (Cykl, medale, Podia, Starty) mieści się bez przewijania na 360–375 px */
@media (max-width: 419.98px) {
  .table--summary th, .table--summary td { padding-inline: 0.3rem; }
  .table--summary th[scope="row"] { min-width: 4.5rem; }
  .card:has(.table--summary) { padding-inline: var(--space-4); } /* 2 × 8 px więcej na tabelę (296 px przy 291 px miejsca) */
}

/* Profil właściciela: wysoki blok tekstu, zdjęcie przy górnej krawędzi (obok imienia), lista osiągnięć z oddechem pod wstępem */
@media (min-width: 720px) {
  .profile-head--tall { align-items: flex-start; }
}
ul.owner-panel__highlights--profile { margin-top: var(--space-4); margin-bottom: var(--space-4); }

/* Telefon: sylwetka Radka przesunięta w prawo o ok. 20% szerokości, widać tylko fragment pucharu */
@media (max-width: 599.98px) {
  .hero .hero__person--cutout picture { right: calc(var(--person-h-m) * -0.2); }
}

/* Okno z osiągnięciami na telefonie i tablecie jest przypięte do ekranu pod nagłówkiem (wyświetla się wysoko), a nie do dołu hero: widać je w całości także w poziomie (np. 667×375) i po przewinięciu strony */
@media (max-width: 999.98px) {
  .owner-panel.is-open {
    position: fixed; top: calc(var(--header-h) + var(--space-6)); bottom: auto;
    max-height: calc(100vh - var(--header-h) - var(--space-6) - var(--space-4));
    max-height: calc(100dvh - var(--header-h) - var(--space-6) - var(--space-4));
  }
}

/* Menu na niskim ekranie (telefon w poziomie, np. 667×375): otwarte menu przewija się wewnątrz, bo przyklejony nagłówek wyższy od ekranu ucinał ostatnie linki;
   bez JS menu jest zawsze rozwinięte, więc nagłówek nie jest wtedy przyklejony */
@media (max-width: 1279.98px) {
  .js-nav .site-nav.is-open {
    max-height: calc(100vh - 7rem);
    max-height: calc(100dvh - 7rem);
    overflow-y: auto; overscroll-behavior: contain;
  }
  html:not(.js-nav) .site-header { position: static; }
}

/* ---------- Aktualności na Start: karuzela (przewijany rząd kart ze snapem; strzałki i kropki dodaje main.js) ---------- */
.carousel { position: relative; }
.carousel__track {
  --cols: 1.15; --gap: var(--space-4);
  position: relative; display: flex; gap: var(--gap); overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain;
  padding: var(--space-1) 0 var(--space-3); scrollbar-width: thin; scrollbar-color: var(--c-gold) var(--c-line);
}
.carousel__track > * { flex: 0 0 calc((100% - (var(--cols) - 1) * var(--gap)) / var(--cols)); scroll-snap-align: start; min-width: 0; }
@media (min-width: 720px) { .carousel__track { --cols: 2.2; --gap: var(--space-5); } }
@media (min-width: 1000px) { .carousel__track { --cols: 3; } }
/* Z JS pasek przewijania znika (zastępują go strzałki i kropki), przewijanie palcem i trackpadem zostaje */
.carousel.is-enhanced .carousel__track { scrollbar-width: none; padding-bottom: var(--space-2); }
.carousel.is-enhanced .carousel__track::-webkit-scrollbar { display: none; }

/* Strzałki: okrągłe, na wysokości zdjęć, przy krawędziach rzędu; na telefonie (przewijanie palcem) tylko kropki */
.carousel__btn {
  position: absolute; z-index: 2; top: var(--btn-top, 8rem); transform: translateY(-50%);
  display: none; align-items: center; justify-content: center; width: 48px; height: 48px; padding: 0;
  border: 1px solid rgb(203 189 146 / 0.45); border-radius: 50%; background: rgb(18 17 16 / 0.82); color: var(--c-gold-light);
  box-shadow: var(--shadow); cursor: pointer; transition: opacity 0.2s, background-color 0.2s, border-color 0.2s;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
}
.carousel__btn svg { width: 22px; height: 22px; }
/* Od 1320 px strzałki całe poza rzędem kart (obok zdjęć), węższe ekrany: w rzędzie kropek pod kartami, żeby nie zasłaniały zdjęć */
.carousel__btn--prev { left: calc(-48px - var(--space-3)); }
.carousel__btn--next { right: calc(-48px - var(--space-3)); }
.carousel__btn:hover:not(:disabled) { background: var(--c-surface-2); border-color: var(--c-gold); color: var(--c-text); }
.carousel__btn:disabled { opacity: 0; pointer-events: none; }
@media (min-width: 720px) { .carousel.is-enhanced .carousel__btn { display: inline-flex; } }
@media (min-width: 720px) and (max-width: 1319px) {
  .carousel__btn { top: auto; bottom: 0; transform: none; width: var(--tap); height: var(--tap); box-shadow: none; }
  .carousel__btn--prev { left: 0; }
  .carousel__btn--next { right: 0; }
  .carousel__btn:disabled { opacity: 0.35; }
}

/* Wygaszenie krawędzi: widać, że w rzędzie jest więcej wpisów */
.carousel.is-enhanced::before, .carousel.is-enhanced::after {
  content: ""; position: absolute; z-index: 1; top: 0; bottom: 2.75rem; width: 3rem; pointer-events: none; opacity: 0; transition: opacity 0.2s;
}
.carousel.is-enhanced::before { left: 0; background: linear-gradient(to right, var(--c-surface), transparent); }
.carousel.is-enhanced::after { right: 0; background: linear-gradient(to left, var(--c-surface), transparent); }
.carousel.has-prev::before, .carousel.has-next::after { opacity: 1; }
@media (max-width: 719px) { .carousel.is-enhanced::before, .carousel.is-enhanced::after { width: 1.25rem; } }
@media (min-width: 1000px) { .carousel.is-enhanced::before, .carousel.is-enhanced::after { display: none; } } /* trzy pełne karty, nic nie wystaje */

/* Kropki: jedna na „stronę” kart; cel dotykowy 44 px, widoczna kropka mniejsza */
.carousel__dots { display: flex; justify-content: center; flex-wrap: wrap; margin-top: var(--space-1); }
.carousel__dot { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: var(--tap); padding: 0; border: 0; background: none; cursor: pointer; }
.carousel__dot::before { content: ""; width: 8px; height: 8px; border-radius: 999px; background: #5a5348; transition: width 0.25s, background-color 0.25s; }
.carousel__dot:hover::before { background: var(--c-gold); }
.carousel__dot[aria-current="true"]::before { width: 24px; background: var(--c-gold-light); }

/* Karta wpisu w karuzeli */
.news-card {
  position: relative; display: flex; flex-direction: column; overflow: hidden;
  background: var(--c-bg); border: 1px solid var(--c-line); border-radius: var(--radius-lg);
  transition: border-color 0.2s, transform 0.25s, box-shadow 0.25s;
}
.news-card:hover, .news-card:focus-within { border-color: rgb(203 189 146 / 0.55); }
.news-card__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: #000; }
.news-card__img, .news-card__backdrop { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; object-position: 50% 30%; transition: transform 0.5s ease; }
.news-card__img--tall { object-fit: contain; object-position: 50% 50%; }
.news-card__backdrop { filter: blur(18px) brightness(0.5); transform: scale(1.15); }
.news-card__media--empty { display: grid; place-items: center; background: radial-gradient(circle at 50% 40%, #1d3a4f, var(--c-bg) 75%); }
.news-card__logo { width: 62%; height: auto; opacity: 0.9; }
.news-card__media::after { content: ""; position: absolute; inset: auto 0 0; height: 35%; background: linear-gradient(to top, rgb(0 0 0 / 0.45), transparent); pointer-events: none; }
.news-card__count {
  position: absolute; z-index: 1; right: var(--space-3); bottom: var(--space-3); padding: 0.2rem 0.6rem;
  border-radius: 999px; background: rgb(18 17 16 / 0.8); color: var(--c-text); font-size: 0.8125rem; font-weight: 600;
}
.news-card__body { flex: 1; display: flex; flex-direction: column; padding: var(--space-4) var(--space-5) var(--space-5); }
.news-card__date { margin: 0 0 var(--space-2); color: var(--c-gold-light); font-size: var(--fs-sm); letter-spacing: 0.02em; }
.news-card__title {
  margin: 0; font-family: var(--font-body); font-size: 1.0625rem; font-weight: 700; line-height: 1.35; overflow-wrap: anywhere;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden;
}
.news-card__link { color: var(--c-text); text-decoration: none; }
.news-card__link::after { content: ""; position: absolute; inset: 0; z-index: 1; } /* cała karta klikalna */
.news-card__link:focus-visible { outline: none; }
.news-card:has(.news-card__link:focus-visible) { outline: 3px solid var(--c-felt); outline-offset: 2px; }
.news-card__text {
  margin: var(--space-2) 0 0; color: var(--c-muted); font-size: 0.9375rem; overflow-wrap: anywhere;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; line-clamp: 3; overflow: hidden;
}
.news-card__more { margin: auto 0 0; padding-top: var(--space-4); color: var(--c-gold-light); font-size: var(--fs-sm); font-weight: 600; }
.news-card__arrow { display: inline-block; transition: transform 0.2s; }
@media (hover: hover) {
  .news-card:hover { transform: translateY(-3px); box-shadow: var(--shadow); }
  .news-card:hover .news-card__img, .news-card:hover .news-card__backdrop { transform: scale(1.04); }
  .news-card:hover .news-card__backdrop { transform: scale(1.2); }
  .news-card:hover .news-card__arrow { transform: translateX(4px); }
}
@media (prefers-reduced-motion: reduce) {
  .news-card, .news-card__img, .news-card__backdrop, .news-card__arrow, .carousel__dot::before { transition: none; }
  .news-card:hover { transform: none; }
}

/* Statystyki: skok do sekcji, znacznik turnieju kobiet w tabeli zwycięzców */
.jump { margin: var(--space-4) 0 0; }
.tag--women { border-color: #d98ab4; color: #f2b8d6; }
.table--winners .cell-name .tag { margin-left: var(--space-1); }

/* Profil właściciela: motto i opis od Radka */
.page-head .profile-motto { color: var(--c-gold-light); font-family: var(--font-head); }
.profile-bio { display: grid; gap: var(--space-3); max-width: 70ch; margin-top: var(--space-3); color: var(--c-muted); }
.profile-bio p { margin: 0; }
.profile-bio + .owner-panel__highlights--profile { margin-top: var(--space-5); }

/* Miniatury wpisów z Facebooka: poziome zdjęcia kadrowane bliżej góry (głowy), pojedyncze w proporcji 4:3 zamiast 16:9;
   pionowe zdjęcia w całości na rozmytym tle z tego samego zdjęcia (ten sam plik, jedno pobranie), bo przycięte ucinały głowy i sylwetki */
.post__images img { object-position: 50% 30%; }
.post__images--1 img { aspect-ratio: 4 / 3; }
.post__tall { position: relative; display: block; overflow: hidden; aspect-ratio: 16 / 10; background: #000; }
.post__images--1 .post__tall { aspect-ratio: 4 / 3; }
.post__images .post__tall img { position: absolute; inset: 0; width: 100%; height: 100%; aspect-ratio: auto; object-fit: contain; object-position: 50% 50%; background: none; }
.post__images .post__tall .post__backdrop { object-fit: cover; filter: blur(18px) brightness(0.5); transform: scale(1.15); }
/* Wpis bez zdjęć: zaślepka z logo jak w karuzeli na Start (.news-card__media--empty) */
.post__images--empty { display: grid; place-items: center; aspect-ratio: 4 / 3; background: radial-gradient(circle at 50% 40%, #1d3a4f, var(--c-bg) 75%); }
.post__images--empty .post__logo { width: 62%; height: auto; aspect-ratio: auto; object-fit: contain; background: none; opacity: 0.9; }

/* Wyniki (przegląd 2026-10-23): od 1280 px bez osobnej kolumny „Cykl” (cykl widać z plakietki i małego znacznika pod nazwą),
   szersza kolumna „Turniej”, żeby długie nazwy nie łamały się na 4–5 linii. Poniżej 1280 px karta pokazuje znacznik w pierwszej linii. */
.cell-name__text { display: grid; justify-items: start; gap: var(--space-1); min-width: 0; }
.cell-name__tag { display: none; }
@media (min-width: 1280px) {
  .table--results th:nth-child(3), .table--results .cell-series { display: none; }
  .cell-name__tag { display: inline-block; font-size: 0.75rem; }
  .table--results .cell-name { min-width: 22rem; }
  .table--results .cell-date { width: 6.5rem; }
  .table--results td:nth-child(6) { min-width: 15rem; }
}
/* Turnieje w trakcie: przygaszony wiersz i znacznik zamiast samego tekstu */
.tag--running { border-style: dashed; border-color: var(--c-muted); color: var(--c-muted); }
@media (min-width: 1280px) {
  .table--results .is-running td { color: var(--c-muted); }
  .table--results .is-running .series-badge { opacity: 0.6; }
  .table--results .is-running a { color: var(--c-muted); }
}

/* Tabele statystyk (przegląd 2026-10-23, A3/A4): nagłówek dwupoziomowy z grupami „w tym zwycięstw” i „Podium”
   oddzielonymi pionową linią; na telefonie tylko #, Zawodnik, Zwycięstwa, Podia, Starty (szczegóły po kliknięciu nazwiska). */
.table--stats thead th { vertical-align: bottom; }
.table--stats .th-group { text-align: center; color: var(--c-muted); font-weight: 600; border-bottom-color: var(--c-line); padding-bottom: var(--space-1); }
.table--stats .col-group-start { border-left: 1px solid var(--c-line); }
.table--stats .col-compact, .table--stats .label-short { display: none; }
.table--stats abbr { text-decoration: none; }
@media (max-width: 719.98px) {
  .table--stats .col-detail, .table--stats .label-long { display: none; }
  .table--stats .label-short { display: inline; }
  .table--stats th, .table--stats td { padding-inline: var(--space-2); }
  .table--stats .col-compact { display: table-cell; }
  .table--stats .col-group-start { border-left: 0; }
  .table--stats .num { min-width: 0; padding-inline: var(--space-2); }
  .table--stats th:nth-child(2), .table--stats td:nth-child(2) { box-shadow: none; min-width: 0; position: static; }
  .table--stats th:nth-child(1), .table--stats td:nth-child(1) { position: static; }
  .table--stats .cell-name { min-width: 0; }
}
@media (max-width: 399.98px) {
  .table--stats { font-size: 0.85rem; }
  .table--stats th:nth-child(1), .table--stats td:nth-child(1) { min-width: 1.75rem; width: 1.75rem; padding-inline: var(--space-1); }
  .table--stats th, .table--stats td, .table--stats .num { padding-inline: 0.375rem; }
  .table--stats thead th { font-size: 0.8rem; }
}

/* Powiększenie zdjęć wpisu (okno <dialog> tworzone przez main.js): strzałki, klawiatura, przesuwanie palcem, miniatury */
.lightbox {
  width: 100vw; height: 100vh; height: 100dvh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0;
  background: rgb(8 8 7 / 0.96); color: var(--c-text); overflow: hidden;
}
.lightbox::backdrop { background: rgb(0 0 0 / 0.6); }
.lightbox[open] { display: grid; grid-template-rows: auto minmax(0, 1fr) auto; }
html.has-lightbox { overflow: hidden; }
.lightbox__bar { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding: var(--space-3) var(--space-4); }
.lightbox__count { margin: 0; color: var(--c-muted); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; }
.lightbox__stage { position: relative; display: grid; place-items: center; min-height: 0; margin: 0; padding: 0 var(--space-3); touch-action: pan-y pinch-zoom; }
.lightbox__img {
  max-width: 100%; max-height: 100%; width: auto; height: auto; object-fit: contain; border-radius: var(--radius);
  box-shadow: 0 20px 60px rgb(0 0 0 / 0.6); transition: opacity 0.2s; user-select: none; -webkit-user-drag: none;
}
.lightbox__img.is-loading { opacity: 0.25; }
.lightbox__btn {
  display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; padding: 0; flex: none;
  border: 1px solid rgb(203 189 146 / 0.4); border-radius: 50%; background: rgb(28 26 23 / 0.85); color: var(--c-gold-light); cursor: pointer;
  transition: background-color 0.2s, border-color 0.2s, color 0.2s;
}
.lightbox__btn svg { width: 22px; height: 22px; }
.lightbox__btn:hover { background: var(--c-surface-2); border-color: var(--c-gold); color: var(--c-text); }
.lightbox__nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; }
.lightbox__nav--prev { left: var(--space-4); }
.lightbox__nav--next { right: var(--space-4); }
.lightbox__nav[hidden] { display: none; }
@media (max-width: 719px) {
  .lightbox__stage { padding: 0; }
  .lightbox__img { border-radius: 0; }
  .lightbox__nav { top: auto; bottom: var(--space-3); transform: none; width: 44px; height: 44px; }
  .lightbox__nav--prev { left: var(--space-3); }
  .lightbox__nav--next { right: var(--space-3); }
}
.lightbox__thumbs { display: flex; justify-content: center; gap: var(--space-2); padding: var(--space-3) var(--space-4) var(--space-4); }
.lightbox__thumbs[hidden] { display: none; }
.lightbox__thumb {
  width: 64px; height: 48px; padding: 0; border: 2px solid transparent; border-radius: var(--radius); overflow: hidden; background: #000;
  opacity: 0.5; cursor: pointer; transition: opacity 0.2s, border-color 0.2s;
}
.lightbox__thumb img { width: 100%; height: 100%; object-fit: cover; }
.lightbox__thumb:hover { opacity: 0.85; }
.lightbox__thumb[aria-current="true"] { opacity: 1; border-color: var(--c-gold-light); }
@media (prefers-reduced-motion: reduce) { .lightbox__img, .lightbox__btn, .lightbox__thumb { transition: none; } }

/* Przegląd 2026-10-23, A7 i C: złoto tylko w nagłówkach sekcji, medalach i linkach; nagłówki tabel spokojniejsze.
   Mocniejszy kontrast sekcji naprzemiennych (było #1c1a17 na #121110, ledwie widoczne). */
:root { --c-section-alt: #1f1c18; }
.section--alt { background: var(--c-section-alt); }
@media (max-width: 719.98px) { .section--alt .table--stats { --stick-bg: var(--c-section-alt); } }
.table th { color: var(--c-muted); }
/* Wiersz sumy („Razem”) wygląda tak samo we wszystkich tabelach */
.table .row-total th, .table .row-total td { border-top: 2px solid var(--c-gold); background: var(--c-surface-2); }
/* Skuteczność: kolumna pomocnicza, przygaszona; przy mniej niż 5 startach kursywa i podpowiedź w title */
.table--stats .cell-rate { color: var(--c-muted); }
.table--stats .cell-rate.is-few { font-style: italic; cursor: help; } /* bez opacity: kontrast AA */

/* Wyniki ↔ Aktualności (2026-10-24): relacja z turnieju na stronie wyniku, link do wyników na stronie wpisu, znacznik na liście */
ul.story-list { margin: 0; padding: 0; list-style: none; display: grid; gap: var(--space-2); }
.story-list a { display: grid; gap: 2px; padding: var(--space-2) var(--space-3); border: 1px solid var(--c-line); border-left: 3px solid var(--c-gold); border-radius: var(--radius); background: var(--c-bg); color: var(--c-text); text-decoration: none; }
.story-list a:hover { border-color: var(--c-gold); }
.story-list a:hover .story-list__title { color: var(--c-gold-light); }
.story-list__title { font-weight: 600; overflow-wrap: anywhere; }
.story-list__date { color: var(--c-muted); font-size: var(--fs-sm); }
.story-link { display: inline-flex; align-items: center; min-height: 24px; margin-block: -2px; gap: 0.3em; color: var(--c-gold-light); font-size: 0.78rem; font-weight: 600; text-decoration: underline; text-decoration-color: rgb(203 189 146 / 0.45); text-underline-offset: 2px; } /* cel dotyku min. 24 px (WCAG 2.5.8), ujemny margines: wiersz bez zmiany wysokości */
.story-link::before { content: ""; width: 0.8em; height: 0.65em; border: 1.5px solid currentColor; border-radius: 1px; box-shadow: inset 0 2px 0 -0.5px currentColor; }
.story-link:hover { text-decoration-color: currentColor; }
.post__results { margin: var(--space-2) 0 0; color: var(--c-muted); }
.post__results-label { margin-right: 0.35em; }
.post__results a { font-weight: 600; }
.page-head .story-link { margin-left: var(--space-2); font-size: var(--fs-sm); padding-block: 0.5em; }


.partners__cta { margin: var(--space-5) 0 0; text-align: center; font-size: var(--fs-sm); }
.partners__cta a { display: inline-flex; align-items: center; min-height: var(--tap); font-weight: 600; }

/* Sukcesy PZBil na telefonie (2026-10-24): zamiast tabeli przewijanej w bok (590 px w ramce 236 px na 320 px, nazwa turnieju ucięta)
   zwarty wiersz w dwóch liniach: medal i turniej, pod spodem sezon · odmiana · kategoria (siatka 4 kolumn). Wierszy tyle samo, bez kart */
@media (max-width: 719.98px) {
  .table-wrap:has(.table--pzbil) { overflow: visible; }
  .table--pzbil, .table--pzbil tbody { display: block; }
  .table--pzbil thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .table--pzbil tbody tr { display: grid; grid-template-columns: 2.25rem auto auto minmax(0, 1fr); align-items: baseline; padding: var(--space-2) var(--space-3); border-bottom: 1px solid var(--c-line); }
  .table--pzbil tbody tr:last-child { border-bottom: 0; }
  .table--pzbil td, .table--pzbil th[scope="row"] { display: block; padding: 0; border: 0; background: none; white-space: normal; }
  .table--pzbil td[data-label="Medal"] { grid-column: 1; grid-row: 1; }
  .table--pzbil th[scope="row"] { grid-column: 2 / -1; grid-row: 1; min-width: 0; overflow-wrap: anywhere; }
  .table--pzbil td[data-label="Sezon"] { grid-column: 2; grid-row: 2; }
  .table--pzbil td[data-label="Odmiana"] { grid-column: 3; grid-row: 2; }
  .table--pzbil td[data-label="Kategoria"] { grid-column: 4; grid-row: 2; }
  .table--pzbil td[data-label="Sezon"], .table--pzbil td[data-label="Odmiana"], .table--pzbil td[data-label="Kategoria"] { color: var(--c-muted); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; }
  .table--pzbil td[data-label="Odmiana"]::before, .table--pzbil td[data-label="Kategoria"]::before { content: "·"; margin-inline: 0.4em; }
}

/* Tabele medalowe na desktopie (2026-10-24): na pełnej szerokości kontenera (1134 px) nazwa zawodów miała 683 px, a liczby stały
   daleko po prawej; tabela w kolumnie maks. 52 rem, wyrównana do lewej jak tytuł i wstęp sekcji */
@media (min-width: 1000px) {
  .table-wrap:has(> .table--club-medals) { max-width: 52rem; }
  .table-wrap:has(> .table--summary) { max-width: 44rem; } /* podsumowanie zawodnika (profil, /wyniki?q=): 6 kolumn, 3–8 wierszy */
}
/* Tabele statystyk i zwycięzców cyklu na tablecie (720–999 px): przy odstępach 12 px miały 662–702 px w ramce 654–687 px (przewijanie o 8–30 px) */
@media (min-width: 720px) and (max-width: 999.98px) {
  .table--stats th, .table--stats td, .table--winners th, .table--winners td { padding-inline: 0.4rem; }
}
/* Klasyfikacja turnieju: nazwiska z podium pogrubione, żeby było widać, kto wygrał, zanim wzrok dojdzie do medalu */
.table--standings tr.is-podium td:last-child { font-weight: 600; }
/* Podsumowanie zawodnika (profil, /wyniki?q=) poniżej 360 px: tabela 280 px nie mieściła się w karcie (252 px, „Starty” ucięte),
   więc ramka tabeli sięga krawędzi karty (+32 px) zamiast przewijania w bok */
@media (max-width: 359.98px) {
  .card > .table-wrap:has(> .table--summary) { margin-inline: calc(-1 * var(--space-4)); border-inline: 0; border-radius: 0; }
}
/* Tabele medalowe na /statystyki poniżej 360 px: 295–321 px w ramce 286 px, więc tabela na całą szerokość ekranu (bez bocznych ramek) */
@media (max-width: 359.98px) {
  .table-wrap:has(> .table--club-medals) { margin-inline: calc(-1 * var(--space-4)); border-inline: 0; border-radius: 0; }
  .table--club-medals th, .table--club-medals td { padding-inline: 0.25rem; }
  .table--club-medals th:first-child, .table--club-medals td:first-child { padding-left: var(--space-3); }
  .table--club-medals th:last-child, .table--club-medals td:last-child { padding-right: var(--space-3); }
  .table--club-medals th[scope="row"] { min-width: 6rem; }
}
/* Klasyfikacja turnieju: kolumna „Miejsce” tak wąska jak nagłówek, numer i medal na środku (wcześniej numer przy prawej krawędzi 96 px od nazwiska) */
.table--standings th:first-child, .table--standings td.num { width: 1%; text-align: center; }
/* Turnieje z dni sąsiedniego miesiąca w siatce: przygaszone jak numery tych dni, link do listy ich miesiąca */
.cal-bar--other-month { opacity: 0.6; }
.cal-bar--other-month:hover, .cal-bar--other-month:focus-visible { opacity: 1; }
.post__more a { white-space: nowrap; } /* „Wyniki turnieju” nie łamie się w środku */
.team-season { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin: 0 0 var(--space-4); }
nav.team-seasons { margin: 0 0 var(--space-3); }
/* Lista wyników: znacznik cyklu i „Relacja” w jednej linii pod nazwą (wcześniej trzy linie, wiersz 92 px zamiast 69) */
.cell-name__text { display: flex; flex-wrap: wrap; align-items: center; column-gap: var(--space-3); }
.cell-name__text > a:first-child { flex-basis: 100%; }
/* Karty cykli na /statystyki: podpis kolumny liczb („Zw.”), wcześniej liczba przy nazwisku bez wyjaśnienia */
.top-list__head { display: flex; justify-content: space-between; margin: var(--space-3) 0 0; padding-bottom: var(--space-1); border-bottom: 1px solid var(--c-line); color: var(--c-muted); font-size: var(--fs-sm); font-weight: 600; }
.top-list__head + ol.top-list { margin-top: 0; }
/* /wyniki?q= (jedna osoba): wyszukany zawodnik wyróżniony na podium, żeby od razu było widać jego miejsce */
a.is-searched { padding: 0 0.25em; border-radius: 3px; background: rgb(212 175 55 / 0.2); color: var(--c-text); font-weight: 600; text-decoration-color: var(--c-medal-gold); }
/* Wyniki od 1280 px: imię i nazwisko na podium nie łamie się w środku („Wiktor / Kaczmarek”), łamanie tylko między osobami */
@media (min-width: 1280px) { .table--results a.person-name { white-space: nowrap; } }
/* Statystyki cyklu: podpisy pasków filtrów („Turnieje”, „Dywizja”, „Sezon”/„Edycja”), wcześniej dwa paski z czerwonym aktywnym przyciskiem bez wyjaśnienia */
.filter-label { margin: 0 0 var(--space-2); color: var(--c-muted); font-size: var(--fs-sm); font-weight: 600; }
/* Mecze drużyn: nasza drużyna pogrubiona w nazwie meczu (wynik jest podany jako gospodarz : gość), przeciwnik zwykłą czcionką */
.table--league th[scope="row"] { font-weight: 400; }
.table--league .team-us { font-weight: 700; color: var(--c-text); }
.recent__story { margin-left: var(--space-3); } /* „Relacja” obok miejsca w ostatnich turniejach na profilu */
/* Rekordy cyklu na desktopie: etykieta i wartość blisko siebie (na pełnej szerokości 1134 px dzieliło je ok. 1000 px) */
@media (min-width: 600px) { dl.facts--records { max-width: 44rem; } }

/* Wydruk (2026-10-24): ciemny motyw na papierze dawał jasny tekst na białym tle (przeglądarki pomijają tła).
   Czarny tekst na białym, bez nawigacji, filtrów, przycisków i pasa partnerów; tabele w całości, bez przewijania */
@media print {
  :root { --c-bg: #fff; --c-surface: #fff; --c-surface-2: #f2f2f2; --c-section-alt: #fff; --c-text: #000; --c-muted: #444; --c-line: #bbb; --c-gold-light: #000; --c-gold: #777; }
  html, body { background: #fff !important; color: #000 !important; }
  .site-header, .skip-link, .nav-toggle, .partners, .site-footer, .filter-bar, .filter-label, .filters, .btn, .btn-row, .cal-subscribe, .post-nav, .gallery__hint, .story-link, .carousel__nav { display: none !important; }
  .section, .page-head { padding-block: 0.5rem !important; background: none !important; }
  .card, .table-wrap, .pitch-numbers__item, .pitch-card__link, .story-list a { background: none !important; box-shadow: none !important; }
  .table-wrap { overflow: visible !important; border-color: #bbb; }
  .table th, .table td { white-space: normal; position: static !important; background: none !important; color: #000; }
  a { color: #000 !important; text-decoration: none !important; }
  .page-title, .section__title, .card__title { color: #000; }
  details:not([open]) > :not(summary) { display: none; }
  tr, .card, .cal-week { break-inside: avoid; }
}
/* Wyjaśnienie kolumny „Skuteczność” pod tabelą statystyk, tylko tam, gdzie kolumna jest widoczna (od 720 px) */
.stats-note { margin-top: var(--space-2); font-size: var(--fs-sm); }
@media (max-width: 719.98px) { .stats-note { display: none; } }
a.tag--link { text-decoration: none; } a.tag--link:hover { background: rgb(163 150 109 / 0.18); } /* drużyna na profilu jako link do jej sekcji */
@media (max-width: 719.98px) { a.tag--link { display: inline-flex; align-items: center; min-height: var(--tap); } }
/* Telefon w poziomie (okno niższe niż 500 px): przyklejony nagłówek zajmował 85 z 375 px wysokości, więc przewija się z treścią */
@media (max-height: 499.98px) and (orientation: landscape) {
  .site-header { position: static; }
  html { scroll-padding-top: var(--space-4); }
}
/* Lista wyników: wiersz z rokiem przy zmianie roku (290 turniejów bez podziału trudno było przeglądać) */
.table--results .year-row th, .table--winners .year-row th { padding: var(--space-4) var(--space-3) var(--space-2); background: var(--c-surface-2); color: var(--c-gold-light); font-family: var(--font-head); font-size: var(--fs-h3); font-weight: 400; text-align: left; }
.year-row__count { margin-left: var(--space-2); color: var(--c-muted); font-family: var(--font-body); font-size: var(--fs-sm); }
.table--results tbody tr.year-row:hover, .table--winners tbody tr.year-row:hover { background: none; }
@media (max-width: 1279.98px) {
  .table--results tbody tr.year-row { display: block; grid-column: 1 / -1; margin: var(--space-4) 0 0; padding: 0; background: none; border: 0; }
  .table--results tbody tr.year-row:first-child { margin-top: 0; }
  .table--results .year-row th { display: block; padding: 0 0 var(--space-1); background: none; border-bottom: 1px solid var(--c-line); }
}
.jump--years { margin: 0 0 var(--space-4); } /* /wyniki: skok do roku nad długą listą */
/* Menu z „Współpraca” (8 pozycji, decyzja Adama 2026-10-25): przycisk Menu do 1280 px; od 1280 px pozycje z oddechem (ok. 22 px między napisami),
   a przycisk rezerwacji jako czerwony kwadrat z ikoną telefonu jak na telefonie (napis „Zarezerwuj stół” dla czytników i w podpowiedzi).
   Kontener ma od 1320 px stałe 1200 px, więc pełny napis i swobodne menu nie mieszczą się razem na żadnej szerokości desktopu */
@media (min-width: 1280px) {
  /* menu wypełnia miejsce między logo a przyciskami: bez pustej przerwy za logo, wolne miejsce rozłożone między pozycje */
  .site-nav { flex: 1 1 auto; margin-left: 0; }
  .site-nav ul { gap: 0.25rem; justify-content: space-between; }
  .site-nav a { padding-inline: 0.55rem; font-size: 0.92rem; }
  .site-header__inner { gap: var(--space-3); }
  .site-header__cta { width: var(--tap); padding-inline: 0; }
  .site-header__cta span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}

/* Współpraca jako prezentacja dla sponsora (2026-10-25): sekcja otwierająca ze zdjęciem, sekcje jak slajdy z numerem,
   duże kafle liczb, karty cykli i drużyn, trener z medalami, ściana partnerów i mocne wezwanie do kontaktu */
.pitch-hero { position: relative; isolation: isolate; display: flex; align-items: flex-end; min-height: min(86vh, 760px); overflow: hidden; background: var(--c-bg); }
.pitch-hero__photo, .pitch-hero__photo img { position: absolute; inset: 0; width: 100%; height: 100%; }
.pitch-hero__photo img { object-fit: cover; object-position: 50% 60%; } /* zdjęcie drużyny 1920 px (2026-10-25): twarze w środku kadru */
.pitch-hero::after { content: ""; position: absolute; inset: 0; z-index: 0; background: linear-gradient(180deg, rgb(18 17 16 / 0.15) 0%, rgb(18 17 16 / 0.55) 45%, var(--c-bg) 100%), linear-gradient(90deg, rgb(18 17 16 / 0.75) 0%, rgb(18 17 16 / 0) 70%); }
.pitch-hero__content { position: relative; z-index: 1; padding-block: var(--space-8) var(--space-7); }
.pitch-hero__content .lead { max-width: 40rem; color: var(--c-text); }
/* Etykieta jak w hero Startu: Marcellus bez wersalików, złota kreska przed tekstem */
.pitch-hero__kicker { display: flex; align-items: center; gap: var(--space-3); margin: 0 0 var(--space-3); color: var(--c-gold-light); font-family: var(--font-head); font-size: var(--fs-lead); letter-spacing: 0.02em; text-shadow: 0 1px 2px rgb(0 0 0 / 0.9), 0 2px 12px rgb(0 0 0 / 0.6); }
.pitch-hero__kicker::before { content: ""; flex: none; width: 32px; height: 2px; background: var(--c-gold); }
.pitch-hero .page-title { font-size: clamp(2.4rem, 1.6rem + 3.6vw, 4.25rem); text-shadow: 0 2px 18px rgb(0 0 0 / 0.6); }
.pitch-slide { position: relative; padding-block: var(--space-8); }
.pitch-slide__step { margin: 0 0 var(--space-2); color: var(--c-gold); font-family: var(--font-head); font-size: 1.1rem; letter-spacing: 0.2em; } /* złoto 6,4:1 (czerwień z logo miała na tle 2,9:1) */
.pitch-slide__step::after { content: ""; display: inline-block; width: 3rem; height: 1px; margin-left: var(--space-3); background: var(--c-gold); vertical-align: middle; }
.pitch-slide__lead { max-width: 46rem; }
ul.pitch-numbers { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: var(--space-4); margin: var(--space-6) 0 var(--space-4); padding: 0; list-style: none; }
.pitch-numbers__item { display: grid; align-content: start; gap: var(--space-2); padding: var(--space-6) var(--space-5); border: 1px solid var(--c-line); border-radius: var(--radius-lg); background: linear-gradient(160deg, var(--c-surface-2), var(--c-surface)); box-shadow: inset 0 3px 0 var(--c-gold); }
.pitch-numbers__value { font-family: var(--font-head); font-size: clamp(2.6rem, 2rem + 2.4vw, 3.75rem); font-weight: 400; line-height: 1; color: var(--c-gold-light); font-variant-numeric: tabular-nums; }
.pitch-numbers__label { color: var(--c-muted); }
ul.pitch-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); gap: var(--space-4); margin: var(--space-6) 0 0; padding: 0; list-style: none; }
.pitch-card__link { display: flex; flex-direction: column; gap: var(--space-2); height: 100%; padding: var(--space-5); border: 1px solid var(--c-line); border-top: 3px solid var(--c-red); border-radius: var(--radius-lg); background: var(--c-surface); color: var(--c-text); text-decoration: none; transition: border-color 0.2s ease, transform 0.2s ease; }
.pitch-card__link:hover { border-color: var(--c-gold); color: var(--c-text); transform: translateY(-2px); }
.pitch-card__badge { margin-bottom: var(--space-2); object-fit: contain; background: #fff; } /* logo QUAY ma inne proporcje niż odznaki cykli */
.pitch-card__title { font-family: var(--font-head); font-size: 1.35rem; color: var(--c-gold-light); }
.pitch-card__text { color: var(--c-muted); }
.pitch-card__stat { margin-top: auto; padding-top: var(--space-3); border-top: 1px solid var(--c-line); }
.pitch-card__stat strong { font-family: var(--font-head); font-size: 1.75rem; font-weight: 400; color: var(--c-text); }
.pitch-split { display: grid; gap: var(--space-6); align-items: center; }
@media (min-width: 900px) { .pitch-split { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: var(--space-7); } }
ul.pitch-teams { display: grid; gap: var(--space-3); margin: var(--space-5) 0 0; padding: 0; list-style: none; }
.pitch-team a { display: grid; gap: 2px; padding: var(--space-4) var(--space-5); border: 1px solid var(--c-line); border-left: 4px solid var(--c-gold); border-radius: var(--radius); background: var(--c-surface); color: var(--c-text); text-decoration: none; }
.pitch-team a:hover { border-color: var(--c-gold); color: var(--c-text); }
.pitch-team__name { font-weight: 600; font-size: var(--fs-lead); }
.pitch-team__meta { color: var(--c-muted); font-size: var(--fs-sm); }
.pitch-coach { margin: 0; justify-self: center; }
.pitch-coach img { width: min(100%, 22rem); height: auto; aspect-ratio: 1; object-fit: cover; border-radius: 50%; border: 3px solid var(--c-gold); box-shadow: 0 0 0 10px rgb(163 150 109 / 0.12), var(--shadow); }
ul.pitch-medals { display: flex; flex-wrap: wrap; gap: var(--space-3); margin: var(--space-5) 0 var(--space-1); padding: 0; list-style: none; }
.pitch-medals__item { display: inline-flex; align-items: center; gap: var(--space-2); padding: var(--space-2) var(--space-4) var(--space-2) var(--space-2); border: 1px solid var(--c-line); border-radius: 999px; background: var(--c-bg); }
.pitch-medals__item .medal { width: 2rem; height: 2rem; font-size: 0.95rem; }
.pitch-medals__item strong { font-family: var(--font-head); font-size: 1.5rem; font-weight: 400; }
.pitch-medals__note { margin: 0 0 var(--space-4); font-size: var(--fs-sm); }
ul.pitch-highlights { display: grid; gap: var(--space-2); margin: 0 0 var(--space-4); padding: 0; list-style: none; }
.pitch-highlights li { position: relative; padding: var(--space-2) var(--space-3) var(--space-2) 2.25rem; border-radius: var(--radius); background: var(--c-bg); }
.pitch-highlights li::before { content: "★"; position: absolute; left: var(--space-3); color: var(--c-medal-gold); }
ul.pitch-offer { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); gap: var(--space-4); margin: var(--space-6) 0 0; padding: 0; list-style: none; }
.pitch-offer__item { display: flex; gap: var(--space-4); align-items: flex-start; padding: var(--space-5); border: 1px solid var(--c-line); border-radius: var(--radius-lg); background: var(--c-surface); font-size: var(--fs-lead); }
.pitch-offer__icon { display: inline-flex; align-items: center; justify-content: center; flex: none; width: 2.75rem; height: 2.75rem; border-radius: 50%; background: var(--c-red); color: #fff; font-family: var(--font-head); font-size: 1.25rem; }
.pitch-partners .partners { padding-block: var(--space-7); }
.pitch-cta { padding-block: var(--space-8); background: radial-gradient(ellipse at 50% 0%, rgb(186 24 27 / 0.35), transparent 65%), var(--c-section-alt); border-top: 1px solid var(--c-line); text-align: center; }
.pitch-cta__inner { display: grid; justify-items: center; gap: var(--space-3); }
.pitch-cta__title { font-size: clamp(2.2rem, 1.6rem + 2.6vw, 3.5rem); color: var(--c-gold-light); }
.pitch-cta__buttons { justify-content: center; }
.pitch-cta__mail { overflow-wrap: anywhere; }
@media (max-width: 599.98px) {
  .pitch-slide, .pitch-cta { padding-block: var(--space-7); }
  .pitch-numbers__item { padding: var(--space-5) var(--space-4); }
  .pitch-cta__buttons .btn { width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .pitch-card__link { transition: none; }
  .pitch-card__link:hover { transform: none; }
}
/* Otwarcie „Współpracy” od 900 px: zdjęcie po prawej (puchar w środku zdjęcia nie jest zasłonięty tekstem), tekst na tle po lewej */
@media (min-width: 900px) {
  .pitch-hero { min-height: min(80vh, 640px); align-items: center; }
  .pitch-hero__photo { left: 34%; width: 66%; }
  .pitch-hero::after { background: linear-gradient(90deg, var(--c-bg) 33%, rgb(18 17 16 / 0.6) 42%, rgb(18 17 16 / 0) 60%), linear-gradient(180deg, rgb(18 17 16 / 0) 70%, var(--c-bg) 100%); }
  .pitch-hero__content { padding-block: var(--space-8); }
  .pitch-hero__content > *, .pitch-hero__content .lead { max-width: 30rem; }
  .pitch-hero .page-title { font-size: clamp(2.4rem, 1.4rem + 2.4vw, 3.6rem); }
}
@media (min-width: 900px) { ul.pitch-numbers { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* 6 kafli liczb jako 3 + 3 */
/* „Współpraca”: partnerzy jako ściana logotypów (siatka większych kafli) zamiast wąskiego pasa */
.pitch-partners .partners__title { font-family: var(--font-head); font-size: var(--fs-h2); font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--c-text); margin-bottom: var(--space-5); }
/* Ściana partnerów na /wspolpraca: zawsze siatka 3 × 3 (decyzja Adama 2026-10-25, 9 partnerów) */
.pitch-partners .partners__list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: var(--space-3); max-width: 48rem; margin-inline: auto; }
.pitch-partners .partners__item a, .pitch-partners .partners__plain { display: flex; align-items: center; justify-content: center; height: 100%; min-height: 7rem; padding: var(--space-3); border-radius: var(--radius-lg); }
.pitch-partners .partners__item img, .pitch-partners .partners__item--large img { height: 64px; max-width: 100%; padding: 4px 6px; object-fit: contain; }
/* Otwarcie „Współpracy” poniżej 900 px: zdjęcie nad tekstem (16:9, przycięte niebo i trawa) */
@media (max-width: 899.98px) {
  .pitch-hero { display: block; min-height: 0; }
  .pitch-hero__photo, .pitch-hero__photo img { position: static; height: auto; }
  .pitch-hero__photo img { aspect-ratio: 16 / 9; }
  .pitch-hero::after { inset: auto 0 0; height: 0; }
  .pitch-hero__content { padding-block: var(--space-5) var(--space-6); }
}
@media (min-width: 900px) and (max-width: 1199.98px) { .pitch-hero__photo { left: 46%; width: 54%; } .pitch-hero::after { background: linear-gradient(90deg, var(--c-bg) 45%, rgb(18 17 16 / 0.6) 52%, rgb(18 17 16 / 0) 66%), linear-gradient(180deg, rgb(18 17 16 / 0) 70%, var(--c-bg) 100%); } .pitch-hero__content > *, .pitch-hero__content .lead { max-width: 25rem; } } /* „Współpraca” 900–1199 px: tekst nie nachodzi na twarze */

/* Wspólny pasek filtrów (2026-10-25): jeden wygląd dla Aktualności, sezonów drużyn, Wyników, Kalendarza i Statystyk.
   Aktywny znacznik w złocie jak paginacja (bez niebieskiego i kolorów cykli), nieaktywne na ciemnym tle z cienką ramką */
.filter { background: var(--c-surface); border-color: #4a443b; transition: border-color 0.15s ease, color 0.15s ease; }
.filter-bar .filter:hover { border-color: var(--c-gold); color: var(--c-gold-light); }
.filter-bar .filter[aria-current="page"], .filter-bar .filter[aria-pressed="true"],
.filter-bar .filter[aria-current="page"]:hover, .filter-bar .filter[aria-pressed="true"]:hover {
  background: var(--c-gold); border-color: var(--c-gold); color: #1a1712; box-shadow: 0 0 0 2px rgb(163 150 109 / 0.3);
}
/* Pasek lat (Aktualności): zawsze jeden rząd, mniejsze znaczniki, „Najnowsze” oddzielone od lat; gdy brakuje miejsca,
   przewijanie w bok zamiast zawijania (zawijanie zależne od czcionki dawało skok układu CLS 0,36 przy pierwszej wizycie) */
.filter-bar--years { flex-wrap: nowrap; gap: var(--space-1); overflow-x: auto; scrollbar-width: none; padding-block: 3px; }
.filter-bar--years::-webkit-scrollbar { display: none; }
.filter-bar--years .filter { flex: none; white-space: nowrap; padding-inline: 0.7em; font-variant-numeric: tabular-nums; }
.filter-bar--years .filter--lead { margin-right: var(--space-3); }
@media (min-width: 720px) { .filter-bar--years { padding-inline: 3px; } }
/* Sezon drużyny: wynik jako małe kafle (liczba + opis) zamiast jednej długiej linii */
.season-stats { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.season-stat { display: inline-flex; align-items: baseline; gap: 0.35em; padding: 0.3em 0.75em; border: 1px solid var(--c-line); border-radius: var(--radius); background: var(--c-surface); color: var(--c-muted); font-size: var(--fs-sm); line-height: 1.3; }
.season-stat strong { color: var(--c-text); font-size: 1.15rem; font-variant-numeric: tabular-nums; }
.season-stat--won strong { color: #8fd19e; }
.season-stat--lost strong { color: #f0a3a4; }
.season-stat--balance { border-color: rgb(163 150 109 / 0.5); }
.season-stat--balance strong { color: var(--c-gold-light); }

/* Partnerzy (decyzja Adama 2026-10-25): wszystkie logotypy tak duże jak QUAY i Formuła B, kolejność bez zmian.
   Korekta optyczna klasami z partials/partners.php: --wide (proporcje > 3:1) z mniejszym logo, ale białe pole tej samej wysokości co inne (większy padding), --tall (węższe niż wysokie) wyższe.
   Telefon: siatka 3 kolumn z większym polem; 720–1119 px: zawijane rzędy; od 1120 px: jeden rząd, a gdy brakuje miejsca,
   mniejsze odstępy i ramki kafli zamiast mniejszych logotypów */
@media (max-width: 719.98px) {
  .partners__item a, .partners__plain { padding: 5px; }
  .partners__item img, .partners__item--large img { height: 58px; padding: 3px 4px; }
}
@media (min-width: 720px) {
  .partners__list { flex-wrap: wrap; gap: var(--space-3); }
  .partners__item a, .partners__plain { padding: 8px 10px; border-radius: 14px; }
  .partners__item img, .partners__item--large img { height: 80px; max-width: 220px; padding: 4px 6px; }
  .partners__item--wide img { height: 80px; max-width: 240px; padding: 19px 6px; }
  .partners__item--tall img { height: 92px; }
}
@media (min-width: 1120px) {
  .partners__list { flex-wrap: nowrap; gap: 6px; }
  .partners__item { flex: 0 1 auto; min-width: 0; }
  .partners__item a, .partners__plain { padding: 4px; border-radius: 10px; }
  .partners__item img, .partners__item--large img { height: 60px; max-width: 100%; padding: 3px 5px; }
  .partners__item--wide img { height: 60px; padding: 14px 5px; }
  .partners__item--tall img { height: 68px; }
}
/* Ściana na /wspolpraca: logotypy wypełniają kafle (wcześniej 64 px w kaflu 112 px) */
.pitch-partners .partners__item img, .pitch-partners .partners__item--large img { height: 80px; }
.pitch-partners .partners__item--wide img { height: 80px; padding: 16px 6px; }
.pitch-partners .partners__item--tall img { height: 96px; }
@media (max-width: 599.98px) { .pitch-partners .partners__item img, .pitch-partners .partners__item--large img { height: 64px; } .pitch-partners .partners__item--wide img { height: 64px; padding: 14px 6px; } .pitch-partners .partners__item--tall img { height: 76px; } }
@media (min-width: 1200px) { .partners__list { gap: 12px; } }
/* Stopka: długi adres e-mail w kolumnie Kontakt wystawał o 1 px przy ok. 745 px (przewijanie w bok na każdej stronie) */
.site-footer a { overflow-wrap: anywhere; }
.site-footer__grid > * { min-width: 0; }
/* Strona wpisu od 1100 px (decyzja Adama): tekst po lewej, zdjęcia w prawej kolumnie przyklejone przy przewijaniu; bez zdjęć jedna kolumna */
@media (min-width: 1100px) {
  .post-full--media { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); grid-template-areas: "text media" "source media"; grid-template-rows: auto 1fr; column-gap: var(--space-7); max-width: none; }
  .post-full--media .post-full__text { grid-area: text; }
  .post-full--media .post-full__source { grid-area: source; align-self: start; }
  .post-full--media .post-full__media { grid-area: media; align-self: start; position: sticky; top: calc(var(--header-h) + var(--space-4)); }
  .post-full--media .post-full__media .gallery { margin-top: 0; }
  .post-full--media .gallery--1 .gallery__img { max-height: calc(100vh - var(--header-h) - 6rem); }
}
/* Start na telefonie w poziomie (wysokość okna < 500 px, decyzja Adama): sylwetka mniejsza (ok. 70% wysokości okna) i obok tekstu
   zamiast pod nim (tekst i przyciski w lewych 56%), więc hero ma ok. 560 zamiast 690 px; plakietka zostaje na dole sylwetki */
@media (max-width: 999.98px) and (max-height: 499.98px) and (orientation: landscape) {
  .hero { --person-h-m: calc(66vh / 0.6); }
  .hero__backdrop { width: 50%; }
  .hero__content { position: relative; z-index: 2; padding-bottom: var(--space-6); }
  .hero__content > :not(.eyebrow):not(.hero__title) { max-width: 56%; }
  .hero .hero__person--cutout picture { right: calc(var(--person-h-m) * -0.3); }
  .hero__person--cutout .hero__person-caption { inset: auto var(--space-4) var(--space-3) auto; }
}
/* Start 720–999 px (decyzja Adama): „Najbliższe turnieje” i „Ostatnie wyniki” jedna pod drugą (w dwóch kolumnach po ok. 330 px
   nagłówki i karty były ściśnięte); najbliższe turnieje w dwóch kolumnach kart */
@media (min-width: 720px) and (max-width: 999.98px) {
  .home-feed { grid-template-columns: minmax(0, 1fr); gap: var(--space-7); }
  .home-feed .upcoming { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
/* „Zwycięzcy kolejnych edycji” poniżej 600 px (decyzja Adama): bez kolumn „Finalista” i „Graczy” (są na stronie wyniku),
   data, turniej i zwycięzca mieszczą się bez przewijania w bok, nazwiska zwycięzców łamią się zamiast być ucinane */
@media (max-width: 599.98px) {
  .table--winners .col-finalist, .table--winners .col-count { display: none; }
  .table--winners .cell-name, .table--winners td:nth-child(n+3) { min-width: 0; white-space: normal; overflow-wrap: break-word; }
  .table--winners td.col-winner { min-width: 6.5rem; }
  .table--winners td:first-child { white-space: nowrap; font-size: var(--fs-sm); }
  .table--winners th, .table--winners td { padding-inline: 0.35rem; }
  .table--winners .cell-name { overflow-wrap: anywhere; }
  .table--winners td.col-winner .podium-item .medal { display: none; } /* kolumna i tak nazywa się „Zwycięzca”; miejsce na pełne nazwisko */
}
/* Przełącznik sezonów drużyny (team-seasons.js): w czasie ładowania blok przygaszony, po podmianie krótko się pojawia */
[data-season-part] { transition: opacity 0.2s ease; }
[data-season-part].is-loading { opacity: 0.45; }
[data-season-part].is-swapped { animation: season-in 0.25s ease; }
@keyframes season-in { from { opacity: 0.45; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  [data-season-part] { transition: none; }
  [data-season-part].is-swapped { animation: none; }
}
/* Drużyny: sezon z tytułem (np. 2021, Drużynowy Mistrz Polski) ze złotą koroną w przełączniku i znaczkiem nad bilansem */
.icon--crown { width: 1.05em; height: 1.05em; flex: none; fill: currentColor; }
.filter-bar .filter--champion { display: inline-flex; align-items: center; gap: 0.3em; border-color: var(--c-medal-gold); color: var(--c-medal-gold); }
.filter-bar .filter--champion[aria-current="page"] { background: var(--c-medal-gold); border-color: var(--c-medal-gold); color: #1a1712; }
/* Karta „Sezony w lidze” pod obecnym składem: przełącznik lat, a pod nim blok wybranego sezonu (zmienia się tylko on) */
.team-panel { margin-top: var(--space-5); padding: var(--space-4) var(--space-5) var(--space-5); background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); }
.team-panel__title { margin: 0 0 var(--space-3); font-size: var(--fs-lead); color: var(--c-gold-light); }
.team-panel nav.team-seasons { margin-bottom: var(--space-4); }
.team-season-card { padding-top: var(--space-4); border-top: 1px solid var(--c-line); }
.team-season-card__head { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin: 0 0 var(--space-3); }
.team-season-card__year { font-family: var(--font-head); font-size: var(--fs-h3); color: var(--c-text); }
.team-season-card .team-season { margin-bottom: 0; }
@media (max-width: 719.98px) { .team-panel { padding: var(--space-4); } }
.champion-badge { display: inline-flex; align-items: center; gap: var(--space-2); padding: 0.35em 0.9em; border: 1px solid var(--c-medal-gold); border-radius: 999px; background: rgb(212 175 55 / 0.12); color: var(--c-medal-gold); font-weight: 600; }
/* Skład sezonu z archiwum PZBil: nazwiska z liczbą meczów, nad obecnym składem (karty ze zdjęciami) */
.team-roster { margin: var(--space-4) 0 var(--space-3); }
.team-roster__title { margin: 0 0 var(--space-2); font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 600; color: var(--c-gold-light); }
ul.team-roster__list { display: flex; flex-wrap: wrap; gap: var(--space-2); margin: 0; padding: 0; list-style: none; }
.team-roster__item { padding: 0.3em 0.75em; border: 1px solid var(--c-line); border-radius: var(--radius); background: var(--c-surface); }
.team-roster__item .muted { font-size: var(--fs-sm); }
/* „Współpraca”: na co przeznaczamy wsparcie (treść od Adama 2026-10-25), lista w dwóch kolumnach od 600 px */
.pitch-support__title { margin: var(--space-7) 0 var(--space-4); font-family: var(--font-head); font-size: var(--fs-h3); font-weight: 400; }
ul.pitch-support { display: grid; grid-template-columns: minmax(0, 1fr); max-width: 48rem; gap: var(--space-2) var(--space-5); margin: 0; padding: 0; list-style: none; }
.pitch-support li { position: relative; padding-left: 1.6rem; font-size: var(--fs-lead); }
.pitch-support li::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.6rem; height: 0.6rem; border-radius: 50%; background: var(--c-gold); }
@media (min-width: 600px) { ul.pitch-support { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (min-width: 900px) { ul.pitch-offer { grid-template-columns: repeat(3, minmax(0, 1fr)); } } /* 6 kafli oferty jako 3 + 3 */
/* Pas partnerów (decyzja Adama 2026-10-25): zawsze równe rzędy, bez sierot (wcześniej 4+4+1 przy 800 px, 4+5, 6+3).
   Do 719 px 3 × 3 (wyżej), 720–1199 px dwa rzędy 5 + 4 (siatka 10 kolumn, kafel na 2, drugi rząd wyśrodkowany),
   od 1200 px jeden rząd. Ułożone pod 9 partnerów z site.php; przy innej liczbie zmienić :nth-child. */
@media (min-width: 720px) and (max-width: 1199.98px) {
  .partners__list { display: grid; grid-template-columns: repeat(10, minmax(0, 1fr)); gap: var(--space-3); max-width: 60rem; margin-inline: auto; }
  .partners__item { grid-column: span 2; min-width: 0; }
  .partners__item:nth-child(6) { grid-column: 2 / span 2; }
  .partners__item a, .partners__plain { display: flex; align-items: center; justify-content: center; height: 100%; }
  .partners__item img, .partners__item--large img { max-width: 100%; object-fit: contain; }
}
@media (min-width: 1200px) { .partners__list { flex-wrap: nowrap; } }
/* Ściana na /wspolpraca zostaje siatką 3 × 3 */
.pitch-partners .partners__item, .pitch-partners .partners__item:nth-child(6) { grid-column: auto; }
/* Relacja na stronie wyniku (2026-10-25): tekst i zdjęcia głównego wpisu pod wynikami, jak na stronie wpisu */
.event-story { margin-top: var(--space-7); padding-top: var(--space-6); border-top: 1px solid var(--c-line); scroll-margin-top: 5rem; }
.event-story__meta { margin: 0 0 var(--space-5); color: var(--c-muted); }
.event-story__meta a { font-weight: 600; overflow-wrap: anywhere; }
.event-story__more { margin: var(--space-6) 0 var(--space-3); font-size: var(--fs-h3); }
/* Nawigacja „Nowszy / Starszy” (zrzut Adama 2026-10-25): na całą szerokość treści, oddzielona linią od tego, co nad nią.
   Wcześniej 46rem przy lewej krawędzi, więc na stronie wyniku kończyła się w połowie prawej kolumny */
.post-nav { max-width: none; margin-top: var(--space-7); padding-top: var(--space-6); border-top: 1px solid var(--c-line); }

/* ---------- Statystyki: wykresy (paski SVG z partials/bar.php, CSP nie pozwala na style w atrybutach) ---------- */
.bar { display: block; width: 100%; height: 10px; border-radius: 999px; overflow: hidden; }
.bar__track { fill: var(--c-surface-2); }
.section--alt .bar__track, .card .bar__track { fill: var(--c-line); }
.bar__fill { fill: var(--c-gold); }
.bar__gold { fill: var(--c-medal-gold); }
.bar__silver { fill: var(--c-medal-silver); }
.bar__bronze { fill: var(--c-medal-bronze); }
.dot { display: inline-block; width: 0.7em; height: 0.7em; margin-right: 0.3em; border-radius: 50%; vertical-align: baseline; }
.dot--gold { background: var(--c-medal-gold); }
.dot--silver { background: var(--c-medal-silver); }
.dot--bronze { background: var(--c-medal-bronze); }

/* Karty cykli: liczba turniejów i paski zwycięstw */
.cycle-card__count { margin: var(--space-1) 0 0; font-size: var(--fs-sm); }
.cycle-card__count strong { color: var(--c-text); font-size: 1.25rem; font-variant-numeric: tabular-nums; }
.bar-list__head { margin: var(--space-4) 0 var(--space-2); color: var(--c-muted); font-size: var(--fs-sm); font-weight: 600; }
ol.bar-list { margin-bottom: var(--space-4); display: grid; gap: var(--space-2); }
.bar-list__item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; column-gap: var(--space-3); row-gap: 3px; }
.bar-list__item .bar { grid-column: 1 / -1; height: 8px; }
.bar-list__name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bar-list__value { font-weight: 600; font-variant-numeric: tabular-nums; }
.bar-list__item:first-child .bar__fill { fill: var(--c-medal-gold); }
.more--cycles { margin-top: var(--space-6); }
.more--cycles > summary { font-size: var(--fs-lead); }
.stat-cards--small { margin-top: var(--space-4); }
@media (min-width: 720px) { .stat-cards--small { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-5); } }
@media (min-width: 1100px) { .stat-cards--small { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.stat-cards--small .series-badge { width: 54px; height: 36px; }

/* Podium rankingu wszech czasów: 2, 1, 3 obok siebie, stopnie różnej wysokości */
ol.podium { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: end; gap: var(--space-3); max-width: 46rem; margin: var(--space-5) auto var(--space-6); text-align: center; }
.podium__place { display: flex; flex-direction: column; align-items: center; gap: var(--space-1); min-width: 0; }
.podium__place--1 { order: 2; }
.podium__place--2 { order: 1; }
.podium__place--3 { order: 3; }
.podium__place .medal { width: 2.2em; height: 2.2em; font-size: 1rem; }
.podium__name { font-weight: 600; overflow-wrap: anywhere; }
.podium__wins { font-size: var(--fs-sm); }
.podium__wins strong { display: block; font-family: var(--font-head); font-size: 2rem; line-height: 1.1; color: var(--c-text); }
.podium__place .muted { font-size: 0.8rem; }
.podium__step { display: block; width: 100%; margin-top: var(--space-2); border-radius: var(--radius) var(--radius) 0 0; background: linear-gradient(180deg, var(--c-surface-2), var(--c-bg)); border: 1px solid var(--c-line); border-bottom: 0; }
.podium__place--1 .podium__step { height: 5.5rem; border-top: 3px solid var(--c-medal-gold); }
.podium__place--2 .podium__step { height: 3.75rem; border-top: 3px solid var(--c-medal-silver); }
.podium__place--3 .podium__step { height: 2.5rem; border-top: 3px solid var(--c-medal-bronze); }

/* Medale PZBil: kafle z liczbami */
.medal-kpis { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-3); margin-top: var(--space-5); }
@media (min-width: 720px) { .medal-kpis { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .medal-kpis { grid-template-columns: 1.4fr repeat(4, minmax(0, 1fr)); } }
.medal-kpi { display: flex; flex-direction: column; gap: var(--space-2); padding: var(--space-4); background: var(--c-surface); border: 1px solid var(--c-line); border-radius: var(--radius-lg); }
.medal-kpi p { margin: 0; }
.medal-kpi--main { grid-column: 1 / -1; border-color: var(--c-gold); }
@media (min-width: 1100px) { .medal-kpi--main { grid-column: auto; } }
.medal-kpi--accent { border-color: var(--c-felt); }
.medal-kpi__value { font-family: var(--font-head); font-size: 2.25rem; line-height: 1; color: var(--c-text); font-variant-numeric: tabular-nums; }
.medal-kpi--main .medal-kpi__value { font-size: 3rem; color: var(--c-medal-gold); }
.medal-kpi__label { font-weight: 600; }

/* Ikonki medali z liczbami (partials/medal-icons.php): kafelki, sezony, zawody */
.medal-icons { display: inline-flex; flex-wrap: nowrap; align-items: center; gap: var(--space-3); font-variant-numeric: tabular-nums; }
.medal-icon { display: inline-flex; align-items: center; gap: 0.3em; min-width: 3.1em; font-weight: 600; }
.medal-icon svg { width: 1.1em; height: 1.45em; flex: none; }
.medal-icon__ribbon { fill: #8a2a2c; }
.medal-icon--gold { color: var(--c-medal-gold); }
.medal-icon--silver { color: var(--c-medal-silver); }
.medal-icon--bronze { color: var(--c-medal-bronze); }
.medal-icon__disc { fill: currentColor; }
.medal-icon__rim { fill: none; stroke: rgb(0 0 0 / 0.25); stroke-width: 1.2; }
.medal-icon__count { color: var(--c-text); }
.medal-icon--none svg { opacity: 0.3; }
.medal-icon--none .medal-icon__count { color: var(--c-muted); font-weight: 400; }
.medal-icons--lg { gap: var(--space-4); font-size: 1.15rem; }
/* Ikonka w nagłówku kolumny (Zwycięstwa, 2. i 3. miejsca) */
th > .medal-icon { min-width: 0; margin-right: 0.35em; vertical-align: -0.3em; }
/* Wąskie kafelki (telefon: dwa w rzędzie): medale ciaśniej, w razie potrzeby w dwóch liniach */
.medal-kpi:not(.medal-kpi--main) .medal-icons { flex-wrap: wrap; gap: var(--space-1) var(--space-3); }
.medal-kpi:not(.medal-kpi--main) .medal-icon { min-width: 0; }

/* Według zawodów (szersza, po lewej) i według sezonów (wąska, po prawej) */
.medal-charts { display: grid; gap: var(--space-6); margin-block: var(--space-6) var(--space-5); }
@media (min-width: 720px) { .medal-charts { grid-template-columns: minmax(0, 1fr) auto; column-gap: var(--space-8, 4rem); } }
.medal-rows--seasons .medal-rows__item { justify-content: flex-start; gap: var(--space-5); }
.medal-rows--seasons .medal-rows__label { width: 3em; font-variant-numeric: tabular-nums; }
.medal-charts h3 { margin-bottom: var(--space-4); }
ul.medal-rows { display: grid; }
.medal-rows__item { display: flex; align-items: center; justify-content: space-between; gap: var(--space-3); padding-block: var(--space-2); border-bottom: 1px solid var(--c-line); }
.medal-rows__label { min-width: 0; }
.medal-groups { margin-top: var(--space-5); }
.medal-groups h3 + .muted { margin-top: var(--space-1); }

/* Rankingi medalistów (partials/medal-list.php) */
.medal-list-wrap { max-width: 46rem; }
ol.medal-list { display: grid; margin-top: var(--space-4); }
/* Miejsce | nazwisko | medale | razem; na telefonie medale pod nazwiskiem */
.medal-list__item { display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto 2.5rem; column-gap: var(--space-3); row-gap: 2px; align-items: center; padding-block: var(--space-2); border-bottom: 1px solid var(--c-line); }
.medal-list__rank { color: var(--c-muted); font-variant-numeric: tabular-nums; }
.medal-list__name a { color: var(--c-text); font-weight: 600; }
.medal-list__total { justify-self: end; font-family: var(--font-head); font-size: 1.25rem; line-height: 1; font-variant-numeric: tabular-nums; }
@media (max-width: 559.98px) {
  .medal-list__item { grid-template-columns: 2rem minmax(0, 1fr) auto; }
  .medal-list__rank { grid-row: span 2; align-self: start; padding-top: 0.6em; }
  .medal-list__item .medal-icons { grid-column: 2; grid-row: 2; }
  .medal-list__total { grid-column: 3; grid-row: 1 / span 2; }
}
.medal-list__item:first-child .medal-list__rank { color: var(--c-medal-gold); font-weight: 700; }
@media (max-width: 719.98px) {
  .bar-list__name, .medal-list__name a { display: inline-flex; align-items: center; min-height: var(--tap); }
  .podium__wins strong { font-size: 1.5rem; }
}
.cycle-card__note { margin: var(--space-2) 0 0; font-size: 0.8rem; }
.more--ranking { margin-top: var(--space-4); }
/* Trzy karty cykli w wąskich kolumnach (720–999 px): logo nad nazwą, żeby nazwa i liczba nie łamały się w środku słów */
@media (min-width: 720px) and (max-width: 999.98px) {
  .cycle-card .stat-card__head { flex-direction: column; align-items: flex-start; gap: var(--space-2); }
}

/* ---------- GP Rokietnicy BUDMAR-CUP (statystyki od Radka, BudmarCup; /statystyki i /statystyki/budmar-cup) ---------- */
.medal-list__name { font-weight: 600; overflow-wrap: anywhere; }
.medal-list--rest { margin-top: 0; }
.medal-list--rest .medal-list__item:first-child .medal-list__rank { color: var(--c-muted); font-weight: 400; }
.cup-head { margin-bottom: var(--space-4); }
.cup-head .section__title { margin: 0; }
.cup-note { margin-top: var(--space-3); font-size: var(--fs-sm); max-width: 70ch; }
.cup-overview { display: grid; gap: var(--space-5); margin-block: var(--space-5); }
.cup-overview .card { min-width: 0; }
.cup-winners { list-style: none; margin: 0; padding: 0; columns: 2 16rem; column-gap: var(--space-6); }
.cup-winners li { display: grid; grid-template-columns: 5.25rem minmax(0, 1fr); align-items: baseline; gap: var(--space-3); padding-block: var(--space-1); border-bottom: 1px solid var(--c-line); break-inside: avoid; }
.cup-winners__season { color: var(--c-muted); font-size: var(--fs-sm); font-variant-numeric: tabular-nums; white-space: nowrap; }
.cup-winners a { color: var(--c-text); font-weight: 600; }
@media (min-width: 1000px) { .cup-overview { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; } }
.cup-tables { display: grid; gap: var(--space-5); margin-top: var(--space-5); }
@media (min-width: 1000px) { .cup-tables { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; } }
.cup-table { min-width: 0; scroll-margin-top: calc(var(--header-h) + var(--space-4)); }
.cup-table__sum { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2) var(--space-3); margin: 0; }
/* Podia sezonów: sezon jako rozwijany blok, turnieje w siatce kart */
.cup-season { border-top: 1px solid var(--c-line); }
.cup-season:last-of-type { border-bottom: 1px solid var(--c-line); }
.cup-season__summary { display: flex; flex-wrap: wrap; align-items: baseline; gap: var(--space-1) var(--space-4); padding-block: var(--space-4); cursor: pointer; min-height: var(--tap); }
.cup-season__name { font-family: var(--font-head); font-size: var(--fs-h3); color: var(--c-text); }
.cup-season__meta { color: var(--c-muted); font-size: var(--fs-sm); }
.cup-events { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); gap: var(--space-3); padding-bottom: var(--space-5); }
.cup-event { padding: var(--space-3) var(--space-4); background: var(--c-bg); border: 1px solid var(--c-line); border-radius: var(--radius); min-width: 0; }
.cup-event--ranking, .cup-event--final { border-color: var(--c-gold); }
.cup-event__name { font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 700; color: var(--c-gold-light); margin: 0 0 var(--space-2); }
.cup-event__note { margin: calc(-1 * var(--space-1)) 0 var(--space-2); color: var(--c-muted); font-size: 0.8125rem; }
.cup-podium { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--space-2); }
.cup-podium li { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: var(--space-2); align-items: start; font-size: var(--fs-sm); line-height: 1.45; }
.cup-podium a { color: var(--c-text); }
/* Telefon: turnieje sezonu w dwóch kolumnach (13 turniejów w sezonie po jednym w rzędzie to bardzo długa strona) */
@media (max-width: 599.98px) {
  .cup-events { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2); }
  .cup-event { padding: var(--space-2) var(--space-3); }
  .cup-podium li { font-size: 0.8125rem; gap: 6px; }
  .cup-podium .medal { transform: scale(0.85); transform-origin: top left; }
}

/* ---------- Odświeżony styl (2026-10-26, gałąź nowy-wyglad): motywy ze stołu bilardowego ----------
   mosiężna listwa z diamentami pod tytułami, światło lampy nad suknem w nagłówkach podstron,
   lakierowane karty i przyciski. Tylko CSS, bez zmian w treści i układzie podstron. */
:root {
  --c-cloth: #16a3cf; /* sukno stołu nr 1 (Dynamic Pro) */
  --rail: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='76' height='10'%3E%3Crect y='4' width='76' height='2' rx='1' fill='%23a3966d'/%3E%3Cpath d='M14 1l3 4-3 4-3-4zM38 1l3 4-3 4-3-4zM62 1l3 4-3 4-3-4z' fill='%23efe9dc'/%3E%3C/svg%3E");
  --lacquer: linear-gradient(180deg, rgb(255 255 255 / 0.035) 0%, rgb(255 255 255 / 0) 40%);
}
body { background: radial-gradient(ellipse 120% 60% at 50% 0, #1a1815 0%, var(--c-bg) 60%) no-repeat, var(--c-bg); }

/* Listwa z diamentami zamiast złotej kreski */
.section__title::after, .page-head .page-title::after {
  width: 76px; height: 10px; background: var(--rail) no-repeat;
}
.hero .eyebrow::before { width: 40px; }

/* Nagłówek podstrony: plama światła lampy nad turkusowym suknem */
.page-head {
  background:
    radial-gradient(ellipse 55% 140% at 22% -45%, rgb(22 163 207 / 0.24), transparent 70%),
    linear-gradient(180deg, var(--c-surface) 0%, var(--c-bg) 100%);
  border-bottom-color: #3a3328;
}

/* Lakierowane karty: delikatne światło od góry i jaśniejsza górna krawędź */
.card, .filters, .cal-event, .upcoming__item, .post, .post-nav__item, .news-card,
.pitch-offer__item, .team-panel, .medal-kpi {
  background-image: var(--lacquer);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 6px 18px rgb(0 0 0 / 0.22);
}
.upcoming__item, .post-nav__item, .news-card, .cal-event { transition: border-color 0.2s ease, transform 0.2s ease; }
.upcoming__item:hover, .post-nav__item:hover, .news-card:hover { border-color: #4a4133; }
@media (prefers-reduced-motion: no-preference) {
  .post-nav__item:hover, .news-card:hover { transform: translateY(-2px); }
}

/* Przyciski: połysk lakieru, mosiężna obwódka przycisku drugorzędnego */
.btn--primary {
  background: linear-gradient(180deg, #c92024 0%, var(--c-red) 55%, #a31417 100%);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.18), 0 6px 16px rgb(186 24 27 / 0.28);
}
.btn--primary:hover { background: linear-gradient(180deg, #db2e32 0%, var(--c-red-hover) 60%, #b81c1f 100%); }
.btn--ghost { background: rgb(18 17 16 / 0.35); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.06); }
.btn--ghost:hover { background: var(--c-gold); }

.section--alt { background: linear-gradient(180deg, var(--c-surface) 0%, #191714 100%); }

/* Start: hero przy przewijaniu (main.js ustawia --hero-p 0–1 i klasę .is-scrolled; bez JS i przy reduced-motion bez zmian) */
.hero--scroll > picture { translate: 0 calc(var(--hero-p, 0) * 30%); scale: calc(1.04 - var(--hero-p, 0) * 0.04); will-change: translate; }
.hero--scroll .hero__overlay { background-color: rgb(18 17 16 / calc(var(--hero-p, 0) * 0.55)); }
.hero--scroll .hero__content > :not(.owner-panel) { translate: 0 calc(var(--hero-p, 0) * -48px); }
@media (min-width: 1000px) {
  .hero--scroll .hero__person { translate: 0 calc(var(--hero-p, 0) * -24px); }
}
/* Telefon i tablet: Radek i jego poświata pojawiają się dopiero po przewinięciu */
@media (max-width: 999.98px) {
  .hero--scroll .hero__person--cutout picture, .hero--scroll .hero__person--cutout .hero__person-caption, .hero--scroll .hero__backdrop {
    opacity: 0; translate: 0 48px; visibility: hidden;
    transition: opacity 0.6s ease, translate 0.7s cubic-bezier(0.2, 0.8, 0.2, 1), visibility 0s linear 0.7s;
  }
  .hero--scroll .hero__person--cutout .hero__person-caption { transition-delay: 0.15s, 0.15s, 0.85s; }
  .hero--scroll.is-scrolled .hero__person--cutout picture, .hero--scroll.is-scrolled .hero__person--cutout .hero__person-caption, .hero--scroll.is-scrolled .hero__backdrop {
    opacity: 1; translate: 0 0; visibility: visible; transition-delay: 0s;
  }
  .hero--scroll.is-scrolled .hero__person--cutout .hero__person-caption { transition-delay: 0.15s; }
}

/* Wjeżdżanie elementów przy przewijaniu (main.js dodaje .reveal--wait tylko elementom poza ekranem) */
.reveal--wait { opacity: 0; translate: 0 24px; transition: opacity 0.6s ease, translate 0.6s cubic-bezier(0.2, 0.8, 0.2, 1); }
.reveal--wait.is-in { opacity: 1; translate: 0 0; }

/* ---------- Tabele, wyniki, statystyki, drużyny w nowym stylu ---------- */
/* Tabele: karta z lakierem, nagłówek z mosiężną krawędzią, delikatne pasy, turkusowy znacznik wiersza pod kursorem */
.table-wrap {
  border-radius: var(--radius-lg); border-color: #2f2a23;
  background: var(--c-surface) var(--lacquer);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04), 0 8px 22px rgb(0 0 0 / 0.25);
}
.table th { background: linear-gradient(180deg, #2a2620, #221f1a); border-bottom: 1px solid rgb(163 150 109 / 0.45); letter-spacing: 0.02em; }
.table tbody tr:nth-child(even) { background: rgb(243 239 231 / 0.018); }
.table tbody tr { transition: background-color 0.15s ease, box-shadow 0.15s ease; }
.table tbody tr:hover { background: rgb(22 163 207 / 0.07); box-shadow: inset 3px 0 0 var(--c-cloth); }
.table tbody tr:last-child > * { border-bottom: 0; }
.table .num { font-variant-numeric: tabular-nums; }

/* Tabele miejsc: podium z kolorem medalu przy krawędzi */
.table--standings tbody tr:has(.medal--gold) { box-shadow: inset 3px 0 0 var(--c-medal-gold); background: rgb(212 175 55 / 0.06); }
.table--standings tbody tr:has(.medal--silver) { box-shadow: inset 3px 0 0 var(--c-medal-silver); }
.table--standings tbody tr:has(.medal--bronze) { box-shadow: inset 3px 0 0 var(--c-medal-bronze); }

/* Mecze drużyny: wynik jak na tablicy, kolor wygranej i porażki przy krawędzi wiersza */
.table--league .num strong { display: inline-block; min-width: 3.6em; padding: 0.1em 0.5em; border-radius: var(--radius); background: #0e0d0c; border: 1px solid #2f2a23; font-variant-numeric: tabular-nums; text-align: center; letter-spacing: 0.04em; }
.table--league tr.match--W { box-shadow: inset 3px 0 0 #4f9a5f; }
.table--league tr.match--P { box-shadow: inset 3px 0 0 #a24a4c; }
.table--league tr.match--W .num strong { border-color: rgb(79 154 95 / 0.6); color: #b5e3bf; }
.outcome { font-weight: 600; }

/* Drużyny: każda drużyna na własnym panelu z turkusową poświatą, miejsce w tabeli wyróżnione */
.player-group:has(.team-league) {
  padding: var(--space-5); border: 1px solid #2f2a23; border-radius: var(--radius-lg);
  background:
    radial-gradient(ellipse 70% 90% at 0% 0%, rgb(22 163 207 / 0.08), transparent 60%),
    var(--c-surface) var(--lacquer);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04), 0 10px 28px rgb(0 0 0 / 0.28);
}
.player-group:has(.team-league) .team-panel { background: var(--c-bg); box-shadow: none; }
@media (min-width: 720px) { .player-group:has(.team-league) { padding: var(--space-6); } }
.player-group__title::after { width: 76px; height: 10px; background: var(--rail) no-repeat; }
.standing-place { font-family: var(--font-head); font-weight: 400; font-size: 1.35rem; color: var(--c-gold-light); }

/* Karty zawodników: mosiężny pierścień zdjęcia, uniesienie pod kursorem */
.player-card__link { background: var(--c-surface) var(--lacquer); transition: border-color 0.2s ease, color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease; }
.player-card__link:hover { box-shadow: 0 10px 24px rgb(0 0 0 / 0.35); }
@media (prefers-reduced-motion: no-preference) { .player-card__link:hover { transform: translateY(-3px); } }
.avatar { border: 2px solid transparent; background: linear-gradient(var(--c-line), var(--c-line)) padding-box, linear-gradient(140deg, #e3d3a3, var(--c-gold) 45%, #6d6246) border-box; box-shadow: 0 4px 14px rgb(0 0 0 / 0.4); }

/* Bilans sezonu jako kafle z dużą liczbą */
.season-stat { flex-direction: column; align-items: flex-start; gap: 0; min-width: 5.5rem; padding: 0.45em 0.9em 0.5em; background: var(--c-surface-2) var(--lacquer); border-radius: var(--radius-lg); }
.season-stat strong { font-family: var(--font-head); font-weight: 400; font-size: 1.6rem; line-height: 1.15; }

/* Statystyki: kafle medali i podium z lakierem, wyróżniony kafel główny */
.medal-kpi--main { background: radial-gradient(ellipse 80% 120% at 0% 0%, rgb(212 175 55 / 0.12), transparent 60%), var(--c-surface) var(--lacquer); }
.podium__step { background: linear-gradient(180deg, #2b2720, var(--c-bg)); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05); }
.podium__place--1 .podium__step { box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 -12px 28px -10px rgb(212 175 55 / 0.35); }
.results-group__title::after { height: 10px; background: var(--rail) left / 76px 10px no-repeat; }
.table--league th[scope="row"] { white-space: normal; }

/* ---------- Współpraca w nowym stylu (2026-10-26): prezentacja dla sponsora ---------- */
/* Zdjęcie drużyny przechodzi w pasek liczb jak tablica wyników */
.pitch-hero .page-title::after { content: ""; display: block; width: 76px; height: 10px; margin-top: var(--space-4); background: var(--rail) no-repeat; }
.pitch-hero__kicker::before { width: 40px; }
.pitch-stats { position: relative; z-index: 2; padding-bottom: var(--space-7); }
.pitch-stats__title { margin: 0 0 var(--space-4); font-family: var(--font-head); font-weight: 400; font-size: var(--fs-lead); color: var(--c-gold-light); }
.pitch-stats ul.pitch-numbers {
  margin: 0; gap: 0; grid-template-columns: repeat(2, minmax(0, 1fr));
  border: 1px solid #3a3328; border-radius: var(--radius-lg); overflow: hidden;
  background: linear-gradient(180deg, #1f1c18, #151311);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 18px 40px rgb(0 0 0 / 0.45);
}
.pitch-stats .pitch-numbers__item {
  border: 0; border-radius: 0; background: none; box-shadow: none;
  padding: var(--space-5) var(--space-5); border-right: 1px solid #2f2a23; border-bottom: 1px solid #2f2a23;
}
.pitch-stats .pitch-numbers__item:nth-child(2n) { border-right: 0; }
.pitch-stats .pitch-numbers__value { color: var(--c-text); }
.pitch-stats .pitch-numbers__item:first-child .pitch-numbers__value { color: var(--c-gold-light); }
.pitch-stats__note { margin-top: var(--space-3); font-size: var(--fs-sm); }
@media (min-width: 900px) {
  .pitch-stats { margin-top: -5.5rem; }
  .pitch-stats__title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } /* nad zdjęciem tytuł tylko dla czytników */
  .pitch-stats ul.pitch-numbers { grid-template-columns: repeat(var(--tiles, 4), minmax(0, 1fr)); }
  .pitch-stats .pitch-numbers__item, .pitch-stats .pitch-numbers__item:nth-child(2n) { border-bottom: 0; border-right: 1px solid #2f2a23; padding: var(--space-6); }
  .pitch-stats .pitch-numbers__item:last-child { border-right: 0; }
  .pitch-hero__content { padding-bottom: calc(var(--space-8) + 4rem); }
}

/* Nagłówek slajdu: duża cyfra w mosiądzu obok tytułu, oddzielona pionową kreską; jedna listwa z diamentami (pod tytułem) */
.pitch-slide__head { display: flex; align-items: center; gap: var(--space-4); margin-bottom: var(--space-5); }
.pitch-slide__head .section__title { margin: 0; padding-left: var(--space-4); border-left: 1px solid rgb(163 150 109 / 0.45); }
.pitch-slide__step { flex: none; margin: 0; font-size: 3.4rem; line-height: 1; letter-spacing: 0.02em; color: transparent; -webkit-text-stroke: 1px var(--c-gold); }
.pitch-slide__step::after { content: none; }

/* Co organizujemy: karty jak stół, turkusowe sukno u góry */
.pitch-card__link { border-top: 0; background: var(--c-surface) var(--lacquer); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 10px 26px rgb(0 0 0 / 0.3); overflow: hidden; position: relative; padding-top: calc(var(--space-5) + 6px); }
.pitch-card__link::before { content: ""; position: absolute; inset: 0 0 auto; height: 6px; background: linear-gradient(90deg, #0f7fa3, var(--c-cloth), #0f7fa3); }
.pitch-card__link:hover { box-shadow: 0 16px 34px rgb(0 0 0 / 0.4); }

/* Drużyny: karty z mosiężną krawędzią */
.pitch-team a { background: var(--c-surface) var(--lacquer); border-left-width: 3px; transition: border-color 0.2s ease, transform 0.2s ease; }
@media (prefers-reduced-motion: no-preference) { .pitch-team a:hover { transform: translateX(4px); } }
.pitch-split__photo img { border-radius: var(--radius-lg); box-shadow: 0 18px 40px rgb(0 0 0 / 0.45); }

/* Oferta: ikony w mosiężnych kołach, kafle z lakierem */
.pitch-offer__item { flex-direction: column; gap: var(--space-3); background: var(--c-surface) var(--lacquer); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.05), 0 10px 26px rgb(0 0 0 / 0.28); transition: border-color 0.2s ease; }
.pitch-offer__item:hover { border-color: rgb(163 150 109 / 0.6); }
.pitch-offer__icon { width: 3.25rem; height: 3.25rem; background: radial-gradient(circle at 35% 30%, #3a332a, #1a1714); border: 1px solid var(--c-gold); color: var(--c-gold-light); box-shadow: 0 0 0 5px rgb(163 150 109 / 0.08); }
.pitch-offer__icon svg { width: 1.6rem; height: 1.6rem; fill: currentColor; fill-rule: evenodd; }

/* Na co przeznaczamy wsparcie: kafle z diamentem */
ul.pitch-support { max-width: none; grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr)); gap: var(--space-3); }
ul.pitch-support li { position: relative; padding: var(--space-4) var(--space-4) var(--space-4) 2.75rem; border: 1px solid var(--c-line); border-radius: var(--radius-lg); background: var(--c-bg); }
ul.pitch-support li::before { content: ""; position: absolute; left: var(--space-4); top: 50%; width: 10px; height: 10px; margin-top: -5px; background: var(--c-paper); transform: rotate(45deg) scaleY(0.75); }

/* Kontakt: plama światła lampy nad suknem */
.pitch-cta { background: radial-gradient(ellipse 55% 80% at 50% 0%, rgb(22 163 207 / 0.18), transparent 70%), radial-gradient(ellipse at 50% 100%, rgb(186 24 27 / 0.22), transparent 65%), var(--c-surface); }
ul.pitch-support li::before { border-radius: 0; }
ul.pitch-support li { display: flex; align-items: center; min-height: 4.5rem; font-size: var(--fs-base); }
.pitch-stats ul.pitch-numbers:has(> li:nth-child(5):last-child) { --tiles: 5; }
.pitch-stats .pitch-numbers__value { white-space: nowrap; }
@media (min-width: 900px) {
  /* Pięć kafli w rzędzie: mniejsze liczby i odstępy, żeby „1 800” mieściło się w kaflu */
  .pitch-stats ul.pitch-numbers:has(> li:nth-child(5):last-child) .pitch-numbers__item { padding: var(--space-5); }
  .pitch-stats ul.pitch-numbers:has(> li:nth-child(5):last-child) .pitch-numbers__value { font-size: clamp(2.2rem, 0.9rem + 2.4vw, 3.25rem); }
}
/* Nieparzysta liczba kafli w dwóch kolumnach (telefon): ostatni na całą szerokość */
@media (max-width: 899.98px) {
  .pitch-stats .pitch-numbers__item:nth-child(odd):last-child { grid-column: 1 / -1; border-right: 0; border-bottom: 0; }
}
.pitch-stats ul.pitch-numbers:has(> li:nth-child(3):last-child) { --tiles: 3; }
.pitch-stats ul.pitch-numbers:has(> li:nth-child(2):last-child) { --tiles: 2; }
@media (max-width: 599.98px) {
  .pitch-stats .pitch-numbers__item { padding: var(--space-4); }
  .pitch-stats .pitch-numbers__value { font-size: 2.4rem; }
  .pitch-stats .pitch-numbers__label { font-size: var(--fs-sm); }
  .pitch-offer__item { flex-direction: row; align-items: center; padding: var(--space-4); font-size: var(--fs-base); }
  .pitch-slide__step { font-size: 2.4rem; }
  .pitch-slide__head { gap: var(--space-3); }
  .pitch-slide__head .section__title { padding-left: var(--space-3); }
}
@media (max-width: 599.98px) {
  .player-group:has(.team-league) { padding: var(--space-4) var(--space-3); margin-inline: calc(var(--space-2) * -1); }
  .player-group:has(.team-league) .team-panel { padding-inline: var(--space-3); }
}
/* Fokus z klawiatury na ukrytym jeszcze Radku (telefon, przed przewinięciem) pokazuje go od razu */
@media (max-width: 999.98px) {
  .hero--scroll .hero__person--cutout:focus-visible picture, .hero--scroll .hero__person--cutout:focus-visible .hero__person-caption, .hero--scroll:has(.hero__person--cutout:focus-visible) .hero__backdrop {
    opacity: 1; translate: 0 0; visibility: visible; transition-delay: 0s;
  }
}

/* Listy rankingowe i medalowe (statystyki) w stylu tabel: panel, wiersz pod kursorem z turkusowym znacznikiem, podium w kolorach medali */
.medal-charts > div { padding: var(--space-4) var(--space-5); border: 1px solid #2f2a23; border-radius: var(--radius-lg); background: var(--c-surface) var(--lacquer); box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.04), 0 8px 22px rgb(0 0 0 / 0.25); }
.medal-charts > div > h3 { color: var(--c-gold-light); }
.medal-rows__item:last-child { border-bottom: 0; }
/* Wiersz pod kursorem: zaokrąglone podświetlenie w kolorze sukna z odstępem od tekstu (wcześniej pasek przy samej krawędzi);
   padding i ujemny margines w poziomie trzymają tekst w tym samym miejscu co bez najechania */
.medal-rows__item, .medal-list__item, .cup-winners li { padding-inline: var(--space-2); margin-inline: calc(-1 * var(--space-2)); border-radius: var(--radius); transition: background-color 0.15s ease, box-shadow 0.15s ease, border-color 0.15s ease; }
.medal-rows__item:hover, .medal-list__item:hover, .cup-winners li:hover { background: rgb(22 163 207 / 0.1); box-shadow: inset 0 0 0 1px rgb(22 163 207 / 0.35); border-bottom-color: transparent; }
.medal-list:not(.medal-list--rest) .medal-list__item:nth-child(2) .medal-list__rank { color: var(--c-medal-silver); font-weight: 700; }
.medal-list:not(.medal-list--rest) .medal-list__item:nth-child(3) .medal-list__rank { color: var(--c-medal-bronze); font-weight: 700; }
.medal-list:not(.medal-list--rest) .medal-list__item:first-child .medal-list__total { color: var(--c-medal-gold); }
.site-header__cta { box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.18); } /* w nagłówku bez czerwonej poświaty */
@media (max-width: 599.98px) { .medal-charts > div { padding: var(--space-3) var(--space-4); } }

/* ---------- Uwagi Radka (2026-10-30) ---------- */
/* Linki przy nagłówkach sekcji („Cały kalendarz”, „Archiwum”, „Wszystkie”) jako małe przyciski zamiast podkreślonego tekstu */
.section__more {
  padding: 0 var(--space-3); border: 1px solid var(--c-gold); border-radius: var(--radius);
  background: rgb(18 17 16 / 0.35); color: var(--c-text); font-family: var(--font-body); font-size: var(--fs-sm); font-weight: 600;
  text-decoration: none; transition: background-color 0.15s ease, color 0.15s ease;
}
.section__more:hover { background: var(--c-gold); color: var(--c-bg); }
/* Okno osiągnięć bez przygaszonych logotypów partnerów w tle (zasłaniały tekst) */
.owner-panel::before { content: none; }
/* Kolaż zdjęć wpisu: wysokość z proporcji, nie height: 100% (Safari na iPhonie brał wysokość oryginału i kolaż wchodził na tytuł) */
.post__images { flex-shrink: 0; }
.post__images > img { height: auto; }
/* Przesunięcie miesiąca palcem: siatka odjeżdża w stronę gestu, zanim wczyta się kolejny miesiąc */
.cal-month { transition: transform 0.2s ease, opacity 0.2s ease; }
.cal-month.is-leaving-left { transform: translateX(-12%); opacity: 0.3; }
.cal-month.is-leaving-right { transform: translateX(12%); opacity: 0.3; }
@media (prefers-reduced-motion: reduce) { .cal-month { transition: none; } }
/* Hero (z oknem osiągnięć przypiętym do ekranu na telefonie i tablecie) nad pasem partnerów, pod nagłówkiem (z-index 50):
   kafle partnerów rysowały się na otwartym oknie (zrzut Adama 2026-10-30) */
.hero { z-index: 3; }
