/* Finhub Insights — vzhled webu.
   Barvy jsou tytéž jako v diagramech, aby obrázek a stránka kolem něj vypadaly jako jedna věc.
   Píše se od mobilu: základní pravidla platí pro úzkou obrazovku, media query jen přidávají. */

:root {
  --bg: #f2f2f2;
  --surface: #ffffff;
  --line: #dcdfe1;
  --ink: #16242c;
  --ink-soft: #56666e;
  --brand: #155077;
  --brand-ink: #0d3550;
  --good: #2da02b;
  --bad: #cc0000;
  --radius: 14px;
  --wrap: 1080px;
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: #0d1418; --surface: #161f26; --line: #2c3a43;
    --ink: #e6ecf0; --ink-soft: #9aabb5;
    --brand: #63a9d4; --brand-ink: #bcdcf0;
    --good: #5cc75c; --bad: #e8706a;
  }
}

* { box-sizing: border-box; }

body {
  margin: 0;
  background: var(--bg);
  color: var(--ink);
  font: 16px/1.6 "Open Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  -webkit-font-smoothing: antialiased;
  overflow-wrap: break-word;
}

a { color: var(--brand); text-decoration: none; }
a:hover { text-decoration: underline; }

.wrap { max-width: var(--wrap); margin: 0 auto; padding: 0 16px; }

/* ── hlavička ─────────────────────────────────────────────────────────── */
header.top {
  border-bottom: 1px solid var(--line);
  background: var(--surface);
  position: sticky; top: 0; z-index: 10;
}
header.top .wrap {
  display: flex; align-items: center; gap: 14px;
  min-height: 58px;
}
/* Na 390 px se značka, tři odkazy a přepínač jazyka nevejdou vedle sebe — nabídka se proto
   zmenší a stlačí. Zalomení do druhého řádku by posunulo obsah dolů na každé stránce. */
@media (max-width: 560px) {
  header.top .wrap { gap: 8px; }
  .brand { font-size: .95rem; gap: 7px; }
  .brand em { display: none; }
  nav.top-nav { gap: 10px; font-size: .82rem; }
  .langpick > summary { padding: 3px 7px; }
  .langpick .code { font-size: .72rem; }
}
/* ── hledání ──────────────────────────────────────────────────────────── */
/* Na širokém displeji je pole vidět pořád. Na úzkém je pod ikonou a rozbalí se na vlastní
   řádek: trvale roztažené pole tam sebralo celou hlavičku a vypadalo to rozsypaně. */
.search { position: relative; margin-left: auto; display: flex; align-items: center; }
.search-open { display: none; }

.search-form { display: flex; align-items: center; gap: 4px; height: 36px; padding: 0 4px 0 12px;
  border: 1px solid var(--line); border-radius: 999px; background: var(--surface); }
.search-form input { border: 0; background: none; color: var(--ink); font: inherit;
  font-size: .88rem; width: 11rem; min-width: 0; padding: 0; }
.search-form input::placeholder { color: var(--ink-soft); opacity: .8; }
.search-form input:focus { outline: none; }
.search-form:focus-within { border-color: var(--brand); }
.search-form button { flex: 0 0 auto; display: grid; place-items: center; padding: 0;
  width: 28px; height: 28px; border: 0; border-radius: 999px; background: none;
  color: var(--ink-soft); cursor: pointer; }
.search-form button:hover { color: var(--brand); }
.search svg { width: 16px; height: 16px; pointer-events: none; }

/* Nabídky kreslíme sami, hned pod polem. `<datalist>` si prohlížeč vykreslí po svém a na
   telefonu ho pověsí dolů nad klávesnici, daleko od místa, kam se píše. */
.search-hits { position: absolute; z-index: 50; top: calc(100% + 6px); right: 0; min-width: 100%;
  margin: 0; padding: 5px; list-style: none; max-height: 60vh; overflow-y: auto;
  background: var(--surface); border: 1px solid var(--line); border-radius: 14px;
  box-shadow: 0 12px 30px rgba(0, 0, 0, .22); }
.search-hits a { display: flex; align-items: baseline; gap: 9px; padding: 10px 12px;
  border-radius: 9px; color: var(--ink); }
.search-hits a b { font-weight: 800; letter-spacing: .02em; }
.search-hits a span { color: var(--ink-soft); font-size: .86rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.search-hits a:hover, .search-hits a.on { background: var(--bg); text-decoration: none; }

@media (max-width: 720px) {
  .search-open { display: grid; place-items: center; width: 36px; height: 36px; padding: 0;
    border: 1px solid var(--line); border-radius: 10px; background: var(--surface);
    color: var(--ink-soft); cursor: pointer; }
  .search-open:hover { border-color: var(--brand); color: var(--brand); }
  .search-form { display: none; }

  /* Rozbalené hledání se VYSUNE POD hlavičku, místo aby přeskládalo její obsah. Když bralo
     celý řádek uvnitř hlavičky, odsunulo nabídku a jazyk na třetí řádek a vypadalo to
     rozsypaně. Takhle se řádek s logem a ikonami vůbec nehne. */
  header.top .wrap { position: relative; }
  /* Vysunutý panel se kotví k HLAVIČCE, ne k tlačítku. Bez tohohle měří `left/right` od
     ikony široké 36 px a z pole zbude kolečko. */
  .search.open { position: static; }
  /* Odsazení stejné jako má obsah stránky: absolutní pozice se počítá od okraje hlavičky
     včetně jejího vnitřního okraje, takže `0` znamená až na kraj obrazovky. */
  .search.open .search-form { display: flex; position: absolute; z-index: 45;
    left: 16px; right: 16px; top: calc(100% + 6px); height: 42px; padding: 0 6px 0 14px; }
  .search.open .search-form input { width: 100%; font-size: 1rem; }
  .search.open .search-open { border-color: var(--brand); color: var(--brand); }
  .search.open .search-hits { left: 16px; right: 16px; top: calc(100% + 54px); }
}

/* Nabídka v hlavičce.

   Odkazy jsou výchozí stav: vidět je má každý, i bez JavaScriptu. Teprve když skript ohlásí,
   že tlačítko funguje (třída `js`), smí se na úzkém displeji schovat. Opačné pořadí by
   znamenalo, že při jakékoli chybě ve skriptu zmizí z webu navigace. */
.nav-links { display: flex; gap: 16px; margin: 0; padding: 0; list-style: none; flex-wrap: wrap; }
.nav-links a { color: var(--ink-soft); font-size: .93rem; }
.navtoggle { display: none; }

@media (max-width: 719px) {
  .top-nav.js .navtoggle { display: flex; align-items: center; justify-content: center;
    width: 36px; height: 36px; padding: 0; border: 1px solid var(--line); border-radius: 10px;
    background: var(--surface); color: var(--ink-soft); cursor: pointer; }
  .top-nav.js .navtoggle:hover { border-color: var(--brand); color: var(--brand); }
  .top-nav.js .navtoggle svg { width: 18px; height: 18px; }
  .top-nav.js { position: relative; }
  .top-nav.js .nav-links { display: none; position: absolute; right: 0; top: calc(100% + 8px);
    z-index: 40; flex-direction: column; gap: 0; min-width: 180px; padding: 5px;
    background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
    box-shadow: 0 10px 28px rgba(0, 0, 0, .14); }
  .top-nav.js.open .nav-links { display: flex; }
  .top-nav.js .nav-links a { display: block; padding: 9px 12px; border-radius: 8px;
    color: var(--ink); font-size: .92rem; }
  .top-nav.js .nav-links a:hover { background: var(--bg); text-decoration: none; }
}

.brand { display: flex; align-items: center; gap: 9px; font-weight: 800; color: var(--ink); font-size: 1.05rem; }
.brand:hover { text-decoration: none; }
.brand .mark { width: 28px; height: 28px; flex: 0 0 auto; display: block; }
.brand em { font-style: normal; font-weight: 400; color: var(--ink-soft); }
nav.top-nav { display: flex; gap: 16px; font-size: .93rem; }
nav.top-nav a { color: var(--ink-soft); }
/* Přepínač jazyků. Zeměkoule dělá z dvoupísmenné zkratky přepínač; bez ní je to jen popisek. */
.langpick { position: relative; }
.langpick > summary { display: flex; align-items: center; gap: 5px; padding: 4px 9px;
  border: 1px solid var(--line); border-radius: 999px; color: var(--ink-soft);
  font-size: .78rem; cursor: pointer; list-style: none; user-select: none; }
.langpick > summary::-webkit-details-marker { display: none; }
.langpick > summary:hover { border-color: var(--brand); color: var(--brand); }
.langpick > summary svg { width: 15px; height: 15px; flex: 0 0 auto; }
.langpick .code { font-weight: 600; letter-spacing: .03em; }
.langpick > ul { position: absolute; right: 0; top: calc(100% + 6px); z-index: 40;
  margin: 0; padding: 5px; min-width: 148px; list-style: none;
  background: var(--surface); border: 1px solid var(--line); border-radius: 12px;
  box-shadow: 0 10px 28px rgba(0, 0, 0, .14); }
.langpick > ul a { display: block; padding: 8px 11px; border-radius: 8px;
  color: var(--ink); font-size: .88rem; }
.langpick > ul a:hover { background: var(--bg); text-decoration: none; }
/* Právě zvolený jazyk je označený odrážkou, ne jen barvou. */
.langpick > ul a[aria-current] { font-weight: 700; color: var(--brand); }
.langpick > ul a[aria-current]::after { content: " ✓"; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* ── typografie ───────────────────────────────────────────────────────── */
h1 { font-size: 1.7rem; line-height: 1.2; margin: 0 0 6px; text-wrap: balance; }
h2 { font-size: 1.18rem; margin: 34px 0 12px; }
h3 { font-size: 1rem; margin: 22px 0 8px; }
.lede { color: var(--ink-soft); margin: 0 0 22px; max-width: 62ch; }
.eyebrow { font-size: .74rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); }
main { padding: 26px 0 60px; }

/* ── karty korpusu ────────────────────────────────────────────────────── */
.cards { display: grid; grid-template-columns: 1fr; gap: 14px; margin: 0; padding: 0; list-style: none; }
@media (min-width: 640px) { .cards { grid-template-columns: 1fr 1fr; } }
@media (min-width: 980px) { .cards { grid-template-columns: 1fr 1fr 1fr; } }

.card {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; display: flex; flex-direction: column;
}
/* Náhledy mají pevný poměr stran, i když diagramy nejsou přesně stejně vysoké. Bez toho
   začínají popisky na každé kartě v jiné výšce a mřížka vypadá rozsypaně.
   `contain`, ne `cover` — u sankeye by oříznutí ukrojilo data. */
/* Podklad je plátno diagramu, ne pozadí webu: renderer dělá obrázky různě vysoké (1539 až
   2136 px podle počtu kohort), takže se v pevném rámečku vždycky někde letterboxuje. Se stejnou
   barvou to splyne s obrázkem; s tmavým pozadím by kolem každé karty svítil jiný pruh. */
.card a.thumb { display: block; background: #f2f2f2; aspect-ratio: 16 / 9; }
.card a.thumb img { display: block; width: 100%; height: 100%; object-fit: contain; }
.card img { display: block; width: 100%; height: auto; }
.card .body { padding: 13px 15px 15px; display: flex; flex-direction: column; gap: 3px; }
.card .row { display: flex; align-items: center; gap: 8px; }
/* Značka v medailonku. Musí být SPECIFIČTĚJŠÍ než `.card img { width: 100% }` o kus výš — to
   pravidlo platí pro náhled diagramu a značku by roztáhlo přes celou kartu. */
.card .row .firm-icon { width: 26px; height: 26px; flex: 0 0 auto; }
.card .tick { font-weight: 800; letter-spacing: .02em; }
.card .per { color: var(--ink-soft); font-size: .86rem; margin-left: auto; }
.card .name { color: var(--ink-soft); font-size: .9rem; }
/* Za jaké období a kdy zveřejněno. Drobným písmem: je to kontext čísla, ne číslo samo. */
.card .when { color: var(--ink-soft); font-size: .78rem; }
.card .figs { display: flex; gap: 14px; margin-top: 7px; font-size: .9rem; }
.card .figs b { font-variant-numeric: tabular-nums; }

/* ── carousel výlohy ──────────────────────────────────────────────────── */
.carousel { margin: 26px 0 8px; }
.carousel-head { display: flex; align-items: center; gap: 12px; }
.carousel-head .section-head { margin: 0; }
.carousel-nav { margin-left: auto; display: flex; gap: 7px; }
.cbtn {
  width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--line);
  background: var(--surface); color: var(--ink); cursor: pointer;
  display: grid; place-items: center; padding: 0;
}
.cbtn:hover { border-color: var(--brand); color: var(--brand); }
.cbtn:active { transform: scale(.94); }

.carousel-track {
  display: flex; gap: 14px; margin: 14px 0 0; padding: 0 0 4px; list-style: none;
  overflow-x: auto; overscroll-behavior-x: contain;
  scroll-snap-type: x mandatory;
  /* Posuvník se schovává, protože pásmo se ovládá palcem nebo šipkami; na macOS a mobilu
     stejně není vidět a na Windows by pod kartami dělal šedý pruh. */
  scrollbar-width: none; -ms-overflow-style: none;
}
.carousel-track::-webkit-scrollbar { display: none; }
.carousel-track:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; border-radius: var(--radius); }
/* Na mobilu je vidět kus další karty — je to jediné vodítko, že se dá posouvat dál. */
.carousel-track > .card { flex: 0 0 86%; scroll-snap-align: center; }
@media (min-width: 640px) { .carousel-track > .card { flex: 0 0 calc(50% - 7px); } }
@media (min-width: 980px) { .carousel-track > .card { flex: 0 0 calc(33.333% - 10px); } }

/* ── rozcestník firem ─────────────────────────────────────────────────── */
h2 .count {
  font-size: .72rem; font-weight: 400; color: var(--ink-soft);
  border: 1px solid var(--line); border-radius: 99px; padding: 1px 8px; margin-left: 7px;
  vertical-align: middle;
}
ul.chips { list-style: none; margin: 0 0 8px; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
ul.chips a {
  display: flex; align-items: baseline; gap: 7px; padding: 8px 13px;
  border: 1px solid var(--line); border-radius: 10px; background: var(--surface); color: var(--ink);
}
ul.chips a:hover { border-color: var(--brand); text-decoration: none; }
ul.chips b { font-weight: 800; letter-spacing: .02em; }
ul.chips span { color: var(--ink-soft); font-size: .87rem; }

h2.section-head { margin: 34px 0 4px; }
h2.section-head:first-of-type { margin-top: 26px; }
.section-note { margin: 0 0 14px; color: var(--ink-soft); font-size: .9rem; }

.up { color: var(--good); }
.down { color: var(--bad); }
.num { font-variant-numeric: tabular-nums; }

/* ── stránka kvartálu ─────────────────────────────────────────────────── */
.diagram {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; margin: 0 0 8px;
}
.diagram img { display: block; width: 100%; height: auto; }
.diagram-note { color: var(--ink-soft); font-size: .84rem; margin: 0 0 26px; }

/* Období a den zveřejnění hned pod nadpisem. Fiskální kvartály se u firem rozcházejí, takže
   „Q4 FY26" bez rozsahu nic neznamená — a bez data podání se starý diagram tváří jako čerstvý. */
.facts { display: flex; flex-wrap: wrap; gap: 8px 26px; margin: 0 0 18px; padding: 0; }
.facts > div { display: flex; align-items: baseline; gap: 8px; }
.facts dt { font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.facts dd .meta { font-size: .8rem; }

/* ── detail firmy: hlavička, přepínač a čísla ────────────────────────── */
/* Kdo to je, musí být jasné dřív než cokoli jiného — proto značka, jméno a ticker nahoře
   a hned vedle cesta na sousední firmu. */
.firm { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 20px; margin: 0 0 18px; }
.firm-id { display: flex; align-items: center; gap: 14px; min-width: 0; }
.firm-mark { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 13px; background: var(--surface);
  border: 1px solid var(--line); object-fit: contain; padding: 5px; }
span.firm-mark { display: grid; place-items: center; font-size: 1.3rem; color: var(--ink-soft); }
.firm h1 { margin: 0; font-size: 1.75rem; line-height: 1.1; }
.firm-meta { margin: 3px 0 0; color: var(--ink-soft); font-size: .92rem; }
.firm-meta b { color: var(--ink); letter-spacing: .02em; }
.firm-nav { display: flex; align-items: center; gap: 8px; margin-left: auto; }
.firm-side { display: flex; align-items: center; gap: 9px; min-width: 0; max-width: 190px;
  padding: 8px 12px; border: 1px solid var(--line); border-radius: var(--radius);
  background: var(--surface); color: var(--ink); }
.firm-side:hover { text-decoration: none; border-color: var(--brand); }
.firm-side.next { flex-direction: row-reverse; text-align: right; }
.firm-side.empty { border: 0; background: none; padding: 0; }
.firm-side .arrow { flex: 0 0 auto; color: var(--ink-soft); }
.firm-side:hover .arrow { color: var(--brand); }
.firm-side .who { min-width: 0; }
.firm-side .who b { display: block; font-size: .9rem; }
.firm-side .per { display: block; font-size: .74rem; color: var(--ink-soft);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.firm-pos { font-size: .78rem; color: var(--ink-soft); font-variant-numeric: tabular-nums;
  white-space: nowrap; }

/* Čísla pod diagramem se rozbalují na místě. Výšku `auto` animovat nejde, mřížka z 0fr na 1fr
   ano — a `<details>` zůstává funkční i bez JavaScriptu. */
.numbers { margin: 0 0 26px; }
.numbers > summary {
  display: inline-flex; align-items: center; gap: 8px; padding: 9px 15px;
  border: 1px solid var(--line); border-radius: 999px; background: var(--surface);
  color: var(--brand); font-size: .9rem; cursor: pointer; list-style: none; user-select: none;
}
.numbers > summary::-webkit-details-marker { display: none; }
.numbers > summary::after { content: "▾"; font-size: .8rem; transition: transform .2s ease; }
.numbers[open] > summary::after { transform: rotate(180deg); }
.numbers > summary:hover { border-color: var(--brand); }
.numbers-body { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s ease; }
.numbers[open] .numbers-body { grid-template-rows: 1fr; }
.numbers-body > div { overflow: hidden; }
.numbers-panel { padding-top: 14px; }
@media (prefers-reduced-motion: reduce) { .numbers-body { transition: none; } }

/* Co je právě vybrané: období a den zveřejnění na jednom řádku nad čísly. */
.qnow { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin: 0 0 14px;
  color: var(--ink-soft); font-size: .92rem; }
.qnow b { color: var(--ink); font-size: 1.05rem; }

@media (max-width: 620px) {
  /* Na telefonu má navigace mezi firmami vlastní řádek přes celou šířku, ať se do ní trefí palec. */
  .firm-nav { margin-left: 0; width: 100%; justify-content: space-between; }
  .firm-side { max-width: 45%; }
  .firm h1 { font-size: 1.45rem; }
}

/* Přepínač kvartálů je zároveň sloupcový graf tržeb: jedna řada, jedna barva, společná
   základna. Čte se zleva doprava jako čas, takže růst i propad je vidět dřív než čísla. */
/* `position: relative` tu není kosmetika: bez ní se `offsetLeft` karet měří od stránky
   a doskrolování na vybraný kvartál by na úzké obrazovce skončilo někde uprostřed osy. */
.qstrip {
  position: relative;
  display: flex; gap: 8px; overflow-x: auto; overscroll-behavior-x: contain;
  list-style: none; margin: 0 0 26px; padding: 2px 2px 8px;
  scroll-snap-type: x proximity;
}
.qstrip > li { flex: 0 0 138px; scroll-snap-align: center; }
.qstrip a {
  display: block; height: 100%; padding: 11px 12px 13px; text-decoration: none; color: var(--ink);
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
}
.qstrip a:hover { border-color: var(--brand); }
/* Vybraný kvartál se nepozná jen barvou — má i štítek „zobrazeno". */
.qstrip a.on { box-shadow: inset 0 0 0 2px var(--brand); border-color: var(--brand); }
/* Tenká značka, ne blok: pruh má nést velikost tržeb, ne dělat z karty barevnou plochu.
   Plocha je vyšší, než by se zdálo nutné — pruhy začínají na nule (jinak by graf lhal),
   takže rozdíl mezi 94 a 144 miliardami je jen část výšky a na nízké ploše by zanikl. */
.qstrip .bar {
  display: flex; align-items: flex-end; height: 66px; margin-bottom: 9px;
  border-bottom: 1px solid var(--line);
}
.qstrip .bar i { display: block; width: 30px; background: var(--brand); border-radius: 4px 4px 0 0; }
.qstrip .lab { display: block; font-weight: 700; }
.qstrip .rng, .qstrip .rev, .qstrip .yoy { display: block; font-size: .84rem; }
.qstrip .rng { color: var(--ink-soft); }
.qstrip .rev { font-variant-numeric: tabular-nums; margin-top: 4px; }
.qstrip .tag {
  display: none; margin-top: 5px; font-size: .66rem; letter-spacing: .1em;
  text-transform: uppercase; color: var(--brand);
}
.qstrip a.on .tag { display: block; }

.keyfigs {
  display: grid; grid-template-columns: 1fr 1fr; gap: 1px;
  background: var(--line); border: 1px solid var(--line); border-radius: var(--radius);
  overflow: hidden; margin: 0 0 26px;
}
@media (min-width: 640px) { .keyfigs { grid-template-columns: repeat(4, 1fr); } }
.keyfig { background: var(--surface); padding: 13px 15px; }
.keyfig b { display: block; font-size: 1.42rem; line-height: 1.15; font-variant-numeric: tabular-nums; }
.keyfig span { font-size: .74rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.keyfig .delta { font-size: .84rem; }

/* Tabulka je pro čtenáře i pro roboty — obrázek se nedá citovat, čísla ano. */
.tablewrap { overflow-x: auto; border: 1px solid var(--line); border-radius: var(--radius); background: var(--surface); }
table.fin { border-collapse: collapse; width: 100%; font-size: .94rem; }
table.fin th, table.fin td { padding: 10px 14px; border-bottom: 1px solid var(--line); text-align: left; }
table.fin td.n, table.fin th.n { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
table.fin tr:last-child td { border-bottom: 0; }
table.fin tr.total td { font-weight: 700; }
table.fin tr.sub td:first-child { padding-left: 28px; color: var(--ink-soft); }
table.fin caption { text-align: left; padding: 12px 14px 0; color: var(--ink-soft); font-size: .86rem; }

/* Na telefonu se čtyři sloupce nevejdou a vodorovné posouvání tabulky nikdo nenajde. Podíl na
   tržbách se proto na úzké obrazovce skrývá — jde dopočítat, kdežto meziroční změna ne.
   U firmy padá čistý zisk, protože marže vedle něj říká totéž a zabere míň místa. */
@media (max-width: 560px) {
  table.fin.q th:nth-child(3), table.fin.q td:nth-child(3) { display: none; }
  /* U firmy padá období, den zveřejnění a čistý zisk: rozsah i datum jsou nad tabulkou
     v přepínači a v popisce diagramu, marže vedle zisku říká totéž a zabere míň místa. */
  table.fin.c th:nth-child(2), table.fin.c td:nth-child(2),
  table.fin.c th:nth-child(3), table.fin.c td:nth-child(3),
  table.fin.c th:nth-child(6), table.fin.c td:nth-child(6),
  table.fin.c th:nth-child(7), table.fin.c td:nth-child(7) { display: none; }
  table.fin th, table.fin td { padding: 10px 11px; }
}

.actions { display: flex; flex-wrap: wrap; gap: 9px; margin: 22px 0; }
.btn {
  display: inline-flex; align-items: center; gap: 7px; padding: 9px 15px;
  border: 1px solid var(--line); border-radius: 99px; background: var(--surface);
  color: var(--ink); font-size: .9rem; cursor: pointer;
}
.btn:hover { text-decoration: none; border-color: var(--brand); color: var(--brand); }
.btn.primary { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn.primary:hover { background: var(--brand-ink); color: #fff; }

.meta { color: var(--ink-soft); font-size: .87rem; }
.meta a { color: var(--ink-soft); text-decoration: underline; }

/* ── odběr ────────────────────────────────────────────────────────────── */
.signup {
  background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius);
  padding: 20px; margin: 34px 0;
}
.signup h2 { margin: 0 0 5px; font-size: 1.1rem; }
.signup p { margin: 0 0 14px; color: var(--ink-soft); font-size: .93rem; }
.signup form { display: flex; flex-direction: column; gap: 9px; }
@media (min-width: 560px) { .signup form { flex-direction: row; } }
.signup input {
  flex: 1; padding: 11px 14px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--bg); color: var(--ink); font: inherit; font-size: .95rem; min-width: 0;
}
.signup input:focus { outline: 2px solid var(--brand); outline-offset: 1px; }
.signup button { padding: 11px 20px; border: 0; border-radius: 10px; background: var(--brand);
  color: #fff; font: inherit; font-weight: 600; cursor: pointer; }
.signup .msg { margin: 10px 0 0; font-size: .9rem; }

/* ── patička ──────────────────────────────────────────────────────────── */
footer.bottom {
  border-top: 1px solid var(--line); background: var(--surface);
  padding: 26px 0 40px; color: var(--ink-soft); font-size: .87rem;
}
footer.bottom .cols { display: flex; flex-wrap: wrap; gap: 20px 34px; margin-bottom: 16px; }
footer.bottom a { color: var(--ink-soft); }
.disclaimer { font-size: .78rem; line-height: 1.5; max-width: 78ch; }

.empty { text-align: center; padding: 50px 20px; color: var(--ink-soft); }

/* ── nástroje nad žebříčkem ───────────────────────────────────────────── */
.tools { display: flex; flex-wrap: wrap; gap: 9px; align-items: center; margin: 0 0 14px; }
.tools input[type=search], .tools select {
  padding: 10px 13px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); color: var(--ink); font: inherit; font-size: .93rem;
  min-width: 0; max-width: 100%;
}
.tools input[type=search] { flex: 1 1 200px; }
/* Vlastní rozsah dat: popisek a pole drží u sebe, ať se na úzké obrazovce zalomí jako celek. */
.tools label { display: inline-flex; align-items: center; gap: 7px; color: var(--ink-soft); font-size: .9rem; }
.tools input[type=date] {
  padding: 8px 11px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--surface); color: var(--ink); font: inherit; font-size: .9rem;
}
.tools button {
  padding: 8px 15px; border: 1px solid var(--brand); border-radius: 999px;
  background: var(--brand); color: #fff; font: inherit; font-size: .9rem; cursor: pointer;
}
/* Z čeho se roční číslo skládá. Ukazuje se po najetí i po zaostření klávesnicí — dotykové
   zařízení nemá „najetí", ale klepnutí zaostří, takže se to dozví i tam. */
.info { position: relative; display: inline-block; margin-left: 4px; color: var(--ink-soft);
  font-size: .8rem; cursor: help; }
.info .tip {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 20;
  display: none; min-width: 190px; padding: 9px 11px; text-align: left;
  background: var(--ink); color: var(--bg); border-radius: 10px;
  font-size: .82rem; line-height: 1.4; font-variant-numeric: normal;
  box-shadow: 0 6px 24px rgba(0, 0, 0, .28);
}
.info .tip b { display: block; font-size: .74rem; letter-spacing: .05em; text-transform: uppercase;
  opacity: .72; margin-bottom: 2px; }
.info:hover .tip, .info:focus .tip, .info:focus-within .tip { display: block; }

/* Počet u dne v týdnu: říká, jestli se tam vůbec vyplatí kliknout. */
.views .tally { opacity: .65; font-variant-numeric: tabular-nums; }
.views a[aria-current] .tally { opacity: .8; }
.tools-count { color: var(--ink-soft); font-size: .85rem; margin-left: auto; font-variant-numeric: tabular-nums; }

table.fin th.sortable { cursor: pointer; user-select: none; white-space: nowrap; }
table.fin th.sortable:hover { color: var(--brand); }
table.rank .rank-n { color: var(--ink-soft); width: 1%; }
table.rank .cname { color: var(--ink-soft); font-size: .87rem; }

/* Na úzké obrazovce se schová to, co jde dopočítat nebo dohledat jinde — vodorovné
   posouvání tabulky nikdo nenajde a stránka pak vypadá rozbitě. */
@media (max-width: 700px) {
  .hide-sm { display: none; }
  table.rank .cname { display: none; }
}

/* ── zvětšení diagramu ────────────────────────────────────────────────── */
.zoom { position: fixed; inset: 0; z-index: 100; background: rgba(8,14,18,.94);
  display: flex; align-items: center; justify-content: center; }
.zoom[hidden] { display: none; }
.zoom-canvas { width: 100%; height: 100%; overflow: auto; display: flex;
  align-items: center; justify-content: flex-start; padding: 12px; }
.zoom-canvas img { max-width: none; width: auto; height: auto; min-width: 100%;
  /* Na mobilu se otevře v šířce, kde je text čitelný, a posouvá se prstem. */
  min-height: 0; border-radius: 8px; background: #f2f2f2; }
@media (min-width: 900px) {
  .zoom-canvas { align-items: center; justify-content: center; padding: 28px; }
  .zoom-canvas img { min-width: 0; max-width: 100%; max-height: 100%; }
}
.zoom-close { position: fixed; top: 12px; right: 12px; z-index: 101;
  width: 44px; height: 44px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255,255,255,.92); color: #16242c; font-size: 1.1rem; }

/* ── vyskakovací odběr ────────────────────────────────────────────────── */
.modal { position: fixed; inset: 0; z-index: 90; background: rgba(8,14,18,.55);
  display: flex; align-items: flex-end; justify-content: center; padding: 0; }
.modal[hidden] { display: none; }
@media (min-width: 640px) { .modal { align-items: center; padding: 20px; } }
.modal-box { background: var(--surface); border: 1px solid var(--line);
  border-radius: 16px 16px 0 0; padding: 24px 20px 20px; width: 100%; max-width: 460px;
  position: relative; }
@media (min-width: 640px) { .modal-box { border-radius: 16px; } }
.modal-box h2 { margin: 0 0 6px; font-size: 1.15rem; }
.modal-box p { margin: 0 0 15px; color: var(--ink-soft); font-size: .93rem; }
.modal-box form { display: flex; flex-direction: column; gap: 9px; }
@media (min-width: 460px) { .modal-box form { flex-direction: row; } }
.modal-box input { flex: 1; padding: 11px 14px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--bg); color: var(--ink); font: inherit; min-width: 0; }
.modal-box button[type=submit] { padding: 11px 20px; border: 0; border-radius: 10px;
  background: var(--brand); color: #fff; font: inherit; font-weight: 600; cursor: pointer; }
.modal-close { position: absolute; top: 10px; right: 10px; width: 36px; height: 36px;
  border: 0; background: none; color: var(--ink-soft); font-size: 1rem; cursor: pointer; }
.modal-later { display: block; margin: 12px auto 0; border: 0; background: none;
  color: var(--ink-soft); font: inherit; font-size: .87rem; cursor: pointer; text-decoration: underline; }
.modal-box .msg { margin: 10px 0 0; font-size: .9rem; }

/* ── šipky ve zvětšeném diagramu ──────────────────────────────────────── */
/* Sedí na svislém středu u okrajů, tedy tam, kde je palec i kurzor. Na úzkém displeji jsou
   menší a blíž k okraji, aby nepřekrývaly diagram, kvůli kterému to člověk otevřel. */
.zoom-arrow { position: fixed; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 48px; height: 48px; display: grid; place-items: center; padding: 0;
  border: 0; border-radius: 50%; cursor: pointer;
  background: rgba(22, 36, 44, .62); color: #fff; }
.zoom-arrow:hover { background: rgba(22, 36, 44, .85); }
.zoom-arrow svg { width: 24px; height: 24px; }
.zoom-arrow.prev { left: 12px; }
.zoom-arrow.next { right: 12px; }
@media (max-width: 560px) {
  .zoom-arrow { width: 40px; height: 40px; }
  .zoom-arrow.prev { left: 6px; }
  .zoom-arrow.next { right: 6px; }
}
/* Název firmy pod obrázkem: při přeskakování mezi firmami je to jediné, co říká, kde jsme. */
.zoom-label { position: fixed; left: 0; right: 0; bottom: 10px; margin: 0; z-index: 2;
  text-align: center; color: rgba(255, 255, 255, .82); font-size: .84rem;
  pointer-events: none; padding: 0 70px; }

/* ── kalendář výsledovek ──────────────────────────────────────────────── */
/* Dvě vrstvy: pásmo dnů pro orientaci, panel jednoho dne pro čtení. */
.rail { display: flex; align-items: stretch; gap: 6px; margin: 0 0 20px; }
.rail-btn { flex: 0 0 auto; width: 42px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); color: var(--ink-soft); cursor: pointer;
  display: grid; place-items: center; padding: 0; }
.rail-btn:hover { border-color: var(--brand); color: var(--brand); }
.rail-btn svg { width: 18px; height: 18px; }
.rail-days { flex: 1 1 auto; display: flex; gap: 6px; margin: 0; padding: 0 0 4px; list-style: none;
  overflow-x: auto; scroll-behavior: smooth; scrollbar-width: none; }
.rail-days::-webkit-scrollbar { display: none; }
.rail-days a { flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; gap: 7px;
  width: 136px; padding: 13px 10px 14px; border: 1px solid var(--line); border-radius: 16px;
  background: var(--surface); color: var(--ink); }
.rail-days a:hover { border-color: var(--brand); text-decoration: none; }
.rail-days .dow { font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft); }
.rail-days .dnum { font-size: .92rem; font-weight: 700; font-variant-numeric: tabular-nums; }
.rail-days .dnum { font-size: 1.16rem; }
/* Značky firem v dlaždici dne. Dvě řady po třech: víc už se nedá rozeznat a dlaždice by
   přerostla, míň by u hustých dnů znamenalo samé „+N". */
.rail-days .marks { display: grid; grid-template-columns: repeat(4, 28px); gap: 4px;
  justify-content: center; }
.rail-days .marks img { width: 28px; height: 28px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--bg); object-fit: contain; padding: 2px; }
.rail-days .more { grid-column: span 4; font-size: .72rem; color: var(--ink-soft);
  font-variant-numeric: tabular-nums; }
/* Minulost je utlumená, dnešek má rámeček a vybraný den je vyplněný. Tři různé stavy, ne jen
   tři odstíny jedné barvy: podle samotné barvy se to nepozná. */
.rail-days a.is-past { opacity: .55; }
.rail-days a.is-today { border-color: var(--brand); border-width: 2px; }
.rail-days a.is-today .dow { color: var(--brand); font-weight: 700; }
.rail-days a[aria-current] { background: var(--brand); border-color: var(--brand); color: #fff; opacity: 1; }
.rail-days a[aria-current] .dow, .rail-days a[aria-current] .more { color: rgba(255, 255, 255, .82); }

.panel-head { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin: 0 0 14px; }
.panel-head h2 { margin: 0; font-size: 1.35rem; }
.badge-today { display: inline-block; margin-right: 7px; padding: 2px 9px; border-radius: 999px;
  background: var(--brand); color: #fff; font-size: .72rem; font-weight: 700;
  letter-spacing: .08em; text-transform: uppercase; vertical-align: middle; }
.panel-count { margin-left: auto; font-size: .82rem; color: var(--ink-soft); }

.firms { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: 1fr; gap: 2px; }
@media (min-width: 700px) { .firms { grid-template-columns: 1fr 1fr; gap: 2px 20px; } }
/* Odkaz přes celý řádek je průhledná vrstva nad ním, ne obal kolem obsahu: obal by z řádku
   udělal jeden velký odkaz i pro čtečku obrazovky a přečetl by ho celý včetně štítků. */
.firm.linked { position: relative; }
.firm.linked:hover { background: var(--surface); border-radius: 10px; }
.firm-hit { position: absolute; inset: 0; z-index: 1; border-radius: 10px; }
.firm-hit:focus-visible { outline: 2px solid var(--brand); outline-offset: -2px; }
.firm { display: flex; align-items: center; gap: 12px; padding: 12px 8px;
  border-bottom: 1px solid var(--line-soft, var(--line)); }
/* Ikona v kalendáři je menší verze téže značky; tvar je společný, viz `.firm-icon` níž. */
.firms .firm-icon { width: 30px; height: 30px; }
.firm-name { flex: 1 1 auto; min-width: 0; display: flex; align-items: baseline; gap: 8px; }
.firm .tick { font-weight: 800; letter-spacing: .02em; flex: 0 0 auto; }
.firm span.tick { color: var(--ink-soft); }
.firm .cname { color: var(--ink-soft); font-size: .9rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.firm-tags { flex: 0 0 auto; display: flex; align-items: center; gap: 6px; }
/* Na úzkém displeji se štítky nevejdou za jméno: firma, čas reportu i formulář dohromady jsou
   širší než telefon. Přesunou se pod jméno, odsazené za ikonu, místo aby řádek přetekl. */
@media (max-width: 560px) {
  .firm { flex-wrap: wrap; row-gap: 4px; }
  .firm-name { flex: 1 1 auto; }
  .firm-tags { flex: 1 1 100%; padding-left: 42px; }
}
.firm .form { font-size: .7rem; color: var(--ink-soft); border: 1px solid var(--line);
  border-radius: 5px; padding: 0 5px; }
.tag { font-size: .7rem; padding: 1px 7px; border-radius: 999px; white-space: nowrap; }
.tag.est { color: var(--ink-soft); border: 1px dashed var(--line); }
.tag.has { color: var(--good); border: 1px solid color-mix(in srgb, var(--good) 40%, transparent); }

.cal-legend { display: flex; gap: 8px; margin: 26px 0 10px; }
.pill { padding: 5px 11px; border-radius: 999px; font-size: .8rem; border: 1px solid var(--line); }
.pill.done { color: var(--good); border-color: color-mix(in srgb, var(--good) 40%, transparent); }
.pill.est { color: var(--ink-soft); border-style: dashed; }

/* ── přihlášení a členství ────────────────────────────────────────────── */
.authform { display: flex; flex-direction: column; gap: 15px; max-width: 26rem; margin: 0 0 30px; }
.authform label { display: flex; flex-direction: column; gap: 5px; font-size: .9rem; }
.authform label > span { color: var(--ink-soft); }
.authform label em { font-style: normal; font-size: .82rem; color: var(--ink-soft); opacity: .8; }
.authform input[type=email], .authform input[type=password], .authform input[type=text] {
  padding: 11px 13px; border: 1px solid var(--line); border-radius: 10px;
  background: var(--surface); color: var(--ink); font: inherit; }
.authform input:focus { outline: 2px solid var(--brand); outline-offset: 1px; }
.authform .check { flex-direction: row; align-items: center; gap: 9px; }
.authform .check input { width: 17px; height: 17px; }
.authform .hint { margin-top: 1px; }
.formerr { margin: 0; padding: 11px 13px; border-radius: 10px; font-size: .9rem;
  background: color-mix(in srgb, var(--bad) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--bad) 40%, transparent); color: var(--ink); }

/* Odkaz na založení účtu je jediné tlačítko v hlavičce; kdyby jich tam bylo víc, nebude ani jedno. */
.nav-links a.nav-cta { color: var(--brand); font-weight: 700; }
@media (min-width: 720px) {
  .nav-links a.nav-cta { padding: 5px 12px; border: 1px solid var(--brand); border-radius: 999px; }
  .nav-links a.nav-cta:hover { background: var(--brand); color: #fff; text-decoration: none; }
}

ul.perks { list-style: none; margin: 0 0 20px; padding: 0; display: flex;
  flex-direction: column; gap: 10px; max-width: 52ch; }
ul.perks li { position: relative; padding-left: 26px; color: var(--ink-soft); }
ul.perks li::before { content: "✓"; position: absolute; left: 0; color: var(--good); font-weight: 700; }

.premium { margin: 30px 0; padding: 22px; border-radius: var(--radius);
  border: 1px solid var(--line); background: var(--surface); }
/* Zamčený oddíl je ohraničený čárkovaně: je vidět, že tam něco je, a že to zatím není naše. */
.premium.locked { border-style: dashed; background: none; }
.premium h2 { margin: 0 0 12px; font-size: 1.1rem; display: flex; align-items: center; gap: 10px; }

/* ── pohledy na žebříček ──────────────────────────────────────────────── */
/* Vypadá to jako záložky, ale jsou to odkazy: každý pohled je vlastní adresa. */
.views { display: flex; flex-wrap: wrap; gap: 7px; margin: 0 0 18px; }
.views a { padding: 7px 13px; border: 1px solid var(--line); border-radius: 999px;
  background: var(--surface); color: var(--ink-soft); font-size: .86rem; }
.views a:hover { border-color: var(--brand); color: var(--brand); text-decoration: none; }
.views a[aria-current] { background: var(--brand); border-color: var(--brand);
  color: #fff; font-weight: 600; }
/* Sloupec, podle kterého se žebříček řadí, je tučný. Jinak není z tabulky poznat, čí je to
   pořadí; u tří číselných sloupců vedle sebe se to plete. */
table.rank td.lead { font-weight: 700; color: var(--ink); white-space: nowrap; }

/* Ikona a jméno drží na jedné lince. Obal je `span` s `flex` UVNITŘ buňky, ne `display:flex`
   na buňce samotné: to ji vyřadí z tabulkového rozvržení, sloupce se přestanou zarovnávat
   a spodní linka řádku se rozpadne. Přesně to se tu jednou stalo. */
table.rank .co { display: flex; align-items: center; gap: 10px; min-width: 0; }
table.rank .co-name { display: flex; flex-direction: column; min-width: 0; line-height: 1.25; }
table.rank .co-name .cname { color: var(--ink-soft); font-size: .82rem;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Sektor se nezalamuje do dvou řádků; radši se ořízne. Různě vysoké řádky rozhodí celou tabulku. */
table.rank td.meta { white-space: nowrap; max-width: 15ch; overflow: hidden; text-overflow: ellipsis; }
table.rank th .sortlink { color: inherit; display: inline-block; white-space: nowrap; }
table.rank th .sortlink:hover { color: var(--brand); text-decoration: none; }
table.rank th[aria-sort] .sortlink { color: var(--brand); font-weight: 700; }

/* Značka firmy v kolečku. Rámeček je vidět i u log, která mají bílé pozadí a jinak by na světlém
   podkladu splynula; výplň je barva stránky, aby průhledná loga neseděla na ničem. */
.firm-icon { flex: 0 0 auto; width: 26px; height: 26px; border-radius: 50%;
  border: 1px solid var(--line); background: var(--bg); object-fit: contain; padding: 2px; }
.firm-icon.mono { display: grid; place-items: center; color: var(--ink-soft);
  font-size: .74rem; font-weight: 700; padding: 0; }

/* ── stránkování ──────────────────────────────────────────────────────── */
.pages { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin: 18px 0 6px; }
.pages a, .pages .cur, .pages .off { min-width: 36px; padding: 7px 11px; border-radius: 10px;
  border: 1px solid var(--line); text-align: center; font-size: .88rem; }
.pages a { color: var(--ink); }
.pages a:hover { border-color: var(--brand); color: var(--brand); text-decoration: none; }
.pages .cur { background: var(--brand); border-color: var(--brand); color: #fff; font-weight: 700; }
.pages .off { color: var(--ink-soft); opacity: .5; }
.pages .gap { color: var(--ink-soft); padding: 0 2px; }
table.rank th.lead { color: var(--brand); }

/* ── přechod na sousední firmu ────────────────────────────────────────── */
/* Tři sloupce, prostřední jen tak široký, jak potřebuje poloha v řadě. Krajní se dělí o zbytek
   rovným dílem, takže šipky drží na svých stranách i když má jedna firma delší ticker. */
.pager { display: grid; grid-template-columns: 1fr auto 1fr; align-items: stretch;
  gap: 8px; margin: 0 0 26px; }
.pager-side { display: flex; align-items: center; gap: 10px; min-width: 0;
  padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius);
  background: var(--surface); color: var(--ink); }
.pager-side:hover { text-decoration: none; border-color: var(--brand); }
.pager-side.next { flex-direction: row-reverse; text-align: right; }
/* Na kraji řady se nic nekreslí; místo se drží, aby prostřední sloupec nepodskočil. */
.pager-side.empty { border: 0; background: none; }
.pager .arrow { flex: 0 0 auto; color: var(--ink-soft); font-size: 1.05rem; line-height: 1; }
.pager-side:hover .arrow { color: var(--brand); }
.pager .who { min-width: 0; }
.pager .who b { display: block; font-size: .95rem; letter-spacing: .01em; }
.pager .per { display: block; font-size: .76rem; color: var(--ink-soft);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.pager-pos { align-self: center; padding: 0 4px; font-size: .78rem; color: var(--ink-soft);
  font-variant-numeric: tabular-nums; white-space: nowrap; }
/* Na úzkém displeji se vejde jen ticker — období vypadne dřív, než se rozbije rozvržení. */
@media (max-width: 430px) {
  .pager .per { display: none; }
  .pager-side { padding: 9px 10px; }
}

/* ── sdílení ──────────────────────────────────────────────────────────── */
.share { margin: 26px 0; }
.share h2 { font-size: 1rem; margin: 0 0 10px; }
.share-row { display: flex; flex-wrap: wrap; gap: 8px; }
.share-btn { display: inline-flex; align-items: center; gap: 7px; padding: 8px 13px; border: 1px solid var(--line);
  border-radius: 999px; background: var(--surface); color: var(--ink-soft);
  font: inherit; font-size: .86rem; line-height: 1.2; cursor: pointer; }
.share-btn:hover { border-color: var(--brand); color: var(--brand); text-decoration: none; }
.share-btn svg { width: 15px; height: 15px; flex: 0 0 auto; }
.share-btn.native { border-color: var(--brand); color: var(--brand); font-weight: 600; }
.share-msg { margin: 9px 0 0; min-height: 1.2em; font-size: .84rem; color: var(--good); }

/* ── mobil: nic nesmí přetékat ────────────────────────────────────────── */
/* Vodorovné posouvání celé stránky je vždycky chyba: buď je něco moc široké, nebo se to
   nezalomilo. Tohle je pojistka, ne náhrada za správné rozměry uvnitř. */
html, body { max-width: 100%; }
img, svg, video, table { max-width: 100%; }
pre, code { overflow-x: auto; max-width: 100%; }
