:root{
  --red:#E1121C; --red-d:#B00D15;
  --navy:#0f1e3d; --navy-2:#152a52;
  --ink:#111827; --muted:#6b7280; --line:#e6e2da;
  --paper:#f6f4ef; --white:#fff; --yellow:#FFD200; --turf:#12a37f; --win:#1a9e4b;
  --disp:"Archivo",system-ui,sans-serif; --body:"Manrope",system-ui,sans-serif;
  --wrap:1200px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--body);color:var(--ink);background:var(--paper);line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:inherit;text-decoration:none}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 28px}
.eyebrow{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.16em;font-size:.78rem}
h2.sec{font-family:var(--disp);font-weight:900;text-transform:uppercase;letter-spacing:-.01em;font-size:2rem;line-height:1}
.btn{display:inline-flex;align-items:center;gap:8px;font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;padding:11px 20px;border-radius:8px;cursor:pointer;border:2px solid transparent}
.btn--red{background:var(--red);color:#fff}
.btn--ghost{border-color:rgba(255,255,255,.35);color:#fff}
.btn--dark{background:var(--navy);color:#fff}
.chip{display:inline-flex;align-items:center;font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.08em;font-size:.68rem;padding:4px 10px;border-radius:999px;background:var(--red);color:#fff}

/* Topbar */
.top{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.top__in{display:flex;align-items:center;gap:26px;height:70px}
.brand{display:flex;align-items:center;gap:12px}
.brand img{height:64px;width:auto;display:block}
.brand b{display:block;font-family:var(--disp);font-weight:900;text-transform:uppercase;letter-spacing:-.01em;font-size:1.02rem;line-height:1;margin-bottom:3px}
.brand span{display:block;font-size:.66rem;font-weight:700;letter-spacing:.18em;color:var(--muted);text-transform:uppercase}
.nav{display:flex;gap:6px;margin-left:8px}
.nav a{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;color:var(--ink);padding:8px 12px;border-radius:7px}
.nav a:hover{background:#f0ece4}
.nav__portal{display:none}   /* mobile dropdown only — desktop uses .top__cta */
.top__cta{margin-left:auto;display:flex;gap:10px;align-items:center}

/* Mobile menu button (hidden on desktop; shown below the .nav breakpoint) */
.nav__toggle{display:none;background:transparent;border:0;padding:0;cursor:pointer;
  width:42px;height:42px;flex-direction:column;justify-content:center;align-items:center;gap:5px;border-radius:8px}
.nav__toggle span{display:block;width:24px;height:2px;background:var(--ink);border-radius:2px;
  transition:transform 220ms ease,opacity 160ms ease}
.nav__toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav__toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav__toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* Below 900px the 5 nav links start crushing the brand, so fold them into a
   dropdown. "Můj portál" moves inside the panel (the .top__cta button is hidden). */
@media (max-width:900px){
  .nav{display:none}
  .nav.is-open{
    display:flex;flex-direction:column;align-items:stretch;gap:0;margin:0;
    position:absolute;left:0;right:0;top:100%;
    background:#fff;border-bottom:3px solid var(--red);
    box-shadow:0 20px 44px rgba(15,30,61,.18);
    padding:6px 18px 16px;
    max-height:calc(100vh - 70px);overflow-y:auto;
  }
  .nav.is-open a{padding:15px 6px;border-radius:0;border-bottom:1px solid var(--line);font-size:.95rem}
  .nav.is-open a:hover{background:transparent;color:var(--red)}
  .nav.is-open .nav__portal{
    display:block;margin-top:14px;border-bottom:0;border-radius:8px;
    background:var(--red);color:#fff;text-align:center;padding:14px 20px
  }
  .nav.is-open .nav__portal:hover{background:var(--red-d);color:#fff}
  .nav__toggle{display:inline-flex;margin-left:auto}
  .top__cta{display:none}
}

/* Hero */
.hero{position:relative;background:#B00D15;color:#fff;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:
  linear-gradient(96deg, rgba(176,13,21,.94) 0%, rgba(176,13,21,.78) 30%, rgba(176,13,21,.28) 58%, rgba(90,8,13,.12) 100%),
  url(hero.jpg) center 30%/cover no-repeat;}
.hero::after{content:"";position:absolute;top:-40px;right:-60px;width:60%;height:130%;
  background:linear-gradient(120deg,transparent 46%, rgba(255,255,255,.9) 46%, rgba(255,255,255,.9) 54%, transparent 54%);opacity:.10}
.hero__in{position:relative;display:flex;align-items:center;padding:96px 0 88px;min-height:480px}
.hero__in > div:first-child{max-width:560px}
.hero__eye{color:#fff;opacity:.92}
.hero h1{font-family:var(--disp);font-weight:900;text-transform:uppercase;font-size:5rem;line-height:.92;letter-spacing:-.02em;margin:14px 0 16px}
.hero p.lead{font-size:1.12rem;color:rgba(255,255,255,.9);max-width:34ch;margin-bottom:26px}
.hero__actions{display:flex;gap:12px}

/* Scoreboard */
.board{background:#fff;color:var(--ink);border:1px solid var(--line);border-radius:16px;padding:20px;box-shadow:0 26px 60px rgba(0,0,0,.30)}
.board__tag{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.board__tag .k{font-family:var(--disp);font-weight:800;text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;color:var(--red)}
.board__tag .d{font-size:.8rem;color:var(--muted)}
.match{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:10px;padding:12px 0}
.team{display:flex;flex-direction:column;align-items:center;gap:8px;text-align:center}
.team .badge{width:52px;height:52px;border-radius:12px;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden}
.team .badge img{height:46px;max-width:46px;object-fit:contain}
.team .badge--opp{background:var(--paper);border:1px solid var(--line);color:#9aa3af;font-family:var(--disp);font-weight:900;font-size:1.2rem}
/* A club crest is a transparent PNG of unknown aspect — give it the same
   white ground the Slavia badge has, and let object-fit keep it whole. */
.team .badge--opp:has(img){background:#fff}
.team .n{font-family:var(--disp);font-weight:800;text-transform:uppercase;font-size:.82rem;letter-spacing:.02em}
.match .vs{font-family:var(--disp);font-weight:900;font-size:1.9rem;color:var(--ink)}
.match .vs small{display:block;font-size:.62rem;color:var(--muted);letter-spacing:.14em;text-align:center;font-weight:700}
.board__foot{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:10px;padding-top:12px;font-size:.82rem;color:var(--muted)}
.board__last{margin-top:12px;display:flex;align-items:center;justify-content:space-between;background:var(--paper);border-radius:10px;padding:10px 14px;font-size:.85rem}
.board__last b{font-family:var(--disp);font-weight:900;color:var(--red);font-size:1.05rem}

/* Section shell */
section{padding:56px 0}
.sec-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:26px;gap:16px}
.sec-head .link{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;color:var(--red)}
.sec-note{margin:4px 0 0;font-size:.85rem;color:var(--muted)}
.accentbar{width:44px;height:5px;background:var(--red);border-radius:3px;margin-bottom:12px}

/* News */
.news{display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-template-rows:auto auto;gap:20px}
.card{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;display:flex;flex-direction:column}
.card .thumb{aspect-ratio:16/10;background:linear-gradient(135deg,#d7d1c7,#eceae3);position:relative}
.card--feat{grid-row:span 2}
.card--feat .thumb{aspect-ratio:16/11;background:linear-gradient(135deg,#B00D15,#E1121C)}
.card .body{padding:16px 18px;display:flex;flex-direction:column;gap:8px;flex:1}
.card .chip{position:absolute;left:12px;top:12px}
.card h3{font-family:var(--disp);font-weight:800;line-height:1.12;letter-spacing:-.01em;font-size:1.05rem}
.card--feat h3{font-size:1.7rem}
.card .meta{margin-top:auto;font-size:.78rem;color:var(--muted);font-weight:600}

/* Matches block */
.mx{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.panel{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px 20px 12px}
.rrow{display:grid;grid-template-columns:64px 1fr auto;gap:12px;align-items:center;padding:13px 0;border-bottom:1px solid var(--line);font-size:.92rem}
.rrow:last-child{border-bottom:0}
.rrow .dt{font-size:.76rem;color:var(--muted);font-weight:600}
.rrow .sc{font-family:var(--disp);font-weight:900;font-size:1.05rem}
.rrow .sc .w{color:var(--ink)} .rrow .sc .l{color:var(--red)}
table.tbl{width:100%;border-collapse:collapse;font-size:.92rem}
table.tbl th{font-family:var(--disp);text-transform:uppercase;letter-spacing:.06em;font-size:.66rem;color:var(--muted);text-align:center;padding:10px 6px;border-bottom:2px solid var(--line)}
table.tbl th:nth-child(2){text-align:left}
table.tbl td{padding:10px 6px;border-bottom:1px solid var(--line);text-align:center;color:var(--muted)}
table.tbl tbody tr:last-child td{border-bottom:0}
table.tbl tbody tr{transition:background .12s ease}
table.tbl tbody tr:hover{background:color-mix(in srgb,var(--red) 4%,#fff)}
table.tbl td.tteam{text-align:left;color:var(--ink);font-weight:700;white-space:nowrap}
table.tbl td.pos{width:44px}
.posn{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:9px;
  font:800 .82rem/1 var(--disp);color:var(--muted);background:color-mix(in srgb,var(--ink) 5%,transparent)}
.posn--first{background:var(--yellow);color:var(--ink)}
tr.is-slavia .posn{background:var(--red);color:#fff}
.tchip{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;
  background:#fff;border:1px solid var(--line);margin-right:10px;vertical-align:middle;overflow:hidden}
.tchip .tlogo,.tchip img{width:24px;height:24px;object-fit:contain;margin:0;border-radius:0;background:transparent;vertical-align:baseline}
table.tbl td.score{font-family:var(--disp);font-weight:700;color:var(--ink);font-size:.86rem}
table.tbl td.pts{font-family:var(--disp);font-weight:900;font-size:1.05rem;color:var(--ink);width:46px}
table.tbl tr.is-slavia td{background:color-mix(in srgb,var(--red) 8%,#fff);color:var(--ink)}
table.tbl tr.is-slavia td.pts{color:var(--red)}
table.tbl tr.is-slavia td:first-child{box-shadow:inset 3px 0 var(--red)}
@media (max-width:1080px){ table.tbl .hm{display:none} }

/* Teams */
.teams{background:linear-gradient(160deg,#E1121C,#B00D15);color:#fff}
.teams .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.tcard{background:rgba(255,255,255,.10);border:1px solid rgba(255,255,255,.28);border-radius:14px;padding:24px;display:flex;flex-direction:column;gap:6px;min-height:150px}
.tcard .k{font-family:var(--disp);font-weight:900;text-transform:uppercase;font-size:1.5rem}
.tcard .s{color:rgba(255,255,255,.85);font-size:.9rem}
.tcard .ages{margin-top:auto;display:flex;gap:6px;flex-wrap:wrap}
.tcard .ages span{font-family:var(--disp);font-weight:700;font-size:.7rem;letter-spacing:.05em;padding:3px 8px;border-radius:6px;background:rgba(255,255,255,.1)}

/* Sponsors */
.spon{display:flex;gap:18px;flex-wrap:wrap;justify-content:center;align-items:stretch}
.spon__item{display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--line);
  border-radius:12px;padding:18px 30px;min-height:88px;transition:box-shadow .15s ease,transform .15s ease,border-color .15s ease}
.spon__item img{max-height:52px;max-width:190px;width:auto;height:auto;object-fit:contain}
a.spon__item:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(0,0,0,.08);border-color:var(--red)}

/* Footer */
footer{background:#1b1416;color:#cbb8ba;padding:52px 0 26px}
.foot{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:28px}
footer h4{font-family:var(--disp);text-transform:uppercase;letter-spacing:.1em;font-size:.8rem;color:#fff;margin-bottom:12px}
footer a{display:block;padding:4px 0;font-size:.9rem}
.foot__brand{display:flex;gap:12px;align-items:center;margin-bottom:12px}
.foot__brand img{height:52px}
.foot__bottom{border-top:1px solid rgba(255,255,255,.12);margin-top:30px;padding-top:16px;display:flex;justify-content:space-between;font-size:.8rem;color:#8797b5}

/* Accessibility */
a:focus-visible,
button:focus-visible,
.btn:focus-visible{
  outline:3px solid var(--yellow);
  outline-offset:2px;
}

/* Responsive */
@media (max-width:640px){
  .wrap{padding:0 18px}
  .top__in{gap:12px}
  .hero__in{padding:44px 0 40px;min-height:380px}
  .hero h1{font-size:2.8rem}
  .hero p.lead{max-width:none}
  .hero__actions{flex-wrap:wrap}
  .news{grid-template-columns:1fr;grid-template-rows:none}
  .card--feat{grid-row:auto}
  .mx{grid-template-columns:1fr}
  .teams .grid{grid-template-columns:1fr}
  .foot{grid-template-columns:1fr;gap:24px}
  .foot__bottom{flex-direction:column;gap:6px}
  h2.sec{font-size:1.5rem}
}

/* ---------- Inner pages: page hero ---------- */
.page-hero{background:linear-gradient(160deg,#E1121C,#B00D15);color:#fff;padding:56px 0 44px}
.page-hero .accentbar{background:#fff}
.page-hero__title{font-family:var(--disp);font-weight:900;text-transform:uppercase;font-size:3rem;line-height:1;letter-spacing:-.02em;margin:0 0 8px}
.page-hero__sub{margin:0;color:rgba(255,255,255,.88);font-size:1.02rem}

/* ---------- News list ---------- */
.newsgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.card__perex{color:var(--muted);font-size:.92rem}
.empty{color:var(--muted)}
.pager{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:36px}
.pager__info{font-family:var(--disp);font-weight:700;font-size:.82rem;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.btn--pager{background:#fff;border-color:var(--line);color:var(--ink);border:1px solid var(--line)}
.btn--pager:hover{border-color:var(--red);color:var(--red)}

/* ---------- Article detail ---------- */
.article{padding:44px 0 8px}
/* article + social sidebar */
.article__layout{display:grid;grid-template-columns:minmax(0,1fr) 380px;gap:44px;align-items:start}
.article__main{min-width:0}
.article__main .article__crumb,
.article__main .article__head,
.article__main .article__cover,
.article__main .article__body{max-width:none;margin-left:0;margin-right:0}
.article__aside{position:sticky;top:20px;min-width:0}
.aside__cap{font:900 1rem/1.2 var(--disp);text-transform:uppercase;letter-spacing:.02em;margin:0 0 14px}
.aside__block{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:#fff;margin-bottom:16px}
/* The SDK injects its own iframe into .fb-page; it self-sizes, so no fixed
   height here. The blockquote is the SDK's documented fallback and shows
   as a plain link if the script never runs. */
.fb-page{display:block;max-width:100%;margin:0 auto}
.fb-page blockquote{margin:0;padding:14px 16px;font-weight:600}
.fb-page iframe{max-width:100%}
.igcard{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:14px;text-decoration:none;
  color:#fff;background:linear-gradient(120deg,var(--red),var(--red-d));
  transition:transform .12s ease,box-shadow .12s ease}
.igcard:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(225,18,28,.28)}
.igcard__ico{flex:none;color:#fff}
.igcard__body{display:flex;flex-direction:column;gap:2px;min-width:0}
.igcard__body b{font:800 .98rem/1.1 var(--disp)}
.igcard__body span{font-size:.82rem;opacity:.95}
@media (max-width:900px){
  .article__layout{grid-template-columns:1fr}
  .article__aside{position:static;max-width:520px;margin:16px auto 0}
}
.article__crumb{max-width:820px;margin:0 auto 22px}
.article__crumb a{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.78rem;color:var(--red)}
.article__head{max-width:820px;margin:0 auto 26px}
.article__title{font-family:var(--disp);font-weight:900;letter-spacing:-.02em;line-height:1.08;font-size:2.6rem;margin:0 0 12px}
.article__meta{font-family:var(--disp);font-weight:700;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.article__cover{max-width:820px;margin:0 auto 34px}
.article__cover img{display:block;width:100%;max-height:640px;object-fit:cover;object-position:center 12%;border-radius:16px;background:linear-gradient(135deg,#d7d1c7,#eceae3)}
.article__body{max-width:820px;margin:0 auto;font-size:1.06rem;line-height:1.75}
.article__body p{margin:0 0 18px}
.article__body h2,.article__body h3,.article__body h4{font-family:var(--disp);font-weight:800;letter-spacing:-.01em;margin:30px 0 12px;line-height:1.2}
.article__body img{max-width:100%;height:auto;border-radius:12px;margin:8px 0 18px}
.article__body a{color:var(--red);font-weight:600}
.article__body a:hover{text-decoration:underline}
.article__body ul,.article__body ol{margin:0 0 18px 22px}
.article__body li{margin-bottom:6px}
.article__body blockquote{border-left:4px solid var(--red);padding:6px 0 6px 18px;margin:0 0 18px;color:var(--muted)}
.article__body figure{margin:8px 0 18px}
.article__body figcaption{font-size:.85rem;color:var(--muted);margin-top:6px}
.article-more{background:#fff;border-top:1px solid var(--line)}

@media (max-width:900px){
  .newsgrid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:640px){
  .newsgrid{grid-template-columns:1fr}
  .page-hero__title{font-size:2.2rem}
  .article__title{font-size:1.8rem}
  .article__cover{aspect-ratio:16/9}
}

/* ---------- Results (own block, two-column rows) ---------- */
.results2{display:grid;grid-template-columns:1fr 1fr;gap:0 48px}

/* ---------- Standings pair + champions banner ---------- */
.tables2{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start}
.panel__cap{font-family:var(--disp);font-weight:800;text-transform:uppercase;letter-spacing:.08em;font-size:.78rem;color:var(--muted);padding:12px 8px 2px}
.champ{display:flex;align-items:center;gap:14px;padding:16px 20px;border-radius:14px 14px 0 0;
  background:linear-gradient(120deg,#E1121C,#8f0d14);color:#fff;position:relative;overflow:hidden}
.champ::after{content:"★";position:absolute;right:-6px;top:-30px;font-size:6.5rem;line-height:1;opacity:.14;font-family:var(--disp)}
.champ--other{background:linear-gradient(120deg,#2c2c31,#141416)}
.champ__badge{width:46px;height:46px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;overflow:hidden;flex:none;font-size:1.2rem;color:var(--red)}
.champ__badge img{height:40px;width:auto}
.champ__text small{display:block;font:700 .66rem/1.4 var(--disp);letter-spacing:.14em;text-transform:uppercase;color:rgba(255,255,255,.82)}
.champ__text b{font:900 1.12rem/1.2 var(--disp);text-transform:uppercase;letter-spacing:-.01em}
.panel--flush{border-top-left-radius:0;border-top-right-radius:0;border-top:0}
.tteam{font-weight:600}
.tlogo{width:24px;height:24px;object-fit:contain;vertical-align:-6px;margin-right:9px;border-radius:4px;background:#fff}

@media (max-width:900px){
  .results2{grid-template-columns:1fr}
  .tables2{grid-template-columns:1fr}
}

/* ---------- Zápasy page ---------- */
.zx{display:grid;grid-template-columns:1fr 1fr;gap:32px;align-items:start}
.zxcol__title{display:flex;flex-direction:column;gap:10px;font-family:var(--disp);font-weight:900;text-transform:uppercase;font-size:1.7rem;letter-spacing:-.01em;margin:0 0 18px}
.zxcol .board{margin-bottom:20px}
.zxcol .panel{margin-bottom:20px;padding-bottom:8px}
.board--page{box-shadow:var(--mmadm-shadow-md,0 8px 26px rgba(0,0,0,.08))}
.tagfinal{display:inline-block;font:700 .62rem/1.4 var(--disp);letter-spacing:.1em;text-transform:uppercase;color:#fff;background:var(--red);border-radius:5px;padding:2px 7px;margin-left:8px;vertical-align:1px}

/* ---------- Finals showcase ---------- */
.finals{background:#fff;border-bottom:1px solid var(--line)}
.accentbar--gold{background:var(--yellow)}
.finals__grid{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.final-card{position:relative;overflow:hidden;border-radius:16px;padding:26px 28px;color:#fff;
  background:linear-gradient(130deg,#E1121C 0%,#8f0d14 70%,#5c080d 100%)}
.final-card::after{content:"★";position:absolute;right:-10px;bottom:-46px;font-size:9rem;line-height:1;opacity:.13;font-family:var(--disp)}
.final-card__tag{font:800 .7rem/1.4 var(--disp);letter-spacing:.14em;text-transform:uppercase;color:var(--yellow);margin-bottom:10px}
.final-card__fixture{font:900 1.5rem/1.15 var(--disp);text-transform:uppercase;letter-spacing:-.01em}
.final-card__score{font:900 3.2rem/1 var(--disp);margin:10px 0 8px}
.final-card__meta{font-size:.9rem;color:rgba(255,255,255,.85)}
.final-card__champ{margin-top:14px;display:inline-flex;align-items:center;gap:8px;background:rgba(255,255,255,.14);
  border:1px solid rgba(255,255,255,.3);border-radius:999px;padding:6px 14px;font:700 .8rem/1.2 var(--disp);letter-spacing:.06em;text-transform:uppercase}

@media (max-width:900px){
  .zx{grid-template-columns:1fr}
  .finals__grid{grid-template-columns:1fr}
}

/* ---------- Fixture rows (Zápasy lists) ---------- */
.frow{display:flex;align-items:center;gap:14px;padding:11px 0;border-bottom:1px solid var(--line)}
.frow:last-child{border-bottom:0}
.fdt{width:52px;flex:none;display:flex;flex-direction:column;font:700 .8rem/1.3 var(--disp);color:var(--muted);text-transform:uppercase}
.fdt small{font:600 .72rem/1.2 var(--body);color:var(--muted)}
.fteams{display:flex;align-items:center;flex:1;min-width:0}
.fchips{display:inline-flex;margin-right:12px;flex:none}
.fchip{width:36px;height:36px;border-radius:50%;background:#fff;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;overflow:hidden;position:relative;z-index:1}
.fchip + .fchip{margin-left:-10px;z-index:0}
.fchip img{width:26px;height:26px;object-fit:contain}
.fchip b{font:800 .6rem/1 var(--disp);color:var(--muted)}
.fname{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.fscore{flex:none;min-width:64px;text-align:center;font:900 .98rem/1 var(--disp);padding:8px 12px;border-radius:10px;
  background:color-mix(in srgb,var(--ink) 5%,transparent);color:var(--ink)}
.fscore--W{background:var(--ink);color:#fff}
.fscore--L{background:color-mix(in srgb,var(--red) 12%,#fff);color:var(--red)}
.fmeta{flex:none;font-size:.8rem;color:var(--muted)}

/* ---------- App-style match rows (Slavia left · score middle · opponent right) ---------- */
.mrow{padding:12px 0;border-bottom:1px solid var(--line)}
.mrow:last-child{border-bottom:0}
.mrow__meta{display:flex;justify-content:space-between;align-items:center;gap:10px;
  font:700 .68rem/1.4 var(--disp);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:9px}
.mrow__main{display:flex;align-items:center;gap:12px}
.mside{flex:1;display:flex;align-items:center;gap:10px;min-width:0;font-weight:700}
.mside b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mside--r{justify-content:flex-end;text-align:right}
.mscore{flex:none;min-width:76px;text-align:center;padding:7px 12px;border-radius:11px;
  background:var(--paper);font:900 1.05rem/1 var(--disp);color:var(--muted)}
.mscore--W{color:var(--win)}
.mscore--L{color:var(--red)}
.mscore--vs{font-size:.85rem;color:var(--muted)}

/* ---------- Týmy list ---------- */
.tgroup{margin-bottom:44px}
.tgroup:last-child{margin-bottom:0}
.teamgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}
.teamcard{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:24px 26px;box-shadow:inset 4px 0 var(--red);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.teamcard:hover{transform:translateY(-2px);box-shadow:inset 4px 0 var(--red),0 12px 30px rgba(0,0,0,.08);border-color:var(--red)}
.teamcard__label{font:900 1.35rem/1.1 var(--disp);text-transform:uppercase;letter-spacing:-.01em}
.teamcard__meta{color:var(--muted);font-size:.9rem}
.teamcard__go{margin-top:10px;font:700 .78rem/1 var(--disp);letter-spacing:.06em;text-transform:uppercase;color:var(--red)}
.page-hero__crumb{margin-bottom:14px}
.page-hero__crumb a{font:700 .78rem/1 var(--disp);letter-spacing:.06em;text-transform:uppercase;color:rgba(255,255,255,.85)}
.page-hero__crumb a:hover{color:#fff}

/* ---------- Team detail: staff + roster ---------- */
.staff{background:#fff;border-bottom:1px solid var(--line)}
.staffrow{display:flex;flex-wrap:wrap;gap:16px}
.staffcard{display:flex;align-items:center;gap:12px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:12px 18px}
.staffcard__avatar{width:52px;height:52px;border-radius:50%;overflow:hidden;background:var(--red);color:#fff;
  display:flex;align-items:center;justify-content:center;font:800 1rem var(--disp);flex:none}
.staffcard__avatar img{width:100%;height:100%;object-fit:cover}
.staffcard__body b{display:block;font-weight:800}
.staffcard__body small{color:var(--muted);font-size:.8rem}
.pgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:18px}
.pcard{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden;
  transition:transform .15s ease,box-shadow .15s ease}
.pcard:hover{transform:translateY(-2px);box-shadow:0 12px 30px rgba(0,0,0,.08)}
.pcard__photo{position:relative;aspect-ratio:3/3.4;background:linear-gradient(160deg,#e8e4dc,#f3f0ea)}
.pcard__photo img{width:100%;height:100%;object-fit:cover;object-position:top}
.pcard__initials{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font:800 2.2rem var(--disp);color:#c9c2b6}
.pcard__num{position:absolute;right:10px;top:10px;min-width:34px;height:34px;padding:0 8px;border-radius:10px;
  background:var(--red);color:#fff;display:flex;align-items:center;justify-content:center;
  font:900 1rem var(--disp);border:2px solid #fff}
.pcard__body{padding:12px 14px}
.pcard__body b{display:block;font-weight:800;font-size:.95rem;line-height:1.25}
.pcard__body small{color:var(--muted);font-size:.8rem}

/* ---------- Team photos ---------- */
.teamcard--photo{padding:0;overflow:hidden;box-shadow:none}
.teamcard--photo:hover{box-shadow:0 12px 30px rgba(0,0,0,.10)}
.teamcard__thumb{display:block;aspect-ratio:16/8.5;background-size:cover;background-position:center 30%}
.teamcard__body{display:flex;flex-direction:column;gap:6px;padding:20px 24px;box-shadow:inset 4px 0 var(--red)}
.page-hero--photo{position:relative;overflow:hidden;padding:88px 0 72px}
.page-hero--photo::before{content:"";position:absolute;inset:0;background:
  linear-gradient(96deg, rgba(176,13,21,.95) 0%, rgba(176,13,21,.82) 34%, rgba(176,13,21,.38) 68%, rgba(90,8,13,.22) 100%),
  var(--hero-photo) center 28%/cover no-repeat}
.page-hero--photo > .wrap{position:relative}

.teams .grid--two{grid-template-columns:repeat(2,1fr)}
@media (max-width:900px){ .teams .grid--two{grid-template-columns:1fr} }

/* homepage team cards with photos */
.tcard--photo{padding:0;overflow:hidden}
.tcard__thumb{display:block;aspect-ratio:16/7.5;background-size:cover;background-position:center 30%}
.tcard__body{display:flex;flex-direction:column;gap:6px;padding:20px 24px}
.tcard--photo .ages{margin-top:8px}

/* ---------- Klub page ---------- */
.klub-prose figure{margin:26px 0}
.klub-prose figure img{width:100%;height:auto;border-radius:14px}
.klub-prose figcaption{font-size:.85rem;color:var(--muted);margin-top:8px;text-align:center}
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
.board__group{background:#fff;border:1px solid var(--line);border-radius:14px;padding:20px 24px}
#kontakt .contact__col,#vybor .board__group{box-shadow:inset 4px 0 var(--red)}
.board__role{font:800 .78rem/1.4 var(--disp);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.board__group p{margin:0;font-weight:600}
.contact{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:22px}
.contact__col{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:20px 24px}
.contact__col p{margin:0 0 10px}
.contact__col a{color:var(--red);font-weight:600}

/* ---------- Coach directory + documents ---------- */
.dirgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:18px}
.dircard{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px 22px;box-shadow:inset 4px 0 var(--red)}
.dircard__team{font:900 1.05rem/1.2 var(--disp);text-transform:uppercase;letter-spacing:-.01em;margin:0 0 10px}
.dircard__row{margin:0 0 8px;font-size:.92rem;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:baseline}
.dircard__role{font:700 .66rem/1.6 var(--disp);letter-spacing:.1em;text-transform:uppercase;color:var(--muted);min-width:64px}
.dircard__row a{color:var(--red);font-weight:600}
.board__group--gold{box-shadow:inset 4px 0 var(--yellow)}
.docgroup{margin-bottom:36px}
.doclist{list-style:none;margin:0;padding:0;columns:2;column-gap:44px}
.doclist li{padding:9px 0;border-bottom:1px solid var(--line);break-inside:avoid}
.doclist a{font-weight:600}
.doclist a:hover{color:var(--red)}
@media (max-width:800px){ .doclist{columns:1} }

/* ---------- Klub hub ---------- */
/* min 250, not 270: at the wrap's 1144px the four-column layout had TEN
   pixels of headroom at a 270 min and an 18px gap, so any nudge to either —
   like this one — silently collapsed it to three columns and a ragged
   3+3+2 last row. 250 leaves ~84px; five columns would need 1330px, which
   the wrap never reaches. */
.hubgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:20px}
.hubcard{display:flex;flex-direction:column;gap:8px;background:#fff;border:1px solid var(--line);border-radius:14px;
  padding:30px;box-shadow:inset 4px 0 var(--red);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.hubcard--gold{box-shadow:inset 4px 0 var(--yellow)}
.hubcard:hover{transform:translateY(-2px);border-color:var(--red);box-shadow:inset 4px 0 var(--red),0 12px 30px rgba(0,0,0,.08)}
.hubcard--gold:hover{box-shadow:inset 4px 0 var(--yellow),0 12px 30px rgba(0,0,0,.08)}
.hubcard b{font:900 1.26rem/1.2 var(--disp);text-transform:uppercase;letter-spacing:-.01em}
.hubcard__d{color:var(--muted);font-size:.95rem}

/* ---------- Nábor ---------- */
.whylist{list-style:none;margin:0;padding:0;columns:2;column-gap:48px}
.whylist li{padding:10px 0 10px 32px;border-bottom:1px solid var(--line);break-inside:avoid;position:relative;font-weight:600}
.whylist li::before{content:"✓";position:absolute;left:4px;color:var(--red);font-weight:900;font-family:var(--disp)}
.lendbox{margin-top:28px;background:linear-gradient(120deg,#E1121C,#8f0d14);color:#fff;border-radius:14px;
  padding:20px 26px;font-size:1.08rem}
.nabor-links{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.nabor-links .btn--pager{border:1px solid var(--line)}
@media (max-width:800px){ .whylist{columns:1} }

/* ---------- Match detail ---------- */
.match-hero{position:relative;overflow:hidden;background:linear-gradient(120deg,#E1121C,#8f0d14);color:#fff;padding:24px 0 46px}
.match-hero__inner{position:relative;z-index:1}
.match-hero__pitch{position:absolute;top:50%;right:-30px;transform:translateY(-50%);height:150%;width:auto;
  color:#fff;opacity:.14;pointer-events:none}
.match-hero .page-hero__crumb a{color:rgba(255,255,255,.85)}
.match-hero__cat{text-transform:uppercase;letter-spacing:.12em;font:700 .74rem/1.4 var(--disp);
  color:rgba(255,255,255,.8);margin:14px 0 18px}
.scoreboard{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;max-width:640px}
.scoreboard__side{display:flex;flex-direction:column;align-items:center;gap:10px;text-align:center}
.scoreboard__side b{font:800 1rem/1.15 var(--disp)}
.scoreboard__logo{width:76px;height:76px;border-radius:50%;background:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 18px rgba(0,0,0,.18)}
.scoreboard__logo img{width:60px;height:60px;object-fit:contain}
.scoreboard__logo b{color:var(--ink);font:900 1.15rem/1 var(--disp)}
.scoreboard__mid{text-align:center;min-width:120px}
.scoreboard__score{font:900 3rem/1 var(--disp);display:flex;align-items:center;justify-content:center;gap:12px}
.scoreboard__score span{opacity:.6;font-size:2rem}
.scoreboard__vs{font:800 1.8rem/1 var(--disp);opacity:.75}
.scoreboard__res{margin-top:8px;font:800 .82rem/1 var(--disp);text-transform:uppercase;letter-spacing:.08em;
  color:rgba(255,255,255,.9)}
.scoreboard__res--W{color:#7CFFB0}
.scoreboard__res--L{color:#ffd0d0}
.scoreboard__res--D{color:var(--yellow)}

.mdgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:22px;align-items:start}
.mdcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 24px}
.mdcard__cap{font:900 1.15rem/1.2 var(--disp);text-transform:uppercase;letter-spacing:-.01em;margin:0 0 16px}
.mdinfo{margin:0}
.mdinfo>div{display:flex;justify-content:space-between;gap:16px;padding:11px 0;border-bottom:1px solid var(--line)}
.mdinfo>div:last-child{border-bottom:0}
.mdinfo dt{color:var(--muted);font-weight:600;margin:0}
.mdinfo dd{margin:0;font-weight:700;text-align:right}

.timeline{list-style:none;margin:0;padding:0}
.tl{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--line)}
.tl:last-child{border-bottom:0}
.tl__min{color:var(--muted);font:700 .8rem/1 var(--disp);min-width:56px}
.tl__icon{font-size:1.05rem;width:22px;text-align:center}
.tl__logo{width:26px;height:26px;display:flex;align-items:center;justify-content:center}
.tl__logo img{max-width:26px;max-height:26px;object-fit:contain}
.tl__body{display:flex;flex-direction:column;gap:1px}
.tl__body b{font-size:.95rem}
.tl__player{color:var(--muted);font-size:.85rem}
.tl--slavia{background:linear-gradient(90deg,rgba(225,18,28,.06),transparent);border-radius:8px;
  padding-left:8px;margin-left:-8px}

.lineup{width:100%;border-collapse:collapse}
.lineup th{text-align:center;font:700 .7rem/1 var(--disp);text-transform:uppercase;letter-spacing:.06em;
  color:var(--muted);padding:0 0 12px;border-bottom:2px solid var(--line)}
.lineup th:first-child{text-align:left}
.lineup td{text-align:center;padding:10px 0;border-bottom:1px solid var(--line);font-weight:700;width:44px}
.lineup__name{text-align:left!important;width:auto!important;font-weight:600}
.lineup__goal{color:var(--red);font-size:.85rem;font-weight:800;margin-left:4px}
.lineup .c-green{color:var(--win)}
.lineup .c-yellow{color:#d9a300}
.lineup .c-red{color:var(--red)}

/* clickable match rows */
a.mrow{text-decoration:none;color:inherit;display:block;border-radius:10px;transition:background .12s ease}
a.mrow:hover{background:var(--paper)}
/* match-report bands — tighter, consistent rhythm (override the 56px section default) */
section.mdband{padding:0 0 28px}
/* facts strip — floats over the hero/paper seam */
.mdfacts-wrap{position:relative;z-index:2;padding:0;margin:-26px 0 28px}
.mdfacts{list-style:none;display:flex;flex-wrap:wrap;margin:0;padding:0;background:#fff;
  border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 10px 30px rgba(15,30,61,.09)}
.mdfacts li{flex:1 1 150px;display:flex;flex-direction:column;gap:4px;padding:14px 22px;border-right:1px solid var(--line)}
.mdfacts li:last-child{border-right:0}
.mdfacts li span{font:700 .66rem/1 var(--disp);text-transform:uppercase;letter-spacing:.09em;color:var(--muted)}
.mdfacts li b{font:800 .98rem/1.2 var(--disp);color:var(--ink)}

/* stat comparison */
.stathead{display:flex;justify-content:space-between;align-items:center;
  padding-bottom:14px;border-bottom:1px solid var(--line);margin-bottom:6px}
.statteam{display:flex;align-items:center;gap:9px;font:800 .92rem/1 var(--disp);color:var(--red)}
.statteam img{width:28px;height:28px;object-fit:contain}
.statteam--opp{flex-direction:row-reverse;color:var(--navy)}
.statrow{display:grid;grid-template-columns:40px 1fr 40px;align-items:center;gap:16px;padding:11px 0}
.statrow__v{font:900 1.35rem/1 var(--disp);text-align:center;color:var(--red)}
.statrow__v--opp{color:var(--navy)}
.statbar{display:flex;flex-direction:column;gap:7px}
.statbar__lbl{text-align:center;font:700 .72rem/1 var(--disp);text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
.statbar__track{display:flex;height:9px;border-radius:5px;overflow:hidden;background:var(--line)}
.statbar__s{background:var(--red)}
.statbar__o{background:var(--navy)}

/* balanced two-column body (timeline | lineup) */
.mdcols{display:grid;grid-template-columns:1.15fr .85fr;gap:22px;align-items:start}

/* standings snapshot */
.mdcard__caphead{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-bottom:16px}
.mdcard__caphead .mdcard__cap{margin:0}
.standtbl-scroll{overflow-x:auto}
.standtbl{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums;min-width:460px}
.standtbl th{font:700 .66rem/1 var(--disp);text-transform:uppercase;letter-spacing:.05em;color:var(--muted);
  text-align:center;padding:0 6px 11px}
.standtbl th:nth-child(2){text-align:left}
.standtbl td{text-align:center;padding:9px 6px;border-top:1px solid var(--line);font-weight:700;font-size:.9rem}
.standtbl__team{text-align:left!important;font-weight:700}
.standtbl__team img{width:22px;height:22px;object-fit:contain;vertical-align:middle;margin-right:9px}
.standtbl__pts{font-weight:900;color:var(--ink)}
.standtbl tr.is-slavia{background:linear-gradient(90deg,rgba(225,18,28,.09),transparent)}
.standtbl tr.is-slavia .standtbl__team{color:var(--red)}
.standtbl tr.is-opp{background:rgba(15,30,61,.045)}

/* ČSPH federation news — cards link out to pozemnihokej.cz */
.csph{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.csph__row{display:flex;text-decoration:none;color:inherit;background:#fff;border:1px solid var(--line);
  border-left:4px solid var(--red);border-radius:12px;overflow:hidden;transition:box-shadow .12s ease,transform .12s ease}
.csph__row:hover{box-shadow:0 8px 22px rgba(15,30,61,.08);transform:translateY(-1px)}
.csph__thumb{flex:none;width:180px;align-self:stretch;object-fit:cover;background:var(--paper);display:block}
.csph__text{flex:1;min-width:0;padding:16px 20px}
.csph__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px}
.csph__title{font:800 1.08rem/1.25 var(--disp);margin:0}
.csph__row:hover .csph__title{color:var(--red)}
.csph__date{flex:none;font:700 .74rem/1 var(--disp);color:var(--muted);white-space:nowrap}
.csph__excerpt{margin:7px 0 0;color:var(--muted);font-size:.95rem;line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.csph__author{display:inline-block;margin-top:8px;font:700 .72rem/1 var(--disp);text-transform:uppercase;
  letter-spacing:.05em;color:var(--red)}
@media (max-width:640px){
  .csph__row{flex-direction:column}
  .csph__thumb{width:auto;height:170px}
}
@media (max-width:560px){
  .csph__head{flex-direction:column;gap:2px}
  .csph__date{order:-1}
}

/* graphical two-sided match timeline */
.tlx{list-style:none;margin:0;padding:0;position:relative}
.tlx::before{content:"";position:absolute;left:50%;top:6px;bottom:6px;width:2px;
  background:var(--line);transform:translateX(-50%)}
/* top-align so the event card's label lines up with the node, not the pill stack below it */
.tlx__row{display:grid;grid-template-columns:1fr auto 1fr;align-items:start;padding:9px 0}
.tlx__mid{grid-column:2;display:flex;flex-direction:column;align-items:center;gap:5px;padding:0 16px}
.tlx__node{width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  font-size:1rem;background:#fff;border:2px solid var(--line);position:relative;z-index:1}
.tlx__row--home .tlx__node{border-color:var(--red)}
.tlx__row--away .tlx__node{border-color:var(--navy)}
.tlx__row--home .tlx__node--goal{background:var(--red);border-color:var(--red)}
.tlx__row--away .tlx__node--goal{background:var(--navy);border-color:var(--navy)}
.tlx__min{font:700 .7rem/1 var(--disp);color:var(--muted);background:var(--paper);
  padding:2px 7px;border-radius:5px;position:relative;z-index:1;white-space:nowrap}
.tlx__score{font:900 .9rem/1 var(--disp);color:#fff;background:var(--ink);
  padding:3px 9px;border-radius:6px;position:relative;z-index:1;white-space:nowrap}
.tlx__side{display:flex;min-width:0}
.tlx__row--home .tlx__side{grid-column:1;justify-content:flex-end;text-align:right}
.tlx__row--away .tlx__side{grid-column:3;justify-content:flex-start;text-align:left}
.tlx__ev{display:inline-flex;flex-direction:column;gap:2px;min-width:0;
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:9px 13px}
.tlx__row--home .tlx__ev{border-right:3px solid var(--red);
  background:linear-gradient(90deg,transparent,rgba(225,18,28,.06))}
.tlx__row--away .tlx__ev{border-left:3px solid var(--navy);
  background:linear-gradient(90deg,rgba(15,30,61,.06),transparent)}
.tlx__label{font:800 .9rem/1.15 var(--disp)}
.tlx__player{font-size:.82rem;color:var(--muted)}

@media (max-width:820px){
  .mdcols{grid-template-columns:1fr}
}
@media (max-width:560px){
  .scoreboard__score{font-size:2.2rem}
  .scoreboard__logo{width:60px;height:60px}
  .scoreboard__logo img{width:46px;height:46px}
  .mdfacts li{flex-basis:calc(50% - .5px);border-bottom:1px solid var(--line)}
  .statrow{gap:10px}
  /* timeline collapses to a single left-aligned rail on phones */
  .tlx::before{left:26px}
  .tlx__row{grid-template-columns:52px 1fr;gap:12px}
  .tlx__mid{grid-column:1;width:52px;padding:0}
  .tlx__side,.tlx__row--home .tlx__side,.tlx__row--away .tlx__side{grid-column:2;justify-content:flex-start;text-align:left}
  .tlx__row--home .tlx__ev{border-left:3px solid var(--red);border-right:0;
    background:linear-gradient(90deg,rgba(225,18,28,.06),transparent)}
}

/* Multi-line text slots: preserve author line breaks (slots store plain text). */
.slot-lines{white-space:pre-line}

/* Category page: programme + results beside the league table. */
.zk{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:26px;align-items:start;margin-top:26px}
.zk>.panel{min-width:0}
.ltab__panel{margin-top:26px}
/* Nine columns will not fit a phone. The table scrolls inside its own box so
   the PAGE never scrolls sideways. */
.ltab__wrap{overflow-x:auto}
.page-hero__kicker{margin:0 0 6px}
.page-hero__kicker a{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.75rem;color:#fff;opacity:.85}
.page-hero__kicker a:hover{opacity:1}
.ltab{width:100%;border-collapse:collapse;font-size:.88rem}
.ltab th{text-align:left;font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.05em;font-size:.68rem;color:var(--muted);padding:8px 6px;border-bottom:1px solid var(--line)}
/* The record columns are numeric and narrow; only the club name is a name. */
.ltab--full{min-width:520px}
.ltab--full th,.ltab--full td{text-align:center;white-space:nowrap}
.ltab--full th:first-child,.ltab--full td:first-child{text-align:left;width:2.2rem}
.ltab--full .ltab__th-team,.ltab--full .ltab__team{text-align:left;width:auto}
.ltab__goals{font-variant-numeric:tabular-nums}
.ltab td{padding:9px 6px;border-bottom:1px solid var(--line)}
.ltab__team{display:flex;align-items:center;gap:9px;min-width:0}
.ltab__team span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ltab__logo{flex:none;width:24px;height:24px;border-radius:50%;background:#fff;border:1px solid var(--line);display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.ltab__logo img{width:18px;height:18px;object-fit:contain}
.ltab tr:last-child td{border-bottom:0}
.ltab__us{background:#fdf3f4}
.ltab__us td{font-weight:700}
@media (max-width:900px){
  .zk{grid-template-columns:1fr}
}

/* /zapasy/ menu: six categories across the full width. Separation comes from
   space and heading weight, not from cards — the club's flat house style. */
.zmenu{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:52px 44px;margin-top:30px}
.ztile{min-width:0}
.ztile__head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ztile__head .zxcol__title{font-size:1.45rem;margin:0 0 14px}
.ztile__champ{flex:none;margin-top:6px;font-size:.75rem;font-weight:700;color:var(--muted);white-space:nowrap}
.ztile__cap{font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.66rem;color:var(--muted);margin:10px 0 2px}
.ztile__more{display:inline-block;margin-top:14px;font-family:var(--disp);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:.74rem;color:var(--red)}
@media (max-width:820px){
  .zmenu{grid-template-columns:1fr;gap:44px}
}

/* Zápasy dropdown — desktop only, CSS only. The parent link always navigates
   to /zapasy/, so a touch device that taps instead of hovering lands on the
   menu page rather than in a dead end. */
.nav__group{position:relative;display:inline-flex}
.nav__menu{display:none}
@media (min-width:901px){
  .nav__group:hover .nav__menu,
  .nav__group:focus-within .nav__menu{
    display:flex;flex-direction:column;
    position:absolute;top:100%;left:0;min-width:190px;z-index:60;
    background:#fff;border:1px solid var(--line);border-top:2px solid var(--red);
    border-radius:0 0 10px 10px;padding:6px;
    box-shadow:0 18px 38px rgba(15,30,61,.16);
  }
  .nav__menu a{white-space:nowrap;font-size:.78rem;padding:9px 10px}
}
/* Mobile panel: .nav__group's own box is display:inline-flex (needed for the
   desktop dropdown's absolute-positioning context), which the panel's
   align-items:stretch still stretches to full row width — but the Zápasy
   anchor inside it is a row-direction flex child with flex-grow:0, so it
   only takes its own content width instead of filling that row. Without
   this reset the border-bottom from ".nav.is-open a" (below) only draws
   under the short "Zápasy" text, not across the row like every sibling. */
@media (max-width:900px){
  .nav.is-open .nav__group{display:block}
  .nav.is-open .nav__group>a{display:block}
}

/* ČSPH news + video report in the /klub/ sidebar. */
.fednews{display:flex;gap:10px;align-items:flex-start;padding:11px 14px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit}
.fednews:last-of-type{border-bottom:0}
.fednews:hover .fednews__title{color:var(--red)}
.fednews__thumb{flex:none;width:52px;height:52px;border-radius:9px;overflow:hidden;background:var(--paper)}
.fednews__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.fednews__body{min-width:0}
.fednews__title{display:block;font-weight:600;font-size:.86rem;line-height:1.35;overflow-wrap:anywhere}
.fednews__date{display:block;margin-top:3px;font-size:.75rem;color:var(--muted)}
.fednews__caption{margin:0;padding:10px 14px 12px;font-size:.8rem;color:var(--muted)}
/* 16:9 without pushing the sidebar around while the iframe loads. */
.ytembed{position:relative;padding-top:56.25%}
.ytembed iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}

/* The igcard was always LAST in the article aside, so it never needed spacing
   below it. In the klub aside another block follows it. */
.article__aside .igcard{margin-bottom:16px}
.article__aside .aside__cap:not(:first-child){margin-top:24px}

/* Wider aside (380px) — the federation tiles use the extra room. */
.fednews{gap:12px;padding:13px 16px}
.fednews__thumb{width:72px;height:72px;border-radius:10px}
.fednews__title{font-size:.92rem}

/* The page hero is a stripe: it names the page, it does not occupy the screen.
   Scoped with :not(.page-hero--photo) so the deliberate photo heroes — /nabor/
   and a team page that has a squad photo — keep their full height. The mobile
   rule below must stay AFTER the desktop one: same specificity, source order
   decides. Without it the old 2.2rem @640px override would make the title
   LARGER on a phone than on a desktop. */
.page-hero:not(.page-hero--photo){padding:18px 0 16px}
.page-hero:not(.page-hero--photo) .accentbar{display:none}
.page-hero:not(.page-hero--photo) .page-hero__title{font-size:1.75rem;margin:0}
.page-hero:not(.page-hero--photo) .page-hero__sub{font-size:.88rem;margin-top:2px}
.page-hero:not(.page-hero--photo) .page-hero__crumb{margin-bottom:6px}
.page-hero:not(.page-hero--photo) .page-hero__kicker{margin:0 0 4px}
@media (max-width:640px){
  .page-hero:not(.page-hero--photo) .page-hero__title{font-size:1.4rem}
}

/* Sticky footer. Without this, any page shorter than the viewport leaves a
   strip of background below the footer — /klub/ is the shortest page we have
   and it showed there first. Everything after </footer> in base.html is either
   position:fixed (the consent banner) or a script, so nothing else becomes a
   flex item; .top stays sticky inside a flex column. */
body{min-height:100vh;display:flex;flex-direction:column}
body > footer{margin-top:auto}

/* Klub hub tiles: an icon chip, the title, the description, and a chevron that
   moves on hover so the whole card reads as one target. */
.hubcard{position:relative;padding-right:44px}
.hubcard__ico{display:inline-flex;align-items:center;justify-content:center;width:50px;height:50px;
  border-radius:14px;background:var(--paper);color:var(--red);margin-bottom:14px;flex:none;
  transition:background .15s ease,color .15s ease}
.hubcard:hover .hubcard__ico{background:var(--red);color:#fff}
.hubcard--gold .hubcard__ico{color:#a8790a}
.hubcard--gold:hover .hubcard__ico{background:var(--yellow);color:#2a2000}
.hubcard__go{position:absolute;right:16px;top:50%;transform:translateY(-50%);color:var(--line);
  transition:transform .15s ease,color .15s ease}
.hubcard:hover .hubcard__go{color:var(--red);transform:translateY(-50%) translateX(3px)}
.hubcard--gold:hover .hubcard__go{color:var(--yellow)}

/* A taller crop of the same full-bleed photo hero, so the players in the front
   row are in frame and not cut off. Padding only — the image handling is
   untouched. Klub-only: /nabor/ and the team pages keep their shorter crop. */
.page-hero--tall{padding:170px 0 150px}
/* Crop from the middle of the photo, not the top: at the shared 28% the frame
   opened on sky and cut the front row in half. 50% puts the clubhouse sign,
   the whole crowd and the front row in shot. Bottom-aligning it (100%) goes
   too far — that fills the frame with pitch and cuts the players off. */
.page-hero--tall::before{background-position:center,center 50%}
@media (max-width:760px){
  .page-hero--tall{padding:96px 0 84px}
}

.hubcard__ico svg{width:26px;height:26px}
