/* =============================================================
   SK Boxing Praha
   1. Proměnné  2. Základ  3. Layout  4. Hlavička  5. Hero
   6. Tréninky  7. Rozvrh  8. Ceník  9. Trenéři  10. Klub
   11. Kontakt  12. Patička  13. Responzivita
   ============================================================= */

/* ---------- 1. PROMĚNNÉ ---------- */
:root {
  --bg:            #fbfbfa;
  --bg-alt:        #f2f3f5;
  --surface:       #ffffff;
  --surface-hi:    #f6f7f9;
  --line:          #d7dce3;
  --line-soft:     #e6e9ee;

  --text:          #14161a;
  --text-muted:    #545b67;
  --text-dim:      #666d7a;

  /* Primární barva z loga. Je tmavá, takže nese bílý text
     a zvládne i drobné popisky na bílém podkladu. */
  --accent:        #140858;
  --accent-hi:     #2a1180;
  --accent-soft:   rgba(20, 8, 88, .07);
  --accent-ink:    #ffffff;   /* text na primární ploše */

  /* Sekundární žlutá z loga. Na bílé má nízký kontrast, proto slouží
     jako plocha pod tmavým textem, nikdy jako barva písma na světlém. */
  --gold:          #fec00e;
  --gold-hi:       #ffcd3b;
  --gold-soft:     rgba(254, 192, 14, .22);
  --gold-ink:      #140858;   /* text na žluté ploše */

  --radius:        10px;
  --radius-lg:     14px;
  --wrap:          1440px;

  --shadow:        0 1px 2px rgba(20,8,88,.06), 0 12px 32px rgba(20,8,88,.08);
  --ease:          cubic-bezier(.4, 0, .2, 1);

  /* barvy disciplín — používá se v rozvrhu */
  --c-box:        #e53224;
  --c-box-zac:    #8ded61;
  --c-thaibox:    #4ea7dd;
  --c-grappling:  #c6702f;
  --c-kondicni:   #fbfa5a;
  --c-fitbox:     #d8d8d8;
  --c-workoutbox: #daca83;
  --c-miniboxing: #cda739;
  --c-kruhovy:    #7a8f48;

  color-scheme: light;
}

/* ---------- 2. ZÁKLAD ---------- */
*, *::before, *::after { box-sizing: border-box; }

html {
  /* Základ 18px místo výchozích 16px — všechny velikosti níže jsou v rem,
     takže se zvětší s ním. Změnou tohoto čísla zvětšíš/zmenšíš celý web. */
  font-size: 112.5%;
  scroll-behavior: smooth;
  scroll-padding-top: 116px;
  -webkit-text-size-adjust: 100%;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: 'Outfit', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  font-size: 1rem;
  line-height: 1.65;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  overflow-x: hidden;
}

h1, h2, h3 { margin: 0; line-height: 1.12; letter-spacing: -.025em; font-weight: 700; }
h1 { font-size: clamp(2.9rem, 7.4vw, 5.4rem); font-weight: 800; }
h2 { font-size: clamp(2.1rem, 4.2vw, 3.4rem); }
h3 { font-size: 1.2rem; font-weight: 600; letter-spacing: -.01em; }
p  { margin: 0 0 1rem; }
p:last-child { margin-bottom: 0; }

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
[hidden] { display: none !important; }

:focus-visible {
  outline: 2px solid var(--accent-hi);
  outline-offset: 3px;
  border-radius: 4px;
}

::selection { background: var(--gold); color: var(--gold-ink); }

.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 200;
  background: var(--accent); color: var(--accent-ink);
  padding: .6rem 1rem; border-radius: 6px; font-weight: 600;
  transition: top .2s var(--ease);
}
.skip-link:focus { top: 12px; }

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

.note {
  margin-top: 1.75rem;
  color: var(--text-dim);
  font-size: .95rem;
  max-width: 62ch;
}

.eyebrow {
  margin: 0 0 .85rem;
  font-size: .84rem;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--accent);
}

.accent { color: var(--accent); }

/* ---------- 3. LAYOUT ---------- */
.wrap {
  width: 100%;
  max-width: var(--wrap);
  margin-inline: auto;
  padding-inline: 24px;
}

.section { padding-block: clamp(4.5rem, 10vw, 7.5rem); }
.section-alt { background: var(--bg-alt); border-block: 1px solid var(--line-soft); }

.section-head { max-width: 62ch; margin-bottom: clamp(2.25rem, 5vw, 3.25rem); }
.section-lead {
  margin-top: 1rem;
  color: var(--text-muted);
  font-size: clamp(1.05rem, 1.6vw, 1.2rem);
}

.reveal {
  opacity: 0;
  transform: translateY(22px);
  transition: opacity .7s var(--ease), transform .7s var(--ease);
}
.reveal.is-visible { opacity: 1; transform: none; }

/* tlačítka */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  padding: .85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: 8px;
  font-family: inherit; font-size: 1.02rem; font-weight: 600;
  cursor: pointer; white-space: nowrap;
  transition: background .2s var(--ease), border-color .2s var(--ease),
              color .2s var(--ease), transform .12s var(--ease);
}
.btn:active { transform: translateY(1px); }
.btn-sm { padding: .58rem 1.15rem; font-size: .95rem; }

.btn-primary { background: var(--accent); color: var(--accent-ink); }
.btn-primary:hover { background: var(--accent-hi); }

/* Sekundární tlačítko ve žluté — tmavý text, aby zůstalo čitelné. */
.btn-gold { background: var(--gold); color: var(--gold-ink); }
.btn-gold:hover { background: var(--gold-hi); }

.btn-ghost { border-color: var(--line); color: var(--text); background: transparent; }
.btn-ghost:hover { border-color: var(--text-dim); background: var(--surface); }

/* ---------- 4. HLAVIČKA ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  padding-top: env(safe-area-inset-top, 0px);
  background: rgba(251, 251, 250, .78);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color .25s var(--ease), background .25s var(--ease);
}
.site-header.is-scrolled {
  border-bottom-color: var(--line);
  background: rgba(251, 251, 250, .93);
  box-shadow: 0 1px 12px rgba(20, 22, 26, .05);
}

.header-inner {
  display: flex; align-items: center; gap: 1.5rem;
  min-height: 92px;
}

.brand { display: flex; align-items: center; margin-right: auto; }

/* Logo si nese vlastní poměr stran, řídíme ho jen výškou. Text v logu je
   ve třech řádcích, takže pod ~46 px přestává být čitelný. */
.brand-logo { display: block; height: 58px; width: auto; }
.brand-logo-header { height: 50px; }

.nav { display: flex; align-items: center; gap: .35rem; }
.nav a {
  position: relative;
  padding: .5rem .8rem;
  border-radius: 6px;
  font-size: 1rem; font-weight: 500;
  color: var(--text-muted);
  transition: color .18s var(--ease), background .18s var(--ease);
}
.nav a:hover { color: var(--text); background: var(--surface); }
.nav a.is-current { color: var(--text); }
.nav a.is-current::after {
  content: ''; position: absolute; left: .8rem; right: .8rem; bottom: .2rem;
  height: 2px; border-radius: 2px; background: var(--accent);
}

.header-actions { display: flex; align-items: center; gap: .75rem; }

.lang {
  display: flex;
  padding: 3px;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: 8px;
}
.lang-btn {
  padding: .32rem .75rem;
  border: 0; border-radius: 6px;
  background: transparent;
  color: var(--text-dim);
  font-family: inherit; font-size: .82rem; font-weight: 600; letter-spacing: .05em;
  cursor: pointer;
  transition: background .18s var(--ease), color .18s var(--ease);
}
.lang-btn:hover { color: var(--text); }
.lang-btn.is-active { background: var(--surface-hi); color: var(--text); }

.burger {
  display: none;
  width: 40px; height: 40px;
  flex-direction: column; align-items: center; justify-content: center; gap: 5px;
  padding: 0;
  background: transparent; border: 1px solid var(--line-soft); border-radius: 8px;
  cursor: pointer;
}
.burger span {
  display: block; width: 17px; height: 2px; border-radius: 2px;
  background: var(--text);
  transition: transform .22s var(--ease), opacity .22s var(--ease);
}
.burger.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.burger.is-open span:nth-child(2) { opacity: 0; }
.burger.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

/* ---------- 5. HERO ---------- */
.hero {
  /* Přes video je čitelné jen světlé písmo, takže hero si drží tmavou
     paletu i na světlém webu. Stačí přepsat proměnné — prvky uvnitř
     je dědí. */
  --text:       #f5f5fa;
  --text-muted: #c5c3dd;
  --text-dim:   #9a97bb;
  --line:       #3b3170;
  --line-soft:  #2b2356;
  --surface:    #1c1052;

  /* Na tmavém podkladu přebírá roli akcentu žlutá — svítí a nese
     tmavý text na tlačítku. */
  --accent:     var(--gold);
  --accent-hi:  var(--gold-hi);
  --accent-ink: var(--gold-ink);

  position: relative;
  color: var(--text);
  display: flex; align-items: center;
  min-height: min(88vh, 820px);
  padding-block: clamp(4rem, 12vh, 8rem);
  overflow: hidden;
}
.hero-bg {
  position: absolute; inset: 0; z-index: 0;
  overflow: hidden;
  /* Gradient pod videem — zůstane vidět, než se video načte,
     i když se přehrávání nespustí (úspora dat, starší prohlížeč). */
  background:
    radial-gradient(900px 620px at 78% 12%, rgba(254, 192, 14, .13), transparent 60%),
    linear-gradient(180deg, #0c0433 0%, #140858 100%);
}
/* Video na pozadí hlavičky. Zdroj vybírá initHeroVideo() v js/main.js:
   header-web.mp4 na širokém displeji, header-mobile.mp4 na úzkém. */
/* iOS kreslí přes nespuštěné video svoje tlačítko přehrávání. Video je
   tu čistá dekorace, takže ovládání nechceme — když se autoplay nepovolí,
   má zůstat vidět poster, ne tlačítko. */
.hero-video::-webkit-media-controls,
.hero-video::-webkit-media-controls-start-playback-button,
.hero-video::-webkit-media-controls-panel {
  display: none !important;
  -webkit-appearance: none;
  opacity: 0;
}

.hero-video {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  object-fit: cover;
  opacity: .62;
  filter: grayscale(.2) contrast(1.08) brightness(.92);
}

/* Závoj nad videem — drží text čitelný bez ohledu na to,
   co je zrovna ve snímku. */
.hero-veil {
  position: absolute; inset: 0;
  background:
    linear-gradient(100deg, #0c0433 6%, rgba(12,4,51,.88) 38%, rgba(12,4,51,.32) 68%, rgba(12,4,51,.14) 100%),
    linear-gradient(180deg, rgba(12,4,51,.72) 0%, transparent 34%, rgba(12,4,51,.55) 100%);
}

.hero-inner { position: relative; z-index: 1; }

.hero-title { max-width: 16ch; }
.hero-lead {
  max-width: 54ch;
  margin-top: 1.6rem;
  font-size: clamp(1.1rem, 1.8vw, 1.3rem);
  color: var(--text-muted);
}
.hero-actions { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 2.25rem; }

/* ---------- 6. TRÉNINKY ---------- */
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(330px, 1fr));
  gap: 1rem;
}
.card {
  position: relative;
  overflow: hidden;
  padding: 1.5rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  transition: border-color .2s var(--ease), transform .2s var(--ease), background .2s var(--ease);
}
.card:hover { border-color: var(--line); background: var(--surface-hi); transform: translateY(-2px); }
/* Ikona disciplíny jako vodoznak. Sedí pod obsahem karty, proto má
   obsah vlastní vrstvu — jinak by ji ikona překryla. */
.card-icon {
  position: absolute;
  right: 1.1rem; bottom: .9rem;
  font-size: 4.6rem;
  line-height: 1;
  color: var(--accent);
  opacity: .14;
  pointer-events: none;
  transition: opacity .25s var(--ease), transform .25s var(--ease);
  transform-origin: bottom right;
}
.card-link:hover .card-icon { opacity: .22; transform: scale(1.08) rotate(-5deg); }

.card-head, .card p, .card-more { position: relative; z-index: 1; }

.card-head { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin-bottom: .75rem; }
.card p { color: var(--text-muted); font-size: 1rem; }

.tag {
  flex-shrink: 0;
  padding: .2rem .6rem;
  border-radius: 5px;
  background: var(--gold-soft);
  color: var(--gold-ink);
  font-size: .75rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
}

.callout {
  display: flex; align-items: center; justify-content: space-between;
  flex-wrap: wrap; gap: 1.5rem;
  margin-top: 1rem;
  padding: 1.75rem;
  background: linear-gradient(120deg, var(--gold-soft), transparent 70%), var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
.callout h3 { margin-bottom: .4rem; }
.callout p { max-width: 62ch; color: var(--text-muted); font-size: 1rem; }

/* ---------- 7. ROZVRH ---------- */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.75rem; }
.filter {
  padding: .45rem 1rem;
  background: transparent;
  border: 1px solid var(--line-soft);
  border-radius: 8px;
  color: var(--text-muted);
  font-family: inherit; font-size: .92rem; font-weight: 500;
  cursor: pointer;
  transition: all .18s var(--ease);
}
.filter:hover { border-color: var(--line); color: var(--text); }
.filter.is-active { background: var(--accent); border-color: var(--accent); color: var(--accent-ink); }

.schedule {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: .75rem;
}
.day {
  display: flex; flex-direction: column;
  min-width: 0;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  overflow: hidden;
}
.day.is-closed { opacity: .5; }

.day-head {
  padding: .8rem 1rem;
  border-bottom: 1px solid var(--line-soft);
  background: var(--surface-hi);
}
.day-name { font-size: .92rem; font-weight: 600; letter-spacing: .02em; }
.day-short { display: none; font-size: .92rem; font-weight: 600; }

.day-body { display: flex; flex-direction: column; gap: 1rem; padding: .75rem; flex: 1; }

/* Blok jednoho sálu uvnitř dne. */
.hall { display: flex; flex-direction: column; gap: .4rem; }
.hall-label {
  font-size: .7rem; font-weight: 700;
  letter-spacing: .12em; text-transform: uppercase;
  color: var(--text-dim);
  padding-bottom: .2rem;
  border-bottom: 1px solid var(--line-soft);
  margin-bottom: .2rem;
}

/* Volné cvičení a zavřeno — bez barvy disciplíny, tlumeně. */
.slot:not([data-discipline]) {
  background: transparent;
  border-style: dashed;
  border-color: var(--line);
}
.slot:not([data-discipline]) .slot-time { color: var(--text-dim); }
.slot:not([data-discipline]) .slot-name { font-weight: 500; color: var(--text-muted); }
.slot-closed { opacity: .55; }

.slot-note {
  font-size: .78rem;
  color: var(--text-dim);
  font-style: italic;
}

/* Disciplínu nese barva celého boxu. Sytá barva by přebila text, proto se
   míchá do bílé — pozadí jemně, rámeček a čas víc, aby byly rozeznatelné.
   Řádky před color-mix() jsou záložní pro starší prohlížeče. */
.slot {
  --slot-color: var(--accent);
  display: flex; flex-direction: column; gap: .1rem;
  padding: .7rem .8rem;
  border-radius: 7px;

  background: var(--bg-alt);
  background: color-mix(in srgb, var(--slot-color) 34%, #fff);

  border: 1px solid var(--line-soft);
  border-color: color-mix(in srgb, var(--slot-color) 78%, #fff);
}

/* Čas i jméno trenéra nesou nádech barvy disciplíny, ale s dost velkým
   podílem tmavé, aby i na nejsvětlejší ploše držely kontrast 4.5:1. */
.slot-time {
  font-size: .85rem; font-weight: 600;
  font-variant-numeric: tabular-nums;
  color: var(--text-dim);
  color: color-mix(in srgb, var(--slot-color) 38%, #15151c);
}
.slot-name { font-size: .97rem; font-weight: 600; line-height: 1.25; }
.slot-coach {
  font-size: .83rem;
  color: var(--text-dim);
  color: color-mix(in srgb, var(--slot-color) 18%, #33383f);
}

[data-discipline="box"]        { --slot-color: var(--c-box); }
[data-discipline="box-zac"]    { --slot-color: var(--c-box-zac); }
[data-discipline="thaibox"]    { --slot-color: var(--c-thaibox); }
[data-discipline="grappling"]  { --slot-color: var(--c-grappling); }
[data-discipline="kondicni"]   { --slot-color: var(--c-kondicni); }
[data-discipline="fitbox"]     { --slot-color: var(--c-fitbox); }
[data-discipline="workoutbox"] { --slot-color: var(--c-workoutbox); }
[data-discipline="miniboxing"] { --slot-color: var(--c-miniboxing); }
[data-discipline="kruhovy"]    { --slot-color: var(--c-kruhovy); }

.day-empty { margin: 0; padding: .5rem .2rem; font-size: .88rem; color: var(--text-dim); }

/* ---------- 8. CENÍK ---------- */
.price-intro {
  max-width: 62ch;
  margin: 0 0 2rem;
  padding: 1rem 1.25rem;
  background: var(--gold-soft);
  border-radius: var(--radius);
  font-size: 1rem;
  color: var(--gold-ink);
  font-weight: 500;
}

.price-membership {
  margin-top: clamp(2rem, 4vw, 3rem);
  padding: clamp(1.5rem, 3vw, 2rem);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
}
.price-membership-note {
  margin: 1rem 0 0;
  font-size: .95rem;
  color: var(--text-dim);
}

.price-groups {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));
  gap: 1.15rem;
  align-items: start;
}

.price-group {
  display: flex; flex-direction: column;
  padding: 1.6rem 1.75rem 1.75rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}
.price-membership .price-group { padding: 0; background: none; border: 0; }

.price-group-title {
  font-size: 1.2rem;
  margin-bottom: 1rem;
  padding-bottom: .75rem;
  border-bottom: 2px solid var(--line);
}

.price-rows { margin: 0; padding: 0; list-style: none; }
.price-rows li {
  display: flex; align-items: baseline; justify-content: space-between;
  gap: .3rem 1.25rem;
  padding: .7rem 0;
  border-bottom: 1px solid var(--line-soft);
}
.price-rows li:last-child { border-bottom: 0; }
.price-label { font-size: .98rem; color: var(--text-muted); }
.price-value {
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.price-value.is-free {
  color: var(--gold-ink);
  background: var(--gold-soft);
  padding: .1rem .5rem;
  border-radius: 5px;
  font-size: .9rem;
  text-transform: uppercase;
  letter-spacing: .04em;
}

.price-group-link {
  display: inline-flex; align-items: center; gap: .4rem;
  margin-top: auto;
  padding-top: 1.25rem;
  font-size: .93rem; font-weight: 600;
  color: var(--accent);
}
.price-group-link::after { content: '→'; transition: transform .2s var(--ease); }
.price-group-link:hover::after { transform: translateX(3px); }

/* ---------- 9. TRENÉŘI ---------- */
.coaches {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(270px, 1fr));
  gap: .75rem;
}

.coach {
  display: flex; align-items: center; gap: .9rem;
  padding: .9rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  transition: border-color .2s var(--ease);
}
.coach:hover { border-color: var(--line); }

.coach-photo {
  flex-shrink: 0;
  width: 66px; height: 66px;
  border-radius: 50%;
  object-fit: cover;
  /* Portréty jsou na výšku a obličej je v horní třetině — bez posunu
     by ořez na kruh usekl temeno. */
  object-position: center 22%;
  background: var(--surface-hi);
}
.coach-photo-empty {
  display: grid; place-items: center;
  background: var(--surface-hi);
  border: 1px solid var(--line);
  color: var(--text-dim);
}
.coach-photo-empty svg { width: 62%; height: 62%; display: block; }
.coach-body { display: flex; flex-direction: column; min-width: 0; }
.coach-body strong { font-size: 1.03rem; font-weight: 600; }
.coach-body span { font-size: .88rem; color: var(--text-dim); }

/* Rozšířená karta na stránce Trenéři: velká fotka nahoře, pod ní jméno,
   úryvek medailonku a disciplíny, které trenér vede. */
.coaches-big { grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 1.15rem; }

.coach-big {
  flex-direction: column;
  align-items: stretch;
  gap: 0;
  padding: 0;
  overflow: hidden;
  border-radius: var(--radius-lg);
}
.coach-big .coach-photo {
  width: 100%; height: auto;
  aspect-ratio: 4 / 3;
  border-radius: 0;
  border: 0;
  border-bottom: 1px solid var(--line-soft);
  object-position: center 20%;
}
.coach-big .coach-photo-empty { aspect-ratio: 4 / 3; }
.coach-big .coach-photo-empty svg { width: 30%; height: 30%; }

.coach-big .coach-body {
  display: flex; flex-direction: column;
  flex: 1;
  padding: 1.35rem 1.4rem 1.5rem;
  gap: .25rem;
}
.coach-big .coach-body strong { font-size: 1.22rem; }
.coach-big .coach-role { font-size: .95rem; color: var(--accent); font-weight: 500; }

.coach-excerpt {
  margin: .8rem 0 0;
  font-size: .96rem;
  color: var(--text-muted);
  line-height: 1.6;
}

.coach-tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: 1.1rem; }
.coach-tag {
  padding: .25rem .65rem;
  border-radius: 5px;
  background: var(--gold-soft);
  color: var(--gold-ink);
  font-size: .78rem; font-weight: 600;
}

.coach-more {
  display: inline-flex; align-items: center; gap: .4rem;
  margin-top: auto;
  padding-top: 1.2rem;
  font-size: .93rem; font-weight: 600;
  color: var(--accent);
}
.coach-more::after { content: '→'; transition: transform .2s var(--ease); }
.coach-link:hover .coach-more::after { transform: translateX(3px); }

/* ---------- 10. KLUB ---------- */
.club-grid {
  display: grid;
  grid-template-columns: 1.35fr 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}
.club-grid h2 { margin-bottom: 1.25rem; }
.club-grid p { color: var(--text-muted); }

.leadership { display: grid; gap: .75rem; margin-top: 2rem; }
.lead-card {
  display: flex; flex-direction: column; gap: .15rem;
  padding: 1.1rem 1.25rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
/* karta vedení s fotkou */
.lead-card { flex-direction: row; align-items: center; gap: 1.1rem; }
.lead-photo {
  flex-shrink: 0;
  width: 64px; height: 64px;
  border-radius: 50%;
  object-fit: cover;
  object-position: center 18%;
  background: var(--surface-hi);
}
.lead-text { display: flex; flex-direction: column; gap: .15rem; min-width: 0; }

.lead-card strong { font-size: 1.05rem; font-weight: 600; }
.lead-card span { font-size: .92rem; color: var(--text-dim); line-height: 1.5; }

.achievements {
  padding: 1.75rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}
.achievements h3 { font-size: 1.15rem; }
.ach-sub { margin: .3rem 0 1.25rem; font-size: .9rem; color: var(--accent); font-weight: 500; }
.ach-list { margin: 0; padding: 0; list-style: none; display: grid; gap: .1rem; }
.ach-list li {
  display: flex; align-items: center; gap: .7rem;
  padding: .7rem 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: 1.03rem; font-weight: 500;
}
.ach-list li:last-child { border-bottom: 0; }
.ach-list li::before {
  content: ''; flex-shrink: 0;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold);
}

/* ---------- 11. KONTAKT ---------- */
.contact-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 1.15rem;
}
.contact-card {
  padding: 1.6rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
.contact-card h3 { margin-bottom: 1rem; }
.contact-card address { font-style: normal; line-height: 1.75; font-size: 1.05rem; }
.contact-card .muted { margin-top: .85rem; font-size: .92rem; }
.contact-card .btn { margin-top: 1.1rem; }

.contact-list, .hours { margin: 0; padding: 0; list-style: none; }
.contact-list li, .hours li {
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .6rem 0;
  border-bottom: 1px solid var(--line-soft);
  font-size: .98rem;
}
.contact-list li:last-child, .hours li:last-child { border-bottom: 0; }
.contact-list span, .hours span { color: var(--text-dim); }
.contact-list a { font-weight: 500; transition: color .18s var(--ease); }
.contact-list a:hover { color: var(--accent-hi); }
.hours strong { font-weight: 600; font-variant-numeric: tabular-nums; }

.map-embed {
  margin-top: 1rem;
  aspect-ratio: 21 / 7;
  min-height: 260px;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  overflow: hidden;
}
.map-embed iframe { width: 100%; height: 100%; border: 0; filter: grayscale(.35); }

/* ---------- 12. PATIČKA ---------- */
.site-footer {
  padding-top: clamp(3rem, 6vw, 4.5rem);
  padding-bottom: calc(1.75rem + env(safe-area-inset-bottom, 0px));
  background: var(--bg-alt);
  border-top: 1px solid var(--line-soft);
}

/* Čtyři sloupce: značka, dvě skupiny odkazů a kontakt. */
.footer-cols {
  display: grid;
  grid-template-columns: 1.6fr 1fr 1fr 1.2fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  padding-bottom: clamp(2.25rem, 4vw, 3rem);
}
.footer-col { min-width: 0; }
.footer-col h2 {
  margin-bottom: 1.1rem;
  font-size: .8rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim);
}

.footer-col-brand .brand-logo { height: 52px; margin-bottom: 1.1rem; }
.footer-addr { margin: 0 0 1.5rem; font-size: .95rem; color: var(--text-muted); }
.footer-follow {
  display: block; margin-bottom: .7rem;
  font-size: .8rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim);
}

.footer-links { display: flex; flex-direction: column; gap: .65rem; align-items: flex-start; }
.footer-links a {
  font-size: .98rem;
  color: var(--text-muted);
  transition: color .18s var(--ease);
}
.footer-links a:hover { color: var(--accent); }

.footer-hours {
  margin: 1.1rem 0 0;
  font-size: .92rem;
  color: var(--text-dim);
  line-height: 1.6;
}

/* sociální sítě */
.social { display: flex; gap: .55rem; }
.social a {
  display: grid; place-items: center;
  width: 40px; height: 40px;
  border: 1px solid var(--line);
  border-radius: 8px;
  color: var(--text-muted);
  transition: color .18s var(--ease), border-color .18s var(--ease), background .18s var(--ease);
}
.social a:hover {
  color: var(--accent-ink);
  background: var(--accent);
  border-color: var(--accent);
}
.social svg { width: 18px; height: 18px; display: block; }

/* členství v asociaci a partneři na jedné lince */
.footer-meta {
  display: flex; flex-wrap: wrap; align-items: center;
  justify-content: space-between;
  gap: 1.25rem 2.5rem;
  padding-block: 1.5rem;
  border-top: 1px solid var(--line-soft);
}
.cba {
  font-size: .95rem;
  color: var(--text-muted);
  border-bottom: 1px solid var(--line);
  padding-bottom: 1px;
  transition: color .18s var(--ease), border-color .18s var(--ease);
}
.cba:hover { color: var(--accent); border-color: var(--accent); }

.partners { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.5rem; }
.partners-label {
  font-size: .72rem; letter-spacing: .14em;
  text-transform: uppercase; color: var(--text-dim);
}
.partners ul { display: flex; flex-wrap: wrap; gap: .5rem 1.5rem; margin: 0; padding: 0; list-style: none; }
.partners li { font-size: .92rem; font-weight: 500; color: var(--text-muted); }

.footer-bottom {
  display: flex; flex-wrap: wrap; justify-content: space-between;
  gap: .5rem 2rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--line-soft);
  font-size: .9rem;
  color: var(--text-dim);
}
.footer-bottom p { margin: 0; }
.footer-author a { color: var(--text-muted); transition: color .18s var(--ease); }
.footer-author a:hover { color: var(--accent); }

/* ---------- 12b. PODSTRÁNKY ---------- */

/* Hlavička podstránky — zastupuje hero, které má jen úvodní strana. */
.page-head {
  position: relative;
  padding-top: clamp(3rem, 7vw, 5rem);
  padding-bottom: clamp(2rem, 4vw, 3rem);
  background:
    radial-gradient(760px 420px at 18% 0%, rgba(20, 8, 88, .06), transparent 62%),
    linear-gradient(180deg, var(--bg-alt), var(--bg));
}
.page-head h1 { font-size: clamp(2.4rem, 5.5vw, 4rem); }
.page-head .section-lead { max-width: 60ch; }

/* Sekce, která navazuje rovnou na .page-head, nepotřebuje plný horní odstup. */
.section-tight { padding-top: clamp(2.75rem, 6vw, 4rem); }

.back-link {
  display: inline-flex; align-items: center; gap: .45rem;
  margin-bottom: 1.25rem;
  font-size: .95rem; font-weight: 500;
  color: var(--text-dim);
  transition: color .18s var(--ease);
}
.back-link::before { content: '←'; font-size: 1.05em; }
.back-link:hover { color: var(--accent-hi); }

.disc-title { display: flex; align-items: center; flex-wrap: wrap; gap: .85rem; }

/* karta tréninku jako odkaz */
.card-link { display: flex; flex-direction: column; color: inherit; }
.card-link p { flex: 1; }
.card-more {
  display: inline-flex; align-items: center; gap: .4rem;
  margin-top: 1.1rem;
  font-size: .92rem; font-weight: 600;
  color: var(--accent);
}
.card-more::after { content: '→'; transition: transform .2s var(--ease); }
.card-link:hover .card-more::after { transform: translateX(3px); }

.slot-link { color: inherit; transition: background .18s var(--ease), border-color .18s var(--ease); }
.slot-link:hover {
  background: var(--surface-hi);
  background: color-mix(in srgb, var(--slot-color) 46%, #fff);
  border-color: color-mix(in srgb, var(--slot-color) 100%, #fff);
}

.callout-lg { padding: clamp(2rem, 4vw, 3rem); }
.callout-lg h2 { margin-bottom: .75rem; }
.callout-lg p { font-size: 1.05rem; }

/* ---------- 12c. STRÁNKA DISCIPLÍNY ---------- */
.disc-grid {
  display: grid;
  grid-template-columns: 1.6fr 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}
.disc-main h2 { font-size: 1.6rem; margin-bottom: 1rem; }
.disc-main > p { color: var(--text-muted); font-size: 1.08rem; max-width: 62ch; }

.disc-facts { display: grid; gap: 1rem; margin-top: 2.25rem; }
.fact {
  padding: 1.4rem 1.5rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
.fact h3 { margin-bottom: .4rem; font-size: 1.02rem; }
.fact p { color: var(--text-muted); font-size: .98rem; }

.disc-actions { display: flex; flex-wrap: wrap; gap: .85rem; margin-top: 2.25rem; }

.disc-side { display: grid; gap: 1rem; }
.side-box {
  padding: 1.6rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}
.side-box h2 { font-size: 1.1rem; margin-bottom: 1.1rem; }
.side-box .note { margin-top: 0; }

.disc-times { margin: 0; padding: 0; list-style: none; }
.disc-times li {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .1rem .75rem;
  padding: .75rem 0;
  border-bottom: 1px solid var(--line-soft);
}
.disc-times li:last-child { border-bottom: 0; }
.disc-times li:first-child { padding-top: 0; }
.disc-day { font-size: .98rem; font-weight: 500; }
.disc-times strong { font-size: .98rem; font-variant-numeric: tabular-nums; }
.disc-coach { grid-column: 1 / -1; font-size: .85rem; color: var(--text-dim); }

.coaches-compact { grid-template-columns: 1fr; gap: .6rem; }
.coaches-compact .coach { padding: .7rem; background: var(--bg-alt); }
.coaches-compact .coach-photo { width: 54px; height: 54px; }

.other-title { font-size: 1.3rem; margin-bottom: 1.25rem; }
.chips { display: flex; flex-wrap: wrap; gap: .6rem; }
.chip {
  padding: .6rem 1.15rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: 8px;
  font-size: .95rem; font-weight: 500;
  color: var(--text-muted);
  transition: all .18s var(--ease);
}
.chip:hover { border-color: var(--accent); color: var(--text); background: var(--surface-hi); }

/* autor webu v patičce */
.footer-author { margin: 0; }
.footer-author a { color: var(--text-muted); transition: color .18s var(--ease); }
.footer-author a:hover { color: var(--accent-hi); }

/* ---------- 12d. STRÁNKA TRENÉRA ---------- */
.coach-hero { display: flex; align-items: center; gap: clamp(1.25rem, 3vw, 2rem); flex-wrap: wrap; }

.coach-hero-photo {
  flex-shrink: 0;
  display: grid; place-items: center;
  width: clamp(120px, 15vw, 168px);
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  background: var(--surface-hi);
  border: 1px solid var(--line);
  color: var(--text-dim);
}
.coach-hero-photo img {
  width: 100%; height: 100%;
  object-fit: cover;
  object-position: center 22%;
}
/* zástupná ikonka uvnitř velkého kolečka se nesmí tvářit jako avatar v seznamu */
.coach-hero-photo .coach-photo {
  width: 100%; height: 100%;
  border: 0; border-radius: 0; background: transparent;
}

.coach-hero h1 { font-size: clamp(2.2rem, 5vw, 3.6rem); }
.coach-hero-role {
  margin: .5rem 0 0;
  font-size: clamp(1.02rem, 1.6vw, 1.15rem);
  color: var(--accent);
  font-weight: 500;
}

/* bloky na stránce trenéra pod sebou */
.disc-main > div + div { margin-top: 2.5rem; }
.disc-main > div > h2 { font-size: 1.6rem; margin-bottom: 1rem; }
.disc-main > div > p { color: var(--text-muted); font-size: 1.08rem; max-width: 62ch; }

/* karta trenéra jako odkaz */
.coach-link { color: inherit; }
.coach-link:hover { border-color: var(--accent); background: var(--surface-hi); }

/* ---------- 12e. PRVNÍ TRÉNINK ---------- */
.block-title { font-size: clamp(1.6rem, 2.8vw, 2.2rem); margin-bottom: 1rem; }
.block-title + .section-lead { margin-top: 0; margin-bottom: 2rem; }

/* číslované kroky */
.steps {
  counter-reset: krok;
  list-style: none;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1.15rem;
  margin: 1.75rem 0 0; padding: 0;
}
.steps li {
  counter-increment: krok;
  padding: 1.6rem 1.5rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
.steps li::before {
  content: counter(krok);
  display: grid; place-items: center;
  width: 34px; height: 34px;
  margin-bottom: 1rem;
  border-radius: 8px;
  background: var(--gold); color: var(--gold-ink);
  font-size: 1rem; font-weight: 700;
}
.steps h3 { margin-bottom: .4rem; }
.steps p { color: var(--text-muted); font-size: .98rem; }

/* co s sebou + co netřeba */
.bring-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: start;
}
.bring-grid .side-box h2 { font-size: 1.15rem; }
.bring-grid .side-box p { color: var(--text-muted); font-size: .98rem; }

.check-list { margin: 0; padding: 0; list-style: none; }
.check-list li {
  position: relative;
  padding: .7rem 0 .7rem 2rem;
  border-bottom: 1px solid var(--line-soft);
  font-size: 1.02rem;
}
.check-list li:last-child { border-bottom: 0; }
.check-list li::before {
  content: ''; position: absolute; left: .25rem; top: 1.35em;
  width: 10px; height: 6px;
  border-left: 2px solid var(--accent); border-bottom: 2px solid var(--accent);
  transform: rotate(-45deg);
}

/* co navíc podle disciplíny */
.bring-list { display: grid; gap: .6rem; }
.bring-row {
  display: grid;
  grid-template-columns: minmax(150px, 210px) 1fr;
  gap: .3rem 1.5rem;
  align-items: baseline;
  padding: 1.1rem 1.35rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  color: inherit;
  transition: border-color .18s var(--ease), background .18s var(--ease);
}
.bring-row:hover { border-color: var(--accent); background: var(--surface-hi); }
.bring-name { font-weight: 600; font-size: 1.02rem; }
.bring-text { color: var(--text-muted); font-size: .98rem; }

/* ---------- 12f. PROVOZNÍ ŘÁD ---------- */
.rules { max-width: 80ch; }
.rules-intro {
  font-size: 1.08rem;
  color: var(--text-muted);
  margin-bottom: 2.25rem;
}

/* Čísla bodů jsou vlastní, aby šla zarovnat k textu a odlišit barvou. */
.rules-list { counter-reset: pravidlo; list-style: none; margin: 0; padding: 0; }
.rules-list > li {
  counter-increment: pravidlo;
  position: relative;
  padding: 1.1rem 0 1.1rem 3.2rem;
  border-bottom: 1px solid var(--line-soft);
  line-height: 1.7;
}
.rules-list > li:last-child { border-bottom: 0; }
.rules-list > li::before {
  content: counter(pravidlo) '.';
  position: absolute; left: 0; top: 1.1rem;
  width: 2.3rem;
  text-align: right;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
}

.rules-group {
  font-size: 1.3rem;
  margin: 3rem 0 1.25rem;
  padding-top: 2.25rem;
  border-top: 1px solid var(--line);
}
.rules-sublist { margin: 0; padding: 0; list-style: none; }
.rules-sublist li {
  position: relative;
  padding: .7rem 0 .7rem 1.75rem;
  line-height: 1.7;
}
.rules-sublist li::before {
  content: ''; position: absolute; left: .3rem; top: 1.5em;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold);
}

/* bilance a datum narození na stránce trenéra */
.coach-facts { display: grid; gap: .75rem; margin: 1.75rem 0 0; }
.coach-facts > div {
  display: flex; flex-wrap: wrap; align-items: baseline; gap: .3rem 1rem;
  padding: .85rem 1.15rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
}
.coach-facts dt {
  min-width: 11rem;
  font-size: .9rem; color: var(--text-dim);
}
.coach-facts dd { margin: 0; font-weight: 600; font-variant-numeric: tabular-nums; }

/* karta vedení na stránce O klubu je odkaz */
.lead-card-link { color: inherit; transition: border-color .18s var(--ease), background .18s var(--ease); }
.lead-card-link:hover { border-color: var(--accent); background: var(--surface-hi); }

/* ---------- 12g. PŘIHLÁŠKA V HLAVIČCE STRÁNKY ---------- */
.head-split {
  display: grid;
  grid-template-columns: 1.55fr 1fr;
  gap: clamp(2rem, 4vw, 3.5rem);
  align-items: center;
}

.form-box {
  display: flex; flex-direction: column; align-items: flex-start;
  padding: clamp(1.6rem, 2.5vw, 2rem);
  background: var(--surface);
  border: 1px solid var(--line);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.form-icon {
  display: grid; place-items: center;
  width: 46px; height: 46px;
  margin-bottom: 1rem;
  border-radius: 10px;
  background: var(--gold-soft);
  color: var(--gold-ink);
}
.form-icon svg { width: 24px; height: 24px; }

.form-box h2 { font-size: 1.25rem; margin-bottom: .5rem; }
.form-box p { color: var(--text-muted); font-size: .98rem; margin-bottom: 1.4rem; }
.form-actions { display: grid; gap: .6rem; width: 100%; }
.form-box .btn { width: 100%; justify-content: center; }
.form-note {
  margin-top: .7rem;
  font-size: .85rem;
  color: var(--text-dim);
  letter-spacing: .02em;
}

/* ---------- 12h. PROČ ZROVNA K NÁM ---------- */
.reasons {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
  gap: 1.15rem;
}

/* Každý důvod vede dál na stránku, která ho dokládá. */
.reason {
  position: relative;
  display: flex; flex-direction: column;
  padding: clamp(1.75rem, 3vw, 2.25rem);
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
  color: inherit;
  overflow: hidden;
  transition: transform .25s var(--ease), border-color .25s var(--ease),
              box-shadow .25s var(--ease);
}
.reason::before {
  content: '';
  position: absolute; inset: 0 0 auto 0;
  height: 3px;
  background: var(--gold);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .3s var(--ease);
}
.reason:hover {
  transform: translateY(-4px);
  border-color: var(--line);
  box-shadow: var(--shadow);
}
.reason:hover::before { transform: scaleX(1); }

.reason-icon {
  display: grid; place-items: center;
  width: 58px; height: 58px;
  margin-bottom: 1.35rem;
  border-radius: 12px;
  background: var(--gold-soft);
  color: var(--gold-ink);
  font-size: 1.5rem;
  transition: background .25s var(--ease), color .25s var(--ease),
              transform .25s var(--ease);
}
.reason:hover .reason-icon {
  background: var(--accent);
  color: var(--accent-ink);
  transform: rotate(-6deg) scale(1.05);
}

.reason h3 { font-size: 1.22rem; margin-bottom: .6rem; }
.reason p { flex: 1; color: var(--text-muted); font-size: 1rem; margin-bottom: 1.35rem; }

.reason-more {
  display: inline-flex; align-items: center; gap: .45rem;
  font-size: .95rem; font-weight: 600;
  color: var(--accent);
}
.reason-more::after {
  content: '→';
  transition: transform .25s var(--ease);
}
.reason:hover .reason-more::after { transform: translateX(4px); }

@media (prefers-reduced-motion: reduce) {
  .reason, .reason-icon, .reason::before, .reason-more::after { transition: none; }
  .reason:hover { transform: none; }
}

/* ---------- 12i. ZVĚTŠENÍ FOTKY ---------- */
.coach-hero-photo.is-zoomable {
  cursor: zoom-in;
  transition: transform .2s var(--ease), border-color .2s var(--ease);
}
.coach-hero-photo.is-zoomable:hover,
.coach-hero-photo.is-zoomable:focus-visible {
  transform: scale(1.03);
  border-color: var(--accent);
}

.lightbox {
  position: fixed; inset: 0; z-index: 200;
  display: grid; place-items: center;
  gap: 1rem;
  padding: clamp(1.5rem, 5vw, 3rem);
  background: rgba(12, 4, 51, .92);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.lightbox-img {
  max-width: min(1100px, 100%);
  max-height: 78vh;
  width: auto; height: auto;
  border-radius: var(--radius-lg);
  box-shadow: 0 24px 60px rgba(0, 0, 0, .45);
}
.lightbox-caption {
  margin: 0;
  color: #f4f6f8;
  font-size: 1.05rem; font-weight: 600;
  text-align: center;
}
.lightbox-close {
  position: absolute;
  top: calc(1rem + env(safe-area-inset-top, 0px)); right: 1rem;
  width: 44px; height: 44px;
  display: grid; place-items: center;
  background: rgba(255, 255, 255, .12);
  border: 1px solid rgba(255, 255, 255, .25);
  border-radius: 10px;
  color: #fff;
  font-size: 1.6rem; line-height: 1;
  cursor: pointer;
  transition: background .18s var(--ease);
}
.lightbox-close:hover { background: rgba(255, 255, 255, .22); }

/* stránka pod otevřenou fotkou se nemá posouvat */
body.has-lightbox { overflow: hidden; }

/* ---------- 12j. ÚSPĚCHY ---------- */
.ach-groups { display: grid; gap: clamp(2rem, 3.5vw, 3rem); }

.ach-year-head {
  display: flex; align-items: baseline; flex-wrap: wrap; gap: .25rem .9rem;
  margin-bottom: 1rem;
  padding-bottom: .75rem;
  border-bottom: 2px solid var(--line);
}
.ach-year-num {
  font-size: clamp(1.5rem, 2.6vw, 2rem);
  font-weight: 800;
  letter-spacing: -.02em;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.ach-year-head h3 { font-size: 1.15rem; font-weight: 600; color: var(--text-muted); }

.ach-items { margin: 0; padding: 0; list-style: none; display: grid; gap: .1rem; }

/* Řádek výsledku: co se povedlo vlevo, kdo vpravo. */
.ach-item {
  display: flex; align-items: baseline; justify-content: space-between;
  flex-wrap: wrap; gap: .2rem 1.5rem;
  padding: .8rem 0 .8rem 1.6rem;
  position: relative;
  border-bottom: 1px solid var(--line-soft);
}
.ach-item:last-child { border-bottom: 0; }
.ach-item::before {
  content: ''; position: absolute;
  left: .25rem; top: 1.25rem;
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--gold);
}

/* Úspěch celého klubu — bez jména, zdůrazněný. */
.ach-item-club::before { background: var(--accent); }
.ach-item-club .ach-what { font-weight: 600; }

.ach-what { color: var(--text); font-size: 1rem; }
.ach-item-club .ach-what { color: var(--text); }

.ach-who {
  font-size: .98rem; font-weight: 600;
  color: var(--text-muted);
  text-align: right;
}
.ach-who-link {
  color: var(--accent);
  border-bottom: 1px solid transparent;
  transition: border-color .18s var(--ease);
}
.ach-who-link:hover { border-color: var(--accent); }

/* Dlouhý popis se nelomí vedle jména, ale pod ně. */
.ach-item.is-long { flex-direction: column; align-items: flex-start; gap: .45rem; }
.ach-item.is-long .ach-what { order: 2; color: var(--text-muted); font-size: .97rem; line-height: 1.65; }
.ach-item.is-long .ach-who { order: 1; text-align: left; font-size: 1.05rem; }

/* ---------- 12k. GALERIE PROSTOR ---------- */
/* Čtyři sloupce; první snímek zabírá čtverec 2×2, zbytek se skládá kolem.
   Sedm fotek tak zaplní mřížku beze zbytku. */
.gallery {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: .9rem;
}
.gallery .shot:first-child {
  grid-column: span 2;
  grid-row: span 2;
  aspect-ratio: auto;
}

.shot {
  position: relative;
  display: block;
  padding: 0;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  cursor: zoom-in;
  aspect-ratio: 3 / 2;
  transition: transform .25s var(--ease), border-color .25s var(--ease),
              box-shadow .25s var(--ease);
}
.shot img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s var(--ease);
}
.shot:hover, .shot:focus-visible {
  border-color: var(--accent);
  box-shadow: var(--shadow);
  transform: translateY(-3px);
}
.shot:hover img { transform: scale(1.05); }

@media (prefers-reduced-motion: reduce) {
  .shot, .shot img { transition: none; }
  .shot:hover { transform: none; }
  .shot:hover img { transform: none; }
}

/* fotka sálu na stránce Kontakt */
.contact-photo {
  margin: 1.15rem 0 0;
  border: 1px solid var(--line-soft);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--surface);
}
.contact-photo img {
  display: block;
  width: 100%; height: auto;
  aspect-ratio: 21 / 9;
  object-fit: cover;
}
.contact-photo figcaption {
  padding: .8rem 1.15rem;
  font-size: .9rem;
  color: var(--text-dim);
  border-top: 1px solid var(--line-soft);
}

/* pravidla pro přihlášku podle věku */
.forms-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.15rem;
  margin-top: 1.75rem;
}
.form-rule {
  padding: 1.6rem 1.75rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-radius: var(--radius-lg);
}
/* Mladší potřebují podpis rodiče — ta kartička je důležitější. */
.form-rule.is-minor { border-color: var(--gold); background: linear-gradient(180deg, var(--gold-soft), transparent 55%), var(--surface); }
.form-rule h3 { font-size: 1.1rem; margin-bottom: .6rem; }
.form-rule p { color: var(--text-muted); font-size: .98rem; line-height: 1.65; }

/* citát */
.quote-section { padding-block: clamp(3.5rem, 7vw, 5.5rem); }
.quote {
  max-width: 58ch;
  margin: 0 auto;
  text-align: center;
}
.quote blockquote {
  margin: 0;
  font-size: clamp(1.35rem, 2.8vw, 2rem);
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: -.015em;
  color: var(--text);
}
.quote blockquote::before,
.quote blockquote::after { content: '"'; color: var(--gold); }
.quote figcaption {
  margin-top: 1.25rem;
  font-size: .9rem; font-weight: 700;
  letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim);
}

/* vlastní slova trenéra */
.coach-quote {
  margin: 1.75rem 0 0;
  padding: 1.4rem 1.6rem;
  background: var(--surface);
  border: 1px solid var(--line-soft);
  border-left: 3px solid var(--gold);
  border-radius: var(--radius);
}
.coach-quote blockquote {
  margin: 0;
  font-size: 1.08rem;
  line-height: 1.6;
  font-style: italic;
  color: var(--text);
}
.coach-quote blockquote::before { content: '\201E'; color: var(--gold); }
.coach-quote blockquote::after { content: '\201C'; color: var(--gold); }

/* ---------- 13. RESPONZIVITA ---------- */
@media (max-width: 1240px) {
  .schedule { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

@media (max-width: 1020px) {
  .club-grid { grid-template-columns: 1fr; }
  .disc-grid { grid-template-columns: 1fr; }
  .head-split { grid-template-columns: 1fr; align-items: start; }
  .gallery { grid-template-columns: repeat(2, 1fr); }
  .gallery .shot:first-child { grid-row: span 1; aspect-ratio: 3 / 2; }
  .bring-grid { grid-template-columns: 1fr; }
  .coaches-compact { grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
  .header-cta { display: none; }

  .burger { display: flex; }
  .nav {
    position: fixed;
    top: calc(92px + env(safe-area-inset-top, 0px)); left: 0; right: 0;
    flex-direction: column; align-items: stretch; gap: 0;
    padding: .5rem 24px calc(1.25rem + env(safe-area-inset-bottom, 0px));
    background: rgba(251, 251, 250, .98);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border-bottom: 1px solid var(--line-soft);
    transform: translateY(-8px);
    opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity .2s var(--ease), transform .2s var(--ease), visibility .2s;
  }
  .nav.is-open { opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
  .nav a { padding: .85rem .25rem; border-radius: 0; border-bottom: 1px solid var(--line-soft); font-size: 1rem; }
  .nav a:hover { background: transparent; }
  .nav a.is-current::after { display: none; }
}

/* Kdo má v systému zapnuté omezení pohybu, video nedostane.
   (JS ho navíc vůbec nezačne stahovat.) */
@media (prefers-reduced-motion: reduce) {
  .hero-video { display: none; }
}

@media (max-width: 900px) {
  .footer-cols { grid-template-columns: 1fr 1fr; gap: 2rem; }
  .footer-col-brand { grid-column: 1 / -1; }
}

@media (max-width: 520px) {
  .footer-cols { grid-template-columns: 1fr; }
  .footer-meta { flex-direction: column; align-items: flex-start; }
  .gallery { grid-template-columns: 1fr; }
  .gallery .shot:first-child { grid-column: span 1; }
}

@media (max-width: 720px) {
  /* Záběr je na šířku a boxer stojí v jeho pravé části. Na výšku displeje
     by výchozí středový ořez ukázal jen pytel, proto se výřez posouvá. */
  .hero-video { object-position: 78% center; }

  /* Závoj je na širokém displeji vedený zleva doprava, protože text sedí
     vlevo. Na mobilu je text přes celou šířku, takže se ztmavení vede
     shora dolů — jinak by video úplně zmizelo. */
  .hero-veil {
    background:
      linear-gradient(180deg,
        rgba(12,4,51,.92) 0%,
        rgba(12,4,51,.68) 34%,
        rgba(12,4,51,.72) 62%,
        rgba(12,4,51,.95) 100%);
  }

  .schedule { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .callout { flex-direction: column; align-items: flex-start; }
  .disc-facts { gap: .85rem; }
  .bring-row { grid-template-columns: 1fr; gap: .35rem; }
  .map-embed { aspect-ratio: 4 / 3; }
}

@media (max-width: 520px) {
  .wrap { padding-inline: 18px; }
  .nav { padding-inline: 18px; }
  .schedule { grid-template-columns: 1fr; }

  .day { flex-direction: row; align-items: stretch; }
  .day-head {
    display: flex; align-items: center; justify-content: center;
    flex-shrink: 0; width: 58px;
    padding: .75rem .25rem;
    border-bottom: 0; border-right: 1px solid var(--line-soft);
  }
  .day-name { display: none; }
  .day-short { display: block; }
  .day-body { padding: .6rem; }

  .brand-logo-header { height: 42px; }
}

/* Na nejužších telefonech musí logo ustoupit přepínači jazyka a menu. */
@media (max-width: 390px) {
  .brand-logo-header { height: 36px; }
}
