/* F-007 Vzhled (R-032): jediný styl aplikace podle vzoru vlastníka. Barvy jen přes proměnné. Nic se nenačítá zvenku. */
/* Inter (SIL OFL 1.1, licence v pismo/OFL.txt), proměnná váha 400–700 */
@font-face {
  font-family: "Inter"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url("pismo/inter-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: "Inter"; font-style: normal; font-weight: 400 700; font-display: swap;
  src: url("pismo/inter-latin.woff2") format("woff2");
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Barvy vzoru. Kde má aplikace vlastní název (karta, pruh, šedý text, navy), nese barvu vzoru on. */
:root {
  color-scheme: light;
  --bg: #f3f5f8;
  --karta: #ffffff;          /* vzor: surface */
  --pruh: #f1f3f6;           /* vzor: surface-2 */
  --hlavicka-tab: #e7eaef;   /* vzor: surface-3 */
  --hlavicka-grp: #dde2ea;   /* skupinový řádek hlavičky tabulky (Měsíc, vs Minulý rok) */
  --border: #e4e7ec; --border-strong: #cfd4dc;
  --text: #111110;
  --sedy: #52514e;           /* vzor: text-2; kontrast aspoň 4,5:1 na kartě, pruhu i hlavičce */
  --muted: #6b6a64;          /* kontrast aspoň 4,5:1 na pozadí i kartě */
  --hranice-ovl: #7d828c;    /* hranice ovládacích prvků lišty filtrů: aspoň 3:1 na kartě i pruhu (WCAG 1.4.11, T-052) */
  --accent: #2a78d6; --accent-soft: #e6f0fc; --accent-text: #1c5cab;
  --good: #0e7a3a; --good-soft: #e3f4e8; --bad: #b8302c; --bad-soft: #fbe7e6; --warn: #8f5c00; --warn-soft: #fdf1d8;
  --hl: #f7f6f2;
  --good-text: #0b6b33; --bad-text: #ad2b27;  /* text na 13% podbarvení odchylky: aspoň 4,5:1 */
  --shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 4px 14px rgba(16, 24, 40, .05);
  --shadow-lg: -8px 0 40px rgba(0, 0, 0, .2);
  --navy: #0e1a2e;           /* vzor: side-bg (boční menu, řádek výsledku hospodaření) */
  --pozadi: #13233d;         /* vzor: side-bg-2 */
  --text-svetly: #e9edf3;    /* text v bočním menu */
  --side-muted: rgba(255, 255, 255, .5); --side-hover: rgba(255, 255, 255, .07); --side-active: rgba(74, 152, 245, .26); --side-accent: #6fb0ff;
  --side-grad: linear-gradient(180deg, var(--navy) 0%, var(--pozadi) 100%);
  --zlata: #6fb0ff;          /* akcent šablony (R-054): linka u loga, hvězda hlavní verze; dřív barva klienta */
  --lista: 71px;             /* výška horní lišty, pod ní lepí hlavičky tabulek (R-037); app.js ji přepíše skutečnou výškou .top */
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
/* T-090: značka „i“ vedlejší vysvětlivky (makro ui.info) */
.info {
  display: inline-grid; place-items: center; width: 15px; height: 15px; margin-left: 4px; vertical-align: 1px; border-radius: 50%;
  border: 1px solid var(--border-strong); color: var(--sedy); font: italic 600 10px/1 Georgia, serif; cursor: help;
}
.info:hover, .info:focus-visible { color: var(--accent-text); border-color: var(--accent-text); }
.info-text { display: none; }
@media (max-width: 600px) { .info { display: none; } .info-text { display: block; } }
@media print { .info { display: none; } .info-text { display: block; } }
.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; }
html:not(.js) .js-jen { display: none !important; }
html.js .bez-js { display: none !important; }
html, body { margin: 0; }
body {
  min-height: 100vh; background: var(--bg); color: var(--text);
  font: 14px/1.45 "Inter", system-ui, -apple-system, "Segoe UI", sans-serif; -webkit-font-smoothing: antialiased;
}
button, input, select, textarea { font: inherit; color: inherit; }
a { color: var(--accent-text); }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
h1, h2, h3 { letter-spacing: -.01em; }
svg { width: 18px; height: 18px; flex: none; stroke: currentColor; }

/* rozvržení: boční menu a hlavní část */
.app { display: grid; grid-template-columns: 232px minmax(0, 1fr); min-height: 100vh; }
.side {
  background: var(--side-grad); color: var(--text-svetly); padding: 18px 12px; position: sticky; top: 0;
  height: 100vh; overflow-y: auto; display: flex; flex-direction: column;
}
.brand {
  display: flex; flex-direction: column; gap: 10px; padding: 4px 8px 16px; margin-bottom: 6px;
  border-bottom: 1px solid rgba(255, 255, 255, .08); color: var(--tmava-text); text-decoration: none;
}
.brand img { display: block; width: 160px; height: auto; }
.brand b { font-size: 14.5px; padding-top: 8px; border-top: 2px solid var(--zlata); align-self: flex-start; }
.brand-firma { margin-top: -6px; font-size: 12.5px; line-height: 1.35; color: var(--text-svetly); opacity: .85; overflow-wrap: anywhere; }  /* T-090: Název firmy z Nastavení */
.nav-sec {
  font-size: 10.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase;
  color: var(--side-muted); padding: 16px 12px 6px;
}
.nav a, .nav .pripravuje {
  position: relative; display: flex; align-items: center; gap: 11px; padding: 8px 12px; margin: 1px 0;
  border-radius: 9px; color: var(--text-svetly); text-decoration: none; font-size: 13.5px; font-weight: 500;
}
.nav a svg { opacity: .75; }
.nav a:hover { background: var(--side-hover); color: var(--tmava-text); }
.nav a:hover svg { opacity: 1; }
.nav a.on { background: var(--side-active); color: var(--tmava-text); font-weight: 600; }
.nav a.on svg { opacity: 1; stroke: var(--side-accent); }
.nav a.on::before {
  content: ""; position: absolute; left: -12px; top: 7px; bottom: 7px; width: 3px;
  border-radius: 0 3px 3px 0; background: var(--side-accent);
}
/* F-016.D3 (T-073): počet chyb Kontrol dat u položky menu (data-odznak) a v pruhu rozsahu */
.nav a[data-odznak]::after {
  content: attr(data-odznak); margin-left: auto; min-width: 20px; padding: 1px 6px; border-radius: 999px;
  background: var(--bad); color: var(--tmava-text); font-size: 11.5px; font-weight: 700; text-align: center; line-height: 18px;
}
.stitek.chyby { background: var(--bad-soft); border-color: var(--bad); color: var(--bad); text-decoration: none; white-space: nowrap; }
.nav .pripravuje { color: var(--side-muted); cursor: default; }
.nav .pripravuje svg { opacity: .5; }
.side-foot {
  margin-top: auto; padding: 10px 12px; border-radius: 12px; background: rgba(255, 255, 255, .06);
  display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12.5px;
}
.side-foot span { color: var(--text-svetly); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.side-foot .btn { color: var(--text-svetly); border-color: rgba(255, 255, 255, .18); background: transparent; }
.side-foot .btn:hover { background: var(--side-hover); }

/* .main a .content rostou se širokou tabulkou (min-content), takže lišta a filtry jsou stejně široké jako stránka
   a po posunu doprava je lišta i nad lepivou hlavičkou (T-048) */
.main { min-width: min-content; display: flex; flex-direction: column; }
.top {
  position: sticky; top: 0; z-index: 20; display: flex; flex-wrap: wrap; gap: 10px 16px; align-items: center;
  padding: 12px 28px; border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--bg) 85%, transparent); backdrop-filter: saturate(1.4) blur(10px);
}
.top h1 { font-size: 20px; margin: 0 auto 0 0; font-weight: 700; letter-spacing: -.02em; }
.crumb { display: block; font-size: 11.5px; font-weight: 500; color: var(--muted); letter-spacing: 0; }
.menu-btn { display: none; }
.content { padding: 20px 28px 60px; max-width: 1540px; width: 100%; min-width: min-content; }  /* min-width přebije max-width */
.content.nacitam { opacity: .55; transition: opacity .15s; }
.content:focus { outline: none; }  /* fokus po zavření panelu, ne kreslený rámeček */
.sub { color: var(--sedy); margin: 0 0 14px; font-size: 13px; }

/* tlačítka a přepínače */
.btn {
  display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--border); background: var(--karta);
  border-radius: 9px; padding: 6px 13px; min-height: 34px; cursor: pointer; white-space: nowrap; font-weight: 500;
}
.btn:hover { background: var(--pruh); }
.btn svg { width: 16px; height: 16px; }
.btn.pri { background: var(--accent-text); border-color: var(--accent-text); color: var(--tmava-text); }
.btn.pri:hover { filter: brightness(1.08); }
.btn.ghost { border-color: transparent; background: transparent; }
.toolbar { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 12px; }
.toolbar .sp { flex: 1; }
.seg { display: inline-flex; flex-wrap: wrap; gap: 2px; padding: 3px; border-radius: 10px; background: var(--pruh); }
.seg button {
  border: 0; background: transparent; padding: 5px 12px; min-height: 28px; border-radius: 8px;
  cursor: pointer; font-weight: 500; color: var(--sedy);
}
.seg button:hover { color: var(--text); }
.seg button.on { background: var(--karta); color: var(--accent-text); font-weight: 600; box-shadow: var(--shadow); }
.tgl {
  display: inline-flex; align-items: center; gap: 8px; border: 0; background: none; padding: 4px 2px;
  font-size: 12.5px; color: var(--sedy); cursor: pointer;
}
.tgl i { width: 30px; height: 18px; border-radius: 9px; background: var(--hlavicka-tab); position: relative; }
.tgl i::after {
  content: ""; position: absolute; left: 2px; top: 2px; width: 14px; height: 14px; border-radius: 50%;
  background: var(--karta); border: 1px solid var(--border-strong); transition: left .15s;
}
.tgl.on i { background: var(--accent); }
.tgl.on i::after { left: 14px; border-color: var(--accent); }

/* lišta filtrů (T-052, R-050, makro ui.lista): kompaktní pruh bez karty, jen spodní linka; jedna řada hlavních voleb
   se štítkem v řádku před ovládáním, ostatní v panelu Další volby. Všechny ovládací prvky (výběr, segment, zaškrtávátka,
   tlačítka) mají stejnou výšku --ovl, zaoblení --ovl-r, bílé pozadí, hranici 3:1 a písmo 13 px; aktivní volba
   (tlačítko i zaškrtnutá volba) tučně, akcentní text, rámeček a stín (čitelná i bez barvy), viditelný focus; akce CSV
   a Tisk jako ikony vpravo. Kontrasty: text --sedy/--accent-text ≥ 4,5:1, hranice ≥ 3:1. */
.f { display: flex; flex-direction: column; gap: 2px; }
.f label, .f .lbl { font-size: 10.5px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; }
.obdobi .f { gap: 5px; }
.obdobi .lbl { font-size: 10.5px; color: var(--sedy); font-weight: 700; text-transform: uppercase; letter-spacing: .07em; }
.filters {
  --ovl: 30px; --ovl-r: 8px;
  display: flex; flex-wrap: wrap; gap: 8px 20px; align-items: center; margin: 0 28px; padding: 8px 0;
  border-bottom: 1px solid var(--border-strong); background: var(--karta); position: relative;
}
.filters .f { flex-direction: row; align-items: center; gap: 8px; }
.filters .lbl { font-size: 12px; color: var(--sedy); font-weight: 400; text-transform: none; letter-spacing: 0; white-space: nowrap; }
.filters .bez-js { order: 99; }
select, input {
  background: var(--pruh); border: 1px solid transparent; border-radius: 9px; padding: 6px 10px; min-height: 34px; font-weight: 500;
}
select:hover, input:hover { border-color: var(--border-strong); }
select:focus, input:focus { outline: 2px solid var(--accent); outline-offset: -1px; }
.obdobi select { background: var(--karta); border: 1px solid var(--hranice-ovl); min-height: 36px; font-weight: 600; }
.obdobi select:hover { border-color: var(--text); }
.filters select, .filters input {
  min-height: var(--ovl); border-radius: var(--ovl-r); background: var(--karta); border: 1px solid var(--hranice-ovl);
  font-size: 13px; font-weight: 600; padding: 3px 8px;
}
.filters select:hover, .filters input:hover { border-color: var(--text); }
.filters input[type="number"] { width: 6.5rem; }
.filters .seg {
  min-height: var(--ovl); border-radius: var(--ovl-r); background: var(--karta); border: 1px solid var(--hranice-ovl);
  font-size: 13px; padding: 2px; gap: 2px; flex-wrap: nowrap; align-items: stretch;
}
.filters .seg button, .filters .seg label {
  min-height: calc(var(--ovl) - 6px); padding: 0 10px; border-radius: 6px; color: var(--sedy); border: 1.5px solid transparent;
  font-size: 13px; font-weight: 500; display: inline-flex; align-items: center; gap: 6px; cursor: pointer; white-space: nowrap;
  text-transform: none; letter-spacing: 0;
}
.filters .seg button:hover, .filters .seg label:hover { color: var(--text); background: var(--pruh); }
.filters .seg button.on {
  background: var(--accent-soft); color: var(--accent-text); font-weight: 700; border-color: var(--accent); box-shadow: var(--shadow);
}
/* zaškrtávátka (R-050): volba vypadá jako tlačítko segmentu, zaškrtnutá jako aktivní volba, políčko v barvě akcentu */
.filters input[type="checkbox"] {
  min-height: 0; width: 14px; height: 14px; margin: 0; padding: 0; border: 0; accent-color: var(--accent); cursor: pointer;
}
.filters .seg label:has(input:checked) {
  background: var(--accent-soft); color: var(--accent-text); font-weight: 700; border-color: var(--accent); box-shadow: var(--shadow);
}
.filters .fa { display: flex; gap: 6px; align-items: center; margin-left: auto; }
.filters .btn {
  min-height: var(--ovl); border-radius: var(--ovl-r); background: var(--karta); border: 1px solid var(--hranice-ovl);
  font-size: 13px; font-weight: 600; padding: 0 10px;
}
.filters .btn:hover { background: var(--pruh); }
.filters .btn.ikon { width: var(--ovl); padding: 0; justify-content: center; }
.filters .btn.pri { border-color: var(--accent-text); background: var(--accent-text); color: var(--tmava-text); }
.filters .odznak {
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--accent-text); color: var(--tmava-text);
  font-size: 11px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center;
}
.filters .odznak[hidden] { display: none; }
/* panel Další volby: rozbalí se pod tlačítkem, skupiny pod sebou se štítkem vlevo */
.filters .dalsi { position: static; }  /* panel se zarovná k pravému okraji lišty (.filters), nepřeteče */
.filters .dalsi summary { list-style: none; }
.filters .dalsi summary::-webkit-details-marker { display: none; }
.filters .dalsi[open] summary { border-color: var(--accent); color: var(--accent-text); }
.dalsi-panel {
  position: absolute; z-index: 30; top: calc(100% + 4px); right: 0; display: grid; gap: 10px; padding: 12px 14px;
  max-width: 100%; background: var(--karta); border: 1px solid var(--hranice-ovl); border-radius: 10px; box-shadow: var(--shadow-lg);
}
.dalsi-panel .f { display: grid; grid-template-columns: 7.5rem auto; align-items: center; }
.filters .filtry-tl { display: none; }
.filters :focus-visible, .obdobi :focus-visible { outline: 3px solid var(--accent); outline-offset: 2px; }
.filters select:focus-visible, .filters input:focus-visible, .obdobi select:focus-visible { outline-offset: 1px; }
/* pruh stránky (R-053, T-072, T-082, T-121): konzervativní – bílý s tmavším rámečkem a navy textem;
   Zobrazení se rozbalí do panelu pod pruhem (karta jako Další volby) */
.obdobi { display: flex; align-items: center; gap: 6px; position: relative; }
.obdobi .rozsah { position: static; }
.obdobi .rozsah > summary {
  list-style: none; cursor: pointer; display: block; line-height: 32px; padding: 0 30px 0 12px;
  border-radius: 9px; background: var(--karta); color: var(--navy); border: 1px solid var(--hranice-ovl);
  font-size: 13px; white-space: nowrap; position: relative;
}
.obdobi .rozsah > summary::-webkit-details-marker { display: none; }
.obdobi .rozsah > summary::after {  /* šipka rozbalení */
  content: ""; position: absolute; right: 12px; top: 50%; width: 6px; height: 6px; margin-top: -5px;
  border: solid var(--sedy); border-width: 0 1.5px 1.5px 0; transform: rotate(45deg); transition: transform .15s;
}
.obdobi .rozsah[open] > summary::after { transform: rotate(-135deg); margin-top: -1px; }
.obdobi .rozsah > summary:hover, .obdobi .rozsah[open] > summary { background: var(--pruh); }
.obdobi .rozsah > summary b { color: var(--navy); font-weight: 700; }
.obdobi .rozsah-c { color: var(--navy); }
.obdobi .predbezne { text-decoration: none; color: var(--warn); white-space: nowrap; }  /* T-082: Předběžná čísla jen jednou, u pruhu */
.obdobi .btn.vychozi { min-height: 34px; background: var(--karta); font-size: 12.5px; text-decoration: none; }
.rozsah-panel {
  position: absolute; z-index: 40; top: calc(100% + 6px); right: 0; display: grid; gap: 12px; padding: 14px 16px;
  width: 320px; max-width: calc(100vw - 32px); background: var(--karta); border: 1px solid var(--hranice-ovl);
  border-radius: 10px; box-shadow: var(--shadow-lg);
}
.rozsah-panel select { width: 100%; }
.rozsah-panel .zobrazeni label { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 13px; cursor: pointer; }
.rozsah-panel .zobrazeni input { min-height: 0; width: 15px; height: 15px; margin: 0; padding: 0; accent-color: var(--accent); }
.rozsah-panel .zobrazeni label:has(input:disabled) { color: var(--muted); cursor: default; }

/* karty */
.card {
  background: var(--karta); border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow);
  padding: 18px 20px; min-width: 0; margin-bottom: 16px;
}
.card h2 { margin: 0 0 10px; font-size: 15px; font-weight: 700; }
.grid { display: grid; gap: 16px; }
.g2 { grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; }
.g2 > .card { margin-bottom: 0; }
.note { background: var(--accent-soft); border-left: 3px solid var(--accent); border-radius: 12px; padding: 10px 14px; margin: 0 0 14px; }
.note.warn, [role="alert"] { background: var(--warn-soft); border-left: 3px solid var(--warn); border-radius: 12px; padding: 10px 14px; }
.up { color: var(--good); }
.dn { color: var(--bad); }

/* tabulky čísel (budget, detail) */
/* R-037 (T-048): obal nemá vlastní výšku ani rolování, roluje celá stránka a hlavičky lepí pod lištou (--lista).
   Rolující obal by byl pro lepivou hlavičku nejbližší posuvník, proto clip (jen ořízne rohy) a šířka podle tabulky (fit-content: nejdřív zalomí
   texty, které smí): široká tabulka přesáhne a vodorovně roluje stránka; název řádku zůstává vlevo. Na mobilu roluje vodorovně obal. */
.tw { overflow: clip; width: fit-content; min-width: 100%; border: 1px solid var(--border); border-radius: 14px; background: var(--karta); }
.card .tw { border-radius: 10px; }
.card:has(> .tw) { width: fit-content; min-width: 100%; }  /* karta roste s tabulkou, jen když se nevejde ani zalomená (T-078) */
table.cisla, table.report { border-collapse: separate; border-spacing: 0; width: 100%; font-variant-numeric: tabular-nums; }
.cisla th, .cisla td, .report th, .report td {
  padding: 5px 10px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; white-space: nowrap;
}
.cisla td, .report td, th.n { text-align: right; }
.cisla thead th, .report thead th {
  position: sticky; top: var(--lista); z-index: 1; background: var(--pruh); color: var(--sedy);
  font-size: 12px; font-weight: 600;  /* T-090: bez verzálek */
}
.cisla thead th:first-child { text-align: left; }
.cisla tbody th { font-weight: 400; }
.cisla tbody tr:hover > * { background: var(--hl); }
.cisla .soucet > *, .cisla .skupina th { font-weight: 600; background: var(--pruh); }
.cisla td input { width: 5.5rem; text-align: right; padding: 2px 6px; min-height: 28px; font-variant-numeric: tabular-nums; }
.budget thead th:first-child, .budget tbody th[scope="row"] { position: sticky; left: 0; }
.budget thead th:first-child { z-index: 2; }
.budget tbody th[scope="row"] { background: var(--karta); border-right: 1px solid var(--border); }
.formular.nova { display: flex; flex-wrap: wrap; gap: 8px 12px; align-items: center; }
.nova fieldset { flex-basis: 100%; border: 1px solid var(--border); border-radius: 10px; display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.nova input[size] { width: 5.5rem; text-align: right; }

/* výkaz: výsledovka a měsíční vývoj po úrovních */
.report thead { position: sticky; top: var(--lista); z-index: 3; }
.report thead th { position: static; }
.report thead tr.grp th { background: var(--hlavicka-tab); text-align: center; font-size: 11px; letter-spacing: .04em; }
.report th.name, .report thead th:first-child { position: sticky; left: 0; z-index: 2; text-align: left; min-width: 220px; }
.report thead th:first-child { z-index: 4; }
.report th.name { background: var(--karta); font-weight: 400; }
.report thead th.name { background: var(--pruh); font-weight: 600; }
.report th.sep, .report td.sep { border-left: 1px solid var(--border-strong); }
.report tbody tr:hover > * { background: var(--hl); }
.report tbody tr[data-detail] { cursor: pointer; }
.report tbody th a { color: inherit; text-decoration: none; }
.report tbody tr[data-detail]:hover th a { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
/* T-043: číslo jako odkaz na svůj detail, měsíc bez dat, zvýrazněný řádek (R-040) */
.report tbody td a { color: inherit; text-decoration: none; }
.report tbody td[data-detail]:hover a, .report tbody td a:focus-visible { text-decoration: underline; text-decoration-color: var(--accent); text-underline-offset: 3px; }
.report thead th small.bez-dat, .report thead th small.rozsah { display: block; font-size: 10px; font-weight: 400; letter-spacing: 0; text-transform: none; color: var(--muted); white-space: nowrap; }
.report td.bd { background: color-mix(in srgb, var(--pruh) 60%, transparent); }
.report tr.zv > * { font-weight: 700; }
.stitek { display: inline-block; padding: 1px 8px; border-radius: 999px; background: var(--warn-soft); border: 1px solid var(--warn); font-size: 12px; font-weight: 600; }
.report tr.lvl-p th.name { padding-left: 34px; position: sticky; }
.report tr.lvl-p th.name::before {
  content: ""; position: absolute; left: 20px; top: 0; bottom: 0; border-left: 1px solid var(--border-strong); opacity: .6;
}
.report tr.lvl-p td { color: var(--sedy); }
.report tr.sg > * { font-weight: 650; background: var(--pruh); border-top: 1px solid var(--border-strong); }
.report tr.sk > * {
  font-weight: 700; background: var(--accent-soft); padding-top: 8px; padding-bottom: 8px;
  border-top: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
  border-bottom: 1px solid color-mix(in srgb, var(--accent) 30%, transparent);
}
.report tr.sk th.name { border-left: 4px solid var(--accent); }
.report tr.sk.final > * { background: var(--navy); color: var(--tmava-text); font-size: 15px; padding-top: 11px; padding-bottom: 11px; border-color: transparent; }
.report tr.sk.final th.name { border-left-color: var(--side-accent); }
.report tr.sk.final td.up { color: var(--tmava-good); }
.report tr.sk.final td.dn { color: var(--tmava-bad); }
.report tr.sk.final:hover > * { background: var(--pozadi); }
.report tr.k > * { font-style: italic; color: var(--muted); font-size: 12px; padding-top: 3px; padding-bottom: 4px; font-weight: 400; }
.report tr.k th.name { padding-left: 34px; background: var(--karta); }
.report tr.k th.name::before { content: "↳ "; font-style: normal; opacity: .6; }
.report tbody td.up { color: var(--good); }
.report tbody td.dn { color: var(--bad); }
.report tr.hid, .report.hide-zero tr.zero { display: none; }
/* úroveň (R-035): Skupiny skryjí pozice skupin, pozice bez skupiny zůstanou (výkaz dává smysl);
   Souhrn skryje všechny pozice a skupiny, zůstanou mezisoučty (SK) a ukazatele (K) */
.report.uroven-skupiny tr[data-skupina] { display: none; }
.report.uroven-souhrn tr.lvl-p, .report.uroven-souhrn tr.sg { display: none; }
.report td.velka { font-weight: 650; }
.report.bez-bu .sl-bu, .report.bez-py .sl-py { display: none; }
/* F-020 (T-042, R-036, R-050): bloky výsledovky Měsíc a YTD oddělí silnější čára; sloupce skryje třída
   tabulky skryt-<sloupec> (server z adresy, skript při přepnutí). Δ % aspoň 5 % je vždy podbarvené podle příznivosti,
   přepínač Zvýraznit odchylky (tabulka .heat) orámuje odchylky nad prahy z Nastavení (td.odch). Na tmavém řádku
   výsledku hospodaření zůstává pozadí tmavé (podbarvení jen přimíchané), aby byla světlá čísla vidět. */
.report th.blok, .report td.blok { border-left: 2px solid var(--border-strong); }
/* sloupce skryt-*: stejný seznam jako vysledovka.SKRYVATELNE a SKRYVATELNE v app.js */
.report.skryt-bu .c-bu, .report.skryt-d .c-d, .report.skryt-dp .c-dp, .report.skryt-py .c-py, .report.skryt-dpy .c-dpy,
.report.skryt-dppy .c-dppy { display: none; }
/* text na podbarvení tmavší, aby měl aspoň 4,5:1 (--bad na 13 % podbarvení má jen 4,3:1) */
.report td.dp.velka.up { background: color-mix(in srgb, var(--good) 13%, transparent); color: var(--good-text); }
.report td.dp.velka.dn { background: color-mix(in srgb, var(--bad) 13%, transparent); color: var(--bad-text); }
.report tr.sk.final td.dp.velka.up { background: color-mix(in srgb, var(--good) 30%, var(--navy)); }
.report tr.sk.final td.dp.velka.dn { background: color-mix(in srgb, var(--bad) 30%, var(--navy)); }
.report.heat td.odch { outline: 2px solid currentColor; outline-offset: -3px; font-weight: 700; }
/* T-072: Výsledovka s Měsícem i YTD a oběma srovnáními (14 číselných sloupců) se vejde na 1440 px – užší okraje buněk
   jako Měsíční vývoj */
#report:not(.uzka) td, #report:not(.uzka) thead th:not(:first-child) { padding-left: 6px; padding-right: 6px; }  /* T-064: Výsledovka je uzka */
/* T-064: úzký výkaz (třída uzka: Měsíční vývoj 13 číselných sloupců, Výsledovka až 14) se vejde na 1440 px i v Kč
   (třída j-kc): užší okraje, název řádku se smí zalomit, menší písmo záhlaví, v Kč menší písmo čísel; MV bez karty */
.report.uzka td, .report.uzka thead th:not(:first-child) { padding-left: 4px; padding-right: 4px; }
.report.uzka.j-kc td, .report.uzka.j-kc thead th:not(:first-child) { padding-left: 3px; padding-right: 3px; }
.report.uzka th.name, .report.uzka thead th:first-child { min-width: 150px; max-width: 170px; white-space: normal; }
.report.uzka thead th { font-size: 10.5px; letter-spacing: .02em; }
.report.uzka.j-kc td, .report.uzka.j-kc tr.sk.final td { font-size: 11.5px; }
.report tr.zv > * { font-weight: 700; }
/* R-050: nadpis stránky = název + shrnutí voleb (makro ui.shrnuti v block nadpis), menším písmem v řádku za názvem;
   nad tabulkou jen sbalená legenda a nápověda */
.nad-tabulkou { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: 0 0 10px; position: relative; }
.nad-tabulkou .napoveda { font-size: 12px; color: var(--sedy); }
.top h1:has(.ctxh) { flex: 1 1 0; min-width: 0; line-height: 1.35; }  /* shrnutí se zalomí v nadpisu, výběr měsíce zůstane vpravo */
.ctxh { display: inline; }
.shrnuti { font-size: 13px; font-weight: 600; color: var(--navy); letter-spacing: 0; }
.shrnuti > :not([hidden])::before { content: "·"; margin: 0 7px; color: var(--muted); font-weight: 400; }
.shrnuti .cast { white-space: nowrap; }
.shrnuti > span:not([hidden]) { display: inline-block; }  /* části se zalomí mezi sebou, ne uvnitř */
.shrnuti > span.tisk { display: none; }  /* T-064: verze a jednotka jsou v pruhu rozsahu (R-053), v nadpisu jen v tisku */
.shrnuti .cast[title] { cursor: help; }
.shrnuti .warn { color: var(--warn); }
.shrnuti .stitek { font-size: 13px; }
.shrnuti .stitek .zrusit, .stitky .zrusit { margin-left: 6px; color: inherit; text-decoration: none; font-weight: 700; }  /* T-078, T-084: × zruší filtr */
.shrnuti .stitek .zrusit:hover, .stitky .zrusit:hover { color: var(--bad); }
.stitky { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 8px; }
.vyber { position: relative; }
.vyber summary { list-style: none; cursor: pointer; }
.vyber summary::-webkit-details-marker { display: none; }
.vyber-menu {
  position: absolute; z-index: 20; top: calc(100% + 4px); right: 0; display: grid; grid-template-columns: repeat(3, max-content);
  gap: 6px; padding: 10px; background: var(--karta); border: 1px solid var(--hranice-ovl); border-radius: 10px; box-shadow: var(--shadow-lg);
}
.vyber-menu button {
  border: 1px solid var(--hranice-ovl); background: var(--karta); border-radius: 8px; padding: 5px 10px; min-height: 32px;
  font: inherit; font-size: 13px; color: var(--sedy); cursor: pointer;
}
.vyber-menu button.on { color: var(--accent-text); border-color: var(--accent-text); font-weight: 650; }
.seg button:disabled { cursor: not-allowed; }
@media (max-width: 860px) { .vyber-menu { right: auto; left: 0; grid-template-columns: repeat(2, max-content); } }
.dalsi-panel .vyber-menu { position: static; padding: 0; border: 0; box-shadow: none; grid-template-columns: repeat(3, max-content); gap: 4px; }
/* položky Sloupce jako zaškrtávátka (R-050): políčko s fajfkou, zapnutý sloupec akcentem */
.vyber-menu button { display: inline-flex; align-items: center; gap: 6px; min-height: 26px; border-radius: 6px; }
.vyber-menu button::before {
  content: ""; width: 12px; height: 12px; border: 1px solid var(--hranice-ovl); border-radius: 3px; background: var(--karta);
  font-size: 10px; line-height: 12px; text-align: center; color: var(--tmava-text);
}
.vyber-menu button.on::before { content: "✓"; background: var(--accent); border-color: var(--accent); }
.caret {
  border: 0; background: none; color: inherit; cursor: pointer; width: 18px; height: 18px; margin: 0 4px 0 -4px; padding: 0;
  border-radius: 4px; display: inline-grid; place-items: center; font-size: 10px; font-style: normal; transition: transform .15s;
}
.caret:hover { background: var(--hlavicka-tab); }
.caret.closed { transform: rotate(-90deg); }

/* vysouvací panel detailu */
.scrim { position: fixed; inset: 0; z-index: 50; background: rgba(0, 0, 0, .35); opacity: 0; transition: opacity .2s; }
.scrim.on { opacity: 1; }
.drawer {
  position: fixed; top: 0; right: 0; z-index: 60; height: 100vh; width: min(880px, 100vw); background: var(--bg);
  display: flex; flex-direction: column; transform: translateX(100%); transition: transform .2s ease; box-shadow: var(--shadow-lg);
}
.drawer.on { transform: none; }
.drawer:focus { outline: none; }
.drawer > header {
  display: flex; gap: 12px; align-items: flex-start; padding: 16px 20px; border-bottom: 1px solid var(--border); background: var(--karta);
}
.drawer .hd { flex: 1; min-width: 0; }
.drawer h2 { margin: 0; font-size: 17px; }
.drawer .hd .sub { margin: 2px 0 0; }
.drawer .total { font-size: 24px; font-weight: 650; font-variant-numeric: tabular-nums; white-space: nowrap; }
.drawer .body { overflow-y: auto; padding: 16px 20px 40px; flex: 1; }
/* v panelu roluje jeho tělo, hlavička lepí nahoře panelu */
.drawer .cisla thead th, .drawer .report thead, .drawer .et-tab thead th { top: 0; }
.drawer .zpet { display: none; }

/* přihlášení: dva panely na celou výšku */
.login { display: grid; grid-template-columns: minmax(320px, 44%) 1fr; min-height: 100vh; }
.login-brand {
  background: var(--side-grad); color: var(--text-svetly); padding: 40px 48px; display: flex; flex-direction: column; gap: 32px;
}
.login-brand img { display: block; width: 200px; height: auto; }
.login-claim { margin: auto 0; max-width: 420px; }
.login-claim h1 { font-size: 34px; line-height: 1.15; margin: 0 0 12px; color: var(--tmava-text); letter-spacing: -.03em; padding-top: 14px; border-top: 2px solid var(--zlata); display: inline-block; }
.login-claim p { margin: 0; font-size: 15px; color: var(--text-svetly); opacity: .85; }
.login-foot { margin: 0; font-size: 12px; color: var(--side-muted); }
.login-main { display: flex; align-items: center; justify-content: center; padding: 32px 16px; background: var(--bg); }
.login-card { width: 100%; max-width: 380px; padding: 32px 28px; }
.login-card h2 { font-size: 22px; margin: 0 0 4px; }
.login-card .pole { margin-bottom: 16px; }
.login-card label { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: var(--text); }
.login-card input:not([type="hidden"]) { width: 100%; min-height: 44px; padding: 10px 12px; border: 1px solid var(--border-strong); background: var(--karta); }
.login-card input:focus { outline: 2px solid var(--accent); outline-offset: 1px; border-color: var(--accent); }
.heslo-obal { position: relative; }
.heslo-obal input { padding-right: 46px; }
.oko {
  position: absolute; right: 4px; top: 4px; width: 36px; height: 36px; border: 0; border-radius: 8px;
  background: transparent; color: var(--muted); display: grid; place-items: center; cursor: pointer;
}
.oko:hover, .oko[aria-pressed="true"] { color: var(--accent-text); background: var(--pruh); }
.caps { margin: 6px 0 0; font-size: 12.5px; color: var(--warn); }
.chyba-box { background: var(--bad-soft); color: var(--bad); border: 1px solid color-mix(in srgb, var(--bad) 35%, transparent); border-radius: 10px; padding: 10px 12px; margin: 0 0 16px; }
.btn.plna { width: 100%; min-height: 44px; justify-content: center; font-weight: 600; }

@media (max-width: 1100px) { .g2 { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .obdobi { flex: 1 1 100%; min-width: 0; }
  .obdobi .rozsah { flex: 1 1 auto; min-width: 0; }
  .obdobi .rozsah > summary { white-space: normal; line-height: 1.4; padding-top: 7px; padding-bottom: 7px; }
  .rozsah-panel { left: 0; right: 0; width: auto; }
  .app { grid-template-columns: minmax(0, 1fr); }
  .menu-btn { display: inline-flex; }
  .side { position: fixed; left: 0; top: 0; z-index: 80; width: 260px; transform: translateX(-100%); transition: transform .2s; }
  .side.on { transform: none; }
  .top, .content { padding-left: 16px; padding-right: 16px; }
  .filters { margin: 0 16px; gap: 8px 12px; }
  .filters select { max-width: calc(100vw - 32px); }
  /* mobil: skupiny se zalomí, akce na vlastní řádek, nic neroluje do strany; se skriptem je lišta za tlačítkem
     Filtry (R-050) a otevře ji třída otevrene, bez skriptu je vidět celá */
  .filters .f { max-width: 100%; flex-wrap: wrap; }
  .filters .fa { margin-left: 0; flex-basis: 100%; }
  .js .filters .filtry-tl { display: inline-flex; gap: 6px; }
  .js .filters:has(> .filtry-tl):not(.otevrene) > :not(.filtry-tl):not([type="hidden"]) { display: none; }  /* T-118: jen lišta s tlačítkem Filtry */
  .filters .dalsi-panel { position: static; box-shadow: none; margin-top: 6px; min-width: 0; }
  .dalsi-panel .f { grid-template-columns: minmax(0, 1fr); }
  .dalsi-panel .vyber-menu { grid-template-columns: repeat(2, max-content); }
  .filters .seg { flex-wrap: wrap; }
  .shrnuti { font-size: 13px; }
  .login { grid-template-columns: 1fr; grid-template-rows: auto 1fr; }
  .login-brand { flex-direction: row; align-items: center; padding: 14px 16px; gap: 12px; }
  .login-brand img { width: 140px; }
  .login-claim, .login-foot { display: none; }
  .report th.name { min-width: 160px; }
  /* mobil: široká tabulka roluje vodorovně v obalu; obal je pak nejbližší posuvník, hlavička lepí jen k němu */
  .tw, .card:has(> .tw), .main, .content { width: auto; min-width: 0; }
  .tw { overflow-x: auto; }
  .cisla thead th, .report thead, .report thead th { top: 0; }
}
/* T-090 (oponentura 2, bod 4): telefon. Pruh se zalomí (T-121: měsíc je v menu), první sloupec
   výkazu je užší a drží vlevo s čarou, obal tabulky, který jde posunout doprava (třída posun-dal z app.js), má
   vpravo silný okraj (stíny jen z proměnných vzoru); užší okraje buněk, aby se Δ % častěji vešlo celé. */
@media (max-width: 600px) {
  .obdobi { flex-wrap: wrap; row-gap: 6px; }
  .obdobi .rozsah { flex: 0 0 auto; }
  .obdobi .rozsah > summary { white-space: nowrap; }
  .report th.name, .report thead th:first-child, .report.uzka th.name, .report.uzka thead th:first-child { min-width: 0; width: 30vw; max-width: 30vw; white-space: normal; }
  .report td { font-size: 13px; }
  .report tr.lvl-p th.name, .report tr.k th.name { padding-left: 18px; }
  .report tr.lvl-p th.name::before { left: 9px; }
  .report th.name, .report thead th:first-child { border-right: 1px solid var(--border-strong); }
  .report td, .report thead th:not(:first-child) { padding-left: 5px; padding-right: 5px; }
  .tw.posun-dal { border-right: 4px solid var(--hranice-ovl); }
}
/* tisk (T-048): čistý report na šířku – nahoře název (h1) a období s jednotkou (.sub), tabulka přes celou šířku,
   hlavička tabulky na každé stránce (thead jako skupina záhlaví, nic nelepí; !important kvůli pořadí pravidel) */
@page { size: A4 landscape; margin: 8mm; }
@media print {
  .side, .top .btn, .filters, .obdobi, .toolbar, .drawer, .scrim, .zpet, .crumb, .napoveda { display: none !important; }
  .app { display: block; }
  body, .app, .main { min-height: 0; }  /* 100vh by v tisku přidalo prázdnou stránku */
  .top { position: static; backdrop-filter: none; padding: 0 0 4px; border: 0; background: none; min-height: 0; }
  .top h1 { font-size: 16pt; }
  .main, .content, .tw, .card:has(> .tw) { min-width: 0; width: auto; max-width: none; }
  .content { padding: 0; }
  .sub { margin: 0 0 6px; color: black; }
  .shrnuti, .shrnuti .warn { color: black; font-size: 11pt; }  /* R-050: shrnutí voleb v tisku */
  .shrnuti > span.tisk { display: inline-block; }  /* T-064: tisk pruh nemá */
  .legenda, .nad-tabulkou .legenda { display: none !important; }
  .tw { overflow: visible; border: 0; border-radius: 0; }
  .card { box-shadow: none; border: 0; padding: 0; margin: 0 0 8mm; }
  table.report, table.cisla, table.et-tab { width: 100%; font-size: 8pt; }
  .report th, .report td, .cisla th, .cisla td { padding: 2px 4px; }
  .report thead, .cisla thead, .et-tab thead { display: table-header-group; position: static !important; }
  .cisla thead th, .report thead th, .et-tab thead th, .report th.name, .report thead th:first-child,
  .budget thead th:first-child, .budget tbody th[scope="row"] { position: static !important; }
  .report th.name { min-width: 0; }
  .report tbody th.name { position: relative !important; }  /* svislá linka pozic (::before) zůstane v buňce */
  .caret { display: none !important; }
  .card h2 { break-after: avoid; }
  .report tr, .cisla tr, .et-tab tr { break-inside: avoid; }
  /* bez tisku pozadí by byl bílý text výsledku neviditelný */
  .report tr.sk.final > *, .report tr.sk.final td.up, .report tr.sk.final td.dn { color: black; background: none; border-top: 1.5pt solid black; }
  .report tr.sk.final td.dp.velka.up, .report tr.sk.final td.dp.velka.dn { background: none; }  /* T-042: bez tmavého podbarvení */
  body { background: white; color: black; }
}

/* --- F-024 (T-038): jednotka v hlavičce výkazu --- */
.report thead tr.grp .jednotka { white-space: nowrap; text-transform: none; }
/* poznámka pod výkazem: součty z přesných hodnot */
.sub.poznamka { font-size: 12px; margin-top: 8px; }

/* --- F-012 (T-050), R-050: legenda výkazu sbalitelná (details); sbalená je malé tlačítko „Legenda“ --- */
.legenda { margin: 0 0 12px; border: 1px solid var(--border); border-radius: 12px; background: var(--karta); font-size: 12.5px; }
.legenda:not([open]) { display: inline-block; border-color: var(--hranice-ovl); border-radius: 8px; }
.legenda summary { cursor: pointer; padding: 5px 12px; font-weight: 600; color: var(--sedy); }
.legenda:not([open]) summary { padding: 4px 10px; font-size: 12px; }
.nad-tabulkou .legenda { margin: 0; }  /* panel legendy pod řádkem shrnutí, zarovnaný vlevo */
.nad-tabulkou .legenda[open] { border: 0; background: none; }
.nad-tabulkou .legenda[open] summary { border: 1px solid var(--accent); border-radius: 8px; padding: 4px 10px; font-size: 12px; color: var(--accent-text); }
.nad-tabulkou .legenda-obsah {
  position: absolute; z-index: 25; left: 0; top: calc(100% + 4px); width: min(620px, 100%); padding: 10px 12px;
  background: var(--karta); border: 1px solid var(--hranice-ovl); border-radius: 10px; box-shadow: var(--shadow-lg);
}
.legenda-obsah { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr); gap: 4px 24px; padding: 0 12px 10px; }
.nad-tabulkou .legenda-obsah { display: block; }
.legenda h3 { margin: 0 0 4px; font-size: 10.5px; color: var(--muted); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; }
.legenda dl { display: grid; grid-template-columns: max-content minmax(0, 1fr); gap: 2px 10px; margin: 0; }
.legenda dt { font-weight: 600; }
.legenda dd { margin: 0; color: var(--sedy); }
@media (max-width: 860px) { .legenda-obsah { grid-template-columns: minmax(0, 1fr); } }
@media print { .legenda { display: none; } }

/* --- F-021 (T-044, R-043): detail čísla a řádku. Barvy grafů (detail.js je čte odsud): pořadí řad pevné,
   ověřené validátorem palety (CVD, rozlišitelnost); skutečnost = akcent, budget, minulý rok, další účty. --- */
:root {
  --graf-skut: #2a78d6; --graf-skut-vybrany: #1c5cab; --graf-skut-slaba: #5f95dd; --graf-bu: #eb6834; --graf-mr: #13805a;
  --graf-4: #b07800; --graf-5: #d0558a; --graf-adj: #6250d6; --graf-ostatni: #8a877d; --graf-celkem: #52514e;
  --tmava-text: #ffffff; --tmava-good: #7bd88f; --tmava-bad: #ff9b98; --tmava-slaby: #e9edf3;  /* tmavý součtový řádek jako výsledek ve výkazu */
}
.dt-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 16px; margin: 0 0 14px; }
.dt-nav .zpet { margin: 0; }
.dt-nav .zpet a { text-decoration: none; font-weight: 500; }
.dt-taby { display: inline-flex; gap: 2px; padding: 3px; border-radius: 10px; background: var(--pruh); border: 1px solid var(--hranice-ovl); }
.dt-taby a { padding: 5px 16px; border-radius: 8px; text-decoration: none; color: var(--sedy); font-weight: 500; }
.dt-taby a:hover { color: var(--text); }
.dt-taby a.on { background: var(--karta); color: var(--accent-text); font-weight: 600; box-shadow: var(--shadow); }
.dt-rezim { margin-left: auto; text-decoration: none; color: var(--accent-text); }
.dt-hero {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.35fr); gap: 16px 28px;
  border-top: 3px solid var(--accent);
}
.dt-kicker { margin: 0 0 6px; font-size: 11.5px; color: var(--sedy); text-transform: uppercase; letter-spacing: .05em; font-weight: 600; }
.dt-kicker .stitek { text-transform: none; letter-spacing: 0; }
.dt-hero h2 { font-size: 22px; margin: 0; letter-spacing: -.02em; }
.dt-popis { margin: 4px 0 0; color: var(--sedy); font-size: 13px; }
.dt-cislo { font-size: 46px; font-weight: 700; letter-spacing: -.03em; margin: 12px 0 0; line-height: 1.05; }
.dt-presne { margin: 6px 0 0; font-size: 12px; color: var(--sedy); }
.dt-vs { margin: 6px 0 0; font-size: 14px; font-weight: 600; color: var(--accent-text); }
.dt-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 10px; align-content: start; }
.dt-kpis.ctyri { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dt .mrizka thead th { position: static; }  /* tabulka roluje do strany ve svém obalu, hlavička nelepí */
.dt .tw { min-width: 0; max-width: 100%; overflow-x: auto; }
.dt .card:has(> .tw) { width: auto; }
.dt { contain: inline-size; }  /* široká tabulka roluje ve svém obalu, stránka do strany ne */
.dt-kpi { border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; background: var(--karta); min-width: 0; }
.dt-kpi.vybrane { background: var(--pruh); }  /* srovnání, ke kterému detail počítá kroky – jen jemně, ne rámeček */
.dt-kpi-n { display: block; font-size: 11.5px; color: var(--sedy); font-weight: 600; }
.dt-kpi b { display: block; font-size: 19px; font-weight: 650; margin-top: 3px; letter-spacing: -.01em; }
.dt-kpi-d { display: block; font-size: 12.5px; font-weight: 600; color: var(--sedy); margin-top: 1px; }
.dt-kpi-d.up { color: var(--good); }
.dt-kpi-d.dn { color: var(--bad); }
.dt-kpi small { display: block; font-size: 11.5px; color: var(--sedy); margin-top: 2px; }
.dt-veta { grid-column: 1 / -1; background: var(--karta); border: 1px solid var(--border); border-radius: 12px; padding: 10px 14px; font-size: 14px; }
.dt-veta p { margin: 0; }
.dt-veta p + p { margin-top: 4px; }
.dt-grafy { margin-bottom: 16px; }
.dt-graf { min-width: 0; }
.dt-gh { display: flex; align-items: center; gap: 10px; justify-content: space-between; flex-wrap: wrap; }
.dt-gh h2 { margin: 0; }
.dt-gh .seg button { padding: 3px 12px; }
.dt-gh .seg button[aria-pressed="true"] { background: var(--karta); color: var(--accent-text); font-weight: 600; box-shadow: var(--shadow); }
.dt-graf .sub { margin: 4px 0 10px; font-size: 12.5px; }
.dt-platno { position: relative; height: 270px; }
.dt-platno.vysoke { height: 330px; }
.dt-platno canvas { cursor: default; }
.dt-prazdne { display: grid; place-items: center; height: 100%; color: var(--sedy); text-align: center; padding: 0 16px; }
.dt-doklady { list-style: none; margin: 0; padding: 0; counter-reset: d; }
.dt-doklady li { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px solid var(--border); font-variant-numeric: tabular-nums; }
.dt-doklady li:last-child { border-bottom: 0; }
.dt-doklady li::before { counter-increment: d; content: counter(d); color: var(--muted); width: 1.4em; flex: none; }
.dt-doklady li span { flex: 1; color: var(--sedy); }
/* jedna mřížka všech tabulek detailu: název vlevo, čísla vpravo, stejné šířky sloupců, tabulková čísla */
table.mrizka { table-layout: fixed; width: max-content; min-width: 0; }
.mrizka col.m-s { width: 280px; }
.mrizka col.m-t { width: 104px; }
.mrizka col.m-n { width: 112px; }
.mrizka th, .mrizka td { overflow: hidden; text-overflow: ellipsis; }
.mrizka tbody th { text-align: left; }
.mrizka td.tx { text-align: left; }
.mrizka td.up { color: var(--good); }
.mrizka td.dn { color: var(--bad); }
.mrizka tbody th a { text-decoration: none; }
.mrizka tbody th a:hover { text-decoration: underline; }
.mrizka small { color: var(--sedy); font-size: 11px; font-weight: 400; }
.mrizka tr.nezapocteno > * { color: var(--sedy); font-style: italic; background: var(--pruh); }
.mrizka tr.bd > * { background: color-mix(in srgb, var(--pruh) 70%, transparent); }
.mrizka tr.soucet > * { background: var(--navy); color: var(--tmava-text); font-weight: 650; border-color: transparent; }
.mrizka tr.soucet td.up { color: var(--tmava-good); }
.mrizka tr.soucet td.dn { color: var(--tmava-bad); }
.mrizka tr.soucet small, .mrizka tr.soucet a { color: var(--tmava-slaby); }
.mrizka .pripravuje { text-decoration: underline dotted var(--muted); text-underline-offset: 3px; cursor: help; }
.drawer.siroky { width: min(1120px, 100vw); }
.drawer .dt-nav { margin-bottom: 10px; }
/* T-063: kompaktní úvod detailu v jedné řadě, aktuální měsíc v tabulkách jemně */
.dt-uvod { display: block; padding-top: 12px; padding-bottom: 12px; }
.dt-uvod .dt-hlava { margin-bottom: 8px; }
.dt-uvod h2 { font-size: 18px; }
.dt-uvod .dt-kpis { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; }
.dt-uvod .dt-kpi { padding: 6px 10px; border-radius: 10px; }
.dt-uvod .dt-kpi b { font-size: 16px; margin-top: 1px; }
.dt-uvod .dt-kpi-d, .dt-uvod .dt-kpi small { font-size: 11.5px; }
.dt-uvod .dt-veta { margin-top: 8px; padding: 6px 12px; font-size: 13px; }
.mrizka td.aktualni, .mrizka tr.aktualni > * { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.mrizka tr.soucet td.aktualni { background: var(--navy); }
@media (max-width: 860px) { .dt-uvod .dt-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1100px) { .dt-hero { grid-template-columns: 1fr; } }
@media (max-width: 860px) {
  .dt-cislo { font-size: 34px; }
  .dt-rezim { margin-left: 0; }
  .dt-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .dt-kpi b { font-size: 16px; }
  .dt-platno, .dt-platno.vysoke { height: 240px; }
  .mrizka col.m-s { width: 190px; }
  .mrizka col.m-n { width: 96px; }
  .mrizka col.m-t { width: 84px; }
}
@media print {
  .dt-nav { display: none !important; }
  .dt [role="tabpanel"][hidden] { display: block !important; }
}

/* F-007.D7 (T-027): upravitelná tabulka číselníků (makra/tabulka.html, tabulka.js). Barvy jen proměnnými. */
.et { margin-bottom: 16px; }
.et .toolbar .et-hledat { min-width: 220px; }
.et-pocet { font-size: 12.5px; color: var(--muted); }
.et .btn.sm { min-height: 28px; padding: 3px 10px; font-size: 12.5px; }
table.et-tab { border-collapse: separate; border-spacing: 0; width: 100%; font-variant-numeric: tabular-nums; }
.et-tab td { font-size: 13px; }  /* T-078: Struktura výsledovky se vejde vedle menu na 1280 px */
.et-tab th, .et-tab td { padding: 4px 4px; border-bottom: 1px solid var(--border); text-align: left; vertical-align: middle; white-space: nowrap; }
.et-tab th.n, .et-tab td.n { text-align: right; }
.nastaveni-pravidla td { white-space: normal; }  /* T-078: popis pravidla se zalomí, Nastavení se vejde na 1280 px */
.et-tab thead th {
  position: sticky; top: var(--lista); z-index: 1; background: var(--pruh); color: var(--sedy);
  font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0;
}
.et-radit {
  display: inline-flex; align-items: center; gap: 4px; border: 0; background: none; padding: 2px 0; cursor: pointer;
  color: inherit; font: inherit; text-transform: inherit; letter-spacing: inherit;
}
.et-radit::after { content: "↕"; opacity: .35; }
.et-tab th[aria-sort="ascending"] .et-radit::after { content: "↑"; opacity: 1; }
.et-tab th[aria-sort="descending"] .et-radit::after { content: "↓"; opacity: 1; }
.et-tab th[aria-sort="ascending"], .et-tab th[aria-sort="descending"] { color: var(--accent-text); }
.et-tab tbody tr:hover > * { background: var(--hl); }
.et-tab td input:not([type="checkbox"]), .et-tab td select {  /* T-078: úsporně */
  width: 100%; min-height: 30px; padding: 3px 4px; font-size: 12.5px; background: transparent; border: 1px solid transparent;
}
.et-tab td input[size] { width: auto; }  /* šířka podle obsahu sloupce (size z tabulka.js) */
.et-tab td input:hover, .et-tab td select:hover { border-color: var(--border-strong); }
.et-tab td input:focus, .et-tab td select:focus { background: var(--karta); }
.et-tab td input.n { text-align: right; }
.et-tab td select { min-width: 0; width: auto; padding-right: 16px; }
.et-tab td input[type="checkbox"] { width: 18px; height: 18px; min-height: 0; margin: 0 4px; accent-color: var(--accent); }
.et-tab [aria-invalid="true"] { border-color: var(--bad) !important; background: var(--bad-soft) !important; }
.et-tab tr.et-zmena > td { background: var(--warn-soft); }
.et-tab tr.et-novy > td { background: var(--accent-soft); }
.et-tab tr.et-ulozeno > td { background: var(--good-soft); transition: background .6s; }
.et-tab tr[aria-busy="true"] { opacity: .6; }
.et-tab td.et-akce, .et-tab th.et-akce { width: 1%; text-align: right; }
.et-tlacitka { display: inline-flex; align-items: center; gap: 6px; }
.et .btn.et-smazat { color: var(--muted); }
.et .btn.et-smazat:hover { color: var(--bad); background: var(--bad-soft); }
.et-potvrdit { display: inline-flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--text); }
.et .btn.et-ano { color: var(--bad); border-color: var(--bad); }
.et .btn.et-ano:hover { background: var(--bad-soft); }
.et-tab tr.et-chyba-radek > td { padding: 0 8px 8px; white-space: normal; }
.et-tab tr.et-chyba-radek:hover > * { background: none; }
.et-chyba[role="alert"] {
  background: var(--bad-soft); color: var(--text); border-left: 3px solid var(--bad); border-radius: 8px;
  padding: 6px 10px; font-size: 12.5px;
}
.et-tab tr.et-prazdna td { color: var(--muted); padding: 16px; }
@media (max-width: 860px) {
  .et .toolbar .et-hledat { min-width: 0; flex: 1 1 100%; }
  .et-tab td input:not([type="checkbox"]), .et-tab td select { min-height: 36px; }
  .et .btn.sm { min-height: 36px; }
  .et-tab thead th { top: 0; }  /* jako u .tw výše: na mobilu lepí k obalu */
}
@media print {
  .et-tab .et-akce, .et-tab tr.et-chyba-radek { display: none !important; }
  .et-radit::after { content: none; }
}

/* F-031 Budget tool (T-046): správa verzí, mřížka verze jako výsledovka (.report), dialogy <dialog> */
.bt .card h2 { margin: 0; }
.bt .seg a {
  padding: 5px 12px; min-height: 28px; border-radius: 8px; font-weight: 500; color: var(--sedy); text-decoration: none;
  display: inline-flex; align-items: center;
}
.bt .seg a:hover { color: var(--text); }
.bt .seg a.on { background: var(--karta); color: var(--accent-text); font-weight: 600; box-shadow: var(--shadow); }
.bt-verze .hvezda { width: 2em; text-align: center; color: var(--zlata); font-size: 15px; }
.bt-verze th[scope="row"] a { color: var(--text); font-weight: 600; text-decoration: none; }
.bt-verze th[scope="row"] a:hover { text-decoration: underline; text-decoration-color: var(--accent); }
.bt-verze tr.on > * { background: var(--accent-soft); }
.bt-verze td.akce, .bt-smazane td.akce { text-align: right; }
.bt td.akce .btn { padding: 3px 9px; min-height: 28px; font-size: 12.5px; }
.bt .btn.bt-smazat { color: var(--bad); }
.bt .btn.bt-smazat:hover { background: var(--bad-soft); }
.bt-stav { display: inline-block; padding: 1px 9px; border-radius: 999px; font-size: 12px; font-weight: 600; border: 1px solid; }
.bt-stav.bt-schvalena { color: var(--good); background: var(--good-soft); border-color: var(--good); }
.bt-stav.bt-rozpracovana { color: var(--sedy); background: var(--pruh); border-color: var(--border-strong); }
.bt-smazane { margin-top: 12px; }
.bt-smazane summary { cursor: pointer; color: var(--sedy); font-size: 13px; font-weight: 600; }
.bt-smazane table { margin-top: 6px; }
.bt-smazane th[scope="row"] { color: var(--muted); text-decoration: line-through; font-weight: 400; }
/* T-062: Budget tool na šířku okna jako Měsíční vývoj (stejná .report a .tw). Stránka do strany neroluje (contain
   jako .dt); přesáhne-li mřížka kartu, roluje jen obal a sloupec názvů lepí vlevo (T-070: jen tehdy hlavička nelepí pod lištou).
   Šířka buňky se dělí ze šířky okna: okno − menu 232 − okraje obsahu 56 a karty 42 − posuvník 16 − název − Rok,
   na 12 měsíců, takže od 1366 px se 12 měsíců + Rok vejde; užší okno drží buňku na 3rem a roluje obal. */
.bt { contain: inline-size; --bt-nazev: 236px; --bt-rok: 90px; }
.bt .tw { width: auto; min-width: 0; max-width: 100%; overflow-x: auto; }
.bt .card:has(> .tw) { width: auto; }
.bt .tw thead, .bt .tw thead th { top: 0; }  /* jako na mobilu: obal je nejbližší posuvník */
.bt-mrizka th.name, .bt-mrizka thead th:first-child { width: var(--bt-nazev); min-width: var(--bt-nazev); max-width: var(--bt-nazev); white-space: normal; }
.bt-mrizka td { padding: 3px 3px; }
.bt-mrizka td.sep { min-width: var(--bt-rok); padding: 5px 10px; }
.bt-mrizka td .bt-in {
  width: clamp(3rem, calc((100vw - 346px - var(--bt-nazev) - var(--bt-rok)) / 12 - 6px), 5.5rem);
  font-size: 13px; text-align: right; padding: 3px 4px; min-height: 28px; border: 1px solid transparent; border-radius: 6px;
  background: var(--karta); border-color: var(--hranice-ovl); font-variant-numeric: tabular-nums; color: var(--text);
}
.bt-mrizka td .bt-in:hover { border-color: var(--accent); }
.bt-mrizka td .bt-in:focus { background: var(--karta); border-color: var(--accent); outline: 2px solid var(--accent); outline-offset: -1px; }
.bt-mrizka td .bt-in.bt-uklada { background: var(--warn-soft); }
.bt-mrizka tr.lvl-p.bt-edit td { color: var(--text); }
.bt-mrizka th.name .caret { margin-right: 2px; }
.bt-mrizka .bt-pozn { color: var(--muted); font-size: 11px; font-weight: 400; margin-left: 4px; }
/* T-062: název a poznámka položky ve sloupci názvů zkrácené (celé v title), ať řádek položky zůstane na jednom řádku */
.bt-mrizka tr.bt-pol th.name { white-space: nowrap; }
.bt-mrizka tr.bt-pol .bt-jmeno, .bt-mrizka tr.bt-pol .bt-pozn {
  display: inline-block; max-width: 9em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; vertical-align: middle;
}
.bt-mrizka tr.bt-pol .bt-pozn { max-width: 3em; }
/* užší notebook (1280): užší sloupec názvů a Rok, ať se 12 měsíců + Rok vejde i tam */
@media (max-width: 1365px) {
  .bt { --bt-nazev: 196px; --bt-rok: 84px; }
  .bt-upravujete { display: none; }  /* T-070: pruh editoru na jeden řádek i na 1280 */
  .bt-mrizka tr.bt-pol .bt-jmeno { max-width: 8.5em; }
  .bt-mrizka tr.bt-pol .bt-pozn { display: none; }  /* subjekt a poznámka jsou v title názvu */
}
.bt-mrizka .bt-plus { padding: 0 5px; min-height: 22px; margin-left: 6px; vertical-align: middle; opacity: .55; }
.bt-mrizka tr:hover .bt-plus, .bt-mrizka .bt-plus:focus-visible { opacity: 1; }
.bt-mrizka .bt-plus svg { width: 14px; height: 14px; }
.bt-mrizka tr.bt-pol th.name { padding-left: 52px; font-weight: 400; font-size: 12.5px; position: sticky; }
.bt-mrizka tr.bt-pol th.name::before {
  content: "·"; position: absolute; left: 38px; color: var(--muted);
}
.bt-mrizka tr.bt-pol > * { background: var(--karta); }
.bt-mrizka tr.bt-pol th.name { color: var(--sedy); }
.bt-mrizka tr.bt-pol td { font-size: 12.5px; }
.bt-mrizka tr.bt-prime th.name { color: var(--warn); }
.bt-mrizka tr.bt-sbalene { display: none; }
.bt-dlg { border: 0; border-radius: 14px; padding: 0; max-width: min(520px, calc(100vw - 32px)); width: 100%; box-shadow: var(--shadow-lg); color: var(--text); background: var(--karta); }
.bt-dlg.bt-siroky { max-width: min(760px, calc(100vw - 32px)); }
.bt-dlg::backdrop { background: rgba(14, 26, 46, .45); }
.bt-dlg form { display: flex; flex-direction: column; gap: 8px; padding: 20px 22px; }
.bt-dlg h2 { margin: 0 0 4px; font-size: 17px; }
.bt-dlg p { margin: 0; }
.bt-dlg label { font-size: 13px; font-weight: 600; }
.bt-dlg input:not([type="radio"]), .bt-dlg select { min-height: 36px; width: 100%; }
.bt-dlg fieldset { border: 1px solid var(--border); border-radius: 10px; display: flex; flex-wrap: wrap; gap: 8px 16px; align-items: center; }
.bt-dlg fieldset label { font-weight: 500; display: inline-flex; align-items: center; gap: 6px; }
.bt-dlg fieldset select, .bt-dlg fieldset input:not([type="radio"]) { width: auto; max-width: 9rem; }
.bt-nahled td.bt-rok { border-left: 1px solid var(--border-strong); }
.bt-dlg fieldset[data-bt-hlavni] { flex-direction: column; align-items: flex-start; }
.bt-dlg output { font-weight: 650; }
.bt-dlg .bt-chyba { color: var(--bad); font-size: 13px; font-weight: 600; }
.bt-tlacitka { display: flex; gap: 8px; justify-content: flex-end; margin-top: 10px; flex-wrap: wrap; }
.bt-tlacitka .sp { flex: 1; }
.bt-varovani { border-top: 6px solid var(--bad); }
.bt-varovani h2 { color: var(--bad); }
.bt-varovani [role="alert"] { background: var(--bad-soft); border-left-color: var(--bad); }
.bt-historie { margin: 0; padding: 0 0 0 18px; max-height: 55vh; overflow-y: auto; font-size: 13px; }
.bt-historie li { padding: 4px 0; border-bottom: 1px solid var(--border); }
.bt-historie time { color: var(--muted); font-variant-numeric: tabular-nums; margin-right: 8px; }
.bt-zprava.warn { background: var(--warn-soft); border-left-color: var(--warn); }
.bt-mrizka .bt-vyber { margin: 0 6px 0 -22px; vertical-align: middle; }
.bt-dlg .bt-pole { display: flex; flex-direction: column; gap: 4px; }
.bt-nahled-obal { max-height: 40vh; overflow: auto; border: 1px solid var(--border); border-radius: 10px; }  /* náhled v dialogu, ne tabulka stránky (R-037) */
.bt-nahled thead th { top: 0; }  /* lepí k obalu náhledu, ne pod horní lištu stránky */
.bt-nahled table { font-size: 12px; }
.bt-nahled th[scope="row"] { position: sticky; left: 0; background: var(--karta); }
.bt-nahled td.bt-zmena { background: var(--warn-soft); font-weight: 650; }
/* F-031 Budget (Reporting, T-055): přehled verzí jen ke čtení (budget_prehled.html) */
/* hlavička verze: tmavý pruh jako boční menu, zlatá linka klienta */
.bp-hero {
  display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; justify-content: space-between;
  background: var(--side-grad); color: var(--text-svetly); border-radius: 16px; padding: 20px 24px 18px;
  margin: 0 0 14px; box-shadow: var(--shadow); border-bottom: 3px solid var(--zlata);
}
.bp-hero-text { min-width: 0; }
.bp-kicker { margin: 0 0 4px; font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--side-muted); }
.bp-hvezda { color: var(--zlata); letter-spacing: .02em; }
.bp-hero h2 { margin: 0; font-size: 24px; font-weight: 700; letter-spacing: -.02em; color: var(--text-svetly); overflow-wrap: anywhere; }
.bp-meta { margin: 8px 0 0; display: flex; flex-wrap: wrap; gap: 8px 14px; align-items: center; font-size: 12.5px; color: var(--side-muted); }
.bp-meta b { color: var(--text-svetly); font-weight: 600; }
.bp-hero .btn.bp-tool { background: rgba(255, 255, 255, .08); border-color: rgba(255, 255, 255, .22); color: var(--text-svetly); }
.bp-hero .btn.bp-tool:hover { background: rgba(255, 255, 255, .16); }

/* dlaždice roku: číslo, Δ proti srovnávané verzi, sloupce měsíců */
.bp-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 10px; margin: 0 0 14px; }
.bp-kpi { background: var(--karta); border: 1px solid var(--border); border-radius: 14px; padding: 12px 14px 10px; box-shadow: var(--shadow); min-width: 0; display: flex; flex-direction: column; }
.bp-kpi.bp-final { border-color: var(--navy); border-top: 3px solid var(--navy); padding-top: 10px; }
.bp-kpi-n { font-size: 11.5px; font-weight: 600; color: var(--sedy); text-transform: uppercase; letter-spacing: .05em; }
.bp-kpi b { font-size: 22px; font-weight: 700; letter-spacing: -.02em; margin-top: 2px; font-variant-numeric: tabular-nums; }
.bp-kpi-d { font-size: 12.5px; font-weight: 600; color: var(--sedy); font-variant-numeric: tabular-nums; }
.bp-kpi-d.up { color: var(--good); }
.bp-kpi-d.dn { color: var(--bad); }
.bp-kpi-d small { font-weight: 500; color: var(--muted); }
.bp-graf { display: block; width: 100%; height: 36px; margin-top: 8px; }
.bp-graf rect.kl { fill: var(--accent); opacity: .8; }
.bp-graf rect.zap { fill: var(--muted); opacity: .55; }
.bp-graf rect:hover { opacity: 1; }

/* seznam verzí a tabulky */
.bp-verze .bt-verze td.n { font-variant-numeric: tabular-nums; }
.bp-verze td.akce { text-align: right; white-space: nowrap; }
.bp-odkaz { font-size: 12.5px; font-weight: 600; text-decoration: none; }
.bp-odkaz:hover { text-decoration: underline; }
.bp-pozn { color: var(--muted); font-weight: 500; }
.bp-tab td.bp-rok { font-weight: 650; }
.bp-tab td.bp-m { font-size: 12.5px; padding-left: 5px; padding-right: 5px; }
.bp-tab td, .bp-tab th.n { padding-left: 5px; padding-right: 5px; }  /* 12 měsíců + Rok se vejdou vedle menu na 1280 px (T-078) */
.bp-tab td { font-size: 12.5px; }
.bp-tab th.name, .bp-tab thead th:first-child { min-width: 150px; white-space: normal; }
.bt-verze th[scope="row"] { white-space: normal; }
.bp-verze .toolbar .sub { margin: 0; }
.bp-hero .btn.bp-tool, .bp-prazdno .btn { text-decoration: none; }
.bp-prazdno .btn { margin-top: 6px; }

@media (max-width: 760px) {
  .bp-hero { padding: 16px; }
  .bp-hero h2 { font-size: 19px; }
  .bp-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bp-kpi b { font-size: 18px; }
}
@media print {
  .bp-hero { background: none; color: var(--text); box-shadow: none; border: 1px solid var(--border); }
  .bp-hero h2, .bp-meta b { color: var(--text); }
  .bp-tool, .bp-odkaz { display: none; }
}

/* T-070: přehlednost. Správa verzí sbalená (details), pruh editoru lepí pod lištou aplikace a tmavá hlavička
   mřížky pod ním (--bt-pruh měří app.js). Obal mřížky neroluje (clip jako R-037), takže hlavička lepí ke stránce;
   jen když se mřížka nevejde (bt-preteka, užší okno), roluje obal a hlavička lepí k němu (pravidlo T-062 výše). */
.bt-verze-karta { padding: 12px 20px; }
.bt-verze-karta > summary { cursor: pointer; color: var(--sedy); }
.bt-verze-karta > summary h2 { display: inline; font-size: 14px; font-weight: 650; color: var(--text); }
.bt-verze-karta[open] > summary { margin-bottom: 10px; }
.bt-pocet { color: var(--muted); font-weight: 500; }
.bt-menu { display: inline-flex; align-items: center; vertical-align: middle; }
.bt-menu > summary { list-style: none; cursor: pointer; display: inline-flex; }
.bt-menu > summary::-webkit-details-marker { display: none; }
.bt-menu-obsah { display: inline-flex; gap: 2px; }
.bt-mrizka-karta { padding-top: 0; }
.bt-pruh {
  position: sticky; top: var(--lista); z-index: 6; margin: 0 -20px; padding: 12px 20px 10px;
  background: var(--karta); border-bottom: 1px solid var(--border); border-radius: 16px 16px 0 0;
}
.bt-mrizka-karta > .tw { margin-top: 12px; }
.bt-pruh-radek { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; }
.bt .bt-pruh h2 { font-size: 17px; font-weight: 700; }
.bt-pruh-radek + .bt-pruh-radek { margin-top: 6px; }
.bt-pruh-radek .sp { flex: 1; }
.bt-upravujete { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: var(--muted); margin-right: 4px; vertical-align: 2px; }
.bt-zamek { width: 12px; height: 12px; margin-right: 4px; vertical-align: -1px; }
.bt-legenda { display: inline-flex; gap: 10px; font-size: 12px; color: var(--sedy); }
.bt-leg-vstup::before, .bt-leg-vypocet::before {
  content: ""; display: inline-block; width: 22px; height: 11px; border-radius: 3px; margin-right: 4px; vertical-align: -1px;
}
.bt-leg-vstup::before { background: var(--karta); border: 1px solid var(--hranice-ovl); }
.bt-leg-vypocet::before { background: var(--pruh); border: 1px solid var(--border); }
.bt-napoveda {
  display: inline-grid; place-items: center; width: 22px; height: 22px; border-radius: 50%; cursor: help;
  border: 1px solid var(--hranice-ovl); color: var(--sedy); font-size: 12px; font-weight: 700;
}
.bt-akce { display: inline-flex; gap: 6px; }
.bt-akce .btn { min-height: 30px; padding: 4px 12px; font-size: 13px; }
.bt-kpi { display: flex; flex-wrap: wrap; gap: 2px 18px; margin: 0; font-size: 12.5px; }
.bt-kpi > div { display: flex; gap: 6px; align-items: baseline; }
.bt-kpi dt { color: var(--sedy); }
.bt-kpi dd { margin: 0; font-weight: 650; font-variant-numeric: tabular-nums; }
html.js .bt-mrizka-karta .tw:not(.bt-preteka) { overflow: clip; }
html.js .bt .bt-mrizka-karta .tw:not(.bt-preteka) thead { top: calc(var(--lista) + var(--bt-pruh, 0px) - 1px); }
.bt .bt-mrizka thead th, .bt .bt-mrizka thead th.name {
  background: var(--navy); color: var(--text-svetly); font-size: 12.5px; font-weight: 600; text-transform: none; letter-spacing: 0;
  border-bottom: 0; padding-top: 8px; padding-bottom: 8px;
}
.bt-mrizka thead .jednotka { color: var(--side-muted); font-weight: 500; }
/* hierarchie: skupina šedý pás, pozice bílá, položka odsazená šedá, mezisoučet tučně s linkou nad, VH tmavý */
.bt-mrizka tbody th.name, .bt-mrizka tbody td { height: 32px; }
.bt-mrizka tbody th.name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-right: 26px; }
.bt-mrizka tr.sg > * { font-size: 13.5px; }
.bt .bt-mrizka tr.sk:not(.final) > * {
  background: var(--karta); border-top: 1px solid var(--border-strong); border-bottom: 1px solid var(--border);
}
.bt .bt-mrizka tr.sk:not(.final) th.name { border-left: 0; }
.bt-mrizka tr.k > * { font-size: 11.5px; }
.bt-mrizka td.sep { background: var(--pruh); }
.bt-mrizka tr.sk.final td.sep { background: var(--navy); }
.bt-mrizka tr.bt-ma-polozky td { color: var(--sedy); }
.bt-odznak {
  display: inline-block; min-width: 18px; margin-left: 4px; padding: 0 5px; border-radius: 999px; text-align: center;
  background: var(--pruh); border: 1px solid var(--border); color: var(--sedy); font-size: 11px; font-weight: 600;
}
.bt-mrizka th.name .bt-plus { position: absolute; right: 4px; top: 50%; transform: translateY(-50%); margin: 0; }
/* schválená verze: buňky jako text, rámeček až při najetí nebo fokusu (změna chce potvrzení, D5) */
.bt-mrizka.bt-zamcena td .bt-in { background: transparent; border-color: transparent; }
.bt-mrizka.bt-zamcena td .bt-in:hover { border-color: var(--border-strong); }
/* zaškrtávátka pomůcky až při najetí, fokusu nebo výběru (na dotykovém displeji vždy) */
.bt-mrizka .bt-vyber { opacity: 0; width: 14px; height: 14px; min-height: 0; }
.bt-mrizka tr:hover .bt-vyber, .bt-mrizka .bt-vyber:focus-visible, .bt-mrizka .bt-vyber:checked, .bt.bt-vybira .bt-mrizka .bt-vyber { opacity: 1; }
@media (hover: none) { .bt-mrizka .bt-vyber { opacity: 1; } }
.bt-vyber-lista {
  position: fixed; left: 50%; bottom: 16px; transform: translateX(-50%); z-index: 15; display: flex; gap: 10px; align-items: center;
  padding: 8px 10px 8px 16px; border-radius: 12px; background: var(--navy); color: var(--text-svetly); box-shadow: var(--shadow-lg);
}
.bt-vyber-lista .btn:not(.pri) { color: var(--text); }
/* chyba buňky u buňky */
.bt-mrizka td { position: relative; }
.bt-mrizka td .bt-in.bt-chybna { border-color: var(--bad); outline: 2px solid var(--bad); outline-offset: -1px; background: var(--bad-soft); }
.bt-bunka-chyba {
  position: absolute; top: calc(100% - 2px); right: 0; z-index: 5; width: max-content; max-width: 260px; padding: 5px 9px;
  border-radius: 6px; border: 1px solid var(--bad); background: var(--bad-soft); color: var(--bad); box-shadow: var(--shadow); font-size: 12px; font-weight: 600; text-align: left; white-space: normal;
}
/* zpráva editoru dole v okně, ne nahoře mimo obrazovku; kliknutím zmizí */
html.js .bt-zprava:not([hidden]) {
  position: fixed; right: 20px; bottom: 72px; z-index: 16; max-width: min(460px, calc(100vw - 32px)); margin: 0;
  box-shadow: var(--shadow-lg); cursor: pointer;
}
.bt-dlg .bt-volba { display: flex; gap: 8px; align-items: flex-start; font-weight: 500; }
.bt-dlg .bt-volba input { min-height: 0; width: auto; margin-top: 3px; }
@media (max-width: 860px) {
  .bt { --bt-nazev: 170px; }
  .bt-pruh { position: static; }
  .bt-mrizka tr.bt-pol th.name { white-space: normal; }  /* mobil: položka se zalomí, nepřeteče */
  .bt-mrizka tr.bt-pol .bt-jmeno { display: inline; white-space: normal; }
  .bt-verze td.akce { white-space: normal; min-width: 180px; }
  .bt-mrizka td .bt-in { min-height: 36px; width: 5.6rem; }
}
@media print {
  .bt-verze-karta, .bt-plus, .bt-dlg, .bt-zprava, .bt-akce, .bt-napoveda, .bt-vyber-lista { display: none !important; }
  .bt-pruh { position: static; }
  .bt { contain: none; }
  .bt .tw { overflow: visible; }
  .bt-mrizka td .bt-in { border: 0; background: none; }
}

/* --- F-023 Dashboard (T-015, R-048): hlavička s větou, KPI dlaždice s mini trendem, grafy v mřížce. Barvy grafů
   jsou proměnné --graf-* z oddílu F-021 (dashboard.js je čte odsud), Δ v barvách --good / --bad jako výkaz. --- */
.db { contain: inline-size; }
.db-hlava {
  display: flex; align-items: flex-end; justify-content: space-between; gap: 16px 28px; flex-wrap: wrap;
  background: var(--karta); color: var(--text); border: 1px solid var(--border); border-radius: 14px; padding: 16px 20px;
  margin: 0 0 16px;  /* T-090 (vlastník): konzervativně jako pruh rozsahu – karta, jemný rámeček, bez stínu a přechodu */
}
.db-hlava > div { min-width: 0; max-width: 820px; }
.db-hlava h2 { margin: 0; font-size: 20px; font-weight: 650; letter-spacing: -.015em; line-height: 1.3; color: var(--navy); }
.db-hlava p { margin: 6px 0 0; font-size: 14px; color: var(--muted); }
.db-vys { text-decoration: none; }  /* běžné .btn */
.db-kpis { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 0 0 16px; }
.db-kpi {
  background: var(--karta); border: 1px solid var(--border); border-radius: 14px; box-shadow: var(--shadow);
  padding: 14px 16px 8px; min-width: 0; display: flex; flex-direction: column;
}
.db-kpi header { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.db-kpi header a { font-size: 13.5px; font-weight: 650; color: var(--sedy); text-decoration: none; }  /* T-090: bez verzálek */
.db-kpi header a:hover { color: var(--accent-text); }
.db-marze { margin-left: auto; align-self: center; white-space: nowrap; font-size: 11.5px; font-weight: 600; color: var(--sedy); background: var(--pruh); border-radius: 999px; padding: 1px 8px; font-variant-numeric: tabular-nums; }
.db-hl { margin-top: 6px; display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 6px; }
.db-hl .db-hodnota, .db-j { white-space: nowrap; }
.db-hl .db-hodnota { font-size: 30px; font-weight: 700; letter-spacing: -.025em; line-height: 1.1; font-variant-numeric: tabular-nums; }
.db-j { font-size: 12px; color: var(--sedy); }
.db-ds { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.db-d { font-size: 12px; font-weight: 650; padding: 2px 7px; border-radius: 6px;  /* T-090: pilulky jen pro stav */ background: var(--pruh); color: var(--sedy); font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-d.up { background: var(--good-soft); color: var(--good); }
.db-d.dn { background: var(--bad-soft); color: var(--bad); }
.db-d-n { font-weight: 500; }
.db-druhe { margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--border-strong); font-size: 12.5px; color: var(--sedy); display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 8px; }
.db-druhe a { color: var(--sedy); text-decoration: none; }
.db-druhe a:hover { color: var(--accent-text); text-decoration: underline; }
.db-druhe .db-hodnota { color: var(--text); font-weight: 650; font-variant-numeric: tabular-nums; }
.db-druhe .db-d { padding: 0 6px; font-size: 11.5px; }
.db-mini { position: relative; height: 46px; margin: 8px -6px 0; }
.db-mrizka { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 16px; margin-bottom: 16px; align-items: stretch; }
.db-mrizka > .card { margin: 0; }
.db-graf { min-width: 0; }
.db-gh { display: flex; align-items: center; gap: 10px; justify-content: space-between; flex-wrap: wrap; }
.db-gh h2 { margin: 0; }
.db-gh .sub { margin: 0; font-size: 12.5px; }
.db-gh .seg button { padding: 3px 12px; }
.db-gh .seg button[aria-pressed="true"] { background: var(--karta); color: var(--accent-text); font-weight: 600; box-shadow: var(--shadow); }
.db-graf > .sub { margin: 4px 0 10px; font-size: 12.5px; }
.db-platno { position: relative; height: 290px; }
.db-platno.vysoke { height: 320px; }
/* T-069: podíl položek nákladů – seřazené pruhy, skutečnost silná, srovnání tenké šedé pod ní; délka z data-sirka */
.db-gh-c { font-size: 15px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-gh-c small { margin-left: 8px; font-size: 12px; font-weight: 500; color: var(--sedy); }
.db-podily { list-style: none; margin: 0; padding: 0; }
.db-podily li { display: grid; grid-template-columns: minmax(0, 1fr) auto 84px; align-items: baseline; gap: 4px 12px; padding: 7px 0 8px; border-bottom: 1px solid var(--border); }
.db-podily li:last-child { border-bottom: 0; }
.db-podil-n { font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.db-podil-pruh { grid-column: 1 / -1; grid-row: 2; display: flex; flex-direction: column; gap: 3px; }
.db-podil-pruh i { display: block; width: 0; border-radius: 3px; }
.db-podil-pruh .skut { height: 10px; background: var(--graf-skut); }
.db-podil-pruh .srov { height: 3px; background: var(--graf-bu); }
.db-podil-pruh .srov.mr { background: var(--graf-mr); }
.db-podil-p { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-podil-p small { margin-left: 8px; font-size: 11.5px; font-weight: 500; color: var(--sedy); }
.db-podil-c { text-align: right; font-size: 12px; color: var(--sedy); font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-cisla .report td.tx { text-align: left; white-space: nowrap; font-weight: 500; color: var(--sedy); }
.db-cisla .report tr.final td.tx { color: var(--tmava-slaby); }
.db-prazdne { display: grid; place-items: center; min-height: 220px; color: var(--sedy); text-align: center; margin: 0; padding: 0 16px; }
.db-odch { list-style: none; margin: 0; padding: 0; }
.db-odch li { padding: 9px 0; border-bottom: 1px solid var(--border); }
.db-odch li:last-child { border-bottom: 0; }
.db-odch-odkaz { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(70px, 1fr) minmax(92px, auto); align-items: center; gap: 12px; color: var(--text); text-decoration: none; }
.db-odch-odkaz:hover .db-odch-n { color: var(--accent-text); text-decoration: underline; }
.db-odch-n { font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.db-odch-pruh { height: 8px; border-radius: 4px; background: var(--pruh); overflow: hidden; }
.db-odch-pruh i { display: block; height: 100%; border-radius: 4px; background: var(--muted); }
.db-odch-pruh i.up { background: var(--good); }
.db-odch-pruh i.dn { background: var(--bad); }
.db-odch-pruh .s1 { width: 10%; } .db-odch-pruh .s2 { width: 20%; } .db-odch-pruh .s3 { width: 30%; }
.db-odch-pruh .s4 { width: 40%; } .db-odch-pruh .s5 { width: 50%; } .db-odch-pruh .s6 { width: 60%; }
.db-odch-pruh .s7 { width: 70%; } .db-odch-pruh .s8 { width: 80%; } .db-odch-pruh .s9 { width: 90%; }
.db-odch-pruh .s10 { width: 100%; }
.db-odch-d { text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.db-odch-d small { display: block; font-size: 11.5px; font-weight: 600; }
.db-odch-z { display: block; font-size: 11.5px; color: var(--sedy); margin-top: 1px; font-variant-numeric: tabular-nums; }
.db-cisla > summary { cursor: pointer; list-style: none; justify-content: flex-start; }
.db-cisla > summary::-webkit-details-marker { display: none; }
.db-cisla > summary::before { content: "▸"; color: var(--sedy); transition: transform .15s; }
.db-cisla[open] > summary::before { transform: rotate(90deg); }
.db-cisla > summary h2 { font-size: 15px; }
.db-cisla[open] > summary { margin-bottom: 10px; }
.db-cisla.card:has(> .tw) { width: auto; }
.db-cisla .tw { overflow-x: auto; max-width: 100%; }  /* malá tabulka roluje ve svém obalu jako v detailu */
.db-cisla .report thead, .db-cisla .report th, .db-cisla .report td, .db-cisla .report thead th:first-child,
.db-cisla .report th.name { position: static; }  /* v obalu s rolováním nelepí pod lištou */
/* T-096 Co řešit: řádky s druhem, názvem s popisem a dopadem na EBITDA; barvy jen z proměnných */
.db-resit { margin: 0 0 16px; }
.db-resit-seznam { list-style: none; margin: 0; padding: 0; }
.db-resit-seznam li { display: grid; grid-template-columns: 128px minmax(0, 1fr) auto; align-items: baseline; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--border); }
.db-resit-seznam li:last-child { border-bottom: 0; }
.db-resit-druh { font-size: 12px; font-weight: 600; color: var(--muted); }
.db-resit-druh.chybi, .db-resit-druh.neplanovano { color: var(--warn); }
.db-resit-n { font-weight: 600; color: var(--text); }
.db-resit-p { font-size: 13px; color: var(--muted); }
.db-resit-d { font-weight: 600; white-space: nowrap; }
.db-resit-d.up { color: var(--good); }
.db-resit-d.dn { color: var(--bad); }
@media (max-width: 560px) { .db-resit-seznam li { grid-template-columns: minmax(0, 1fr) auto; } .db-resit-t { grid-column: 1 / -1; grid-row: 2; } }
/* T-116: karta jde sbalit (details, šipka jako tabulka ukazatelů) a stránkuje se */
.db-resit > summary { cursor: pointer; list-style: none; justify-content: flex-start; }
.db-resit > summary::-webkit-details-marker { display: none; }
.db-resit > summary::before { content: "▸"; color: var(--sedy); transition: transform .15s; }
.db-resit[open] > summary::before { transform: rotate(90deg); }
.db-resit[open] > summary { margin-bottom: 6px; }
.db-resit-strany { display: flex; align-items: center; justify-content: flex-end; gap: 10px; margin-top: 10px; }
.db-resit-strany [aria-disabled="true"] { opacity: .5; pointer-events: none; }
/* T-095 Výhled celý rok: dvě dlaždice EBITDA a VH, štítek verze zbytku roku; barvy jen z proměnných */
.db-vyhled { margin: 0 0 16px; }
.db-vyhled .db-gh { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.db-vyhled-zdroj { font-size: 12px; font-weight: 600; padding: 1px 8px; border-radius: 10px; background: var(--pruh); color: var(--muted); }
.db-vyhled-zdroj.forecast { background: var(--accent-soft); color: var(--accent-text); }
.db-vyhled-mrizka { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 24px; }
.db-vyhled-k header { font-size: 13px; font-weight: 600; color: var(--muted); }
@media (max-width: 560px) { .db-vyhled-mrizka { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 1200px) { .db-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 1100px) { .db-mrizka { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 860px) {
  .db-hlava { padding: 16px 18px; }
  .db-hlava h2 { font-size: 18px; }
  .db-hl .db-hodnota { font-size: 26px; }
  .db-platno, .db-platno.vysoke { height: 250px; }
  .db-cisla .report th.name { min-width: 130px; }
}
@media (max-width: 560px) {
  .db-kpis { grid-template-columns: minmax(0, 1fr); }
  .db-odch-odkaz { grid-template-columns: minmax(0, 1fr) auto; row-gap: 6px; }
  .db-odch-pruh { grid-column: 1 / -1; grid-row: 2; }
}
@media print {
  .db-vys { display: none; }  /* hlava je i na obrazovce světlá (T-090) */
  .db-kpi, .db-graf { break-inside: avoid; box-shadow: none; }
}

/* T-057 Účetní deník: pevná mřížka (šířky z col, dlouhý text se zkrátí), široká tabulka roluje ve svém obalu */
.denik { contain: inline-size; }
.denik .tw { min-width: 0; max-width: 100%; overflow-x: auto; }
.denik .card:has(> .tw) { width: auto; }
.denik table.mrizka { width: 0; }
.denik td.tx { text-align: left; }
.denik summary h2 { display: inline; }
.denik .mrizka col.m-t { width: 104px; }  /* i na mobilu: datum a doklad celé, tabulka roluje */
.denik .mrizka col.m-n { width: 112px; }

/* F-003.D5 uvítání v ukázce (R-052, T-071): tmavá hlavička jako boční menu se zlatou linkou klienta, písmo aplikace.
   Bez JS je dialog otevřený nemodálně, proto pevná pozice uprostřed nad obsahem. */
.uvitani {
  position: fixed; inset: 0; margin: auto; z-index: 60; height: fit-content; max-height: calc(100vh - 32px); overflow: auto;
  width: 100%; max-width: min(600px, calc(100vw - 32px)); padding: 0; border: 0; border-radius: 14px;
  background: var(--karta); color: var(--text); box-shadow: var(--shadow-lg);
}
.uvitani::backdrop { background: rgba(14, 26, 46, .55); }
.uvitani form { display: flex; flex-direction: column; }
.uvitani .uvitani-k, .uvitani h2 { background: var(--side-grad); color: var(--karta); margin: 0; padding: 0 24px; }
.uvitani .uvitani-k { padding-top: 20px; color: var(--zlata); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.uvitani h2 { font-size: 20px; line-height: 1.3; padding-top: 6px; padding-bottom: 18px; border-bottom: 3px solid var(--zlata); }
.uvitani #uvitani-text { padding: 18px 24px 4px; }
.uvitani p { margin: 0 0 10px; }
.uvitani .uvitani-lbl { margin: 14px 0 6px; font-size: 12px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--sedy); }
.uvitani ul { margin: 0 0 14px; padding-left: 18px; }
.uvitani li { margin: 3px 0; }
.uvitani li::marker { color: var(--zlata); }
.uvitani .uvitani-vtip { margin: 10px 0 0; }
.uvitani .uvitani-pozn { padding: 10px 12px; border-radius: 9px; background: var(--pruh); border-left: 3px solid var(--zlata); }
.uvitani-akce { display: flex; justify-content: flex-end; gap: 8px; padding: 6px 24px 22px; }
.uvitani .uvitani-sekce li { margin: 5px 0; line-height: 1.45; }
.uvitani .uvitani-pozn a { font-weight: 600; }
.uvitani-akce .btn { min-width: 120px; justify-content: center; }
@media print { .uvitani { display: none; } }

/* F-011 Mapovací můstek (T-053, R-044): seznam účtů roku, kompaktní řádky, výběr pozice v řádku */
.mustek-tab th, .mustek-tab td { padding-top: 4px; padding-bottom: 4px; vertical-align: middle; }
.mustek-tab .vyb { width: 1%; min-width: 0; padding-left: 10px; padding-right: 4px; text-align: center; }
.mustek-tab .vyb input { width: 16px; height: 16px; min-height: 0; padding: 0; margin: 0; }
.mustek-tab .akce { text-align: right; white-space: nowrap; }
.mustek-tab td.tx { white-space: normal; }  /* T-078: vejde se na 1280 px */
.mustek-tab .akce .btn { padding: 1px 9px; font-size: 12px; min-height: 0; }
.mustek-tab td.tx, .mustek-tab thead th:not(.n) { text-align: left; }
.mustek-tab select { max-width: 280px; padding-top: 3px; padding-bottom: 3px; }
.mustek-tab tr.nenamapovany > th { border-left: 3px solid var(--warn); }
.mustek-tab .stitek.navrh { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-text); }
.mustek-tab tbody tr:target { background: var(--accent-soft); }
@media (max-width: 700px) { .mustek-ucty .tw { overflow-x: auto; width: auto; } }
.dt-pod { margin: 18px 0 8px; font-size: 14px; }  /* T-078: podnadpis v kartě detailu (Adjustmenty v řádku) */
.dt-pod small { color: var(--muted); font-weight: 500; }
/* F-007 Průvodce (T-086): kroky měsíčního cyklu na časové ose a základy výkazů */
.pruvodce { max-width: 920px; }
.pv-uvod { margin: 0 0 16px; color: var(--sedy); font-size: 14px; max-width: 68ch; }
.pv-kroky { list-style: none; margin: 4px 0 0; padding: 0; }
.pv-krok { position: relative; display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 14px; padding-bottom: 18px; }
.pv-krok:last-child { padding-bottom: 0; }
.pv-krok:not(:last-child)::before { content: ""; position: absolute; left: 15px; top: 34px; bottom: 2px; width: 2px; background: var(--border); }
.pv-n { width: 32px; height: 32px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 13px;
  background: var(--accent-soft); color: var(--accent-text); border: 1px solid var(--accent); font-variant-numeric: tabular-nums; }
.pv-telo h3 { margin: 5px 0 4px; font-size: 14px; }
.pv-telo p { margin: 0; max-width: 72ch; line-height: 1.5; }
.pv-telo .pv-odkazy { display: flex; flex-wrap: wrap; gap: 6px 14px; margin-top: 6px; }
.pv-odkaz { font-weight: 600; font-size: 13px; color: var(--accent-text); text-decoration: none; }
.pv-odkaz:hover { text-decoration: underline; }
.pv-odkaz.ne { color: var(--muted); font-weight: 500; }
.pv-odkaz small { font-size: 11px; border: 1px solid var(--border-strong); border-radius: 6px; padding: 0 5px; margin-left: 4px; }
.pv-zaklady { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 28px; margin: 4px 0 0; }
.pv-zaklady dt { font-weight: 700; font-size: 13px; margin-bottom: 2px; }
.pv-zaklady dd { margin: 0; color: var(--sedy); line-height: 1.5; }
@media (max-width: 700px) { .pv-zaklady { grid-template-columns: 1fr; } }
/* Průvodce: vysvětlivka „Proč a kde?“ u kroku; na myš i klávesnici/dotyk (focus), v tisku vždy vidět */
.pv-telo { position: relative; }
.pv-hlava { display: flex; align-items: baseline; flex-wrap: wrap; gap: 4px; }
.pv-tip { display: inline-block; margin-left: 4px; padding: 0 8px; border: 1px solid var(--border-strong); border-radius: 999px; font-size: 11.5px; font-weight: 500;
  color: var(--accent-text); background: var(--karta); cursor: help; vertical-align: 1px; }
.pv-tip:hover, .pv-tip:focus-visible { background: var(--accent-soft); outline: none; }
.pv-bublina { display: none; position: absolute; z-index: 5; left: 0; top: 30px; max-width: min(520px, 100%); padding: 10px 12px; border: 1px solid var(--border-strong);
  border-radius: 10px; background: var(--karta); box-shadow: var(--shadow); font-size: 13px; }
.pv-bublina p + p { margin-top: 6px; }
.pv-hlava:has(.pv-tip:hover, .pv-tip:focus) + .pv-bublina { display: block; }
@media print { .pv-tip { display: none; } .pv-bublina { display: block; position: static; box-shadow: none; border: 0; padding: 4px 0 0; } }
.pv-ciselniky dd .pv-odkazy { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-top: 4px; }
/* hlavičky tabulek v barvě bočního menu (vlastník): bílé písmo na navy, skupinový řádek tmavší */
.cisla thead th, .report thead th { color: var(--tmava-text); font-size: 12.5px; font-weight: 600; background: var(--pozadi); border-color: rgba(255, 255, 255, .12); }
.report thead tr.grp th { background: var(--navy); color: var(--tmava-text); font-size: 12.5px; font-weight: 700; letter-spacing: .01em; }
.report thead th.name { background: var(--pozadi); font-weight: 700; }
.report.uzka thead th { font-size: 12px; letter-spacing: 0; }
.cisla thead th small, .report thead th small, .report thead th small.bez-dat, .report thead th small.rozsah { color: var(--tmava-slaby); }
.cisla thead th a, .report thead th a, .cisla thead th button, .report thead th button { color: inherit; }
/* Budget: hlavička verze klidně jako hlava Dashboardu (vlastník) – karta, jemný rámeček, bez tmavého pruhu a linky, bez verzálek */
.bp-hero { background: var(--karta); color: var(--text); border: 1px solid var(--border); border-bottom-width: 1px; box-shadow: none; border-radius: 14px; padding: 16px 20px; }
.bp-kicker { text-transform: none; letter-spacing: 0; font-size: 12.5px; color: var(--muted); }
.bp-hvezda { color: var(--accent-text); }
.bp-hero h2 { color: var(--navy); font-size: 21px; }
.bp-meta { color: var(--muted); }
.bp-meta b { color: var(--text); }
.bp-hero .btn.bp-tool { background: var(--karta); border-color: var(--border-strong); color: var(--text); }
.bp-hero .btn.bp-tool:hover { background: var(--hl); }
.bp-kpi-n { text-transform: none; letter-spacing: 0; font-size: 12.5px; }
/* Budget: Upravit v Budget toolu kontrastně (vlastník) – plné navy tlačítko, ikona bílá */
.bp-hero .btn.bp-tool { background: var(--navy); border-color: var(--navy); color: var(--tmava-text); font-weight: 600; }
.bp-hero .btn.bp-tool:hover { background: var(--pozadi); border-color: var(--pozadi); }
.bp-hero .btn.bp-tool svg { stroke: currentColor; }
.bp-hero .btn.bp-hlavni { margin-left: 8px; text-decoration: none; }

/* T-110: zvoneček v horní liště a seznam věcí k vyřešení (panel i stránka /k-vyreseni); barvy jen z proměnných */
.zvonecek { position: relative; }
.zvonecek-pocet { position: absolute; top: -4px; right: -4px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: var(--warn); color: var(--bg); font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; }
.zvonecek.chyby .zvonecek-pocet { background: var(--bad); }
.kv-souhrn { margin: 0 0 12px; }
.kv-seznam { list-style: none; margin: 0 0 12px; padding: 0; }
.kv-pol { display: grid; grid-template-columns: 80px minmax(0, 1fr) auto; gap: 10px; align-items: baseline; padding: 8px 0; border-bottom: 1px solid var(--border); }
.kv-zav { font-size: 12px; font-weight: 600; color: var(--warn); }
.kv-chyba .kv-zav { color: var(--bad); }
.kv-n { font-weight: 600; color: var(--text); }
.kv-pocet { font-weight: 600; color: var(--muted); }
.kv-t .sub { display: block; }

/* T-118: designová oponentura (2026-10-23). Přebíjí dřívější pravidla, proto na konci; barvy jen z proměnných. */
/* hierarchie (bod 3): nadpis stránky navy, drobečky jako kicker, shrnutí voleb tlumeně pod nadpisem (bod 17) */
.top h1 { font-size: 24px; color: var(--navy); }
.crumb { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--sedy); }
.ctxh { display: block; margin-top: 2px; }
.shrnuti { font-weight: 500; color: var(--sedy); }
.shrnuti > :not([hidden]):first-child::before { content: none; }
.card h2, dialog h2, .drawer h2 { font-size: 17px; font-weight: 700; color: var(--navy); }
.card h2 small { font-weight: 500; color: var(--sedy); }
/* tlačítka (body 5, 6): odkaz jako tlačítko bez podtržení; hlavní tlačítko má kontrast z .btn.pri výše */
.btn { text-decoration: none; }
/* hlavičky číselníků navy jako výkazy (bod 4) */
.et-tab thead th { background: var(--pozadi); color: var(--tmava-text); font-size: 12px; text-transform: none; border-color: var(--pozadi); }
.et-tab th[aria-sort="ascending"], .et-tab th[aria-sort="descending"] { color: var(--side-accent); }
/* lišta filtrů bez vlastní plochy (bod 15); výběr pozice v Deníku nezalomí Import a Export */
.filters { background: transparent; }
#d-pozice { max-width: 12rem; }
/* výkaz: skupinový řádek výraznější (bod 16) */
.report tr.sg > * { background: var(--hlavicka-grp); font-weight: 700; }
/* Dashboard (body 10–13): pilulka jen u marže, Δ jen barvou textu; mřížka nezvětšuje karty na výšku sousedky,
   lichá poslední karta přes celou šířku; štítek jen u jiných typů než odchylka; neaktivní stránkování se nekreslí */
.db-d, .db-d.up, .db-d.dn, .db-druhe .db-d { background: none; padding: 0; }
.db-ds { gap: 4px 14px; }
.db-mrizka { align-items: start; }
.db-mrizka > .card:last-child:nth-child(odd) { grid-column: 1 / -1; }
.db-resit-druh.odchylka { visibility: hidden; }
.db-resit-strany [aria-disabled="true"] { visibility: hidden; }
.drawer:has(.kv) #drawer-celkem { display: none; }  /* panel K vyřešení: počet je ve větě, ne velkým číslem */
/* Kontroly dat (bod 14): akce v řádku vedle sebe */
.kd-akce-obal { display: flex; flex-wrap: wrap; gap: 6px; align-items: flex-start; }
.kd-akce-obal .btn { margin: 0; }
/* Budget tool (bod 18): poznámka položky jen v title názvu, kicker bez verzálek */
.bt-mrizka tr.bt-pol .bt-pozn { display: none; }
.bt-upravujete { text-transform: none; letter-spacing: 0; font-size: 12.5px; font-weight: 500; vertical-align: 0; }
/* Detail (bod 19): kicker bez verzálek, název řádku je v nadpisu stránky i panelu (h2 zůstane pro čtečky),
   tabulka Účty řádku přes celou kartu */
.dt-kicker { text-transform: none; letter-spacing: 0; }
.dt-uvod #dt-nazev { position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.dt table.mrizka[data-tabulka="ucty"] { width: 100%; }
.dt table.mrizka[data-tabulka="ucty"] col.m-s { width: auto; }
/* Struktura výsledovky (bod 20): výběr role užší, stránka na 1440 px nepřeteče */
#et-struktura .et-tab td select { max-width: 7.5rem; }
#et-struktura .et-tab td select[data-pole="citatel"] { max-width: 6.5rem; }  /* jen kódy řádků */
.card:has(> #et-struktura) { padding-left: 14px; padding-right: 14px; }
/* Nastavení (bod 21): nápověda parametru netučně, textové pole s rámečkem */
form[action="/nastaveni/stranka"] .et-tab th .sub { font-weight: 400; color: var(--sedy); font-size: 12.5px; }
form[action="/nastaveni/stranka"] .et-tab td input[type="text"] { border-color: var(--hranice-ovl); background: var(--karta); }
/* Budget přehled (bod 22): textové sloupce vlevo jako jejich hlavička */
.bt-verze td.tx { text-align: left; }
/* K vyřešení jako samostatná stránka v kartě (bod 24); v panelu bez karty */
.content > .kv { background: var(--karta); border: 1px solid var(--border); border-radius: 16px; box-shadow: var(--shadow); padding: 18px 20px; }
/* boční menu (bod 26): širší, ať se položky nezalamují, a nižší, ať se vejde Nastavení i při výšce 900 px */
@media (min-width: 861px) { .app { grid-template-columns: 248px minmax(0, 1fr); } }
.side { padding-top: 14px; padding-bottom: 12px; }
.brand { padding-bottom: 12px; }
.nav-sec { padding: 10px 12px 3px; }
.nav a, .nav .pripravuje { padding-top: 5px; padding-bottom: 5px; }
/* Budget tool: šířka buňky z šířky okna jako T-062, menu je teď 248 px (okno − 248 − 56 − 42 − 16) */
.bt-mrizka td .bt-in { width: clamp(3rem, calc((100vw - 362px - var(--bt-nazev) - var(--bt-rok)) / 12 - 6px), 5.5rem); }
@media (max-width: 860px) { .bt-mrizka td .bt-in { width: 5.6rem; } }
/* jedna šipka rozbalení (bod 28): details > summary i tlačítka sbalení řádků (.caret) stejnou CSS šipkou */
details:not(.rozsah):not(.legenda) > summary:not(.btn) { list-style: none; cursor: pointer; }
details:not(.rozsah):not(.legenda) > summary:not(.btn)::-webkit-details-marker { display: none; }
details:not(.rozsah):not(.legenda) > summary:not(.btn)::before, .caret::before {
  content: ""; display: inline-block; width: 6px; height: 6px; border: solid var(--sedy); border-width: 0 1.5px 1.5px 0;
  transform: rotate(-45deg); transition: transform .15s; margin: 0 9px 2px 1px; vertical-align: middle;
}
details[open]:not(.rozsah):not(.legenda) > summary:not(.btn)::before { transform: rotate(45deg); }
.caret { font-size: 0; }
.caret::before { transform: rotate(45deg); margin: 0 0 3px; border-color: currentColor; }
.caret[aria-expanded="false"]:not(.closed) { transform: rotate(-90deg); }
.report tr.sk.final .caret::before { border-color: var(--tmava-text); }
@media (min-width: 861px) { .menu-btn { display: none; } }  /* menu je na počítači vždy vidět (.btn výše přebíjel display: none) */
/* telefon (body 8, 25): lišta nelepí a má jeden řádek s nadpisem a zvonečkem; v Deníku jen datum, doklad, částka a text */
@media (max-width: 600px) {
  .top { position: static; gap: 6px 10px; padding-top: 8px; padding-bottom: 8px; }
  .top h1 { font-size: 20px; flex: 1 1 0; min-width: 0; }
  .crumb, .top .shrnuti, .obdobi .stitek { display: none; }
  .zvonecek { order: 1; }
  .obdobi { order: 2; }
  .denik [data-sl="Zdroj"], .denik [data-sl="MD"], .denik [data-sl="DAL"], .denik [data-sl="Firma"], .denik [data-sl="IČ"] { display: none; }
  .denik .card:has(> .tw) { padding-left: 12px; padding-right: 12px; }
  .denik .mrizka th, .denik .mrizka td { padding-left: 6px; padding-right: 6px; font-size: 12.5px; }
  .denik .mrizka col[data-sl="Datum"] { width: 78px; }
  .denik .mrizka col[data-sl="Číslo"] { width: 88px; }
  .denik .mrizka col[data-sl="Text"] { width: 70px; }
  .denik .mrizka col[data-sl="Částka"] { width: 88px; }
}
/* tisk (bod 2): hlavičky tabulek bez navy pozadí (prohlížeč pozadí netiskne, bílé písmo by zmizelo), tlačítka nad
   tabulkou pryč; nadpis a shrnutí černě jako dřív */
@media print {
  .cisla thead th, .report thead th, .report thead tr.grp th, .report thead th.name, .et-tab thead th,
  .bt .bt-mrizka thead th, .bt .bt-mrizka thead th.name { background: none !important; color: var(--text) !important; border-bottom: 1px solid var(--text); }
  .cisla thead th small, .report thead th small, .report thead th small.bez-dat, .report thead th small.rozsah, .bt-mrizka thead .jednotka { color: var(--sedy); }
  .nad-tabulkou .btn { display: none !important; }
  .top h1 { font-size: 16pt; color: black; }
  .shrnuti, .shrnuti .warn { color: black; }
  .content > .kv { box-shadow: none; border: 0; padding: 0; }
}
/* Oprava (vlastník 2026-10-23): obal s vlastním vodorovným posuvníkem (Deník, Adjustmenty, detail, malé tabulky Dashboardu)
   je v Safari pro lepivou hlavičku nejbližší posuvník i svisle; top: var(--lista) ji v něm posunul doprostřed řádků (Chrome
   lepí k oknu, proto se to v něm neukázalo). V takovém obalu hlavička nelepí, stojí nad tabulkou ve všech prohlížečích. */
.denik .tw thead, .adj .tw thead, .dt .tw thead, .db-cisla .tw thead,
.bt .tw.bt-preteka thead, html:not(.js) .bt .tw thead { position: static; }
.denik .tw thead th, .adj .tw thead th, .dt .tw thead th, .db-cisla .tw thead th,
.bt .tw.bt-preteka thead th, html:not(.js) .bt .tw thead th { top: auto; }  /* svisle nelepí, první sloupec dál drží vlevo */
/* Vlastník 2026-10-23: nenamapovaný účet v můstku světle červeně (chyba K01), levá linka červená */
.mustek-tab tr.nenamapovany > * { background: var(--bad-soft); }
.mustek-tab tr.nenamapovany > th { border-left-color: var(--bad); }

/* T-119 (V6): nález pravidla jako sbalitelný řádek (makra/nalezy.html) v Kontrolách dat, K vyřešení a na Dashboardu */
.nalezy-skupina { margin: 0 0 12px; }
.nalezy-skupina > summary { padding: 6px 0; font-weight: 600; color: var(--navy); }
.nalezy-skupina > summary .sub { font-weight: 400; }
.kv-pol { display: block; padding: 0; }
.nalez { border-bottom: 1px solid var(--border); }
.nalez > summary { display: flex; flex-wrap: wrap; gap: 4px 10px; align-items: baseline; padding: 8px 0; }
.nalez-zav { font-size: 12px; font-weight: 600; padding: 1px 6px; border: 1px solid var(--border-strong); border-radius: 4px; color: var(--text); }
.nalez-chyba .nalez-zav { color: var(--bad-text); border-color: var(--bad); background: var(--bad-soft); }
.nalez-varovani .nalez-zav { color: var(--warn); border-color: var(--warn); background: var(--warn-soft); }
.nalez-info .nalez-zav { border-color: var(--accent); background: var(--accent-soft); }
.nalez-ok .nalez-zav, .nalez-provereno .nalez-zav { color: var(--good-text); border-color: var(--good); background: var(--good-soft); }
.nalez-n { font-weight: 600; color: var(--text); }
.nalez-pocet { font-weight: 600; color: var(--sedy); }
.nalez-castka { color: var(--sedy); }
.nalez-kod { color: var(--muted); font-size: 12px; font-weight: 400; }
.nalez-telo { padding: 0 0 12px 12px; border-left: 2px solid var(--border); margin: 0 0 8px 4px; }
.nalez-telo p, .nalez-jak, .nalez-pol { margin: 6px 0; }
.nalez-akce { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.nalez-jak .kd-kroky, .nalez-pol ul { margin: 4px 0 0; padding-left: 20px; }
/* T-119 (V6): položka karty odchylek a chybových stavů je sbalitelná; mřížka řádku je v summary, ne v li */
.db-resit-seznam li.db-resit-pol { display: block; padding: 0; }
.db-resit-pol > details > summary { display: grid; grid-template-columns: auto 128px minmax(0, 1fr) auto; align-items: baseline; gap: 12px; padding: 8px 0; }  /* první sloupec šipka summary */
.db-resit-pol > details > .nalez-telo { margin-left: 140px; }
.db-neschvaleny { margin-left: 8px; color: var(--warn); border-color: var(--warn); background: var(--warn-soft); }
@media (max-width: 560px) {
  .db-resit-pol > details > summary { grid-template-columns: auto minmax(0, 1fr) auto; }
  .db-resit-pol > details > summary .db-resit-t { grid-column: 2 / -1; }
  .db-resit-pol > details > .nalez-telo { margin-left: 4px; }
}
/* T-121: hlavní reportovací období v bočním menu pod názvem firmy (barvy tmavého menu); na telefonu za tlačítkem Menu */
.menu-obdobi { display: grid; gap: 5px; padding: 6px 8px 10px; margin-bottom: 2px; border-bottom: 1px solid var(--side-hover); }
.menu-obdobi-k { margin: 0; font-size: 10.5px; font-weight: 700; letter-spacing: .09em; text-transform: uppercase; color: var(--side-muted); }
.menu-obdobi-k b { margin-left: 4px; font-size: 13px; letter-spacing: .02em; color: var(--tmava-text); }
.menu-obdobi-pole { display: flex; align-items: center; gap: 4px; }
.menu-obdobi select {
  min-height: 32px; padding: 4px 6px; border-radius: 8px; font-size: 13px; font-weight: 600;
  background: var(--side-hover); color: var(--text-svetly); border: 1px solid var(--side-muted);
}
.menu-obdobi select:hover { border-color: var(--text-svetly); }
.menu-obdobi select option { color: var(--text); background: var(--karta); }
.menu-obdobi #hl-mesic { flex: 1 1 auto; min-width: 0; }
.menu-obdobi .sipka {
  min-height: 32px; min-width: 28px; padding: 0 6px; justify-content: center; font-size: 17px; line-height: 1;
  text-decoration: none; color: var(--text-svetly); background: transparent; border: 1px solid var(--side-muted);
}
.menu-obdobi a.sipka:hover { background: var(--side-hover); }
.menu-obdobi span.sipka { opacity: .4; cursor: default; }  /* mimo rozsah roků */
.menu-obdobi :focus-visible { outline: 3px solid var(--side-accent); outline-offset: 1px; }
.menu-obdobi .btn.bez-js { justify-self: start; color: var(--text-svetly); border-color: var(--side-muted); background: transparent; }
/* T-121: pruh stránky bez měsíce: verze budgetu jako výběr, jiné období stránky jako štítek s odkazem na hlavní */
.obdobi { flex-wrap: wrap; row-gap: 6px; }
.obdobi .pruh-verze { flex-direction: row; align-items: center; gap: 6px; }
.obdobi .pruh-verze .lbl { white-space: nowrap; }
.obdobi .pruh-verze select { min-height: 34px; max-width: 24rem; }
.obdobi select.jina { border-color: var(--accent); color: var(--accent-text); }  /* T-078: jiná verze než ★ hlavní */
.obdobi .stitek.vlastni { white-space: nowrap; }
.obdobi .vlastni-zpet { font-size: 12.5px; color: var(--accent-text); white-space: nowrap; }
.obdobi .bez-js { min-height: 34px; }
.rozsah-panel .zobrazeni { display: grid; border-top: 1px solid var(--border); padding-top: 10px; }
@media (max-width: 600px) {
  .obdobi .stitek.vlastni { display: inline-block; }  /* jiné období stránky je vidět i na telefonu */
  .obdobi .pruh-verze select { max-width: calc(100vw - 150px); }
}
/* T-121: verze budgetu v detailu řádku (vedle přepínače srovnání) */
.dt-verze { display: flex; align-items: center; gap: 8px; max-width: 100%; min-width: 0; font-size: 13px; color: var(--sedy); white-space: nowrap; }
.dt-verze select { flex: 1 1 auto; min-width: 0; min-height: 34px; max-width: 24rem; background: var(--karta); border: 1px solid var(--hranice-ovl); font-weight: 600; }

/* Hlavní období v menu: tlačítko s měsícem a kalendář měsíců (seznamy jen bez JS) */
.menu-obdobi { position: relative; }
.menu-obdobi-pole { gap: 6px; }
html.js .menu-obdobi-k b { display: none; }
.menu-obdobi .obd-btn {
  flex: 1 1 auto; min-width: 0; min-height: 36px; display: flex; align-items: center; gap: 8px; padding: 0 12px;
  border-radius: 10px; border: 1px solid transparent; background: var(--side-hover); color: var(--text-svetly);
  font: inherit; font-size: 14px; font-weight: 600; cursor: pointer; white-space: nowrap;
}
.menu-obdobi .obd-btn svg { width: 16px; height: 16px; flex: none; stroke: currentColor; opacity: .75; }
.menu-obdobi .obd-btn span { overflow: hidden; text-overflow: ellipsis; }
.menu-obdobi .obd-btn:hover, .menu-obdobi .obd-btn[aria-expanded="true"] { border-color: var(--side-muted); }
.menu-obdobi .sipka { min-height: 36px; min-width: 32px; border-radius: 10px; border-color: transparent; }
.menu-obdobi a.sipka:hover { border-color: var(--side-muted); }
.obd-pop {
  position: absolute; left: 8px; right: 8px; top: calc(100% - 4px); z-index: 40; padding: 10px;
  background: var(--karta); color: var(--text); border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow-lg);
}
.obd-rok-h { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
.obd-rok-h b { font-size: 14px; }
.obd-r {
  min-width: 30px; min-height: 30px; border: 0; border-radius: 8px; background: transparent; color: var(--text);
  font-size: 17px; line-height: 1; cursor: pointer;
}
.obd-r:hover:not([disabled]) { background: var(--accent-soft); }
.obd-r[disabled] { opacity: .3; cursor: default; }
.obd-mesice { display: grid; grid-template-columns: repeat(3, 1fr); gap: 4px; }
.obd-m {
  display: flex; align-items: center; justify-content: center; min-height: 34px; border-radius: 8px;
  font-size: 13px; font-weight: 500; color: var(--text); text-decoration: none;
}
.obd-m:hover { background: var(--accent-soft); }
.obd-m.on { background: var(--accent-text); color: var(--tmava-text); font-weight: 700; }
.obd-pop :focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }

/* Vlastník 2026-10-23: tlačítko Zobrazení (jednotka) se neukazuje, výkazy jsou vždy v tis. Kč */
.obdobi details.rozsah { display: none; }
/* Výběr verze budgetu: tlačítko s oknem verzí (select jen bez JS) */
.verze-vyber { position: relative; min-width: 0; }
.verze-btn {
  display: flex; align-items: center; gap: 8px; max-width: 22rem; min-height: 36px; padding: 0 10px 0 14px;
  border: 1px solid var(--border-strong); border-radius: 10px; background: var(--karta); color: var(--text);
  font: inherit; font-size: 13.5px; font-weight: 600; cursor: pointer; box-shadow: var(--shadow);
}
.verze-btn span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.verze-btn svg { width: 16px; height: 16px; flex: none; stroke: currentColor; opacity: .6; transition: transform .15s; }
.verze-btn[aria-expanded="true"] svg { transform: rotate(180deg); }
.verze-btn:hover, .verze-btn[aria-expanded="true"] { border-color: var(--accent); }
.verze-btn.jina { border-color: var(--accent); color: var(--accent-text); background: var(--accent-soft); }
.verze-pop {
  position: absolute; right: 0; top: calc(100% + 6px); z-index: 60; min-width: 100%; width: max-content; max-width: min(30rem, calc(100vw - 32px));
  padding: 6px; display: grid; gap: 2px; background: var(--karta); border: 1px solid var(--border); border-radius: 12px; box-shadow: var(--shadow-lg);
}
.verze-o {
  display: block; width: 100%; padding: 8px 12px; border: 0; border-radius: 8px; background: transparent; color: var(--text);
  font: inherit; font-size: 13.5px; text-align: left; cursor: pointer; white-space: normal;
}
.verze-o:hover { background: var(--accent-soft); }
.verze-o.on { background: var(--accent-soft); color: var(--accent-text); font-weight: 700; }
.verze-pop :focus-visible, .verze-btn:focus-visible { outline: 2px solid var(--accent); outline-offset: 1px; }
@media (max-width: 600px) { .verze-btn { max-width: calc(100vw - 150px); } .verze-pop { right: auto; left: 0; } }
.obd-m.bez { color: var(--muted); opacity: .45; cursor: default; }
.obd-m.bez:hover { background: transparent; }

/* T-122: Měsíční vývoj Forecast EOY – měsíce budgetu (fe-b) jemně odlišené: tmavší hlavička s linkou barvy budgetu,
   buňky běžných řádků s tónem budgetu (mezisoučty a výsledek si nechají své pozadí); popisek skut./budget pod měsícem;
   barvy jen z proměnných */
.report thead th.fe-b { background: var(--navy); border-bottom: 3px solid var(--graf-bu); }
.report thead th small.fe-druh { display: block; font-size: 10px; font-weight: 400; letter-spacing: 0; text-transform: none; white-space: nowrap; color: var(--tmava-slaby); }
.report tbody tr:not(.sg):not(.sk) > td.fe-b { background: color-mix(in srgb, var(--graf-bu) 7%, var(--karta)); }
.report tbody tr:not(.sg):not(.sk):hover > td.fe-b { background: color-mix(in srgb, var(--graf-bu) 7%, var(--hl)); }
@media print {
  .report tbody tr:not(.sg):not(.sk) > td.fe-b { background: none; }
  .report thead th small.fe-druh { color: var(--sedy); }
}
/* T-123 (kontrolní kolo 2026-10-23): hlavička. Nadpis se štítkem období stránky vlevo (blok .top-hlava), ovládání
   vpravo na jednom řádku; nadpis se nezalomí po slovech (min. šířka), raději ovládání spadne pod něj. */
.top-hlava { flex: 1 1 auto; min-width: min(19rem, 100%); margin-right: auto; }
.top-hlava h1, .top h1:has(.ctxh) { margin: 0; flex: none; min-width: 0; }
.obd-stranky { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; margin: 4px 0 0; font-size: 12.5px; }
.obd-stranky .stitek.vlastni { white-space: nowrap; }
.obd-stranky .vlastni-zpet {
  color: var(--accent-text); font-weight: 600; text-decoration: none; white-space: nowrap; border-radius: 6px; padding: 1px 4px;
}
.obd-stranky .vlastni-zpet:hover { background: var(--accent-soft); }
.obd-stranky .vlastni-zpet::before { content: "← "; }
.obdobi .pruh-verze .lbl { align-self: center; line-height: 1; }
@media (max-width: 1365px) {
  .obdobi .pruh-verze .lbl { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
}
@media (max-width: 600px) {
  .top-hlava { flex: 1 1 0; min-width: 0; }
  .obd-stranky { margin-top: 2px; }
}
/* T-123 (nález 10): horní lišta neprůhledná (pod ní neprosvítají řádky); Účetní deník na počítači jako výkazy (F-007.D8):
   obal bez vlastního posuvníku (overflow: clip není posuvník, Safari ani Chrome hlavičku neposunou), široká tabulka
   roluje do strany se stránkou a hlavička lepí pod lištou; na telefonu zůstává obal s posuvem */
.top { background: var(--bg); backdrop-filter: none; }
@media (min-width: 861px) {
  .denik { contain: none; }
  .denik .tw { overflow: clip; max-width: none; min-width: 100%; width: fit-content; }
  .denik .card:has(> .tw) { width: fit-content; min-width: 100%; }
  .denik .tw thead { position: sticky; top: var(--lista); z-index: 3; }
  .denik .tw thead th { top: auto; }
}
/* T-123 (nález 11): Mapovací můstek – odkaz do deníku pod názvem menším písmem; na telefonu bez sloupce Zdroj, ať je
   Pozice (účel stránky) blíž */
.mustek-tab a.radku { display: block; font-size: 11.5px; margin-top: 1px; }
/* T-123 (nález 12): Budget – název verze v tabulce verzí na telefonu na nejvýš dva řádky */
@media (max-width: 600px) {
  .mustek-tab .sl-zdroj { display: none; }
  .bt-verze tbody th[scope="row"] { min-width: 12rem; white-space: normal; }
}
/* T-123 (nález 15): patička menu (uživatel, Odhlásit) je vidět i při nízkém okně – lepí dole v rolujícím menu,
   neprůhledná barvou konce přechodu menu */
@media (min-width: 861px) {
  .side-foot { position: sticky; bottom: 0; z-index: 1; background: color-mix(in srgb, var(--pozadi) 93%, var(--tmava-text)); }
}
/* T-123 (nález 19): Zobrazit všech pod otočenou výsledovkou jako tlačítko s odstupem od tabulky */
.vse-odkaz { margin-top: 12px; }
