/* ==========================================================================
   Golf & Country Club Svobodné Hamry — pracovní verze nového webu
   ========================================================================== */

/* Pojistka: kdykoliv nějaká třída nastaví display natvrdo (stejná
   specifičnost jako prohlížečovo [hidden]{display:none}), autorský styl by
   jinak vyhrál a hidden atribut by přestal vizuálně fungovat. */
[hidden] { display: none !important; }

:root{
  --green-deep:#032414;
  --green:#0b3d20;
  --green-mid:#0f4d28;
  --gold:#c7a544;
  --gold-light:#e4cd8c;
  --cream:#f8f3e6;
  --cream-2:#efe6cf;
  --green-pastel:#dbe9dc;
  --white:#ffffff;
  --ink:#152016;
  --ink-soft:#4a544c;
  --line:rgba(199,165,68,.35);
  --shadow:0 20px 50px -25px rgba(3,36,20,.45);
  --radius:2px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,sans-serif;
  font-size:16px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
}

h1,h2,h3,h4{
  font-family:'Fraunces',Georgia,serif;
  font-weight:600;
  color:var(--green-deep);
  line-height:1.15;
  margin:0 0 .5em;
  letter-spacing:.01em;
}
h1{font-size:clamp(2.1rem,4.5vw,3.4rem);}
h2{font-size:clamp(1.6rem,3vw,2.3rem);}
h3{font-size:1.25rem;}
p{margin:0 0 1em;color:var(--ink-soft);}
a{color:inherit;text-decoration:none;}
.prose-link{text-decoration:underline;}
img{max-width:100%;display:block;}
ul{margin:0 0 1em;padding-left:1.2em;color:var(--ink-soft);}
li{margin-bottom:.35em;}

.container{
  width:100%;
  max-width:1180px;
  margin:0 auto;
  padding:0 24px;
}

.eyebrow{
  display:inline-flex;
  align-items:center;
  gap:.6em;
  font-family:'Inter',sans-serif;
  font-size:.72rem;
  font-weight:600;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--gold);
  margin-bottom:.9em;
}
.eyebrow::before{
  content:"";
  width:26px;height:1px;background:var(--gold);
}

.divider{
  width:56px;height:2px;background:var(--gold);
  margin:18px 0 26px;
  border:none;
}
.center .divider{margin-left:auto;margin-right:auto;}

/* ---------- topbar ---------- */
.topbar{
  background:var(--green-deep);
  color:var(--cream-2);
  font-size:.78rem;
}
.topbar .container{
  display:flex;align-items:center;justify-content:space-between;
  gap:16px;flex-wrap:wrap;padding-top:8px;padding-bottom:8px;
}
.topbar-status{display:flex;gap:18px;flex-wrap:wrap;color:var(--gold-light);letter-spacing:.03em;}
.topbar-links{display:flex;gap:18px;flex-wrap:wrap;}
.topbar-links a{opacity:.9;}
.topbar-links a:hover{color:var(--gold-light);}

/* Kotvy (menu → #sekce, viz KNOWN_SECTION_ANCHORS v routes/admin.js)
   skákaly pod sticky hlavičku — ta zůstává nahoře přes obsah, takže
   začátek sekce (i s nadpisem) zůstal schovaný pod ní (Petr,
   2026-09-24). scroll-margin-top na cíli skoku je přesně na tohle
   určené — prohlížeč sám při skrolování na #id nechá tuhle mezeru
   navíc nad hranicí elementu. Mobil má hlavičku vyšší (dva řádky:
   logo+jméno a Hřiště/Klubovna), proto víc prostoru. */
section[id]{scroll-margin-top:130px;}
@media (max-width:760px){
  section[id]{scroll-margin-top:150px;}
}

/* ---------- header / nav ---------- */
header.site-header{
  background:var(--white);
  position:sticky;top:0;z-index:50;
  box-shadow:0 1px 0 var(--line);
}
.nav-wrap{
  display:flex;align-items:center;justify-content:space-between;
  padding:14px 0;gap:20px;
}
.brand-wrap{display:flex;flex-direction:column;}
.brand{display:flex;align-items:center;gap:14px;}
.brand img{height:84px;width:auto;}
.brand-text{font-family:'Fraunces',serif;line-height:1.1;}
.brand-text .top{display:block;font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-family:'Inter',sans-serif;font-weight:600;}
.brand-text .bottom{display:block;font-size:1.25rem;color:var(--green-deep);font-weight:600;}

nav.main-nav{display:flex;align-items:center;gap:2px;}
nav.main-nav a{
  padding:10px 16px;font-size:.86rem;font-weight:600;
  letter-spacing:.03em;color:var(--ink);
  border-bottom:2px solid transparent;
  transition:color .15s, border-color .15s;
}
nav.main-nav a:hover, nav.main-nav a.active{color:var(--green-deep);border-color:var(--gold);}
/* Hlavičková CTA tlačítka (Rezervace/E-Shop/Webkamera) sdílí barvy i
   hover chování s .btn-gold, co web používá všude jinde (formuláře,
   "Zpět" odkazy…) — vlastní jen rozestup v nav liště. Vyšší specificita
   (nav.main-nav a.nav-btn…) je nutná, aby přebila `nav.main-nav a` výše
   (padding/border-bottom/color pro obyčejné odkazy v menu). Jen zlatá
   varianta — zelený obrys u Webkamery dřív splýval s ikonkou při
   najetí (hover vyplňoval pozadí stejnou zelenou jako ikonka). */
nav.main-nav a.nav-btn{
  display:inline-flex;align-items:center;gap:8px;
  margin-left:8px;padding:11px 20px;
}
nav.main-nav a.nav-btn.btn-gold{background:var(--gold);color:var(--green-deep);border:1px solid var(--gold);}
nav.main-nav a.nav-btn.btn-gold:hover{background:var(--gold-light);border-color:var(--gold-light);}
nav.main-nav a.nav-btn.nav-btn-icon{padding:8px;}
.nav-btn-icon img{display:block;height:22px;width:22px;object-fit:contain;}

.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px;}
.nav-toggle span{display:block;width:24px;height:2px;background:var(--green-deep);margin:5px 0;}

/* ---------- otevřeno/zavřeno hřiště, driving range a klubovna (viz
   header.ejs, lib/opening-status.js) — na mobilu pod jménem klubu, na
   desktopu vpravo pod tlačítky (Rezervace/E-Shop/Webkamera), viz .nav-col
   níže. Časy jsou vidět rovnou (manažer, 2026-10-10), dřív byly jen
   v bublině po najetí myší / ťuknutí. Na úzkém mobilu se řádky zalomí. */
.header-status-row{display:inline-flex;align-items:center;gap:6px;white-space:nowrap;}
.header-status-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex:none;}
.header-status-dot.is-open{background:#2e7d32;}
.header-status-dot.is-closed{background:#c62828;}
.header-status-hours{font-weight:500;font-variant-numeric:tabular-nums;}
.header-status{display:flex;flex-wrap:wrap;gap:2px 14px;font-size:.72rem;font-weight:600;color:var(--ink-soft);}
.header-status-mobile{flex-basis:100%;order:3;justify-content:center;flex-wrap:nowrap;gap:0 12px;margin-top:8px;}
@media (max-width:760px){
  /* Řádek 1: logo + hamburger, řádek 2: otvírací doba přes celou šířku.
     .nav-col (menu je na mobilu position:fixed, v toku nezabírá místo)
     až na konec, jinak by mezerou odsunul hamburger na další řádek. */
  .nav-wrap{flex-wrap:wrap;row-gap:0;}
  .brand-wrap{flex:1 1 auto;min-width:0;}
  .nav-toggle{order:2;}
  .nav-col{order:4;}
}
.header-status-desktop{display:none;}
/* Vrácené zpátky na obyčejné zarovnání (Petr, 2026-09-23: pokus se
   stretch+space-between hnul i s menu, což needěl). Menu teď zůstává
   přesně tam, kde bylo — .header-status-desktop se z tohohle flow
   úplně vyjímá přes position:absolute níže, ať se ho žádná změna
   nav-col nemůže dotknout. */
.nav-col{display:flex;flex-direction:column;align-items:flex-end;}

@media (min-width:761px){
  .nav-wrap{padding:14px 0;}
  .header-status-mobile{display:none;}
  /* position:absolute, zakotvené na nav.main-nav (ne na nav-wrap) —
     kotva k paddingu hlavičky (bottom:Npx) se ve skutečném layoutu
     nechovala, jak jsem čekal (Petr, 2026-09-23: "větší mezera
     zdola než shora"), takže radši přímý, ověřitelný vztah: pevná
     mezera OD MENU (top:100% + margin-top), ne odhad zbylého
     prostoru k patě hlavičky. Menu se tím vůbec nedotkne. */
  nav.main-nav{position:relative;}
  .header-status-desktop{
    display:flex;position:absolute;top:100%;right:0;margin-top:10px;
  }
}

/* ---------- dropdown submenus ---------- */
.has-dropdown{position:relative;display:flex;align-items:center;}
.dropdown-toggle{display:none;background:none;border:none;cursor:pointer;padding:10px 6px;margin:0;}
.dropdown-toggle .caret{
  display:block;width:8px;height:8px;
  border-right:2px solid var(--ink-soft);border-bottom:2px solid var(--ink-soft);
  transform:rotate(45deg);transition:transform .15s;
}
.dropdown{
  position:absolute;top:100%;left:0;min-width:230px;
  background:var(--white);border:1px solid var(--line);border-radius:10px;
  box-shadow:0 14px 34px rgba(0,0,0,.14);
  padding:8px;margin-top:0;
  display:none;flex-direction:column;z-index:60;
}
.has-dropdown:hover .dropdown,
.has-dropdown:focus-within .dropdown,
.has-dropdown.open .dropdown{display:flex;}
.dropdown a{
  padding:9px 12px !important;border-bottom:none !important;
  border-radius:6px;font-size:.85rem;font-weight:500;white-space:nowrap;
  color:var(--ink);
}
.dropdown a:hover{background:var(--cream);color:var(--green-deep) !important;}
/* Podpoložka menu, co sama má další podpoložky (libovolná hloubka, viz
   partials/nav-dropdown-children.ejs) — bez nového hover/flyout JS,
   jen odsazený seznam uvnitř stejného panelu. */
.dropdown-group-label{font-weight:700;color:var(--green-deep);}
.dropdown-nested{display:flex;flex-direction:column;padding-left:12px;border-left:2px solid var(--line);margin:2px 0 6px 12px;}
.dropdown-nested a{font-weight:400;font-size:.82rem;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:10px;
  padding:13px 28px;border-radius:999px;
  font-size:.85rem;font-weight:600;letter-spacing:.04em;
  border:1px solid var(--gold);
  cursor:pointer;transition:all .18s ease;
}
.btn-gold{background:var(--gold);color:var(--green-deep);border-color:var(--gold);}
.btn-gold:hover{background:var(--gold-light);border-color:var(--gold-light);}
.btn-outline{background:transparent;color:var(--white);border-color:rgba(255,255,255,.55);}
.btn-outline:hover{background:rgba(255,255,255,.12);border-color:var(--white);}
.btn-outline-dark{background:transparent;color:var(--green-deep);border-color:var(--green-deep);}
.btn-outline-dark:hover{background:var(--green-deep);color:var(--white);}

/* ---------- hero ---------- */
.hero{
  position:relative;overflow:hidden;
  background:
    radial-gradient(ellipse at 20% 20%, rgba(199,165,68,.18), transparent 55%),
    radial-gradient(ellipse at 85% 80%, rgba(199,165,68,.12), transparent 50%),
    linear-gradient(155deg, rgba(3,36,20,.62) 0%, rgba(11,61,32,.5) 55%, rgba(15,77,40,.42) 100%);
  color:var(--white);
  padding:96px 0 110px;
}
/* Fotka na pozadí je nepovinná (viz .page-hero-photo níže, stejný vzor)
   — bez ní zůstává jen přechod výše. */
.hero.hero-photo{
  background:
    radial-gradient(ellipse at 20% 20%, rgba(199,165,68,.18), transparent 55%),
    radial-gradient(ellipse at 85% 80%, rgba(199,165,68,.12), transparent 50%),
    linear-gradient(155deg, rgba(3,36,20,.62) 0%, rgba(11,61,32,.5) 55%, rgba(15,77,40,.42) 100%),
    var(--hero-bg-image);
  background-size:auto,auto,auto,cover;
  background-position:center,center,center,center;
  background-repeat:no-repeat;
}
.hero h1,.hero-lead,.hero .eyebrow{text-shadow:0 2px 12px rgba(0,0,0,.55);}
.hero::after{
  content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(255,255,255,.14) 1px, transparent 1px);
  background-size:22px 22px;opacity:.35;pointer-events:none;
}
.hero .container{position:relative;z-index:1;}
.hero-inner{max-width:640px;}
.hero .eyebrow{color:var(--gold-light);}
.hero .eyebrow::before{background:var(--gold-light);}
.hero h1{color:var(--white);}
.hero-lead p{color:rgba(255,255,255,.82);font-size:1.08rem;max-width:520px;margin:0;}
.hero-actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:30px;}

.hero-facts{
  position:relative;z-index:1;
  margin-top:56px;display:grid;grid-template-columns:repeat(4,1fr);
  border-top:1px solid rgba(255,255,255,.18);padding-top:26px;gap:20px;
}
.hero-facts div{border-left:1px solid rgba(255,255,255,.18);padding-left:18px;}
.hero-facts strong{display:block;font-family:'Fraunces',serif;font-size:1.5rem;color:var(--gold-light);}
.hero-facts span{font-size:.78rem;color:rgba(255,255,255,.7);letter-spacing:.03em;}

/* page (sub) hero, smaller */
.page-hero{
  background:linear-gradient(155deg,var(--green-deep) 0%,var(--green) 100%);
  color:var(--white);padding:64px 0 74px;position:relative;overflow:hidden;
}
.page-hero::after{
  content:"";position:absolute;inset:0;
  background-image:radial-gradient(rgba(255,255,255,.14) 1px, transparent 1px);
  background-size:22px 22px;opacity:.3;
}
/* Fotka na pozadí je nepovinná (nahraditelná/odebiratelná příloha
   "<page>.hero.pozadi", viz getHeroBg() v routes/public.js) — třída se
   přidá jen když admin fotku nahrál, --hero-bg-image jde inline stylem
   z šablony. Bez fotky zůstává jen přechod výše. */
/* Zesvětlený gradient (Petr, 2026-09-23) — stejný tvar/barva, jen nižší
   krytí. Původní .72/.55/.45 → zkoušené .5/.35/.25 (o 1/3 světlejší)
   bylo moc, doladěno na .54/.41/.34 (o 1/4 světlejší než původní). */
.page-hero.page-hero-photo{
  background:
    linear-gradient(155deg, rgba(3,36,20,.54) 0%, rgba(11,61,32,.41) 55%, rgba(15,77,40,.34) 100%),
    var(--hero-bg-image);
  background-size:cover;background-position:center;background-repeat:no-repeat;
}
.page-hero .container{position:relative;z-index:1;}
.page-hero h1{color:var(--white);margin-bottom:.3em;}
/* Se zesvětleným gradientem výš (nižší krytí fotky) potřeboval text
   pod nadpisem víc kontrastu — jasnější bílá + jemný stín (Petr,
   2026-09-23). */
.page-hero-lead p{color:rgba(255,255,255,.95);text-shadow:0 1px 3px rgba(0,0,0,.35);max-width:560px;margin:0;}
/* Jen mobil: text pod nadpisem o řádek níž, nadpis samotný nahoru
   (Petr, 2026-09-23 — po přidání Hřiště/Klubovna do hlavičky byla
   celá hlavička vyšší a nadpis banneru se posunul níž s ní; padding-top
   zúžen, ať se to vykompenzuje). display:flow-root na .page-hero-lead
   je nutné, jinak margin-top textu "prosákne" ven z prázdného obalu a
   splyne s mezerou pod nadpisem (margin collapse), místo aby se k ní
   přičetl. padding-bottom zúžený o zbytek, ať banner nenarostl. */
@media (max-width:760px){
  .page-hero-lead{display:flow-root;}
  .page-hero-lead p{margin-top:2.1em;}
  .page-hero{padding:40px 0 31px;}
}

/* Banner s fotkou na velkém monitoru (Petr, 2026-09-24): výška banneru
   byla dřív daná jen paddingem/textem, needzávisela na šířce — čím
   širší monitor, tím plošší (širší a nižší) obdélník, do kterého
   background-size:cover fotku namačkal tak, že zbyl jen úzký vodorovný
   pruh. aspect-ratio necháváme počítat výšku ze šířky, ať banner na
   velkém monitoru přirozeně naroste; max-height brzdí, ať na
   ultra-širokých monitorech nenarostl přes rozumnou míru; min-height je
   pojistka proti .page-hero/.hero mít overflow:hidden — bez ní by
   aspect-ratio mohl na užší straně rozsahu spočítat míň místa, než
   potřebuje nadpis/text, a ten by se tiše uřízl. Práh 1700px (ne
   obecná "desktop" hranice 761px) záměrně vysoký, ať 13" i 15"
   notebooky (běžně 1280–1536 px šířky okna) zůstanou na původní pevné
   výšce a roztahovat se to začne, až nad ně (Petr, 2026-09-24). CSS
   needzná fyzickou velikost displeje v palcích, jen šířku okna v
   pixelech — u neškálovaného 15,6" Full HD notebooku na celou
   obrazovku (vzácné, výchozí u Windows bývá menší efektivní šířka) by
   šlo teoreticky i přes tenhle práh, ale to je krajní případ, ne
   běžný stav. */
@media (min-width:1700px){
  /* width:100% je pojistka — s aspect-ratio+max-height zároveň si
     prohlížeč u obyčejného bloku občas spočítá i šířku podle poměru
     stran místo aby ji nechal na 100 % a jen ořízl výšku; bez tohohle
     se pak vpravo od banneru ukázalo pozadí stránky (béžové .cream),
     ne bílé — jak si všiml Petr, 2026-09-24. */
  .page-hero.page-hero-photo{aspect-ratio:5/1;min-height:230px;max-height:480px;width:100%;}
  .hero.hero-photo{aspect-ratio:16/5;min-height:400px;max-height:620px;width:100%;}
}
.breadcrumb{font-size:.78rem;color:rgba(255,255,255,.65);letter-spacing:.03em;}
.breadcrumb a{color:rgba(255,255,255,.9);}
.breadcrumb a:hover{color:var(--gold-light);}

/* ---------- sections ---------- */
section{padding:84px 0;}
/* Volné prvky pod pevnou sekcí (partials/section-children.ejs) navazují na sekci nad sebou. */
section.section-children{padding-top:0;margin-top:-44px;}
.section-cream{background:var(--cream);}
.section-white{background:var(--white);}
.section-green{background:var(--green-deep);color:var(--cream-2);}
.section-green h2, .section-green h3{color:var(--white);}
.section-green p{color:rgba(248,243,230,.78);}
.section-head{max-width:620px;margin-bottom:48px;}
.section-head.center{margin-left:auto;margin-right:auto;text-align:center;}
.section-head.right{margin-left:auto;text-align:right;}
.right .divider{margin-left:auto;}

.grid{display:grid;gap:32px;}
.grid-2{grid-template-columns:1fr 1fr;}
.grid-3{grid-template-columns:repeat(3,1fr);}
.grid-4{grid-template-columns:repeat(4,1fr);}

/* feature / icon cards */
.icon-card{
  background:var(--white);border:1px solid var(--line);
  padding:36px 30px;border-radius:var(--radius);
  /* transition: viz .icon-card, .people-card, .news-card u .reveal
     níže — .reveal by jinak pravidlo tady přebilo (stejná specificita,
     pozdější v souboru). */
}
.icon-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.icon-card .icon{width:46px;height:46px;margin-bottom:20px;color:var(--gold);}
.icon-card .icon svg{width:100%;height:100%;stroke:var(--gold);fill:none;stroke-width:1.3;}
.icon-card h3{margin-bottom:10px;}
.icon-card p{margin-bottom:16px;font-size:.94rem;}
/* Markdown seznam (- odrážka) v textu dlaždice nezdědil zmenšené písmo
   odstavců výše — pravidlo cílilo jen na <p>, ne na <ul>/<li> (viz
   "Výhody členství mládeže" na Mládeži, nápadně větší text). */
.icon-card ul, .icon-card ol{margin:0 0 16px;padding-left:20px;font-size:.94rem;}
.icon-card li{margin-bottom:4px;}
/* .more bez omezení na "a" — hriste.ejs (.icon-card-teren) má stejný
   vizuální odkaz jako <span> (celá dlaždice je sama o sobě <a>, vnořený
   <a> uvnitř by nebyl platné HTML), ať se styl skutečně shoduje na
   VŠECH dlaždicích webu, ne jen tam, kde je "více" vlastní <a>. */
.icon-card .more{font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--green-deep);border-bottom:1px solid var(--gold);padding-bottom:2px;}
.icon-card p strong{color:var(--green-deep);}

/* "Proč hrát u nás" (Domů) — vlastní ilustrovaná ikona jako průsvitný
   vodoznak v rohu místo linkové ikony nahoře. Scoped jen na tuhle
   sekci (.icon-card-teren) — Mládež a Další obsah zůstávají u
   .icon-card beze změny. */
.icon-card-teren{position:relative;overflow:hidden;}
.icon-card-teren .tile-watermark{position:absolute;top:10px;right:10px;width:83px;opacity:.2;pointer-events:none;}
.icon-card-teren .tile-watermark img{display:block;width:100%;height:auto;}
.icon-card-teren h3{position:relative;max-width:80%;}
.icon-card-teren p{position:relative;max-width:92%;}

/* "Další obsah" (volné bloky na konci hlavních stránek) — každý blok je
   dlaždice (.icon-card), libovolná kombinace obrázku/textu/přílohy/
   tlačítka. */
.extra-blocks-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(240px, 1fr));gap:32px;margin-top:8px;}

/* news cards */
.news-card{
  background:var(--white);border:1px solid var(--line);display:flex;flex-direction:column;height:100%;
  /* transition: viz .icon-card, .people-card, .news-card u .reveal níže. */
}
.news-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.news-card .body{padding:26px 26px 28px;}
.news-date{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:10px;display:block;}
.news-card h3{font-size:1.1rem;margin-bottom:10px;}
.news-card p{font-size:.92rem;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:7;line-clamp:7;overflow:hidden;}
.news-card a.more{font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--green-deep);border-bottom:1px solid var(--gold);padding-bottom:2px;margin-top:auto;align-self:flex-start;text-decoration:none;}
.news-thumb{height:8px;background:linear-gradient(90deg,var(--green-deep),var(--gold));}
.news-thumb.has-photo{height:160px;overflow:hidden;}
.news-thumb.has-photo img{width:100%;height:100%;object-fit:cover;display:block;}

/* aktuality detail / pagination */
.article-body{max-width:720px;margin:0 auto;}
.article-body p{margin-bottom:1.1em;}
.article-body ol,.article-body ul{margin:0 0 1.1em;padding-left:1.4em;}
.article-body li{margin-bottom:.5em;}
/* Mapa stránek (views/mapa-stranek.ejs) */
.sitemap-tree > ul{list-style:none;padding-left:0;}
.sitemap-tree > ul > li{margin-bottom:.9em;}
.sitemap-tree > ul > li > a{font-weight:700;color:var(--green-deep);}
.sitemap-tree ul ul{margin:.4em 0 0;padding-left:1.2em;border-left:2px solid var(--line);}
.sitemap-tree ul ul li{margin-bottom:.3em;}
.sitemap-tree a{text-decoration:none;}
.sitemap-tree a:hover{text-decoration:underline;}
.sitemap-ext{font-size:.8em;color:var(--ink-soft);}
.article-photo{display:block;width:100%;max-width:720px;margin:0 auto 28px;border-radius:var(--radius);object-fit:cover;max-height:420px;}
.pagination{display:flex;justify-content:center;gap:10px;margin-top:40px;}
.pagination a,.pagination span{padding:8px 14px;border:1px solid var(--line);border-radius:var(--radius);font-size:.85rem;}
.pagination a{color:var(--green-deep);text-decoration:none;}
.pagination a:hover{background:var(--cream-2);}
.pagination .current{background:var(--green-deep);color:#fff;border-color:var(--green-deep);}

/* Vlastní stránky (/stranka/:slug) — obrázkový blok s pevně daným
   layoutem (viz views/stranka.ejs, blocks.layout). vlevo/vpravo plavou
   uvnitř společného .article-body sloupce, takže text dalšího bloku
   kolem nich normálně obtéká (běžné chování floatu). ::after na
   .article-body dole je clearfix, ať float nepřeteče přes patičku
   sekce, když je poslední blok stránky.*/
.article-body::after{content:"";display:block;clear:both;}
.page-image{border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.1);}
.page-image-plny{display:block;width:100%;margin:0 0 24px;clear:both;}
.page-image-stred{display:block;width:60%;margin:0 auto 24px;clear:both;}
.page-image-vlevo{float:left;width:42%;margin:0 24px 16px 0;}
.page-image-vpravo{float:right;width:42%;margin:0 0 16px 24px;}
.page-image-group{clear:both;margin-bottom:24px;gap:16px;}
.page-image-group figure{margin:0;min-width:0;}
.page-image-group img{width:100%;border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.1);display:block;}
/* Fotky vedle sebe s ořezem na jednotný tvar (blocks.crop). */
.page-image-crop img{aspect-ratio:4/3;height:auto;object-fit:cover;}
.page-image-crop-ctverec img{aspect-ratio:1;}
.page-image-crop-na-vysku img{aspect-ratio:3/4;}
/* Viditelný popisek pod fotkou (blocks.captions). */
.page-caption{font-size:.85rem;line-height:1.45;color:var(--ink-soft);margin-top:8px;}
.page-figure{margin:0 0 24px;}
.page-figure img{width:100%;display:block;}
.page-figure-plny{clear:both;}
.page-figure-stred{width:60%;margin:0 auto 24px;clear:both;}
.page-figure-vlevo{float:left;width:42%;margin:0 24px 16px 0;}
.page-figure-vpravo{float:right;width:42%;margin:0 0 16px 24px;}
/* Text s obrázkem vedle (textový blok s image_path) — dva sloupce,
   obrázek vpravo/vlevo, polovina nebo třetina šířky. */
.text-media{display:grid;grid-template-columns:1fr 1fr;gap:36px;align-items:center;margin-bottom:32px;clear:both;}
.text-media-tretina.text-media-vpravo{grid-template-columns:2fr 1fr;}
.text-media-tretina.text-media-vlevo{grid-template-columns:1fr 2fr;}
.text-media-vlevo .text-media-img{order:-1;}
.text-media-body{min-width:0;}
.text-media-body>:last-child{margin-bottom:0;}
.text-media-img{margin:0;min-width:0;}
.text-media-img img{width:100%;display:block;border-radius:var(--radius);box-shadow:0 8px 24px rgba(0,0,0,.1);}
/* Fotky vedle sebe na užším displeji: trojice zůstane v jedné řadě do
   760 px (obecná .grid-3 by ji zalomila na 2 + 1), pak dvojice
   a čtveřice po dvou fotkách, trojice pod sebou. */
@media (max-width:980px){.page-image-group.grid-3{grid-template-columns:repeat(3,1fr);}}
@media (max-width:760px){
  .page-image-group.grid-2,.page-image-group.grid-4{grid-template-columns:1fr 1fr;gap:10px;}
  .page-image-group.grid-3{grid-template-columns:1fr;}
}
/* Obrázek se zvětšením po kliknutí a Galerie (render-blocks.ejs, public/lightbox.js). */
a.lightbox-link{display:block;cursor:zoom-in;}
a.lightbox-link.page-image{overflow:hidden;}
a.lightbox-link.page-image img{width:100%;display:block;}
.page-gallery{clear:both;margin-bottom:28px;}
.page-gallery-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;}
.page-gallery-grid a{aspect-ratio:1;border-radius:8px;overflow:hidden;background:var(--line);}
.page-gallery-grid img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .25s ease;}
.page-gallery-grid a:hover img{transform:scale(1.04);}
@media (max-width:900px){.page-gallery-grid{grid-template-columns:repeat(3,1fr);}}
@media (max-width:600px){.page-gallery-grid{grid-template-columns:repeat(2,1fr);gap:6px;}}
.lightbox{position:fixed;inset:0;z-index:1000;background:rgba(3,18,10,.94);display:none;align-items:center;justify-content:center;}
.lightbox.is-open{display:flex;}
.lightbox-figure{margin:0;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;align-items:center;gap:10px;}
.lightbox-figure img{max-width:92vw;max-height:80vh;object-fit:contain;border-radius:6px;box-shadow:0 10px 40px rgba(0,0,0,.5);}
.lightbox-figure figcaption{color:rgba(248,243,230,.9);font-size:.95rem;text-align:center;max-width:70ch;}
.lightbox button{position:absolute;background:rgba(255,255,255,.12);color:#fff;border:none;cursor:pointer;border-radius:999px;width:48px;height:48px;font-size:2rem;line-height:1;display:flex;align-items:center;justify-content:center;}
.lightbox button:hover,.lightbox button:focus-visible{background:rgba(255,255,255,.25);outline:none;}
.lightbox button[hidden]{display:none;}
.lightbox-close{top:16px;right:16px;}
.lightbox-prev{left:16px;top:50%;transform:translateY(-50%);}
.lightbox-next{right:16px;top:50%;transform:translateY(-50%);}
.lightbox-counter{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);color:rgba(248,243,230,.75);font-size:.85rem;font-variant-numeric:tabular-nums;}
@media (max-width:600px){.lightbox-prev,.lightbox-next{top:auto;bottom:8px;transform:none;}.lightbox-counter{bottom:22px;}}
html.lightbox-lock{overflow:hidden;}

/* table styling for pricelists */
.price-table{width:100%;border-collapse:collapse;margin:0 0 34px;font-size:.94rem;background:var(--white);}
.price-table caption{caption-side:top;text-align:left;font-family:'Fraunces',serif;font-size:1.2rem;line-height:1.15;color:var(--green-deep);margin-bottom:14px;font-weight:600;}
.price-table th{
  text-align:left;background:var(--green-deep);color:var(--white);
  padding:12px 18px;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;
}
.price-table td{padding:13px 18px;border-bottom:1px solid var(--line);color:var(--ink);}
.price-table tr:nth-child(even) td{background:var(--cream);}
.price-table .al-stred{text-align:center;}
.price-table .al-vpravo{text-align:right;}
.price-table td.num{text-align:right;font-weight:700;color:var(--green-deep);white-space:nowrap;}

/* ---------- scorecard: kompaktní, zarovnáno na střed ---------- */
.scorecard-table{width:auto;min-width:0;max-width:360px;font-size:.85rem;}
.scorecard-table th{padding:7px 14px;text-align:center;}
.scorecard-table td{padding:5px 14px;text-align:center;}
.scorecard-table td.num{white-space:nowrap;}
.scorecard-table th.tee-yellow{background:#e8c400;color:#3a2f00;}
.scorecard-table th.tee-red{background:#c62839;color:#fff;}
.scorecard-table td.tee-yellow.num{background:#fff4b8;color:#5c4a00;}
.scorecard-table td.tee-red.num{background:#f8d3d8;color:#7a1620;}
.scorecard-table tr.scorecard-subtotal td{background:var(--cream);font-weight:700;}
.scorecard-table tr.scorecard-subtotal td.tee-yellow{background:#ffe27a;}
.scorecard-table tr.scorecard-subtotal td.tee-red{background:#f0aab2;}
.scorecard-table tr.scorecard-total td{background:var(--gold-light);font-weight:700;}
.scorecard-table tr.scorecard-total td.tee-yellow{background:#ffd94d;}
.scorecard-table tr.scorecard-total td.tee-red{background:#e88a94;}

/* ---------- dětské hřiště USkids: oranžová/zelená odpaliště ---------- */
.uskids-table th.tee-orange{background:#c65a12;color:#fff;}
.uskids-table th.tee-green{background:#2f7d3a;color:#fff;}
.uskids-table td.tee-orange.num{background:#fbe0c4;color:#7a3d0a;}
.uskids-table td.tee-green.num{background:#cfe8d1;color:#1f5c28;}
.uskids-table tr.scorecard-total td.tee-orange{background:#f0b878;}
.uskids-table tr.scorecard-total td.tee-green{background:#8fc99a;}

/* ---------- hrací HCP: kompaktní tabulka počítaná ze vzorce ---------- */
.hcp-table{font-size:.78rem;}
.hcp-table th{padding:5px 6px;line-height:1.25;}
.hcp-table th small{display:block;font-weight:500;font-size:.85em;margin-top:2px;}
.hcp-table td{padding:3px 6px;text-align:center;white-space:nowrap;}
.hcp-table td.num{text-align:center;font-weight:700;}
.hcp-table th.tee-yellow{background:#e8c400;color:#3a2f00;}
.hcp-table th.tee-red{background:#c62839;color:#fff;}
.hcp-table td.tee-yellow{background:#fff4b8 !important;color:#5c4a00;}
.hcp-table td.tee-red{background:#f8d3d8 !important;color:#7a1620;}

.note-box{
  background:var(--cream-2);border-left:3px solid var(--gold);
  padding:18px 22px;font-size:.9rem;color:var(--ink-soft);margin:0 0 30px;
}

.two-col{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start;}

#historie img{float:right;width:200px;height:200px;object-fit:cover;border-radius:6px;margin:4px 0 20px 22px;box-shadow:0 6px 16px rgba(15,40,25,.2);cursor:zoom-in;}

.stat-strip{
  display:grid;grid-template-columns:repeat(4,1fr);
  background:var(--green-deep);color:var(--white);
  border-radius:var(--radius);
}
.stat-strip div{padding:34px 24px;text-align:center;border-left:1px solid rgba(255,255,255,.14);}
.stat-strip div:first-child{border-left:none;}
.stat-strip strong{display:block;font-family:'Fraunces',serif;font-size:2rem;color:var(--gold-light);}
.stat-strip span{font-size:.76rem;letter-spacing:.04em;color:rgba(255,255,255,.75);}

.people-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;}
/* flex column + .meta{margin-top:auto} drží telefon/e-mail zarovnaný u
   spodního okraje karty bez ohledu na to, kolik řádků zabere role (jinak
   se karty s kratší/delší rolí v gridu rozjedou — role na 1 vs 2 řádky
   posune telefon každé karty jinam, i když grid samotné karty stejně
   vysoké stejně natáhne). */
.people-card{
  background:var(--white);border:1px solid var(--line);padding:26px;text-align:center;
  display:flex;flex-direction:column;
  /* transition: viz .icon-card, .people-card, .news-card u .reveal níže. */
}
.people-card:hover{transform:translateY(-4px);box-shadow:var(--shadow);}
.people-card .avatar{
  width:74px;height:74px;border-radius:50%;margin:0 auto 16px;
  background:linear-gradient(155deg,var(--green),var(--green-deep));
  display:flex;align-items:center;justify-content:center;color:var(--gold-light);
  font-family:'Fraunces',serif;font-size:1.4rem;font-weight:600;
  overflow:hidden;flex:none;
}
.people-card .avatar img{width:100%;height:100%;object-fit:cover;}
.people-card h3{font-size:1rem;margin-bottom:4px;}
.people-card .role{font-size:.76rem;letter-spacing:.05em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:12px;}
.people-card .bio{font-size:.88rem;}
.people-card .bio p:last-child{margin-bottom:0;}
.people-card .meta{font-size:.85rem;color:var(--ink-soft);margin-top:auto;padding-top:12px;}
.people-card .meta a:hover{color:var(--green-deep);}

.reciprocity-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 40px;}
.reciprocity-grid ul{list-style:none;padding:0;margin:0;}
.reciprocity-grid li{
  display:flex;justify-content:space-between;gap:14px;
  padding:11px 0;border-bottom:1px solid var(--line);font-size:.9rem;
}
.reciprocity-grid li .pct{color:var(--green-deep);font-weight:700;white-space:nowrap;}

.cta-band{
  background:linear-gradient(155deg,var(--green-deep),var(--green));
  color:var(--white);padding:64px 0;text-align:center;
}
.cta-band h2{color:var(--white);}
.cta-band p{color:rgba(255,255,255,.8);max-width:520px;margin:0 auto 28px;}
.cta-band .actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}

.contact-strip{
  background:var(--white);border:1px solid var(--line);
  display:grid;grid-template-columns:repeat(4,1fr);
}
.contact-strip a, .contact-strip div{padding:26px 24px;border-left:1px solid var(--line);}
.contact-strip a:first-child, .contact-strip div:first-child{border-left:none;}
.contact-strip .label{display:block;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold);font-weight:700;margin-bottom:8px;}
.contact-strip strong{font-family:'Fraunces',serif;font-size:1.05rem;color:var(--green-deep);}

form.contact-form{display:grid;gap:16px;}
form.contact-form label{font-size:.78rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--ink-soft);display:block;margin-bottom:6px;}
form.contact-form input, form.contact-form textarea{
  width:100%;padding:13px 14px;border:1px solid var(--line);background:var(--white);
  font-family:inherit;font-size:.95rem;border-radius:var(--radius);
}
form.contact-form input:focus, form.contact-form textarea:focus{outline:none;border-color:var(--gold);}
/* Honeypot proti robotům (routes/forms.js) — mimo obrazovku, ne display:none, to roboti poznají. */
form.contact-form .form-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden;}
form.contact-form .form-note{margin:0;font-size:.85rem;color:var(--ink-soft);}
form.contact-form .form-status{margin:0;padding:12px 14px;border-radius:var(--radius);font-size:.95rem;background:var(--green-pastel);color:var(--green-deep);}
form.contact-form .form-status.is-error{background:#f6e0dc;color:#7a1f12;}

.map-frame{border:1px solid var(--line);height:340px;overflow:hidden;}
.map-frame iframe{width:100%;height:100%;border:0;filter:grayscale(.15);}

/* Jak k nám (Kontakty): mapa v pozadí, vlevo adresa a navigace */
.route-card{--route-icon-bg:#d9c69a;position:relative;overflow:hidden;min-height:400px;background:var(--green-deep);border:1px solid var(--line);color:#fff;display:flex;align-items:center;}
.route-map{position:absolute;inset:0;background:url(/img/mapa-trasa.jpg?v=5) 70% 50%/cover no-repeat;}
.route-map::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(3,36,20,.98) 0%,rgba(3,36,20,.95) 32%,rgba(3,36,20,.5) 44%,rgba(3,36,20,0) 58%);}
.route-pin{position:absolute;left:70%;top:50%;z-index:1;transform:translate(-50%,-100%);filter:drop-shadow(0 4px 8px rgba(0,0,0,.45));}
.route-body{position:relative;z-index:1;padding:44px 48px;max-width:520px;}
.route-address{display:block;font-family:'Fraunces',serif;font-size:1.35rem;line-height:1.35;}
.route-gps{margin:8px 0 26px;color:rgba(248,243,230,.7);font-size:.92rem;}
.route-nav{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px;}
.route-nav a{display:flex;align-items:center;gap:16px;color:var(--gold-light);text-decoration:none;font-size:1.05rem;}
.route-nav a b{font-weight:600;}
.route-icon{flex:none;width:52px;height:52px;border-radius:50%;background:var(--route-icon-bg);color:var(--green-deep);display:flex;align-items:center;justify-content:center;transition:transform .2s,background .2s;}
.route-nav a:hover .route-icon{transform:scale(1.07);background:var(--gold-light);}
.route-nav a:hover span:last-child{text-decoration:underline;text-underline-offset:4px;}
.route-attribution{position:absolute;right:8px;bottom:6px;z-index:1;font-size:.7rem;color:rgba(3,36,20,.7);text-decoration:none;}
@media (max-width:760px){
  .route-card{flex-direction:column;align-items:stretch;min-height:0;}
  .route-map{position:relative;height:220px;}
  .route-map::after{background:linear-gradient(180deg,rgba(3,36,20,0) 55%,rgba(3,36,20,.9) 100%);}
  .route-body{padding:20px 22px 34px;max-width:none;}
  .route-attribution{color:rgba(255,255,255,.6);}
}

/* footer */
footer.site-footer{background:var(--green-deep);color:rgba(248,243,230,.75);padding:64px 0 26px;}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;margin-bottom:44px;}
/* margin-top: Kontakt/Sleduj nás nadpisy jinak sedí u úplně horního
   okraje sloupce, zatímco vlevo je vertikálně centrované logo (52px)
   + název klubu — bez odsazení to opticky působilo, že jsou nadpisy
   výš než logo. */
.footer-grid h4{color:var(--gold-light);font-family:'Inter',sans-serif;font-size:.76rem;letter-spacing:.1em;text-transform:uppercase;margin-top:20px;margin-bottom:18px;font-weight:700;}
.footer-grid ul{list-style:none;padding:0;margin:0;}
.footer-grid li{margin-bottom:10px;font-size:.88rem;}
.footer-grid a:hover{color:var(--white);}
/* Facebook modrá (#1877F2) místo dědění krémové/zlaté footer palety —
   sociální ikony se obvykle zobrazují ve své vlastní značkové barvě. */
.footer-social{display:flex;gap:12px;}
.footer-social a{display:inline-flex;align-items:center;justify-content:center;width:56px;height:56px;border-radius:50%;background:rgba(255,255,255,.1);color:#1877F2;}
.footer-social a:hover{background:rgba(255,255,255,.2);}
.footer-social a.instagram{color:#E1306C;}
.footer-brand{display:flex;align-items:center;gap:12px;margin-bottom:16px;}
.footer-brand img{height:52px;background:var(--cream);border-radius:50%;padding:3px;}
.footer-brand span{font-family:'Fraunces',serif;font-size:1.05rem;color:var(--white);}
.footer-bottom{
  border-top:1px solid rgba(255,255,255,.12);padding-top:22px;
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:10px;font-size:.78rem;
}
.footer-bottom a:hover{color:var(--gold-light);}

.draft-banner{
  background:var(--gold);color:var(--green-deep);text-align:center;
  font-size:.8rem;font-weight:700;letter-spacing:.03em;padding:9px 14px;
}
.draft-banner a{text-decoration:underline;}

.mistr-sidebar{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:24px;margin-top:40px;align-items:start;}
.mistr-leaderboard{background:var(--cream);border-radius:var(--radius);padding:18px 20px;}
.mistr-leaderboard h3{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:var(--green-deep);margin-bottom:12px;white-space:nowrap;}
.mistr-leaderboard ol{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:7px;}
.mistr-leaderboard li{display:flex;align-items:baseline;gap:6px;font-size:.82rem;}
.mistr-lb-rank{color:var(--ink-soft);width:14px;flex:none;}
.mistr-lb-name{flex:1;color:var(--ink);}
.mistr-lb-count{color:var(--green-mid);font-weight:600;white-space:nowrap;}
.mistr-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);}
.mistr-table{width:100%;border-collapse:collapse;font-size:.9rem;}
.mistr-table thead th{background:var(--green-deep);color:var(--white);font-weight:600;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;padding:10px 14px;text-align:left;white-space:nowrap;}
.mistr-table thead .mistr-group{font-family:'Fraunces',serif;text-transform:none;letter-spacing:0;font-size:.92rem;color:var(--gold-light);border-bottom:1px solid rgba(255,255,255,.15);}
.mistr-table td,.mistr-table tbody th{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:top;text-align:left;}
.mistr-table tbody tr:nth-child(even) td,.mistr-table tbody tr:nth-child(even) th{background:var(--cream);}
.mistr-table tbody tr:last-child td,.mistr-table tbody tr:last-child th{border-bottom:none;}
.mistr-table .mistr-year{width:1%;white-space:nowrap;font-weight:700;color:var(--green-deep);position:sticky;left:0;z-index:1;background:var(--white);}
.mistr-table thead .mistr-year{background:var(--green-deep);color:var(--white);}
.mistr-table .mistr-split,.mistr-table .mistr-pairs{border-left:1px solid var(--line);}
.mistr-table thead .mistr-split,.mistr-table thead .mistr-pairs{border-left-color:rgba(255,255,255,.15);}
.mistr-name{display:block;color:var(--ink);line-height:1.35;white-space:nowrap;}
.mistr-none{color:var(--ink-soft);}
.mistr-tabs{display:none;}

/* ---------- responsive ---------- */
@media (max-width:980px){
  .grid-4{grid-template-columns:repeat(2,1fr);}
  .grid-3{grid-template-columns:repeat(2,1fr);}
  .two-col{grid-template-columns:1fr;gap:36px;}
  .hero-facts{grid-template-columns:repeat(2,1fr);row-gap:24px;}
  .people-grid{grid-template-columns:repeat(2,1fr);}
  .contact-strip{grid-template-columns:repeat(2,1fr);}
  .contact-strip a:nth-child(3), .contact-strip div:nth-child(3){border-left:none;}
}
@media (max-width:760px){
  nav.main-nav{
    position:fixed;inset:0 0 0 auto;width:78%;max-width:320px;
    background:var(--white);flex-direction:column;align-items:stretch;
    padding:90px 8px 24px;
    transform:translateX(100%);transition:transform .25s ease;
    overflow-y:auto;-webkit-overflow-scrolling:touch;
  }
  /* Stín jen u otevřeného menu — zavřené čeká za pravým okrajem a jeho stín
     dřív prosvítal na okraji stránky (2026-10-10). */
  nav.main-nav.open{transform:translateX(0);box-shadow:-10px 0 30px rgba(0,0,0,.18);}
  nav.main-nav a{padding:14px 16px;border-bottom:1px solid var(--line);border-radius:0;}
  nav.main-nav a.active, nav.main-nav a:hover{border-color:var(--line);background:var(--cream);}
  /* Kulaté jako na PC (Petr, 2026-09-23) — obecné pravidlo výš dává
     nav.main-nav a border-radius:0 (položky menu jako seznam), tady
     jen pro CTA tlačítka (Rezervace/E-Shop/Webkamera) přebíjíme zpět
     na pilulku (border-radius shodné s .btn), ať ladí s desktopem. */
  nav.main-nav a.nav-btn{margin:10px 16px 0;justify-content:center;border-radius:999px;border-bottom:none;}
  /* Trochu odsazené od pravého kraje (Petr, 2026-09-23) — ať se to lépe
     ťuká, ne skoro nalepené na okraj displeje. */
  .nav-toggle{display:block;margin-right:10px;}
  /* Stejný důvod jako u desktopu výš — .header-status pod jménem
     klubu udělal hlavičku vyšší, zúžit spodní odsazení (Petr, 2026-09-23). */
  .nav-wrap{padding-bottom:8px;}

  .has-dropdown{flex-direction:row;flex-wrap:wrap;border-bottom:1px solid var(--line);}
  .has-dropdown > a{flex:1;border-bottom:none !important;}
  /* Širší ťukací plocha na šipku (Petr, 2026-09-23) — dřív jen 6px
     padding kolem ikonky, snadno se místo ní trefil do hlavní
     položky menu vedle. Oddělovací linka navíc ukáže, kde končí
     jedna ťukací zóna a začíná druhá. */
  .dropdown-toggle{display:flex;align-items:center;justify-content:center;padding:14px 22px;border-left:1px solid var(--line);}
  .has-dropdown.open .dropdown-toggle .caret{transform:rotate(225deg);}
  .dropdown{
    position:static;width:100%;box-shadow:none;border:none;border-radius:0;
    margin-top:0;padding:0 0 6px 16px;background:var(--cream);
    display:none;
  }
  .has-dropdown:hover .dropdown, .has-dropdown:focus-within .dropdown{display:none;}
  .has-dropdown.open .dropdown{display:flex;}
  .dropdown a{padding:10px 12px !important;font-size:.84rem;}
  .grid-2, .grid-3, .grid-4{grid-template-columns:1fr;}
  .stat-strip{grid-template-columns:repeat(2,1fr);}
  .stat-strip div{border-left:none;border-top:1px solid rgba(255,255,255,.14);}
  .stat-strip div:nth-child(1), .stat-strip div:nth-child(2){border-top:none;}
  /* Značka/popis na celou šířku nahoře, Kontakt a Sleduj nás vedle sebe
     pod tím — ne všechny 3 bloky pod sebou (na 2 sloupce se vejdou v
     pohodě, jen Facebook ikona a pár řádků kontaktu). */
  .footer-grid{grid-template-columns:1fr 1fr;gap:32px;}
  .footer-grid > div:first-child{grid-column:1 / -1;}
  .contact-strip{grid-template-columns:1fr;}
  .contact-strip a, .contact-strip div{border-left:none;border-top:1px solid var(--line);}
  .contact-strip a:first-child, .contact-strip div:first-child{border-top:none;}
  .reciprocity-grid{grid-template-columns:1fr;}
  /* !important: trainer-cards.ejs nastavuje počet sloupců (2/3/4 podle
     počtu trenérů) přes inline style, ten by jinak vyhrál i na mobilu
     a dlaždice by se místo pod sebe tísnily vedle sebe (viz Petr,
     2026-09-23 — na mobilu byly 3 dlaždice vedle sebe s vodorovným
     scrollem místo pod sebou). */
  .people-grid{grid-template-columns:1fr !important;}
  section{padding:60px 0;}
  .hero{padding:70px 0 80px;}
}

/* ---------- kronika: book grid + flipbook modal (/kronika) ---------- */
.kronika-book-card{cursor:zoom-in;}
.kronika-modal{
  position:fixed;inset:0;z-index:200;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;
  background:rgba(3,20,12,.92);padding:24px;
}
.kronika-modal-close{
  position:absolute;top:20px;right:24px;width:40px;height:40px;border-radius:999px;
  background:rgba(255,255,255,.12);border:none;color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;
  transition:background .15s;z-index:30;
}
.kronika-modal-close:hover{background:rgba(255,255,255,.25);}
/* StPageFlip takes ownership of sizing whatever element you hand it to
   `new St.PageFlip(el, ...)` — it forces that element to width:100%/
   height:100% of ITS parent once it initializes, discarding any width/
   height we set on it directly. So #kronika-flipbook (the element passed
   to the library) must stay unstyled/100%, and the actual visible size is
   controlled on this outer wrapper instead — sized exactly in JS
   (computeSize(), exact px) to match the library's `width`/`height`
   config, which is what makes its portrait/landscape math work out. */
#kronika-flipbook-wrap{position:relative;overflow:hidden;}
#kronika-flipbook{width:100%;height:100%;}
.flipbook-controls{
  position:relative;z-index:30;
  display:flex;align-items:center;justify-content:center;gap:18px;
}
.flipbook-controls button{
  width:40px;height:40px;border-radius:999px;border:1px solid var(--line);
  background:var(--cream-2);color:var(--green-deep);font-size:1.3rem;line-height:1;
  cursor:pointer;transition:background .15s;
}
.flipbook-controls button:hover{background:var(--gold-light);}
.flipbook-controls span{font-size:.85rem;color:var(--cream-2);min-width:56px;text-align:center;}

/* ---------- hole map modal (/mapa-hriste.html) ---------- */
.hole-modal{
  position:fixed;inset:0;z-index:200;
  display:flex;align-items:center;justify-content:center;
  background:rgba(3,20,12,.92);padding:24px;
}
.hole-modal img{max-width:90vw;max-height:85vh;border-radius:10px;box-shadow:0 20px 60px rgba(0,0,0,.5);}
.hole-modal-close,.hole-modal-prev,.hole-modal-next{
  position:absolute;background:rgba(255,255,255,.12);border:none;color:#fff;
  cursor:pointer;transition:background .15s;
}
.hole-modal-close:hover,.hole-modal-prev:hover,.hole-modal-next:hover{background:rgba(255,255,255,.25);}
.hole-modal-close{top:20px;right:24px;width:40px;height:40px;border-radius:999px;font-size:1.6rem;line-height:1;}
.hole-modal-prev,.hole-modal-next{top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:999px;font-size:1.6rem;}
.hole-modal-prev{left:16px;}
.hole-modal-next{right:16px;}
@media (max-width:600px){
  .hole-modal-prev,.hole-modal-next{width:38px;height:38px;font-size:1.3rem;}
  .hole-modal-close{width:36px;height:36px;font-size:1.4rem;}
  #historie img{float:none;width:100%;max-width:260px;height:auto;object-fit:initial;margin:0 auto 20px;display:block;}
  .page-image-vlevo,.page-image-vpravo,.page-image-stred{float:none;width:100%;margin:0 0 24px;}
  .page-figure-vlevo,.page-figure-vpravo,.page-figure-stred{float:none;width:100%;margin:0 0 24px;}
  .text-media[class]{grid-template-columns:1fr;gap:18px;}
  .text-media-img{order:-1;}
}

/* ---------- turnaje / nejbližší akce ---------- */
.event-list{display:flex;flex-direction:column;gap:0;}
.event-row{
  display:flex;align-items:baseline;gap:20px;padding:18px 0;
  border-bottom:1px solid var(--line);
}
.event-row:last-child{border-bottom:none;}
.event-date{
  flex:none;width:140px;font-weight:700;color:var(--green-deep);
  font-size:.86rem;letter-spacing:.02em;
}
.event-body h3{font-size:1.02rem;margin-bottom:4px;}
.event-body p{color:var(--ink-soft);font-size:.9rem;margin-bottom:0;}
.event-body a.more{font-size:.78rem;}
@media (max-width:600px){
  .event-row{flex-direction:column;gap:4px;}
  .event-date{width:auto;}
}

/* Kalendář obsazenosti hřiště na Domů (viz partials/event-calendar.ejs)
   — barva dne stačí na "můžu dnes na hřiště", název jen u viditelné
   akce (bublina), soukromá jen jako "obsazeno" bez jména. Bublina je
   vlastní (data-tooltip + ::after/::before), ne nativní title — ten
   se ukazuje až po prodlevě prohlížeče, tady má naskočit hned. */
.event-calendar{background:var(--white);border:1px solid var(--line);border-radius:var(--radius);padding:24px;}
.event-calendar-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:14px;}
.event-calendar-month{font-family:'Fraunces',serif;font-weight:600;color:var(--green-deep);text-align:center;font-size:1.05rem;text-transform:capitalize;}
.event-calendar-arrow{
  display:flex;align-items:center;justify-content:center;
  width:30px;height:30px;border-radius:6px;
  color:var(--green-deep);font-size:1.2rem;line-height:1;text-decoration:none;
  flex:none;
}
.event-calendar-arrow:hover{background:var(--cream);}
.event-calendar-arrow.is-disabled{color:var(--line);}
.event-calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.event-calendar-weekday{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);text-align:center;padding-bottom:6px;}
.event-calendar-day{
  aspect-ratio:1;display:flex;align-items:center;justify-content:center;
  border-radius:6px;font-size:.82rem;color:var(--ink);background:var(--green-pastel);
}
.event-calendar-day.is-outside{visibility:hidden;}
.event-calendar-day.is-today{box-shadow:inset 0 0 0 2px var(--green-deep);font-weight:700;}
.event-calendar-day.is-public{background:var(--gold);color:var(--green-deep);font-weight:700;cursor:pointer;}
.event-calendar-day.is-private{background:var(--ink-soft);color:var(--white);cursor:help;}
/* Poměrné vybarvení (gradient v inline style, viz getEventAvailabilityCalendar)
   — text musí zůstat čitelný přes zlatou i šedou i pastelově zelenou část dne. */
.event-calendar-day.is-partial{font-weight:700;color:var(--ink);text-shadow:0 0 2px rgba(255,255,255,.85);cursor:help;}
.event-calendar-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:16px;font-size:.78rem;color:var(--ink-soft);}
.event-calendar-dot{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:middle;}
.event-calendar-dot.is-public{background:var(--gold);}
.event-calendar-dot.is-private{background:var(--ink-soft);}
.event-calendar-dot.is-open{background:var(--green-pastel);}

/* Vlastní bublina nad dnem kalendáře (data-tooltip) — naskočí hned,
   ne po prodlevě jako nativní title. */
.event-calendar-day[data-tooltip]{position:relative;}
.event-calendar-day[data-tooltip]::after{
  content:attr(data-tooltip);
  position:absolute;left:50%;bottom:calc(100% + 8px);
  transform:translateX(-50%) translateY(4px);
  background:var(--green-deep);color:var(--white);
  padding:6px 10px;border-radius:6px;font-size:.72rem;font-weight:600;
  white-space:normal;width:max-content;max-width:200px;text-align:center;
  display:none;pointer-events:none;
  z-index:5;
}
.event-calendar-day[data-tooltip]::before{
  content:'';position:absolute;left:50%;bottom:100%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:var(--green-deep);
  display:none;pointer-events:none;
  z-index:5;
}
/* Skrytá bublina je display:none, ne jen opacity:0 — neviditelné bubliny
   dnů u pravého okraje jinak rozšiřovaly stránku na mobilu (vodorovné
   posouvání a useknuté menu na Domů, zjištěno 2026-10-10). */
.event-calendar-day[data-tooltip]:hover::after,
.event-calendar-day[data-tooltip]:hover::before,
.event-calendar-day[data-tooltip]:focus::after,
.event-calendar-day[data-tooltip]:focus::before{
  display:block;transform:translateX(-50%) translateY(0);
}

/* Bublina dne s turnajem (event-calendar-inner.ejs) — název a odkazy
   „přidat do kalendáře“. Skutečný prvek, ne ::after jako bublina výše
   (do pseudoprvku nejde dát odkaz). Ukáže se při najetí myší, na mobilu
   klepnutím (fokus dne; při klepnutí na odkaz uvnitř zůstává :focus-within).
   Průhledný pruh ::before překlene mezeru nad dnem, ať bublina při přejetí
   myší k odkazu nezmizí. */
.event-calendar-day{position:relative;}
.event-calendar-pop{
  display:none;position:absolute;left:50%;bottom:calc(100% + 8px);transform:translateX(-50%);
  background:var(--green-deep);color:var(--white);
  padding:8px 12px;border-radius:6px;font-size:.72rem;font-weight:400;line-height:1.35;
  width:max-content;max-width:240px;text-align:center;text-shadow:none;cursor:auto;
  z-index:6;
}
.event-calendar-pop::before{content:'';position:absolute;left:0;right:0;top:100%;height:10px;}
.event-calendar-pop.is-left{left:0;transform:none;text-align:left;}
.event-calendar-pop.is-right{left:auto;right:0;transform:none;text-align:right;}
.event-calendar-pop-item + .event-calendar-pop-item{margin-top:8px;padding-top:8px;border-top:1px solid rgba(255,255,255,.2);}
.event-calendar-pop strong{display:block;font-weight:600;margin-bottom:3px;}
.event-calendar-pop span{color:rgba(255,255,255,.8);}
.event-calendar-pop a{color:var(--gold-light);text-decoration:underline;white-space:nowrap;}
.event-calendar-day:hover > .event-calendar-pop,
.event-calendar-day:focus-within > .event-calendar-pop{display:block;}

/* Odběr turnajů pod kalendářem (event-calendar.ejs) — nenápadný rozbalovací
   odkaz, většina návštěvníků ho nepotřebuje. */
.event-calendar-subscribe{margin-top:14px;padding-top:12px;border-top:1px solid var(--line);font-size:.8rem;color:var(--ink-soft);}
.event-calendar-subscribe summary{cursor:pointer;color:var(--green-deep);font-weight:600;}
.event-calendar-subscribe p{margin:8px 0 0;}
.event-calendar-subscribe a{color:var(--green-deep);font-weight:600;}
.event-calendar-subscribe-url code{font-size:.75rem;word-break:break-all;}

/* Kompaktní tabulka na /turnaje — kalendář narostl (ruční i naimportované
   z ČGF, viz routes/admin.js POST /turnaje/nacist-z-cgf) na desítky řádků,
   kartičkový .event-row/.event-list výše je pro tolik položek zbytečně
   vysoký. Homepage "Nejbližší akce" (jen 3 položky) zůstává na kartách. */
.event-table{width:100%;border-collapse:collapse;margin-bottom:8px;font-size:.92rem;background:var(--white);}
.event-table th{
  text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;
  color:var(--ink-soft);padding:8px 14px;border-bottom:1px solid var(--line);
}
.event-table td{padding:10px 14px;border-bottom:1px solid var(--line);vertical-align:top;}
.event-table tr:nth-child(even) td{background:var(--cream);}
.event-table tr:last-child td{border-bottom:none;}
.event-table td.event-date{width:120px;white-space:nowrap;font-weight:700;color:var(--green-deep);font-size:.84rem;}
.event-table td a{color:var(--ink);text-decoration:none;border-bottom:1px solid var(--gold);}
.event-table td a:hover{color:var(--green-deep);}
.event-table .event-desc{color:var(--ink-soft);font-size:.84rem;margin-top:2px;}
/* Přihlášky na chystaný turnaj z ČGF (viz scripts/update-registrations.js) —
   záměrně menší a světlejší než název, na stejném řádku, ať neruší a
   nezvětšuje výšku řádku (Petr, 2026-10-04). */
.event-table .event-reg{color:#6b746d;font-size:.76rem;margin-left:10px;font-variant-numeric:tabular-nums;}
/* Na mobilu vždy celý na novém řádku pod názvem, ať se počet nedělí
   podle délky názvu (Petr, 2026-10-04). */
.event-table .event-reg{white-space:nowrap;}
@media (max-width:699px){.event-table .event-reg{display:block;margin:2px 0 0;}}
.event-table .event-full{display:inline-block;margin-left:6px;padding:1px 8px;border-radius:999px;background:var(--green-deep);color:var(--white);font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;vertical-align:1px;}
.event-table tr.event-past td.event-date,.event-table tr.event-past .event-title,.event-table tr.event-past .event-desc{opacity:.55;}
.event-table tr.event-past td.event-date{color:var(--ink-soft);}
/* Ikonka s odkazem na obrázky výsledkových listin z ČGF hned vedle názvu
   odehraného turnaje (viz lib/event-results.js) — záměrně nezešedlá jako
   zbytek řádku. U víc kategorií rozbalí jejich seznam jako bublinu. */
.event-table .event-results-link{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;margin-left:8px;vertical-align:middle;border:1px solid var(--gold);border-radius:50%;color:var(--green-deep);background:var(--white);cursor:pointer;list-style:none;text-decoration:none;}
.event-table .event-results-link::-webkit-details-marker{display:none;}
.event-table .event-results-link:hover,.event-table .event-results[open] .event-results-link{background:var(--green-pastel);color:var(--green-deep);}
.event-table .event-results-link:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.event-table .event-results-link svg{width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
.event-table .event-results{display:inline-block;position:relative;vertical-align:middle;}
.event-table .event-results ul{position:absolute;z-index:5;top:calc(100% + 6px);left:8px;min-width:220px;max-width:min(320px,80vw);margin:0;padding:10px 14px 10px 28px;background:var(--white);border:1px solid var(--line);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:6px;font-size:.86rem;}
.event-table .event-results li::marker{color:var(--gold);}
/* Na mobilu se plovoucí seznam kategorií nevešel a utíkal mimo obrazovku
   (manažer 2026-10-08) — rozbalí se v toku přímo pod názvem turnaje. */
@media (max-width:699px){
  .event-table .event-results{display:inline;}
  .event-table .event-results ul{position:static;min-width:0;max-width:none;margin:8px 0 2px;box-shadow:none;}
}
@media (max-width:600px){
  .event-table td{padding:9px 10px;}
  .event-table td.event-date{width:78px;font-size:.78rem;}
}

/* ---------- partneři (statický grid loga) ---------- */
.partners-grid{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:40px 56px;}
.partners-grid img{height:48px;max-width:150px;object-fit:contain;}

/* ---------- scroll reveal (public/script.js přidá .is-visible přes
   IntersectionObserver), napříč veřejným webem. Zdrženlivé: jen jemný
   posun+prolnutí, respektuje prefers-reduced-motion. */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .6s ease, transform .6s ease;}
.reveal.is-visible{opacity:1;transform:none;}
@media (prefers-reduced-motion: reduce){
  .reveal{opacity:1;transform:none;transition:none;}
}
/* .reveal výše nastavuje transition i na transform — na kartách, co mají
   obě třídy (icon-card/people-card/news-card reveal), tak jako pozdější
   pravidlo se stejnou specificitou přebíjelo hover přechod definovaný
   u karet samotných (transform pak běžel na .6s ease ze scroll animace
   místo hladké hover křivky, box-shadow se neanimoval vůbec — .reveal
   ho nezná). Přebito zpátky tady, za .reveal (proto tu je i opacity,
   ne jen transform/box-shadow — jinak by shorthand smazal to, co
   nezmíní, a rozbil scroll fade-in).

   Asymetrický přechod "jako čeření hladiny": rychlý nástup při najetí
   (.05s), ať se zvedne i při rychlém přejezdu myší přes víc dlaždic za
   sebou, ale pomalý, plynulý pokles při odjetí (1.2s). Aktivní transition
   je vždycky ten na PRÁVĚ platném pravidle (:hover při najetí, základní
   stav při odjetí), takže obě rychlosti fungují nezávisle na sobě. */
.icon-card, .people-card, .news-card{
  transition:transform 1.2s cubic-bezier(.22,1,.36,1), box-shadow 1.2s cubic-bezier(.22,1,.36,1), opacity .6s ease;
}
.icon-card:hover, .people-card:hover, .news-card:hover{
  transition:transform .05s ease-out, box-shadow .05s ease-out;
  /* Šablony dávají každé kartě inline style="transition-delay:Xms" kvůli
     postupnému vlnění při scrollu na stránku (viz .reveal) — 0 až ~270ms
     podle pořadí v řadě. Inline styl má vyšší prioritu než tohle
     pravidlo, takže by tu prodlevu zdědil i hover (dlaždice dál v řadě
     by se zvedaly znatelně později, každá jinak — přesně ten dojem
     "půl vteřiny", co Petr popsal). !important je tu jediná cesta, jak
     přebít inline styl bez zásahu do každé šablony zvlášť. */
  transition-delay:0s !important;
}

/* ---------- site-notice ("kancelářský štítek") — časově omezené
   upozornění na Domů (viz db.js site_notice, /sprava/upozorneni).
   Začíná s [hidden] přímo v HTML (žádné bliknutí před JS) —
   public/script.js ho zobrazí, jen když ho návštěvník v dané session
   ještě nezavřel (sessionStorage, klíč vázaný na obsah).
   Karta = klubová hlavičková papírová cedulka (notice-paper.png,
   700×880, poměr stran 0.795) s razítkem klubu vlevo nahoře. Obsah je
   v samostatném vnitřním .site-notice-content, ne přímo na
   .site-notice-card — procentuální padding se totiž počítá vůči šířce
   NEJBLIŽŠÍHO OBSAHUJÍCÍHO BLOKU, a tím by u flex položky (.site-notice-
   card je přímé dítě flex kontejneru .site-notice) byla celá obrazovka,
   ne 360px karty. Vnitřní blok už containing block správně zdědí od
   karty (ta má šířku pevně danou přes max-width), takže % tam
   počítá správně. Stín a nepravidelný okraj papíru jsou už v obrázku
   — karta sama žádný box-shadow/border-radius nemá. */
.site-notice{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:24px;}
.site-notice-backdrop{position:absolute;inset:0;background:rgba(3,36,20,.55);}
.site-notice-card{
  position:relative;max-width:360px;width:100%;aspect-ratio:700/880;
  background:url('/img/notice-paper.png') center/100% 100% no-repeat;
}
.site-notice-content{padding:39% 11% 12%;text-align:left;}
.site-notice-content h3{margin-bottom:10px;}
.site-notice-content p{white-space:pre-line;color:var(--ink);margin:0;font-size:.94rem;}
/* Typ zprávy (Upozornění/Pozvánka/…) sedí nahoře vedle razítka klubu —
   logo zabírá zhruba levých 41 % šířky a horních 33 % výšky karty, tak
   umístěno vpravo od něj, pod křížkem na zavření. */
.site-notice-type{position:absolute;top:16%;left:46%;right:8%;margin:0;font-size:.9rem;}
.site-notice-type::before{width:10px;}
.site-notice-close{
  position:absolute;top:6%;right:6%;background:none;border:none;
  font-size:1.4rem;line-height:1;color:var(--ink-soft);cursor:pointer;padding:4px 8px;
}
.site-notice-close:hover{color:var(--green-deep);}
@media (max-width:480px){
  .site-notice-card{max-width:300px;}
}

/* ---------- Pro členy (views/pro-cleny.ejs) ---------- */
.member-login{max-width:520px;}
.member-login label{display:block;font-weight:600;font-size:.9rem;margin-bottom:6px;color:var(--green-deep);}
.member-login-row{display:flex;gap:10px;flex-wrap:wrap;}
.member-login-row input{flex:1 1 220px;padding:11px 14px;font:inherit;border:1px solid var(--line);border-radius:var(--radius);background:var(--white);}
.member-login-row input:focus{outline:2px solid var(--gold);outline-offset:1px;}
.member-login-error{color:#a33;font-weight:600;}
.member-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:.88rem;color:var(--ink-soft);padding-bottom:18px;border-bottom:1px solid var(--line);margin-bottom:36px;}
.member-bar form{margin:0;}
.member-bar .link-button{background:none;border:none;padding:0;font:inherit;color:var(--green-deep);text-decoration:underline;cursor:pointer;}
.member-docs{margin-bottom:48px;}
.member-year{border-top:1px solid var(--line);}
.member-year:last-of-type{border-bottom:1px solid var(--line);}
.member-year summary{cursor:pointer;padding:12px 0;font-family:'Fraunces',Georgia,serif;font-size:1.15rem;font-weight:600;color:var(--green-deep);display:flex;align-items:center;gap:10px;}
.member-year-count{font-family:'Inter',sans-serif;font-size:.72rem;font-weight:600;color:var(--ink-soft);background:var(--cream);border-radius:999px;padding:1px 8px;}
.member-doc-list{list-style:none;padding:0 0 14px;margin:0;}
.member-doc-list li{margin:0;}
.member-doc-list a{display:flex;gap:14px;align-items:baseline;padding:7px 0;border-bottom:1px dashed rgba(199,165,68,.25);}
.member-doc-list a:hover .member-doc-title{text-decoration:underline;}
.member-doc-date{flex:none;width:7.5em;font-variant-numeric:tabular-nums;color:var(--ink-soft);font-size:.9rem;}
.member-doc-title{flex:1;color:var(--ink);}
.member-doc-ext{flex:none;font-size:.7rem;font-weight:700;letter-spacing:.06em;color:var(--gold);}
/* Hledání v dokumentech Pro členy (pro-cleny.ejs) */
.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}
.member-search{display:flex;gap:10px;margin:0 0 36px;max-width:620px;}
.member-search input{flex:1;min-width:0;padding:11px 14px;border:1px solid var(--line);border-radius:var(--radius);font:inherit;font-size:.95rem;background:var(--white);}
.member-search-cat{color:var(--ink-soft);font-size:.85rem;}
.member-search-snippet{display:block;margin-top:3px;font-size:.85rem;color:var(--ink-soft);}
.member-search-snippet mark{background:var(--gold-light);color:var(--ink);padding:0 2px;border-radius:2px;}
.member-vedeni{overflow-x:auto;}
.member-vedeni table{width:100%;border-collapse:collapse;font-size:.92rem;background:var(--white);}
.member-vedeni th,.member-vedeni td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);}
.member-vedeni th{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-soft);}
@media (max-width:560px){
  .member-doc-list a{flex-wrap:wrap;gap:2px 10px;}
  .member-doc-date{width:auto;}
}

/* Náhled konceptu Vlastní stránky pro správce (stranka.ejs, lib/page-drafts.js) */
.draft-preview-bar{background:#fbf3dc;border-bottom:1px solid var(--gold-light);color:var(--ink);text-align:center;padding:10px 16px;font-size:.9rem;font-weight:600;}
.draft-preview-bar a{margin-left:10px;color:var(--green-deep);}

@media (max-width:760px){
  /* Mistři klubu: na mobilu jen rok + jedna disciplína, přepíná se nad tabulkou. */
  .mistr-tabs{display:flex;gap:2px;padding:3px;margin-bottom:14px;background:var(--cream);border:1px solid var(--line);border-radius:999px;}
  .mistr-tabs label{flex:1;position:relative;cursor:pointer;}
  .mistr-tabs input{position:absolute;opacity:0;pointer-events:none;}
  .mistr-tabs span{display:block;text-align:center;padding:8px 6px;border-radius:999px;font-size:.88rem;font-weight:600;color:var(--ink);}
  .mistr-tabs input:checked + span{background:var(--green-deep);color:var(--white);}
  .mistr-tabs input:focus-visible + span{outline:2px solid var(--gold);outline-offset:1px;}
  .mistr-main:has(input[value="rany"]:checked) .mistr-table :is(.d-jamky,.d-dvojice),
  .mistr-main:has(input[value="jamky"]:checked) .mistr-table :is(.d-rany,.d-dvojice),
  .mistr-main:has(input[value="dvojice"]:checked) .mistr-table :is(.d-rany,.d-jamky){display:none;}
  .mistr-table .mistr-split,.mistr-table .mistr-pairs{border-left:none;}
  .mistr-table td,.mistr-table tbody th,.mistr-table thead th{padding:9px 10px;}
  .mistr-table{font-size:.84rem;}
  .mistr-name{white-space:normal;}
}
