.ui-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--ui-space-2);
  padding: var(--ui-space-2) var(--ui-space-4);
  border-radius: var(--ui-radius-1);
  border: var(--ui-border-width-1) solid transparent;
  font-size: var(--ui-font-size-sm);
  font-weight: var(--ui-font-weight-semibold);
  line-height: 1.2;
  cursor: pointer;
  text-decoration: none;
  transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.ui-btn .material-icons {
  font-size: 1.15rem;
  line-height: 1;
}

/* Primary i secondary mají výchozí vzhled Fluent 2 (bílé s šedým rámečkem), plné modré se nepoužívá. */
.ui-btn--primary,
.ui-btn--secondary {
  background: var(--ui-color-neutral-0);
  color: var(--ui-color-text);
  border-color: var(--ui-color-border-silna);
}

.ui-btn--primary:hover,
.ui-btn--secondary:hover {
  background: var(--ui-color-neutral-100);
  border-color: var(--ui-color-border-silna-hover);
}

.ui-btn--danger {
  background: var(--ui-color-danger);
  color: var(--ui-color-neutral-0);
}

.ui-btn--danger:hover {
  background: var(--ui-color-danger-hover);
}

.ui-btn.is-loading {
  opacity: 0.7;
  cursor: wait;
}

.ui-btn:disabled,
.ui-btn[aria-disabled="true"] {
  opacity: 0.5;
  cursor: not-allowed;
}

.ui-action-bar {
  display: flex;
  justify-content: flex-end;
  gap: var(--ui-space-2);
  margin-top: var(--ui-space-4);
  flex-wrap: wrap;
  max-width: var(--ui-form-max);
}

/* === Seznamy (PATTERN_list_view) === */
.ks-list-head { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-4); flex-wrap: wrap; margin-bottom: var(--ui-space-4); }
.ks-list-head h1 { font-size: var(--ui-font-size-3xl); font-weight: var(--ui-font-weight-semibold); line-height: var(--ui-line-height-tight); letter-spacing: var(--ui-tracking-tight); color: var(--ui-color-text); margin: 0; }
.ks-list-actions { display: flex; gap: var(--ui-space-2); flex-wrap: wrap; }
/* Filtry */
.ks-table-wrap { overflow-x: auto; background: var(--ui-color-neutral-0); border: 0; border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-2); }
.ks-table { width: 100%; border-collapse: collapse; }
.ks-table th, .ks-table td { padding: var(--ui-space-3) var(--ui-space-4); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); text-align: left; font-size: var(--ui-font-size-sm); white-space: nowrap; }
.ks-table thead th { background: var(--ui-color-neutral-0); font-weight: var(--ui-font-weight-semibold); font-size: var(--ui-font-size-sm); color: var(--ui-color-text); }
.ks-table thead th a { color: var(--ui-color-text); text-decoration: none; }
.ks-table thead th[data-sloupec] { position: relative; }
.ks-sirka-uchyt { position: absolute; top: 0; right: 0; width: var(--ui-space-3); height: 100%; cursor: col-resize; }
.ks-sirka-uchyt::before { content: ""; position: absolute; top: 25%; right: var(--ui-space-1); height: 50%; border-left: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-sirka-uchyt:hover::before, .ks-sirka-uchyt:focus-visible::before { border-color: var(--ui-color-primary); }
.ks-sirka-uchyt:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
body.je-tazeni-sloupce { cursor: col-resize; user-select: none; }
.ks-table tbody tr:last-child td { border-bottom: 0; }
.ks-table tbody tr:hover { background: var(--ui-color-neutral-50); }
.ks-table tbody tr[data-odkaz] { cursor: pointer; }
.ks-table .ks-num { text-align: right; }
.ks-empty { padding: var(--ui-space-4); color: var(--ui-color-text-muted); text-align: center; }
.ks-pagination { display: flex; gap: var(--ui-space-2); align-items: center; justify-content: center; margin-top: var(--ui-space-4); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }
.ks-group-title { font-size: var(--ui-font-size-lg); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); margin: var(--ui-space-4) 0 var(--ui-space-2); }

/* Šířka stránky */
.ks-container { width: 100%; max-width: var(--ui-container-max); margin-inline: auto; padding-inline: var(--ui-container-pad); }

/* Jediná mezera mezi sekcemi stránky. */
.ks-form-sloupec > :last-child, main .ks-container > :last-child { margin-bottom: 0; }

/* Formulář */

.ks-form-rozvrh { display: grid; grid-template-columns: 14rem minmax(0, var(--ui-form-max)); gap: var(--ui-space-5); align-items: start; }
.ks-form-rozvrh .ui-action-bar { margin-left: calc(14rem + var(--ui-space-5)); }
/* Formulář je jedna karta, sekce v ní dělí jen čára. */
.ks-form-sloupec { display: flex; flex-direction: column; gap: 0; min-width: 0; max-width: var(--ui-form-max); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); }
.ks-form-sloupec > .ks-sekce { background: none; border: 0; border-radius: 0; box-shadow: none; }
/* Formulář na stránce s kartami má šířku karet. */
main .ks-container:has(.ks-card) .ks-form-sloupec, main .ks-container:has(.ks-card) .ui-action-bar { max-width: none; }
.ks-form-sloupec > .ks-sekce + .ks-sekce { border-top: var(--ui-border-width-1) solid var(--ui-color-border); }

/* Rail sekcí */
.ks-rail { position: sticky; top: var(--ui-space-4); display: flex; flex-direction: column; gap: 0.125rem; padding-left: var(--ui-space-2); border-left: 0.125rem solid var(--ui-color-border); }
.ks-rail__polozka { padding: 0.4rem var(--ui-space-3); border-radius: var(--ui-radius-1); color: var(--ui-color-text-muted); text-decoration: none; font-size: var(--ui-font-size-sm); line-height: 1.3; }
.ks-rail__polozka:hover { background: var(--ui-color-neutral-100); color: var(--ui-color-text); }
.ks-rail__polozka.is-active { background: var(--ui-color-neutral-100); color: var(--ui-color-primary); font-weight: var(--ui-font-weight-semibold); }
.ks-rail__polozka--chyba { color: var(--ui-color-danger); }

/* Sekce */
.ks-sekce { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); scroll-margin-top: var(--ui-space-4); }
.ks-sekce__hlava { display: flex; align-items: center; gap: var(--ui-space-3); padding: var(--ui-card-pad) var(--ui-card-pad) 0; }
.ks-sekce__nadpis { margin: 0; font-size: var(--ui-font-size-lg); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); letter-spacing: 0; text-transform: none; }
.ks-sekce__znacka-chyby { font-size: var(--ui-font-size-sm); color: var(--ui-color-danger); font-weight: var(--ui-font-weight-semibold); }
.ks-sekce__telo { padding: var(--ui-space-4) var(--ui-card-pad) var(--ui-card-pad); display: flex; flex-direction: column; gap: var(--ui-space-3); container-type: inline-size; }
.ks-sekce--sbalitelna > .ks-sekce__hlava { cursor: pointer; list-style: none; border-bottom: 0; }
.ks-sekce--sbalitelna > .ks-sekce__hlava::-webkit-details-marker { display: none; }
.ks-sekce--sbalitelna > .ks-sekce__hlava::before { content: ""; width: 0.5rem; height: 0.5rem; flex: none; border-right: 0.125rem solid var(--ui-color-text-subtle); border-bottom: 0.125rem solid var(--ui-color-text-subtle); transform: rotate(-45deg); transition: transform 0.15s; }
.ks-sekce--sbalitelna[open] > .ks-sekce__hlava::before { transform: rotate(45deg); }
.ks-sekce--sbalitelna > .ks-sekce__hlava { padding-bottom: var(--ui-space-5); }
.ks-sekce--sbalitelna[open] > .ks-sekce__hlava { padding-bottom: 0; }

/* Rozložení polí */
.ks-form-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--ui-form-col-gap); row-gap: var(--ui-form-row-gap); align-items: start; }
.ks-form-grid > * { grid-column: span 4; }
.ks-f-3 { grid-column: span 3; }
.ks-f-4 { grid-column: span 4; }
.ks-f-6 { grid-column: span 6; }
.ks-f-8 { grid-column: span 8; }
.ks-f-12 { grid-column: span 12; }
@media (max-width: 75rem) {
  .ks-f-3 { grid-column: span 4; }
  .ks-f-4, .ks-f-6 { grid-column: span 6; }
  .ks-f-8 { grid-column: span 12; }
}
@media (max-width: 48rem) {
  .ks-form-grid { grid-template-columns: 1fr; }
  .ks-f-3, .ks-f-4, .ks-f-6, .ks-f-8, .ks-f-12 { grid-column: 1 / -1; }
  .ks-form-rozvrh { grid-template-columns: 1fr; }
  .ks-rail { position: static; flex-direction: row; flex-wrap: wrap; border-left: 0; padding-left: 0; }
}

/* Pole */
.ks-field { min-width: 0; }
.ks-field[hidden] { display: none; }
/* Mřížka formuláře po čtvrtinách: krátké pole 3, běžné 6, dlouhé 12 sloupců; pole vyplní svůj sloupec. */
.ks-form-grid > .ks-f-3 { grid-column: span 3; }
.ks-form-grid > .ks-f-6 { grid-column: span 6; }
.ks-form-grid > .ks-f-12 { grid-column: span 12; }
@container (max-width: 44rem) {
  .ks-form-grid > .ks-f-3 { grid-column: span 6; }
  .ks-form-grid > .ks-f-6 { grid-column: span 12; }
}
@container (max-width: 28rem) {
  .ks-form-grid > .ks-f-3 { grid-column: span 12; }
}
/* Skupina zaškrtávátek vedle sebe. */
.ks-form-grid .ks-field > div:has(> div > label > input[type="checkbox"]) { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: var(--ui-space-1) var(--ui-space-4); }
.ks-field__label { display: flex; align-items: center; gap: 0.3rem; margin-bottom: var(--ui-space-1); }
.ks-field__povinne { color: var(--ui-color-danger); font-size: 1.1em; line-height: 1; }
.ks-field__chyba { margin-top: 0.25rem; font-size: var(--ui-font-size-sm); color: var(--ui-color-danger); }
.ks-field--chyba input, .ks-field--chyba select, .ks-field--chyba textarea { border-color: var(--ui-color-danger); }
/* Textarea */
.ks-field textarea { height: 5.5rem; min-height: 5.5rem; resize: vertical; }
/* Inline zaškrtávátko */
.ks-field--inline-check { display: flex; align-items: center; gap: var(--ui-space-2); min-height: 2.375rem; margin-top: 1.55rem; }
.ks-field--inline-check input { margin: 0; float: none; }
.ks-field--inline-check label { margin: 0; font-size: var(--ui-font-size-sm); }

/* Nápověda */
.ks-napoveda { position: relative; display: inline-flex; }
.ks-napoveda__spoust { display: inline-flex; padding: 0; border: 0; background: none; color: var(--ui-color-text-muted); cursor: help; line-height: 1; }
.ks-napoveda__spoust:hover, .ks-napoveda__spoust:focus-visible { color: var(--ui-color-primary); }
.ks-napoveda__spoust .material-icons { font-size: 1.05rem; }
.ks-napoveda__bublina { display: none; position: absolute; bottom: calc(100% + 0.4rem); left: 50%; transform: translateX(-50%); z-index: 30; width: max-content; max-width: min(18rem, calc(100vw - 3rem)); padding: var(--ui-space-2) var(--ui-space-3); border-radius: var(--ui-radius-1); background: var(--ui-color-text); color: var(--ui-color-neutral-0); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-regular); line-height: 1.35; white-space: normal; opacity: 0; visibility: hidden; transition: opacity 0.12s; }
/* Skrytá bublina se nevykresluje, jinak by roztahovala stránku u pole na kraji. */
.ks-napoveda:hover .ks-napoveda__bublina, .ks-napoveda:focus-within .ks-napoveda__bublina { display: block; opacity: 1; visibility: visible; }

/* Skupina zaškrtávátek */
.ks-prepinace { display: flex; flex-wrap: wrap; gap: var(--ui-space-3) var(--ui-space-5); }
.ks-prepinac { display: flex; align-items: center; gap: var(--ui-space-2); }
.ks-prepinac input { margin: 0; float: none; }
.ks-prepinac label { margin: 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text); }

/* Pole v modálu: rozložení jako ve formuláři, bez stropu na šířku vstupu */
.ks-modal-fields .form-control, .ks-modal-fields .form-select { max-width: none; }
.ks-modal-fields + .ks-prepinace { margin-top: var(--ui-space-4); }

/* Číselník s + Nový */
.ks-pole-prepinac { margin-top: var(--ui-space-2); }
.ks-select-row { display: flex; align-items: stretch; }
.ks-select-row select, .ks-select-row .catalog-autocomplete { order: 1; flex: 1; min-width: 0; }
.ks-select-row select, .ks-select-row .catalog-input { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.ks-select-row .ks-add-btn { order: 2; margin-left: -0.0625rem; border-top-left-radius: 0; border-bottom-left-radius: 0; }
/* Pole s tlačítkem „+ Nový" zabere celou buňku, názvy institucí bývají dlouhé. */
.ks-select-row .catalog-autocomplete, .ks-select-row .catalog-input, .ks-select-row .form-select { max-width: none; }

.ks-detail-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--ui-form-col-gap); row-gap: var(--ui-space-4); }
.ks-detail-grid > * { grid-column: span 4; }
/* Výchozí span stojí za .ks-f-*, proto se šířky .ks-f-* v mřížce detailu opakují. */
.ks-detail-grid > .ks-f-6 { grid-column: span 6; }
.ks-detail-grid > .ks-f-8 { grid-column: span 8; }
.ks-detail-grid > .ks-f-12 { grid-column: span 12; }
.ks-udaj { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.ks-udaj__label { font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-udaj__hodnota { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); overflow-wrap: anywhere; }
.ks-udaj__hodnota--prazdna { color: var(--ui-color-text-muted); font-weight: var(--ui-font-weight-regular); font-style: italic; }
@media (max-width: 75rem) { .ks-detail-grid > * { grid-column: span 6; } }
@media (max-width: 48rem) { .ks-detail-grid { grid-template-columns: 1fr; } .ks-detail-grid > * { grid-column: 1 / -1; } }

/* Souhrn chyb nad formulářem */
.ks-chyby-souhrn { margin-bottom: var(--ui-space-4); padding: var(--ui-space-3) var(--ui-space-4); border: var(--ui-border-width-1) solid var(--ui-color-danger); border-left-width: 0.25rem; border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-0); }
.ks-chyby-souhrn__nadpis { margin: 0 0 var(--ui-space-2); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-danger); }
.ks-chyby-souhrn ul { margin: 0; padding-left: var(--ui-space-4); font-size: var(--ui-font-size-sm); }

/* Záložky */
.tabs { display: flex; flex-wrap: wrap; gap: var(--ui-space-1); list-style: none; padding: 0; margin: 0 0 var(--ui-space-4); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.tabs .tab { margin: 0; }
.tabs .tab a { display: block; padding: var(--ui-space-2) var(--ui-space-3); color: var(--ui-color-text-muted); text-decoration: none; border-bottom: 0.125rem solid transparent; cursor: pointer; }
.tabs .tab a:hover { color: var(--ui-color-text); }
.tabs .tab a.active { color: var(--ui-color-primary); border-bottom-color: var(--ui-color-primary); font-weight: var(--ui-font-weight-semibold); }
.ks-tab-section { padding-top: var(--ui-space-3); }
/* Karty na záložce pod sebou s mezerou; oddíly od sebe dál než karty uvnitř. */
.ks-tab-section > * + * { margin-top: var(--ui-stack-gap); }
.ks-oddil > * + * { margin-top: var(--ui-space-4); }
.ks-tab-section > .ks-oddil + .ks-oddil { margin-top: var(--ui-space-7); }
.ks-oddil__nadpis { margin: 0; padding-bottom: var(--ui-space-2); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); font-size: var(--ui-font-size-xl); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); }
.ks-tab-section[hidden] { display: none; }
.ks-tab-error { display: inline-block; min-width: 1.2rem; text-align: center; color: var(--ui-color-neutral-0); background: var(--ui-color-danger); border-radius: var(--ui-radius-2); font-weight: var(--ui-font-weight-semibold); }

/* Lepicí lišta akcí */
.ks-form--rail { padding-bottom: 5rem; }
.ks-lista-akci { position: fixed; left: 0; right: 0; bottom: 0; z-index: 40; background: var(--ui-color-neutral-0); border-top: var(--ui-border-width-1) solid var(--ui-color-border); box-shadow: var(--ui-shadow-lista); }
/* Lišta začíná za postranním panelem, aby nepřekrývala jeho patu. */
body.ks-app:has(.ks-sidebar) .ks-lista-akci { left: var(--ui-sidebar-sirka); }
body.ks-app.je-sbaleny .ks-lista-akci { left: var(--ui-sidebar-sbaleny); }
.ks-lista-akci__obsah { display: flex; justify-content: flex-end; gap: var(--ui-space-2); padding-top: var(--ui-space-3); padding-bottom: var(--ui-space-3); }

.ks-detail-card { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-4) var(--ui-space-5, var(--ui-space-4)); margin-bottom: var(--ui-space-4); }

.ks-dl { display: grid; grid-template-columns: 13rem 1fr; column-gap: var(--ui-space-4); margin: 0; }
.ks-dl dt { color: var(--ui-color-text-muted); padding: var(--ui-space-2) 0; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-dl dd { margin: 0; color: var(--ui-color-text); padding: var(--ui-space-2) 0; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-dl dt:last-of-type, .ks-dl dd:last-of-type { border-bottom: 0; }
@media (min-width: 60rem) {
  .ks-dl { grid-template-columns: 13rem minmax(8rem, 1fr) 13rem minmax(8rem, 1fr); column-gap: var(--ui-space-5, var(--ui-space-4)); }
  /* Dlouhá pole přes celou šířku (poznámka, plný název) označ třídou ks-dl__full na <dd>. */
  .ks-dl dd.ks-dl__full { grid-column: 2 / -1; }
}
.ks-inline-form { display: inline-block; margin-left: var(--ui-space-2); }
.ks-subnav { display: flex; gap: var(--ui-space-2); flex-wrap: wrap; margin-bottom: var(--ui-space-4); }
.ks-table .ks-flag { text-align: center; }
.ks-flag-on { color: var(--ui-color-primary); vertical-align: middle; }
.ks-table .ks-num .material-icons.tiny { vertical-align: middle; color: var(--ui-color-text-muted); }

/* === Úvodní rozcestník (PATTERN_home_menu_card) === */
.ks-home { width: 100%; }
.ks-home h1 { font-size: var(--ui-font-size-3xl); font-weight: var(--ui-font-weight-semibold); line-height: var(--ui-line-height-tight); letter-spacing: var(--ui-tracking-tight); margin: 0 0 var(--ui-space-1); color: var(--ui-color-text); }
.menu-card-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--ui-space-4); }
.menu-card { display: block; min-height: 4.5rem; background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-3) var(--ui-space-4); text-decoration: none; color: inherit; }
.menu-card:hover { background: var(--ui-color-neutral-50); }
.menu-card:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.menu-card-head { display: flex; align-items: center; gap: var(--ui-space-2); }
.menu-card-icon { display: inline-flex; align-items: center; flex: none; color: var(--ui-color-text-muted); }
.menu-card-title { display: block; margin: 0; font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-semibold); line-height: 1.25; color: var(--ui-color-text); }
.menu-card-desc { margin: var(--ui-space-1) 0 0; color: var(--ui-color-text-muted); line-height: 1.4; font-size: var(--ui-font-size-xs); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* === Drobečková navigace (PATTERN_breadcrumbs) === */
.ks-breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-2); margin-bottom: var(--ui-space-4); font-size: var(--ui-font-size-sm); }
.ks-breadcrumbs__link { color: var(--ui-color-text-muted); text-decoration: none; }
.ks-breadcrumbs__link:hover { color: var(--ui-color-primary); text-decoration: underline; }
.ks-breadcrumbs__sep { color: var(--ui-color-text-muted); font-size: 1.1rem; line-height: 1; }
.ks-breadcrumbs__current { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }

/* === Statové dlaždice detailu (PATTERN_stat_tiles) === */
.ks-detail-overview { margin-bottom: var(--ui-space-4); }
.ks-meta-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(14rem, 1fr)); gap: var(--ui-space-3) var(--ui-space-4); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-4); margin-bottom: var(--ui-space-3); }

.ks-meta-item { display: flex; flex-direction: column; gap: var(--ui-space-1); }
.ks-meta-item--wide { grid-column: span 2; }
.ks-meta-item__label { font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-meta-item__value { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
.ks-stat-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: var(--ui-space-3); margin-bottom: var(--ui-space-4); }
.ks-stat-tile { display: flex; flex-direction: column; gap: var(--ui-space-1); padding: var(--ui-space-3) var(--ui-space-4); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); }
.ks-stat-tile__label { font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-stat-tile__value { font-size: var(--ui-font-size-2xl); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); font-variant-numeric: tabular-nums; }
.ks-stat-tile__value.is-muted { color: var(--ui-color-text-muted); }

/* === Budget bar (rozpočet faktury: rozděleno / zbývá) === */
.ks-budget-bar { margin-bottom: var(--ui-space-4); padding: var(--ui-space-3) var(--ui-space-4); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); }
.ks-budget-bar__summary { display: flex; flex-wrap: wrap; gap: var(--ui-space-1) var(--ui-space-3); align-items: baseline; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); margin-bottom: var(--ui-space-2); }
.ks-budget-bar__metric { color: var(--ui-color-text); }
.ks-budget-bar__metric strong { font-weight: var(--ui-font-weight-semibold); }
.ks-budget-bar__rest { font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); }
.ks-budget-bar__track { height: 0.5rem; background: var(--ui-color-neutral-100); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-pill); overflow: hidden; }
.ks-budget-bar__fill { height: 100%; width: 0; background: var(--ui-color-primary); border-radius: var(--ui-radius-pill); transition: width 0.15s ease; }
.ks-budget-bar.is-full .ks-budget-bar__fill { background: var(--ui-color-success); }
.ks-budget-bar.is-over .ks-budget-bar__fill { background: var(--ui-color-danger); }
.ks-budget-bar.is-full .ks-budget-bar__rest { color: var(--ui-color-success); }
.ks-budget-bar.is-over .ks-budget-bar__rest { color: var(--ui-color-danger); }
.ks-budget-bar__warn { display: none; margin-top: var(--ui-space-2); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-danger); }
.ks-budget-bar.is-over .ks-budget-bar__warn { display: block; }

/* === Badge stavu (hlavičky detailů) === */
.ks-badge { display: inline-block; padding: 0 var(--ui-space-3); line-height: 1.45; border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-100); border: var(--ui-border-width-1) solid var(--ui-color-border); color: var(--ui-color-text); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-semibold); vertical-align: middle; }

/* Primitivy */

body.ks-app {
  background: var(--ui-color-page); color: var(--ui-color-text);
  font-size: var(--ui-font-size-md); line-height: var(--ui-line-height);
  min-height: 100dvh;
  display: grid;
  grid-template-columns: var(--ui-sidebar-sirka) minmax(0, 1fr);
  grid-template-rows: 1fr auto;
  grid-template-areas: "menu obsah" "menu pata";
}
body.ks-app.je-sbaleny { grid-template-columns: var(--ui-sidebar-sbaleny) minmax(0, 1fr); }
/* Veřejná stránka (bez přihlášení) nemá sidebar, takže ani sloupec pro něj. */
body.ks-app:not(:has(.ks-sidebar)) { grid-template-columns: minmax(0, 1fr); grid-template-areas: "obsah" "pata"; }
body.ks-app > main { grid-area: obsah; min-width: 0; padding-block: var(--ui-space-6); }
body.ks-app > .ks-footer { grid-area: pata; min-width: 0; }

/* --- Sidebar (Fluent Nav) --- */
.ks-sidebar {
  grid-area: menu; position: sticky; top: 0; align-self: start;
  display: flex; flex-direction: column; gap: 0.125rem;
  height: 100dvh; padding: var(--ui-space-3) var(--ui-space-1) var(--ui-space-3) 0.625rem;
  background: var(--ks-panel-pozadi); color: var(--ui-color-text);
  overflow-y: auto; overscroll-behavior: contain;
}
.ks-sidebar__hlava { display: flex; flex-direction: column; gap: var(--ui-space-1); padding: var(--ui-space-1) var(--ui-space-3) var(--ui-space-3) 0.625rem; }
.ks-sidebar__brand { display: flex; align-items: center; gap: var(--ui-space-3); min-width: 0; color: var(--ui-color-text); text-decoration: none; font-weight: var(--ui-font-weight-semibold); }
.ks-sidebar__logo { width: 2.5rem; height: 2.5rem; flex: none; border-radius: var(--ui-radius-1); }
.ks-sidebar__logo--organizace { width: auto; max-width: 9rem; object-fit: contain; object-position: left center; }
.ks-sidebar__nazev { font-size: var(--ui-font-size-lg); line-height: 1.375; }
.ks-sidebar__org { display: block; font-size: var(--ui-font-size-md); color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); letter-spacing: normal; }
.ks-sidebar__hledat {
  display: flex; align-items: center; gap: var(--ui-space-3); width: 100%;
  height: var(--ui-control-height); margin-bottom: var(--ui-space-1); padding: 0 var(--ui-space-3);
  border: var(--ui-border-width-1) solid var(--ui-color-border-silna); border-bottom-color: var(--ui-color-text-muted);
  border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-0); color: var(--ui-color-text-muted);
  font-size: var(--ui-font-size-md); cursor: pointer; text-align: left;
}
.ks-sidebar__hledat kbd { margin-left: auto; padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-100); font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); font-family: inherit; box-shadow: none; }
.ks-sidebar__hledat:hover { border-color: var(--ui-color-border-silna-hover); border-bottom-color: var(--ui-color-text-muted); color: var(--ui-color-text); }
.ks-sidebar__nav { display: flex; flex-direction: column; gap: 0; }
.ks-rozsah { display: inline-flex; gap: 0.125rem; padding: 0.1875rem; border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); background: var(--ui-color-neutral-100); }
.ks-rozsah__volba { padding: var(--ui-space-1) var(--ui-space-4); border-radius: var(--ui-radius-1); font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); text-decoration: none; }
.ks-rozsah__volba:hover { color: var(--ui-color-text); }
.ks-rozsah__volba.je-aktivni { color: var(--ui-color-primary); background: var(--ui-color-neutral-0); box-shadow: var(--ui-shadow-1); font-weight: var(--ui-font-weight-semibold); }
.ks-rozsah__volba:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-sidebar__odkaz { display: block; margin: 0 0 var(--ui-space-3); padding: 0 0.625rem; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); text-decoration: none; }
.ks-sidebar__odkaz:hover { color: var(--ui-color-text); text-decoration: underline; }
.je-sbaleny .ks-sidebar__odkaz { display: none; }
/* Rozbalovací skupina jako položka menu s ikonou a šipkou, položky v ní odsazené pod text bez ikon. */
.ks-sidebar__skupina-obal { display: flex; flex-direction: column; }
.ks-sidebar__skupina-obal > summary { list-style: none; }
.ks-sidebar__skupina-obal > summary::-webkit-details-marker { display: none; }
.ks-sidebar__kategorie .ks-sidebar__sipka { width: 1rem; height: 1rem; margin-left: auto; color: var(--ui-color-text-muted); transition: transform 0.15s; }
.ks-sidebar__skupina-obal[open] > summary .ks-sidebar__sipka { transform: rotate(90deg); }
.ks-sidebar__polozka.ks-sidebar__polozka--pod { padding-left: calc(0.625rem + 1.125rem + var(--ui-space-2)); }
.ks-sidebar__polozka--pod .ks-ikona { display: none; }
.je-sbaleny .ks-sidebar__kategorie { display: none; }
.je-sbaleny .ks-sidebar__polozka.ks-sidebar__polozka--pod { padding-left: 0; }
.je-sbaleny .ks-sidebar__polozka--pod .ks-ikona { display: block; }
.ks-sidebar__pata { margin-top: auto; display: flex; flex-direction: column; gap: 0; padding-top: var(--ui-space-1); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-sidebar__odhlasit { margin: 0; }
.ks-sidebar__polozka, .ks-sidebar__sbalit {
  position: relative; display: flex; align-items: center; gap: var(--ui-space-2); width: 100%;
  min-height: var(--ui-nav-polozka-h); padding: 0 var(--ui-space-3) 0 0.625rem;
  border: 0; border-radius: var(--ui-radius-1); background: none;
  color: var(--ks-panel-text); font-size: var(--ui-font-size-sm); text-decoration: none;
  text-align: left; cursor: pointer;
}
.ks-sidebar__polozka .ks-ikona, .ks-sidebar__sbalit .ks-ikona { width: 1.125rem; height: 1.125rem; color: currentColor; }
.ks-sidebar__polozka:hover, .ks-sidebar__sbalit:hover { background: var(--ks-panel-najeti); color: var(--ui-color-text); }
.ks-sidebar__polozka:active, .ks-sidebar__sbalit:active { background: var(--ks-panel-stisk); }
.ks-sidebar__polozka:focus-visible, .ks-sidebar__sbalit:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-sidebar__polozka.je-aktivni { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
/* Indikátor vybrané položky 4 × 20 px v mezeře mezi okrajem panelu a položkou. */
.ks-sidebar__polozka.je-aktivni::after { content: ""; position: absolute; left: calc(-1 * var(--ui-space-2)); top: 50%; width: 0.25rem; height: 1.25rem; margin-top: -0.625rem; border-radius: var(--ui-radius-pill); background: var(--ui-color-primary); }
.ks-sidebar__sbalit .ks-ikona { transition: transform var(--ui-transition); transform: rotate(180deg); }
.je-sbaleny .ks-sidebar__sbalit .ks-ikona { transform: none; }
.ks-sidebar-spoust { display: none; }

/* Sbalený sidebar: zůstanou ikony. */
.je-sbaleny .ks-sidebar { padding-inline: var(--ui-space-2); }
.je-sbaleny .ks-sidebar__hlava { padding-inline: 0; }
.je-sbaleny .ks-sidebar__polozka span, .je-sbaleny .ks-sidebar__sbalit span,
.je-sbaleny .ks-sidebar__hledat span, .je-sbaleny .ks-sidebar__hledat kbd,
.je-sbaleny .ks-sidebar__nazev, .je-sbaleny .ks-sidebar__org { display: none; }
.je-sbaleny .ks-sidebar__logo--organizace { width: 2.5rem; object-position: center; }
.je-sbaleny .ks-sidebar__polozka, .je-sbaleny .ks-sidebar__sbalit,
.je-sbaleny .ks-sidebar__hledat { justify-content: center; padding-inline: 0; }

@media (max-width: 63rem) {
  body.ks-app { grid-template-columns: minmax(0, 1fr); grid-template-areas: "obsah" "pata"; }
  .ks-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 60; width: var(--ui-sidebar-sirka); transform: translateX(-100%); transition: transform var(--ui-transition); padding-top: var(--ui-space-7); }
  body.je-otevrene-menu .ks-sidebar { transform: none; box-shadow: var(--ui-shadow-3); }
  .ks-sidebar-spoust { display: inline-flex; align-items: center; justify-content: center; position: fixed; top: var(--ui-space-3); left: var(--ui-space-3); z-index: 61; width: 2.25rem; height: 2.25rem; border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-0); color: var(--ui-color-text); }
  body.ks-app > main { padding-top: var(--ui-space-7); }
  body.ks-app .ks-lista-akci { left: 0; }
}

/* --- Paleta příkazů (Ctrl+K) --- */
.ks-paleta { position: fixed; inset: 0; z-index: 80; display: flex; justify-content: center; padding-top: 12vh; background: rgba(22, 32, 46, 0.35); }
.ks-paleta[hidden] { display: none; }
.ks-paleta__panel { width: min(36rem, calc(100vw - 2rem)); max-height: 60vh; display: flex; flex-direction: column; background: var(--ui-color-neutral-0); border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-3); overflow: hidden; }
.ks-paleta__vstup { height: 3rem; padding: 0 var(--ui-space-5); border: 0; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); font-size: var(--ui-font-size-lg); color: var(--ui-color-text); }
.ks-paleta__vstup:focus { outline: none; }
.ks-paleta__vysledky { list-style: none; margin: 0; padding: var(--ui-space-2); overflow-y: auto; }
.ks-paleta__polozka { display: flex; align-items: baseline; gap: var(--ui-space-3); padding: var(--ui-space-2) var(--ui-space-3); border-radius: var(--ui-radius-1); cursor: pointer; }
.ks-paleta__polozka.je-vybrana { background: var(--ui-color-primary-soft); }
.ks-paleta__skupina { font-size: var(--ui-font-size-xs); text-transform: uppercase; letter-spacing: var(--ui-tracking-caps); color: var(--ui-color-text-muted); min-width: 4.5rem; }
.ks-paleta__text { font-weight: var(--ui-font-weight-semibold); }
.ks-paleta__popis { color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ks-paleta__napoveda { margin: 0; padding: var(--ui-space-2) var(--ui-space-5); border-top: var(--ui-border-width-1) solid var(--ui-color-border); font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }

/* Výměna výsledků: obsah se ztlumí, dokud nedorazí nový. */
#ks-vysledky.htmx-request { opacity: 0.5; transition: opacity var(--ui-transition); }

.ks-poznamka-souctu { margin: var(--ui-space-3) 0 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }

.ks-podpis { display: inline-block; max-width: 100%; }
.ks-podpis[open] { display: block; }
.ks-podpis > summary { list-style: none; cursor: pointer; }
.ks-podpis > summary::-webkit-details-marker { display: none; }
.ks-podpis__form { display: flex; flex-wrap: wrap; align-items: end; gap: var(--ui-space-2); margin-top: var(--ui-space-2); }
.ks-podpis__form .form-control { width: 9rem; }
.ks-podpis__napoveda { flex-basis: 100%; margin: 0; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); white-space: normal; }

/* --- Trend po měsících --- */
.ks-trend { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); align-items: end; gap: var(--ui-space-2); height: 7rem; }
.ks-trend__sloupec { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; gap: var(--ui-space-1); height: 100%; }
.ks-trend__hodnota { font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); font-variant-numeric: tabular-nums; }
.ks-trend__pruh { flex: 1; display: flex; align-items: flex-end; width: 100%; }
.ks-trend__vypln { width: 100%; min-height: 0.125rem; height: 0; border-radius: var(--ui-radius-1) var(--ui-radius-1) 0 0; background: var(--ui-color-primary); }
.ks-trend__popisek { font-size: var(--ui-font-size-xs); color: var(--ui-color-text-subtle); }
.ks-trend__pruhy { flex: 1; display: flex; gap: var(--ui-space-1); width: 100%; min-height: 0; }
.ks-trend__rada { flex: 1; display: flex; flex-direction: column; align-items: center; gap: var(--ui-space-1); min-width: 0; }
.ks-trend__vypln--2, .ks-trend__znak--2 { background: var(--ui-color-info); }
.ks-trend__vypln--3, .ks-trend__znak--3 { background: var(--ui-color-success); }
.ks-trend__vypln--4, .ks-trend__znak--4 { background: var(--ui-color-warning); }
.ks-trend__legenda { display: flex; flex-wrap: wrap; gap: var(--ui-space-1) var(--ui-space-4); list-style: none; margin: var(--ui-space-2) 0 0; padding: 0; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-trend__polozka { display: flex; align-items: center; gap: var(--ui-space-1); }
.ks-trend__polozka strong { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
.ks-trend__znak { width: 0.75rem; height: 0.75rem; border-radius: var(--ui-radius-1); display: inline-block; background: var(--ui-color-primary); }

/* --- Kalendář návštěv --- */
.ks-kal-ovladani { display: flex; gap: var(--ui-space-2); margin-bottom: var(--ui-space-4); }
.ks-kal-ovladani__filtr { display: flex; align-items: center; gap: var(--ui-space-2); margin-left: auto; }
.ks-kalendar { border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); background: var(--ui-color-neutral-0); overflow: hidden; }
.ks-kalendar__hlava, .ks-kalendar__tyden { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); }
.ks-kalendar__hlava { background: var(--ui-color-neutral-50); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-kalendar__hlava span { padding: var(--ui-space-2) var(--ui-space-3); font-size: var(--ui-font-size-xs); text-transform: uppercase; letter-spacing: var(--ui-tracking-caps); color: var(--ui-color-text-muted); }
.ks-kalendar__den { min-height: 6rem; padding: var(--ui-space-2); border-right: var(--ui-border-width-1) solid var(--ui-color-border); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); display: flex; flex-direction: column; gap: 0.125rem; }
.ks-kalendar__den:nth-child(7n) { border-right: 0; }
.ks-kalendar__den.je-mimo { background: var(--ui-color-neutral-50); }
.ks-kalendar__den.je-mimo .ks-kalendar__cislo { color: var(--ui-color-text-subtle); }
.ks-kalendar__den.je-dnes { box-shadow: inset 0 0.125rem 0 var(--ui-color-primary); }
.ks-kalendar__cislo { font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-kalendar__polozka { display: block; padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-1); font-size: var(--ui-font-size-xs); line-height: 1.5; text-decoration: none; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ks-kalendar__studie { display: block; overflow: hidden; text-overflow: ellipsis; font-size: 0.6875rem; opacity: 0.8; }
.ks-kalendar__polozka--hotovo { background: var(--ui-color-success-soft); color: var(--ui-color-success); }
.ks-kalendar__polozka--planovano { background: var(--ui-color-primary-soft); color: var(--ui-color-primary); }
.ks-kalendar__polozka--po_terminu { background: var(--ui-color-danger-soft); color: var(--ui-color-danger); }
@media (max-width: 63rem) {
  .ks-kalendar__hlava { display: none; }
  .ks-kalendar__tyden { grid-template-columns: minmax(0, 1fr); }
  .ks-kalendar__den { min-height: 0; }
  .ks-kalendar__den:empty, .ks-kalendar__den.je-mimo { display: none; }
}

/* --- Uložené pohledy --- */
.ks-pohledy { display: flex; align-items: center; flex-wrap: wrap; gap: var(--ui-space-2); margin-bottom: var(--ui-space-3); font-size: var(--ui-font-size-sm); }
.ks-pohledy__popis { font-size: var(--ui-font-size-xs); text-transform: uppercase; letter-spacing: var(--ui-tracking-caps); color: var(--ui-color-text-muted); }
.ks-pohledy__polozka { display: inline-flex; align-items: center; gap: var(--ui-space-1); padding: 0 var(--ui-space-2); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-0); }
.ks-pohledy__polozka form { display: inline-flex; margin: 0; }
.ks-pohledy__smazat { display: inline-flex; padding: 0; border: 0; background: none; color: var(--ui-color-text-subtle); cursor: pointer; }
.ks-pohledy__smazat:hover { color: var(--ui-color-danger); }
.ks-pohledy__prazdno { color: var(--ui-color-text-subtle); }
.ks-pohledy__ulozit { display: flex; align-items: center; gap: var(--ui-space-2); margin: 0 0 0 auto; }
.ks-pohledy__ulozit .form-control { width: 12rem; }

/* --- Toasty --- */
.ks-toasty { position: fixed; right: var(--ui-space-5); bottom: var(--ui-space-5); z-index: 70; display: flex; flex-direction: column; gap: var(--ui-space-2); max-width: 26rem; }
.ks-toast { display: flex; align-items: center; gap: var(--ui-space-3); padding: var(--ui-space-3) var(--ui-space-4); border-radius: var(--ui-radius-2); border-left: 0.1875rem solid; background: var(--ui-color-neutral-0); box-shadow: var(--ui-shadow-3); font-size: var(--ui-font-size-sm); }
.ks-toast--success { border-color: var(--ui-color-success); }
.ks-toast--danger { border-color: var(--ui-color-danger); }
.ks-toast--warning { border-color: var(--ui-color-warning); }
.ks-toast--info { border-color: var(--ui-color-info); }
.ks-toast__zavrit { margin-left: auto; border: 0; background: none; color: var(--ui-color-text-muted); cursor: pointer; padding: 0; }
.ks-toast.je-pryc { opacity: 0; transform: translateY(0.5rem); transition: opacity var(--ui-transition), transform var(--ui-transition); }

/* Vstupy */
.ks-app .form-control,
.ks-app .form-select,
.ks-app .catalog-input {
  height: var(--ui-control-height);
  padding: 0 var(--ui-control-padding-x);
  border: var(--ui-border-width-1) solid var(--ui-color-border-silna);
  border-radius: var(--ui-radius-1);
  background-color: var(--ui-color-neutral-0);
  color: var(--ui-color-text);
  font-size: var(--ui-font-size-md);
  box-shadow: none;
  transition: border-color 0.12s ease, box-shadow 0.12s ease;
}
.ks-app .form-control:hover,
.ks-app .form-select:hover,
.ks-app .catalog-input:hover { border-color: var(--ui-color-text-subtle); }
/* Fokus pole jako Fluent Input: spodní linka v barvě značky. */
.ks-app .form-control:focus,
.ks-app .form-select:focus,
.ks-app .catalog-input:focus {
  border-color: var(--ui-color-border-silna);
  border-bottom-color: var(--ui-color-primary);
  box-shadow: inset 0 calc(-1 * var(--ui-border-width-1)) 0 var(--ui-color-primary);
  outline: none;
}
.ks-app textarea.form-control,
.ks-app select.form-select[multiple],
.ks-app select.form-select[size]:not([size="1"]) {
  height: auto;
  padding: 0.4375rem var(--ui-control-padding-x);
}
.ks-app .form-control::placeholder,
.ks-app .catalog-input::placeholder { color: var(--ui-color-text-subtle); }
.ks-app .form-check-input { width: 1.125rem; height: 1.125rem; border-color: var(--ui-color-border-silna); border-radius: 0.3125rem; }
.ks-app .form-check-input[type="radio"] { border-radius: var(--ui-radius-pill); }
.ks-app .form-check-input:checked { background-color: var(--ui-color-primary); border-color: var(--ui-color-primary); }
.ks-app .form-check-input:focus { box-shadow: none; }
.ks-app .form-check-input:focus-visible { box-shadow: var(--ui-focus-ring); }

/* Tlačítka */
.ui-btn { min-height: var(--ui-control-height); padding: 0 var(--ui-space-4); border-radius: var(--ui-radius-1); font-size: var(--ui-font-size-md); }
.ui-btn:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-add-btn { min-height: var(--ui-control-height); border: var(--ui-border-width-1) solid var(--ui-color-border-silna); background: var(--ui-color-neutral-50); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); }
.ks-add-btn:hover { background: var(--ui-color-primary-soft); color: var(--ui-color-primary); border-color: var(--ui-color-primary); }

/* Štítky polí a údajů. */
.ks-field__label, .ks-udaj__label { letter-spacing: var(--ui-tracking-label); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-medium); }
.ks-field__label { color: var(--ui-color-text-muted); }
.ks-udaj__hodnota { font-size: var(--ui-font-size-md); }

/* Záložky */
.tabs { gap: var(--ui-space-4); border-bottom-color: var(--ui-color-border); margin-bottom: var(--ui-space-5); }
.tabs .tab a { padding: var(--ui-space-3) 0; font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-medium); border-bottom-width: 0.125rem; margin-bottom: -0.0625rem; }
.tabs .tab a.active { border-bottom-color: var(--ui-color-primary); }

/* Odznaky */
.ks-badge { background: var(--ui-color-primary-soft); border-color: transparent; color: var(--ui-color-primary); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-semibold); letter-spacing: var(--ui-tracking-label); }

.ks-stat-tile { padding: var(--ui-space-4); }
.ks-stat-tile__value { letter-spacing: -0.01em; }

/* Tabulky */
.ks-table td { height: var(--ui-row-height); padding: 0 var(--ui-space-4); border-bottom-color: var(--ui-color-border); font-size: var(--ui-font-size-md); line-height: 1.3; }
.ks-table thead th { height: 2rem; padding: 0 var(--ui-space-4); }
/* Prázdná tabulka nemá co nadepisovat. */
.ks-table:has(.ks-table__prazdno-radek) thead { display: none; }

/* Široká tabulka se scrolluje vodorovně; první sloupec drží identifikátor na místě. */
.ks-table--seznam tbody td:first-child, .ks-table--seznam thead th:first-child,
.ks-table--seznam tfoot td:first-child { position: sticky; left: 0; z-index: 1; background: var(--ui-color-neutral-0); }
.ks-table--seznam thead th:first-child { z-index: 3; background: var(--ui-color-neutral-0); }
.ks-table--seznam tfoot td:first-child { background: var(--ui-color-neutral-100); }
.ks-table--seznam tbody tr:hover td:first-child { background: var(--ui-color-neutral-50); }
.ks-table--seznam .ks-skupina__hlava th:first-child { background: var(--ui-color-neutral-50); }
.ks-table-wrap--siroka { position: relative; }
.ks-table-wrap--siroka::after {
  content: ""; position: sticky; top: 0; right: 0; float: right; width: 1.5rem; height: 100%;
  background: linear-gradient(to right, rgba(255, 255, 255, 0), rgba(22, 32, 46, 0.06));
  pointer-events: none;
}
.ks-table tbody tr { transition: background-color 0.1s ease; }

/* Rail: aktivní položka nese barvu značky i na levé hraně. */
.ks-rail { border-left-color: var(--ui-color-border); }
.ks-rail__polozka.is-active { background: var(--ui-color-primary-soft); }

/* Chytré drobnosti */
.ks-kroky { border-color: var(--ui-color-border); }
.ks-krok { border-color: var(--ui-color-border-silna); border-radius: var(--ui-radius-pill); }
.ks-krok:hover { border-color: var(--ui-color-primary); color: var(--ui-color-primary); }
.ks-lista-akci { background: color-mix(in srgb, var(--ui-color-neutral-0) 92%, transparent); backdrop-filter: blur(0.5rem); border-top-color: var(--ui-color-border); }

.ks-hlavicka { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: var(--ui-space-5); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-5); margin-bottom: var(--ui-space-4); }
.ks-hlavicka__fakta { display: grid; grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--ui-space-4); }
.ks-hlavicka__penize { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-space-3) var(--ui-space-4); padding-left: var(--ui-space-5); border-left: var(--ui-border-width-1) solid var(--ui-color-border); align-content: start; }
.ks-cifra { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.ks-cifra__label { font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-cifra__hodnota { font-size: var(--ui-font-size-lg); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); letter-spacing: -0.01em; }
.ks-cifra__hodnota.is-muted { color: var(--ui-color-text-subtle); }
@media (max-width: 75rem) {
  .ks-hlavicka { grid-template-columns: 1fr; }
  .ks-hlavicka__penize { padding-left: 0; border-left: 0; border-top: var(--ui-border-width-1) solid var(--ui-color-border); padding-top: var(--ui-space-4); grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); }
}

/* Chybí doplnit */
.ks-chybi { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-2) var(--ui-space-3); margin-bottom: var(--ui-space-4); padding: var(--ui-space-3) var(--ui-space-4); background: var(--ui-color-danger-soft); border: var(--ui-border-width-1) solid var(--ui-color-danger); border-radius: var(--ui-radius-1); }
.ks-chybi__title { font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-danger); }
.ks-chybi .ks-krok { background: var(--ui-color-neutral-0); }
.ks-napoveda-text { color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }

/* Detail: sloupec + souhrn */
.ks-detail-rozvrh { display: grid; grid-template-columns: minmax(0, 1fr) 18rem; column-gap: var(--ui-space-5); align-items: start; }
/* Záložky se širokými tabulkami souhrn skryjí; sloupec se pak nemá držet. */
.ks-detail-rozvrh.bez-souhrnu { grid-template-columns: minmax(0, 1fr); }
.ks-detail-hlavni { min-width: 0; }

.ks-souhrn { position: sticky; top: var(--ui-space-4); align-self: start; display: flex; flex-direction: column; gap: var(--ui-space-4); }
.ks-souhrn__blok { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-3) var(--ui-card-pad); }
.ks-souhrn__nadpis { margin: 0 0 var(--ui-space-3); font-weight: var(--ui-font-weight-semibold); }
.ks-souhrn__radek { display: grid; grid-template-columns: minmax(3.5rem, auto) minmax(0, 1fr); align-items: center; gap: var(--ui-space-3); min-height: 1.75rem; padding: var(--ui-space-1) 0; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-souhrn__radek:last-child { border-bottom: 0; }
.ks-souhrn__radek > span { min-width: 0; overflow-wrap: anywhere; }
.ks-souhrn__radek strong { min-width: 0; color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); font-size: var(--ui-font-size-md); text-align: right; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.ks-souhrn__radek strong.is-muted { color: var(--ui-color-text-subtle); }


/* Panel sekcí */
.ks-panel { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-1); overflow: hidden; }
.ks-panel .ks-sekce { background: none; border: 0; border-radius: 0; box-shadow: none; }
.ks-panel .ks-sekce + .ks-sekce { border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-panel .ks-sekce__hlava { padding: var(--ui-space-4) var(--ui-space-5) 0; }

.ks-panel .ks-sekce__telo { padding: var(--ui-space-4) var(--ui-space-5) var(--ui-space-5); }

/* Rozložení detailu */
.ks-detail-hlavni .ks-detail-grid > * { grid-column: span 6; }
.ks-detail-hlavni .ks-detail-grid > .ks-f-12 { grid-column: span 12; }

@media (max-width: 63rem) {
  .ks-detail-rozvrh { grid-template-columns: 1fr; }
  .ks-souhrn { position: static; }
  .ks-souhrn__blok { padding: var(--ui-space-4); }
}

.ks-stav { display: inline-block; padding: 0 var(--ui-space-3); line-height: 1.45; border-radius: var(--ui-radius-pill); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-semibold); letter-spacing: var(--ui-tracking-label); vertical-align: middle; color: var(--ui-color-text); }
.ks-stav--feasibility { background: var(--ks-stav-feasibility-bg); color: var(--ks-stav-feasibility-fg); }
.ks-stav--v_jednani { background: var(--ks-stav-v-jednani-bg); color: var(--ks-stav-v-jednani-fg); }
.ks-stav--zahajena { background: var(--ks-stav-zahajena-bg); color: var(--ks-stav-zahajena-fg); }
.ks-stav--probiha { background: var(--ks-stav-probiha-bg); color: var(--ks-stav-probiha-fg); }
.ks-stav--uzavirani { background: var(--ks-stav-uzavirani-bg); color: var(--ks-stav-uzavirani-fg); }
.ks-stav--ukoncena { background: var(--ks-stav-ukoncena-bg); color: var(--ks-stav-ukoncena-fg); }
.ks-stav--archiv { background: var(--ks-stav-archiv-bg); color: var(--ks-stav-archiv-fg); }
.ks-stav--zrusena { background: var(--ks-stav-zrusena-bg); color: var(--ks-stav-zrusena-fg); }

/* Nabídka dokumentů */
.ks-list-actions .dropdown-toggle::after { margin-left: var(--ui-space-2); }
/* Bootstrap má v rozbalovací nabídce natvrdo bílou; v tmavém motivu by svítila. */
.ks-app .dropdown-menu { border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-1); box-shadow: var(--ui-shadow-3); padding: var(--ui-space-1); background: var(--ui-color-neutral-0); color: var(--ui-color-text); }
.ks-app .dropdown-item { color: var(--ui-color-text); }
.ks-app .dropdown-item { border-radius: var(--ui-radius-1); padding: var(--ui-space-2) var(--ui-space-3); font-size: var(--ui-font-size-md); }
.ks-app .dropdown-item:hover { background: var(--ui-color-primary-soft); color: var(--ui-color-primary); }

.ks-radek-akce { display: inline-flex; }
.ks-kebab { display: inline-flex; align-items: center; justify-content: center; width: 2rem; height: 2rem; padding: 0; border: 0; border-radius: var(--ui-radius-1); background: none; color: var(--ui-color-text-muted); cursor: pointer; transition: background-color 0.12s ease, color 0.12s ease; }
.ks-kebab .material-icons { font-size: 1.15rem; }
.ks-kebab:hover, .ks-kebab[aria-expanded="true"] { background: var(--ui-color-neutral-100); color: var(--ui-color-text); }
.ks-kebab:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-app .dropdown-item.ks-dropdown-item--smazat { color: var(--ui-color-danger); border: 0; background: none; width: 100%; text-align: left; }
.ks-app .dropdown-item.ks-dropdown-item--smazat:hover { background: var(--ui-color-danger-soft); }
.ks-odkaz-akce { color: var(--ui-color-primary); text-decoration: none; font-size: var(--ui-font-size-sm); }
.ks-odkaz-akce:hover { text-decoration: underline; }

/* Delší text v tabulce se zalamuje, aby sloupec akcí zůstal bez vodorovného posunu vidět. */
.ks-table td.ks-cell-text { white-space: normal; min-width: 10rem; max-width: 28rem; overflow-wrap: anywhere; }
.ks-table td.ks-cell-zalom { white-space: normal; }
.ks-table--seznam td { white-space: normal; vertical-align: middle; }
.ks-table--seznam .ks-cell-text { max-width: 16rem; }
.ks-odkaz-zaznam { color: var(--ui-color-primary); font-weight: var(--ui-font-weight-medium); text-decoration: none; white-space: nowrap; }
.ks-table td.ks-cell-text .ks-odkaz-zaznam, .ks-table td .ks-srovnani:not(.ks-srovnani--vedle), .ks-table td .ks-podpis { white-space: normal; }
.ks-odkaz-zaznam:hover { text-decoration: underline; }

/* Ikony */
.ks-ikona { width: 1rem; height: 1rem; flex: none; fill: currentColor; vertical-align: -0.15em; }
.ks-ikona.tiny { width: 1rem; height: 1rem; }
.ui-btn .ks-ikona { width: 1rem; height: 1rem; }
.ks-kebab .ks-ikona, .ks-napoveda__spoust .ks-ikona { width: 1rem; height: 1rem; }
.ks-breadcrumbs__sep .ks-ikona { width: 1rem; height: 1rem; color: var(--ui-color-text-subtle); }

.ks-sekce--sbalitelna > .ks-sekce__hlava::before {
  content: ""; width: 0.5rem; height: 0.5rem; flex: none;
  border-right: 0.125rem solid var(--ui-color-text-subtle);
  border-bottom: 0.125rem solid var(--ui-color-text-subtle);
  transform: rotate(-45deg); transition: transform 0.15s;
}
.ks-sekce--sbalitelna[open] > .ks-sekce__hlava::before { transform: rotate(45deg); }

/* Písmo a čísla */
body.ks-app { font-family: var(--ui-font); font-variant-numeric: tabular-nums; }
@media (prefers-reduced-motion: no-preference) {
  .ui-btn, .ks-app .form-control, .ks-app .form-select, .ks-app .catalog-input,
  .ks-table tbody tr, .ks-tab, .menu-card, .ks-kpi__polozka--odkaz {
    transition: background-color var(--ui-transition), border-color var(--ui-transition), box-shadow var(--ui-transition), color var(--ui-transition);
  }
}
.ks-table tbody tr:focus-visible, .ks-app a:focus-visible, .ks-app button:focus-visible,
.ks-app [tabindex]:focus-visible, .catalog-input:focus-visible {
  outline: none;
  box-shadow: var(--ui-focus-ring);
}

/* Nadpisy sekcí */
.ks-sekce__nadpis, .ks-panel .ks-sekce__nadpis, .ks-souhrn__nadpis {
  font-size: var(--ui-font-size-lg);
  font-weight: var(--ui-font-weight-semibold);
  color: var(--ui-color-text);
  text-transform: none;
  letter-spacing: 0;
}
.ks-souhrn__nadpis { font-size: var(--ui-font-size-md); }
.ks-panel .ks-sekce__hlava { padding-bottom: var(--ui-space-3); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); margin: 0 var(--ui-space-5); padding-left: 0; padding-right: 0; }
.ks-panel .ks-sekce__telo { padding-top: var(--ui-space-4); }

/* Aktivní tab */
.tabs .tab a.active { border-bottom-color: var(--ui-color-primary); color: var(--ui-color-primary); }

/* --- ks-page-header --- */
.ks-page-header { margin-bottom: var(--ui-space-5); }
.ks-page-header--lepici { position: sticky; top: 0; z-index: 20; background: var(--ui-color-page); padding-top: var(--ui-space-3); padding-bottom: var(--ui-space-3); }
.ks-page-header--lepici.je-kompaktni { min-height: 3rem; padding: var(--ui-space-2) 0; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); box-shadow: var(--ui-shadow-2); }
.ks-page-header--lepici.je-kompaktni .ks-breadcrumbs,
.ks-page-header--lepici.je-kompaktni .ks-page-header__meta { display: none; }
.ks-page-header--lepici.je-kompaktni h1 { font-size: var(--ui-font-size-md); }
.ks-page-header__radek { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-4); flex-wrap: wrap; }
.ks-page-header__titul { display: flex; align-items: center; gap: var(--ui-space-3); min-width: 0; }
.ks-page-header__titul h1 { margin: 0; font-size: var(--ui-font-size-3xl); font-weight: var(--ui-font-weight-semibold); line-height: var(--ui-line-height-tight); letter-spacing: var(--ui-tracking-tight); color: var(--ui-color-text); }
.ks-page-header__protokol { margin-left: var(--ui-space-3); font-size: var(--ui-font-size-lg); font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-muted); }
.ks-page-header__protokol::before { content: "· "; }

/* Nadpis sekce bez karty (rozcestník na konci stránky). */
.ks-sekce-nadpis { margin: 0 0 var(--ui-space-3); font-size: var(--ui-font-size-xs); text-transform: uppercase; letter-spacing: var(--ui-tracking-caps); color: var(--ui-color-text-muted); font-weight: var(--ui-font-weight-semibold); }

/* Rozložení stránky: dvanáct sloupců, bloky na stejných hranicích. */
.ks-mrizka { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--ui-space-5); row-gap: var(--ui-stack-gap); align-items: start; }
.ks-mrizka > * { grid-column: span 12; min-width: 0; }
.ks-mrizka > .ks-pul { grid-column: span 6; }
@media (max-width: 63rem) { .ks-mrizka > .ks-pul { grid-column: span 12; } }
.ks-page-header__akce { display: flex; gap: var(--ui-space-2); flex-wrap: wrap; }
.ks-page-header__meta { margin: var(--ui-space-2) 0 0; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-md); }
.ks-page-header__meta span + span::before { content: "·"; margin: 0 var(--ui-space-2); color: var(--ui-color-text-subtle); }

/* --- ks-card --- */
.ks-card { background: var(--ui-color-neutral-0); border: 0; border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-2); }
/* Karta bez rámečku a linky pod nadpisem. */
.ks-card--bez-ramecku { border: 0; background: transparent; box-shadow: none; }
.ks-card--bez-ramecku > .ks-card__hlava { border-bottom: 0; padding-left: 0; padding-right: 0; }
.ks-card--bez-ramecku > .ks-card__telo { padding-left: 0; padding-right: 0; padding-top: 0; }
/* Linka pod hlavičkou jen tam, kde hlavička nese akce nebo pod ní jde tabulka. */
.ks-card__hlava { border-bottom: 0; }
.ks-card__hlava:has(.ks-card__akce), .ks-card__hlava:has(+ .ks-table-wrap) { border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-card__hlava { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-3); min-height: var(--ui-card-head-h); padding: var(--ui-space-3) var(--ui-card-pad); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-card--bez-ramecku { border-top: var(--ui-border-width-1) solid var(--ui-color-border); padding-top: var(--ui-space-3); }
.ks-card--bez-ramecku > .ks-card__hlava { border-bottom: 0; }
.ks-card__nadpis { margin: 0; font-size: var(--ui-font-size-lg); line-height: 1.375; font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); }
.ks-card__pocet { display: inline-block; margin-left: var(--ui-space-2); padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-100); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-medium); }
.ks-card__akce { display: flex; gap: var(--ui-space-2); }
.ks-card__telo { padding: var(--ui-card-pad); }
.ks-card > .ks-table-wrap { border-radius: 0; }
/* Tabulka v kartě začíná a končí na odsazení karty. */
.ks-card .ks-table th:first-child, .ks-card .ks-table td:first-child { padding-left: var(--ui-card-pad); }
.ks-card .ks-table th:last-child, .ks-card .ks-table td:last-child { padding-right: var(--ui-card-pad); }
.ks-card__pata { display: flex; gap: var(--ui-space-2); justify-content: flex-end; flex-wrap: wrap; padding: var(--ui-space-3) var(--ui-card-pad); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }

/* Hromadná akce nad vybranými řádky tabulky. */
.ks-hromadne { display: flex; align-items: center; justify-content: flex-end; gap: var(--ui-space-2); flex-wrap: wrap; margin-bottom: var(--ui-space-3); }
.ks-hromadne__text { margin: 0 auto 0 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-table .ks-sloupec-vyber { width: 2.75rem; padding-right: 0; }
.ks-form-po-karte { margin-top: var(--ui-stack-gap); }
/* Sloupec řádkových akcí (kebab). */
.ks-table .ks-sloupec-akce { width: 3rem; text-align: right; padding-left: 0; padding-right: var(--ui-space-3); }
/* Úzké sloupce s pevným obsahem; zbytek řádku patří poslednímu sloupci. */
.ks-table .ks-sloupec-datum { width: 9rem; white-space: nowrap; }
.ks-table .ks-sloupec-osoba { width: 14rem; }

/* Nápověda pod polem formuláře. */
.ks-field__napoveda { margin: 0.25rem 0 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }

/* Souhrn chyb formuláře mimo pole. */
.ks-chyba { padding: var(--ui-space-3) var(--ui-space-4); margin-bottom: var(--ui-space-4); border: var(--ui-border-width-1) solid var(--ui-color-danger); border-radius: var(--ui-radius-1); background: var(--ui-color-danger-soft); color: var(--ui-color-danger); }

/* Doprovodný text pod nadpisem nebo u pole. */
.ks-text-tlumeny { color: var(--ui-color-text-muted); }
.ks-text-mensi { font-size: var(--ui-font-size-sm); }

/* --- ks-tabs --- */
.ks-tabs { display: flex; align-items: flex-end; gap: var(--ui-space-3); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); margin-bottom: var(--ui-space-5); }
.ks-tabs__pas { display: flex; gap: var(--ui-space-4); overflow: hidden; flex: 1; }
.ks-tab { display: inline-flex; align-items: center; gap: var(--ui-space-2); padding: var(--ui-space-3) 0; color: var(--ui-color-text-muted); text-decoration: none; font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-medium); border-bottom: 0.125rem solid transparent; margin-bottom: calc(-1 * var(--ui-border-width-1)); white-space: nowrap; }
.ks-tab:hover { color: var(--ui-color-text); }
.ks-tab.is-active { color: var(--ui-color-primary); border-bottom-color: var(--ui-color-primary); font-weight: var(--ui-font-weight-semibold); }
.ks-tab:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-tab__pocet { padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-100); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }
.ks-tab.is-active .ks-tab__pocet { background: var(--ui-color-primary-soft); color: var(--ui-color-primary); }
.ks-tabs__vice { padding-bottom: var(--ui-space-2); }
.ks-tabs--nav .ks-tabs__pas { flex-wrap: wrap; overflow: visible; }

/* --- ks-podsekce: druhá úroveň navigace uvnitř oblasti --- */
.ks-tabs--podsekce { border-bottom: 0; margin-bottom: var(--ui-space-4); }
.ks-tabs--podsekce .ks-tabs__pas { flex: 0 1 auto; flex-wrap: wrap; overflow: visible; gap: var(--ui-space-1); padding: var(--ui-space-1); background: var(--ui-color-neutral-100); border-radius: var(--ui-radius-2); }
.ks-tabs--podsekce .ks-tab { padding: var(--ui-space-1) var(--ui-space-3); margin-bottom: 0; border-bottom: 0; border-radius: var(--ui-radius-1); font-size: var(--ui-font-size-sm); }
.ks-tabs--podsekce .ks-tab.is-active { background: var(--ui-color-neutral-0); color: var(--ui-color-text); box-shadow: var(--ui-shadow-1); }
.ks-podsekce__panel > * + * { margin-top: var(--ui-stack-gap); }
.ks-podsekce__panel[hidden] { display: none; }

/* --- ks-dalsi-krok: seznam upozornění a doporučení na Přehledu studie (PATTERN_dalsi_krok) --- */
.ks-dalsi-krok { overflow: hidden; }
.ks-dalsi-krok__seznam { list-style: none; margin: 0; padding: 0; }
.ks-dalsi-krok__polozka { position: relative; display: flex; align-items: center; gap: var(--ui-space-4); min-height: 2.5rem; padding: 0 var(--ui-space-3) 0 var(--ui-card-pad); border-top: var(--ui-border-width-1) solid var(--ui-color-border); font-size: var(--ui-font-size-md); color: var(--ui-color-text); }
.ks-dalsi-krok__polozka:first-child { border-top: 0; }
.ks-dalsi-krok__polozka--odkaz:hover { background: var(--ui-color-neutral-50); }
.ks-dalsi-krok__odkaz, .ks-dalsi-krok__text { flex: 1 1 auto; min-width: 0; padding: var(--ui-space-3) 0; }
/* Odkaz pokrývá celý řádek, tlačítko Skrýt leží nad ním. */
.ks-dalsi-krok__odkaz::after { content: ""; position: absolute; inset: 0; }
.ks-dalsi-krok__odkaz:focus-visible { outline: none; }
.ks-dalsi-krok__polozka:has(.ks-dalsi-krok__odkaz:focus-visible) { outline: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-primary); outline-offset: calc(var(--ui-border-width-1) * -2); }
.ks-dalsi-krok__lhuta { color: var(--ui-color-danger); }
.ks-dalsi-krok__sipka { flex: none; display: inline-flex; color: var(--ui-color-text-muted); }
.ks-dalsi-krok__sipka .ks-ikona { width: 1rem; height: 1rem; }
.ks-dalsi-krok__skryt { position: relative; z-index: 1; flex: none; margin: 0; }
.ks-dalsi-krok__skryt-tlacitko { padding: 0; border: 0; background: none; color: var(--ui-color-text-subtle); font-size: var(--ui-font-size-sm); cursor: pointer; }
.ks-dalsi-krok__skryt-tlacitko:hover { color: var(--ui-color-text); }
.ks-dalsi-krok__skryt-tlacitko:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
/* Skrýt se ukáže po najetí na řádek; průhlednost místo skrytí, aby zůstal dosažitelný klávesnicí. */
.ks-dalsi-krok__skryt .ks-dalsi-krok__skryt-tlacitko { opacity: 0; padding: var(--ui-space-1) var(--ui-space-3); border-radius: var(--ui-radius-1); font-size: var(--ui-font-size-xs); }
.ks-dalsi-krok__skryt .ks-dalsi-krok__skryt-tlacitko:hover { background: var(--ui-color-neutral-100); }
.ks-dalsi-krok__polozka:hover .ks-dalsi-krok__skryt-tlacitko,
.ks-dalsi-krok__polozka:focus-within .ks-dalsi-krok__skryt-tlacitko { opacity: 1; }
@media (hover: none) {
  .ks-dalsi-krok__skryt .ks-dalsi-krok__skryt-tlacitko { opacity: 1; }
}
.ks-dalsi-krok__chybi { padding: var(--ui-space-4) var(--ui-card-pad); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-dalsi-krok__chybi .ks-alerty { margin: 0; }
.ks-dalsi-krok__obnovit { margin: 0; padding: var(--ui-space-3) var(--ui-card-pad); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }

/* --- ks-dl --- */
.ks-dl { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); column-gap: var(--ui-form-col-gap); row-gap: var(--ui-space-4); margin: 0; }
.ks-dl__polozka { min-width: 0; overflow-wrap: anywhere; }
.ks-dl .ks-strana__nazev, .ks-souhrn__udaje .ks-strana__nazev { display: block; }
.ks-dl .ks-strana__radek, .ks-souhrn__udaje .ks-strana__radek { display: block; font-weight: var(--ui-font-weight-regular); font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-dl dt { margin: 0; font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-medium); color: var(--ui-color-text-muted); }
.ks-dl dd { margin: 0; font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); overflow-wrap: anywhere; }
.ks-dl__prazdno { color: var(--ui-color-text-subtle); font-weight: var(--ui-font-weight-regular); }
@media (max-width: 80rem) { .ks-dl .ks-f-4 { grid-column: span 6; } }
@media (max-width: 64rem) { .ks-dl > * { grid-column: 1 / -1 !important; } }

/* --- ks-badge --- */
.ks-badge--neutral { background: var(--ui-color-neutral-100); color: var(--ui-color-text-muted); }
.ks-badge--success { background: var(--ui-color-success-soft); color: var(--ui-color-success); }
.ks-badge--warning { background: var(--ui-color-warning-soft); color: var(--ui-color-warning); }
.ks-badge--danger { background: var(--ui-color-danger-soft); color: var(--ui-color-danger); }
.ks-badge--info { background: var(--ui-color-info-soft); color: var(--ui-color-info); }

/* --- ks-table doplňky --- */
.ks-table thead th { position: sticky; top: 0; z-index: 2; }
.ks-table th[aria-sort] a::after { content: ""; display: inline-block; width: 0; height: 0; margin-left: 0.3rem; border-left: 0.25rem solid transparent; border-right: 0.25rem solid transparent; }
.ks-table th[aria-sort="ascending"] a::after { border-bottom: 0.3rem solid var(--ui-color-primary); }
.ks-table th[aria-sort="descending"] a::after { border-top: 0.3rem solid var(--ui-color-primary); }
.ks-th-jednotka { display: block; font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-subtle); font-size: var(--ui-font-size-xs); }
.ks-table tfoot td, .ks-table tfoot th { border-top: 0.125rem solid var(--ui-color-border-silna); font-weight: var(--ui-font-weight-semibold); background: var(--ui-color-neutral-100); }
.ks-table .ks-num { font-variant-numeric: tabular-nums; }

/* Chipy v buňce: jeden řádek, přetečení do „+N". */
.ks-typy, .ks-vazby { display: flex; align-items: center; gap: var(--ui-space-1); flex-wrap: wrap; }
.ks-typy .ks-badge { padding: 0 var(--ui-space-2); font-size: var(--ui-font-size-xs); line-height: 1.45; border-color: transparent; }
.ks-badge--typ { background: var(--ui-color-primary-soft); color: var(--ui-color-primary); border-color: transparent; }
.ks-badge--vazba { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border-silna); color: var(--ui-color-text-muted); border-radius: var(--ui-radius-1); }
.ks-prazdno-hodnota { color: var(--ui-color-text-subtle); }
.ks-vazba { display: inline-flex; align-items: center; padding: 0 var(--ui-space-2); border: var(--ui-border-width-1) solid var(--ui-color-border-silna); border-radius: var(--ui-radius-pill); background: transparent; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-medium); white-space: nowrap; }

/* Auditní záznam. */
.ks-zmena__pole { color: var(--ui-color-text); }
.ks-zmena__stara { color: var(--ui-color-text-subtle); text-decoration: line-through; }
.ks-zmena__sipka { color: var(--ui-color-text-subtle); margin: 0 var(--ui-space-1); }
.ks-zmena__nova { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }

.ks-ns { display: inline-block; }

.ks-timeline__varovani { color: var(--ui-color-warning); margin-left: var(--ui-space-1); }
.ks-timeline__krok--varovani .ks-timeline__datum { color: var(--ui-color-warning); }
/* Kde studie stojí: poslední krok s datem. */
.ks-timeline__krok.je-aktualni .ks-timeline__bod { box-shadow: var(--ui-focus-ring); }
.ks-timeline__krok.je-aktualni .ks-timeline__label { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }

/* Řádek, na který míří kotva z upozornění. */
.ks-table tbody tr:target td { background: var(--ui-color-warning-soft); box-shadow: inset 0.1875rem 0 0 var(--ui-color-warning); }

.ks-legenda { display: flex; flex-wrap: wrap; gap: var(--ui-space-1) var(--ui-space-4); margin: var(--ui-space-2) 0 0; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-vysvetlivky { margin-top: var(--ui-space-3); }
.ks-vysvetlivky > summary { display: inline-flex; align-items: center; height: var(--ui-control-height); cursor: pointer; list-style: none; }
.ks-vysvetlivky > summary::-webkit-details-marker { display: none; }
.ks-vysvetlivky > summary:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-legenda strong { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
.ks-prazdno { display: flex; align-items: center; justify-content: center; gap: var(--ui-space-3); max-height: 5rem; padding: var(--ui-space-4); font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-prazdno__ikona { color: var(--ui-color-text-muted); }
.ks-prazdno__ikona .ks-ikona { width: 1rem; height: 1rem; }
.ks-prazdno__text { margin: 0; color: var(--ui-color-text-muted); }

/* --- ks-kpi --- */
/* Samostatné dlaždice v jedné řadě; v kartě pás bez rámečků s položkami oddělenými linkou. */
.ks-kpi { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: var(--ui-space-4); align-items: stretch; }
.ks-kpi__polozka { display: flex; flex-direction: column; justify-content: space-between; gap: var(--ui-space-3); min-height: 5.25rem; padding: var(--ui-space-4) var(--ui-space-5); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); }
.ks-kpi__label { order: -1; font-size: var(--ui-font-size-sm); line-height: 1.35; color: var(--ui-color-text-muted); }
.ks-kpi__hodnota { font-size: var(--ui-font-size-2xl); font-weight: var(--ui-font-weight-semibold); line-height: 1.15; letter-spacing: var(--ui-tracking-tight); color: var(--ui-color-text); font-variant-numeric: tabular-nums; }
.ks-kpi__polozka--odkaz { text-decoration: none; color: inherit; }
.ks-kpi__polozka--odkaz:hover { background: var(--ui-color-neutral-50); }
.ks-kpi__polozka--odkaz:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-kpi--dve-rady { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); }
/* Počet sloupců podle šířky pásu, ne okna: hlavní sloupec zužuje i boční panel. */
.ks-kpi-obal { container-type: inline-size; }
@container (max-width: 50rem) { .ks-kpi { grid-auto-flow: row; grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@container (max-width: 30rem) { .ks-kpi { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.ks-card .ks-kpi { gap: 0; }
.ks-card .ks-kpi__polozka { justify-content: center; gap: 0.1rem; min-height: 3.5rem; padding: var(--ui-space-2) var(--ui-space-4); border: 0; border-left: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: 0; background: transparent; }
.ks-card .ks-kpi__polozka--odkaz:hover { background: var(--ui-color-neutral-50); }
.ks-card .ks-kpi__label { font-size: var(--ui-font-size-xs); }
.ks-card .ks-kpi__hodnota { font-size: var(--ui-font-size-metrika); }
/* Bez rámečku začíná text u okraje karty. */
.ks-card .ks-kpi__polozka:first-child, .ks-card .ks-kpi--dve-rady .ks-kpi__polozka:nth-child(3n+1) { border-left: 0; padding-left: 0; }
.ks-card .ks-kpi--dve-rady .ks-kpi__polozka:nth-child(n+4) { border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
@container (max-width: 50rem) {
  .ks-card .ks-kpi__polozka:nth-child(3n+1) { border-left: 0; padding-left: 0; }
  .ks-card .ks-kpi__polozka:nth-child(n+4) { border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
}
.ks-kpi__pruh { display: block; height: 0.1875rem; margin-top: var(--ui-space-1); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-200); overflow: hidden; }
.ks-kpi__pruh-vypln { display: block; height: 100%; width: 0; background: var(--ui-color-primary); }
.ks-kpi__polozka--success .ks-kpi__pruh-vypln { background: var(--ui-color-success); }
.ks-kpi__polozka--warning .ks-kpi__pruh-vypln { background: var(--ui-color-warning); }
.ks-kpi__polozka--danger .ks-kpi__pruh-vypln { background: var(--ui-color-danger); }
.ks-kpi__popis { font-size: var(--ui-font-size-sm); color: var(--ui-color-text-subtle); }
.ks-kpi__polozka--danger .ks-kpi__hodnota { color: var(--ui-color-danger); }
.ks-kpi__polozka--success .ks-kpi__hodnota { color: var(--ui-color-success); }
.ks-kpi__polozka--warning .ks-kpi__hodnota { color: var(--ui-color-warning); }

.ks-stavy-odkazy { display: flex; flex-wrap: wrap; gap: var(--ui-space-3); }
/* Řádek se stavy pod KPI pásem a dvousloupcový blok seznamů. */
.ks-stavy-radek { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-3); padding: var(--ui-space-3) var(--ui-space-5); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); }
.ks-stavy-radek__popis { margin-right: var(--ui-space-3); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); }
.ks-dva-sloupce { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--ui-stack-gap); align-items: start; }
@media (max-width: 63rem) { .ks-dva-sloupce { grid-template-columns: 1fr; } }
/* Stav s počtem v jednom štítku; celý štítek je odkaz. */
.ks-stav-odkaz { display: inline-flex; border-radius: var(--ui-radius-pill); text-decoration: none; }
.ks-stav-odkaz .ks-stav { display: inline-flex; align-items: center; gap: var(--ui-space-2); padding-block: 0.125rem; }
.ks-stav-odkaz:hover .ks-stav { box-shadow: inset 0 0 0 var(--ui-border-width-1) currentColor; }
.ks-stav-odkaz:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-stav-odkaz__pocet { font-weight: var(--ui-font-weight-semibold); }

/* --- ks-progress-bar --- */
.ks-progress__hlava { display: flex; justify-content: space-between; align-items: baseline; gap: var(--ui-space-3); margin-bottom: var(--ui-space-2); font-size: var(--ui-font-size-md); color: var(--ui-color-text-muted); }
.ks-progress__hlava strong { color: var(--ui-color-text); }
.ks-progress__pruh { display: flex; height: 0.625rem; border-radius: var(--ui-radius-pill); overflow: hidden; background: var(--ui-color-neutral-100); }
.ks-progress__segment { height: 100%; }
.ks-progress__segment--primary, .ks-progress__tecka--primary { background: var(--ui-color-primary); }
.ks-progress__segment--success, .ks-progress__tecka--success { background: var(--ui-color-success); }
.ks-progress__segment--warning, .ks-progress__tecka--warning { background: var(--ui-color-warning); }
.ks-progress__segment--danger, .ks-progress__tecka--danger { background: var(--ui-color-danger); }
.ks-progress__segment--zbytek, .ks-progress__tecka--zbytek { background: var(--ui-color-neutral-200); }
.ks-progress__legenda { display: flex; flex-wrap: wrap; gap: var(--ui-space-2) var(--ui-space-4); list-style: none; margin: var(--ui-space-3) 0 0; padding: 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-progress__legenda li { display: flex; align-items: center; gap: var(--ui-space-2); }
.ks-progress__legenda strong { color: var(--ui-color-text); }
.ks-progress__tecka { width: 0.5rem; height: 0.5rem; border-radius: var(--ui-radius-pill); flex: none; }
.ks-progress__procenta { color: var(--ui-color-text-subtle); }

/* --- ks-timeline --- */
/* Jedna řada kroků; při nedostatku místa se posouvá vodorovně, nelomí se. */
.ks-timeline { list-style: none; margin: 0; padding: 0 0 var(--ui-space-2); display: grid; grid-auto-flow: column; grid-auto-columns: minmax(7rem, 1fr); gap: var(--ui-space-4); overflow-x: auto; scrollbar-gutter: stable; }
.ks-timeline__krok { position: relative; min-width: 0; padding-top: var(--ui-space-4); }
/* Na úzkém obsahu se kroky zalomí do řádků místo vodorovného posunu. */
@media (max-width: 75rem) {
  .ks-timeline { grid-auto-flow: row; grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr)); overflow-x: visible; }
}
.ks-timeline__krok::before { content: ""; position: absolute; top: 0.3rem; left: 0; right: 0; height: 0.125rem; background: var(--ui-color-neutral-200); }
.ks-timeline__krok--splneno::before { background: var(--ui-color-success); }
.ks-timeline__krok--probiha::before { background: var(--ui-color-warning); }
.ks-timeline__bod { position: absolute; top: 0; left: 0; width: 0.6rem; height: 0.6rem; border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-200); }
.ks-timeline__krok--splneno .ks-timeline__bod { background: var(--ui-color-success); }
.ks-timeline__krok--probiha .ks-timeline__bod { background: var(--ui-color-warning); }
.ks-timeline__label { display: block; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-timeline__label a { color: inherit; text-decoration: underline; text-underline-offset: 0.15em; }
.ks-timeline__datum { display: block; font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); white-space: nowrap; }

/* --- ks-alert-list --- */
.ks-alerty { margin-block: var(--ui-stack-gap) var(--ui-space-4); }
.ks-alerty:first-child { margin-top: 0; }
.ks-alerty__nadpis { margin: 0 0 var(--ui-space-2); font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-semibold); color: var(--ui-color-text); }
.ks-alerty ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--ui-space-2); }
.ks-alert { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-3); padding: var(--ui-space-2) var(--ui-space-3); border-radius: var(--ui-radius-1); border-left: 0.1875rem solid; font-size: var(--ui-font-size-md); }
.ks-alert--warning { background: var(--ui-color-warning-soft); border-color: var(--ui-color-warning); color: var(--ui-color-warning); }
.ks-alert--danger { background: var(--ui-color-danger-soft); border-color: var(--ui-color-danger); color: var(--ui-color-danger); }
.ks-alert--info { background: var(--ui-color-info-soft); border-color: var(--ui-color-info); color: var(--ui-color-info); }
.ks-alert a { color: inherit; font-weight: var(--ui-font-weight-semibold); }

/* --- ks-filter-bar --- */
.ks-filtry { background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); padding: var(--ui-space-3) var(--ui-space-4); margin-bottom: var(--ui-stack-gap); }
.ks-filtry__radek { display: flex; gap: var(--ui-space-3); flex-wrap: wrap; align-items: flex-end; }
.ks-filtry__hledat { position: relative; flex: 1 1 18rem; min-width: 12rem; max-width: 24rem; }
.ks-filtry__radek .ks-field { flex: 1 1 11rem; min-width: 11rem; max-width: 18rem; }
/* Přebíjí .ks-app .form-control kvůli místu na lupu. */
.ks-app .ks-filtry__hledat .form-control { padding-left: 2rem; }
.ks-filtry__lupa { position: absolute; left: 0.55rem; bottom: 0.5625rem; color: var(--ui-color-text-subtle); pointer-events: none; }
.ks-filtry__akce { display: flex; gap: var(--ui-space-2); }
.ks-filtry__vice { margin-top: var(--ui-space-3); }
.ks-filtry__vice > summary { display: inline-flex; align-items: center; gap: var(--ui-space-2); height: var(--ui-control-height); cursor: pointer; list-style: none; }
.ks-filtry__vice > summary::-webkit-details-marker { display: none; }
.ks-filtry__vice > summary::after { content: ""; width: 0.4rem; height: 0.4rem; border-right: 0.09375rem solid currentColor; border-bottom: 0.09375rem solid currentColor; transform: rotate(45deg) translateY(-0.1rem); }
.ks-filtry__vice[open] > summary::after { transform: rotate(-135deg) translateY(-0.1rem); }
.ks-filtry__vice > summary:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-filtry__vice[open] > summary { margin-bottom: var(--ui-space-3); }
.ks-filtry__pocet-aktivnich { padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-pill); background: var(--ui-color-primary-soft); color: var(--ui-color-primary); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-semibold); }
.ks-filtry__chipy { display: flex; flex-wrap: wrap; gap: var(--ui-space-2); margin-top: var(--ui-space-3); }
.ks-chip { display: inline-flex; align-items: center; gap: var(--ui-space-2); padding: 0.15rem var(--ui-space-3); border: var(--ui-border-width-1) solid var(--ui-color-border-silna); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-0); color: var(--ui-color-text); font-size: var(--ui-font-size-xs); text-decoration: none; }
.ks-chip:hover { border-color: var(--ui-color-primary); background: var(--ui-color-neutral-50); }
.ks-chip:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-chip__popis { color: var(--ui-color-text-muted); }
.ks-chip__krizek { color: var(--ui-color-text-subtle); }
.ks-chip--zrusit { border-style: dashed; color: var(--ui-color-text-muted); }
.ks-filtry__pocet { margin: 0; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }

/* --- Seznam: skupiny, mikroodznaky vazeb, volba sloupců --- */
.ks-skupina__hlava th {
  position: sticky; top: 2.25rem; z-index: 1;
  height: 2rem; padding: 0 var(--ui-space-4);
  background: var(--ui-color-neutral-50);
  border-top: var(--ui-border-width-1) solid var(--ui-color-border);
  font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold);
  color: var(--ui-color-text); text-align: left;
}
.ks-skupina--po-terminu .ks-skupina__hlava th { background: var(--ui-color-danger-soft); color: var(--ui-color-danger); }
.ks-skupina--po-terminu td:first-child { color: var(--ui-color-danger); font-weight: var(--ui-font-weight-medium); }
/* Mezisoučet skupiny stojí ve stejném sloupci jako částky řádků. */
.ks-skupina__hlava td { height: 2.5rem; background: var(--ui-color-neutral-50); border-top: var(--ui-border-width-1) solid var(--ui-color-border-silna); font-size: var(--ui-font-size-md); font-weight: var(--ui-font-weight-semibold); }
.ks-skupina:first-of-type .ks-skupina__hlava td { border-top: 0; }
/* V kartě: ukazatel, tabulka a rozpad od sebe. */
.ks-card__telo > .ks-table-wrap:not(:first-child) { margin-top: var(--ui-space-5); }
.ks-card__telo > .ks-table-wrap + * { margin-top: var(--ui-space-6); }
/* První skupina navazuje na hlavičku sloupců, dvojlinka by tam byla navíc. */
.ks-skupina:first-of-type .ks-skupina__hlava th { border-top: 0; }
.ks-skupina__pocet { margin-left: var(--ui-space-2); padding: 0 var(--ui-space-2); border-radius: var(--ui-radius-pill); background: var(--ui-color-neutral-200); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-regular); letter-spacing: normal; }

/* Hierarchie v řádku: klíč a čísla vpřed, doprovodné údaje tlumeně. */
.ks-table td.ks-num { font-weight: var(--ui-font-weight-medium); }
.ks-table td.ks-cell-tlumena { color: var(--ui-color-text-muted); }
.ks-table--seznam tbody tr[data-odkaz] { cursor: pointer; }

.ks-filtry__spodek { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-3); flex-wrap: wrap; margin-top: var(--ui-space-3); }
.ks-filtry__nastaveni { display: flex; align-items: center; gap: var(--ui-space-3); }
.ks-filtry__na-stranku { display: flex; align-items: center; gap: var(--ui-space-2); font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-filtry__na-stranku select { width: auto; min-width: 5rem; }
.ks-sloupce-menu { padding: var(--ui-space-3); min-width: 15rem; }
/* Roluje jen seznam, patička s tlačítky a nápovědou zůstává vidět. */
.ks-sloupce-menu__seznam { max-height: 18rem; overflow-y: auto; }
.ks-sloupce-menu__radek { display: flex; align-items: center; gap: var(--ui-space-2); padding: var(--ui-space-1) 0; font-size: var(--ui-font-size-md); cursor: pointer; border-radius: var(--ui-radius-1); }
.ks-sloupce-menu__radek:hover { background: var(--ui-color-neutral-50); }
.ks-sloupce-menu__radek:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-sloupce-menu__radek.je-tazeny { opacity: 0.5; }
.ks-sloupce-menu__uchyt { display: inline-flex; color: var(--ui-color-text-subtle); cursor: grab; }
.ks-sloupce-menu__pata { padding-top: var(--ui-space-2); margin-top: var(--ui-space-2); border-top: var(--ui-border-width-1) solid var(--ui-color-border); display: flex; gap: var(--ui-space-2); }
.ks-sloupce-menu__stav { margin: var(--ui-space-2) 0 0; font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }

.ks-app main a:not(.ui-btn):not(.dropdown-item):not(.nav-link):not(.ks-tab) { color: var(--ui-color-primary); text-decoration: none; }
.ks-app main a:not(.ui-btn):not(.dropdown-item):not(.nav-link):not(.ks-tab):hover { text-decoration: underline; }
/* Částka v tabulce jako odkaz zůstává v barvě textu, barevné jsou jen identifikátory záznamů. */
.ks-app main .ks-table td.ks-num a:not(.ui-btn):not(.dropdown-item) { color: inherit; }

.ks-zmeny { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: var(--ui-space-2); }
.ks-zmeny li { display: grid; grid-template-columns: 9rem 1fr auto; gap: var(--ui-space-3); align-items: baseline; font-size: var(--ui-font-size-md); }
.ks-zmeny__kdy { color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }
.ks-zmeny__kdo { color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }
@media (max-width: 48rem) { .ks-zmeny li { grid-template-columns: 1fr; gap: 0; } }

/* Srovnání u hodnoty */
.ks-srovnani { display: block; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); font-weight: var(--ui-font-weight-regular); }
.ks-srovnani--vedle { display: inline; }
.ks-poznamka-text { margin: 0; color: var(--ui-color-text); }

/* Řádek po termínu */
.ks-radek--pozor td { background: var(--ui-color-danger-soft); }
.ks-radek--pozor .ks-srovnani { color: var(--ui-color-danger); }
/* Stornovaná faktura: tlumený řádek a přeškrtnuté částky. */
.ks-radek--storno td { color: var(--ui-color-text-muted); }
.ks-radek--storno .ks-num { text-decoration: line-through; }
/* Stejná váha jako obecné pravidlo pro odkazy v obsahu, jinak by zůstaly modré. */
.ks-app main .ks-radek--storno a:not(.ui-btn):not(.dropdown-item):not(.nav-link):not(.ks-tab) { color: var(--ui-color-text-muted); }
.ks-stavy-bunka { display: flex; gap: var(--ui-space-1); flex-wrap: wrap; }

/* --- ks-udaje: údaje v řádku, popisek nad hodnotou (PATTERN_udaje) --- */
.ks-udaje { display: flex; flex-wrap: wrap; gap: var(--ui-space-3) calc(var(--ui-space-6) + var(--ui-space-5)); margin: 0; }
.ks-udaje__polozka { min-width: 0; overflow-wrap: anywhere; }
.ks-udaje dt { font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-muted); }
.ks-udaje dd { margin: 0; color: var(--ui-color-text); }
.ks-udaje dt.ks-udaje__dalsi { margin-top: var(--ui-space-3); }
.ks-udaje--souhrn dd { font-weight: var(--ui-font-weight-semibold); }
.ks-udaje--oddelene { padding-top: var(--ui-space-4); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-udaje + .ks-udaje { margin-top: var(--ui-space-4); }
.ks-udaje dd.ks-udaje__tlumene { color: var(--ui-color-text-muted); font-weight: var(--ui-font-weight-regular); }
.ks-udaje__poznamka { display: block; font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-muted); }
.ks-udaje__poznamka--pozor { color: var(--ui-color-warning); }

/* --- ks-osa: kroky s datem v řádku, spojnice ke kroku bez data přerušovaná (PATTERN_osa) --- */
.ks-osa { display: flex; align-items: flex-start; list-style: none; margin: calc(var(--ui-space-5) + var(--ui-space-1)) 0 var(--ui-space-5); padding: 0; }
.ks-osa__krok { display: flex; flex: 1 1 auto; align-items: flex-start; min-width: 0; }
.ks-osa__krok:first-child { flex: none; }
.ks-osa__krok + .ks-osa__krok::before { content: ""; flex: 1 1 auto; min-width: var(--ui-space-5); margin: calc(var(--ui-font-size-sm) * var(--ui-line-height-tight) / 2) var(--ui-space-3) 0; border-top: var(--ui-border-width-1) dashed var(--ui-color-border-silna); }
.ks-osa__krok + .ks-osa__krok--hotovo::before { border-top: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-text-muted); }
.ks-osa__text { display: flex; flex-direction: column; flex: none; }
.ks-osa__nazev { font-size: var(--ui-font-size-sm); line-height: var(--ui-line-height-tight); white-space: nowrap; color: var(--ui-color-text-subtle); }
.ks-osa__krok--hotovo .ks-osa__nazev { color: var(--ui-color-text); }
.ks-osa__krok--aktualni .ks-osa__nazev { font-weight: var(--ui-font-weight-semibold); }
.ks-osa__datum { font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); white-space: nowrap; }
@media (max-width: 48rem) {
  .ks-osa, .ks-osa__krok { flex-direction: column; }
  .ks-osa__krok + .ks-osa__krok::before { flex: none; min-width: 0; height: var(--ui-space-3); margin: var(--ui-space-1) 0 var(--ui-space-1) var(--ui-space-3); border-top: 0; border-left: var(--ui-border-width-1) dashed var(--ui-color-border-silna); }
  .ks-osa__datum--prazdne { display: none; }
  .ks-osa__krok + .ks-osa__krok--hotovo::before { border-top: 0; border-left: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-text-muted); }
}

/* Karta jen s hlavičkou (prázdný seznam jedním řádkem) a formulář rozbalený v kartě. */
.ks-card--jen-hlava > .ks-card__hlava { border-bottom: 0; }
.ks-card__nadpis-prazdno { margin-left: var(--ui-space-3); font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-muted); }
.ks-card__formular { padding: var(--ui-card-pad); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); background: var(--ui-color-neutral-50); }
.ks-card__formular[hidden] { display: none; }

/* Sbalitelná karta */
.ks-card--sbalitelna > .ks-card__hlava { cursor: pointer; list-style: none; justify-content: flex-start; }
.ks-card--sbalitelna > .ks-card__hlava::-webkit-details-marker { display: none; }
.ks-card--sbalitelna > .ks-card__hlava::before { content: ""; width: 0.5rem; height: 0.5rem; flex: none; border-right: 0.125rem solid var(--ui-color-text-subtle); border-bottom: 0.125rem solid var(--ui-color-text-subtle); transform: rotate(-45deg); transition: transform 0.15s; }
.ks-card--sbalitelna[open] > .ks-card__hlava::before { transform: rotate(45deg); }
.ks-card--sbalitelna:not([open]) > .ks-card__hlava { border-bottom: 0; }

/* Karty a panely bez rámečku, se stínem; vnořené do karty stín nemají. */
.ks-sekce, .ks-meta-grid, .ks-stat-tile, .ks-budget-bar, .ks-detail-card, .ks-hlavicka, .ks-souhrn__blok,
.ks-panel, .ks-filtry, .ks-kpi__polozka, .ks-stavy-radek, .ks-kalendar, .menu-card {
  border: 0;
  box-shadow: var(--ui-shadow-2);
}
.ks-card .ks-sekce, .ks-card .ks-table-wrap, .ks-card .ks-kpi__polozka { box-shadow: none; }

/* ── Přístupnost ───────────────────────────────────────────── */

/* Skip-link */
.ks-skip { position: absolute; left: -100rem; top: var(--ui-space-2); z-index: 100; padding: var(--ui-space-2) var(--ui-space-4); background: var(--ui-color-neutral-0); border-radius: var(--ui-radius-1); box-shadow: var(--ui-shadow-3); }
.ks-skip:focus { left: var(--ui-space-4); }

/* Focus */
.ks-app a:focus-visible, .ks-app button:focus-visible, .ks-app input:focus-visible,
.ks-app select:focus-visible, .ks-app textarea:focus-visible, .ks-app summary:focus-visible,
.ks-app [tabindex]:focus-visible {
  outline: none;
  box-shadow: var(--ui-focus-ring);
  border-radius: var(--ui-radius-1);
}
.ks-app main:focus-visible { box-shadow: none; }

@media (max-width: 48rem) {
  .ks-table-wrap { overflow: visible; border: 0; box-shadow: none; background: none; }
  .ks-table, .ks-table tbody, .ks-table tr, .ks-table td { display: block; width: 100%; }
  .ks-table thead, .ks-table tfoot { display: none; }
  .ks-table tr { background: var(--ui-color-neutral-0); border: 0; border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-2); margin-bottom: var(--ui-space-3); padding: var(--ui-space-2) var(--ui-space-3); }
  .ks-table td { display: flex; justify-content: space-between; gap: var(--ui-space-3); padding: var(--ui-space-2) 0; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); text-align: left; white-space: normal; }
  .ks-table td:last-child { border-bottom: 0; }
  .ks-card .ks-table td:first-child, .ks-card .ks-table td:last-child { padding-left: 0; padding-right: 0; }
  .ks-table td::before { content: attr(data-sloupec); color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); flex: none; }
  .ks-table td.ks-num { justify-content: space-between; }
  .ks-skupina__hlava th { position: static; display: block; }
  /* Šipka se na kartě nezobrazuje; odkaz v buňce zůstává a pokrývá celou kartu. */
  .ks-table td.ks-radek-odkaz__sipka { padding: 0; border: 0; }
  .ks-table td.ks-radek-odkaz__sipka::before, .ks-radek-odkaz__sipka .ks-ikona { display: none; }
  .ks-table td:has(+ td.ks-radek-odkaz__sipka:last-child) { border-bottom: 0; }
}

/* Ukázková řada prvků v UI kitu. */
.ks-ukazka { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-3); margin-bottom: var(--ui-space-3); }
.ks-ukazka:last-child { margin-bottom: 0; }

/* Kostra tabulky při načítání. */
.ks-skeleton { display: grid; gap: var(--ui-space-2); padding: var(--ui-space-4); }
.ks-skeleton__radek { height: 1rem; border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-100); }
@media (prefers-reduced-motion: no-preference) {
  .ks-skeleton__radek { background: linear-gradient(90deg, var(--ui-color-neutral-100), var(--ui-color-neutral-50), var(--ui-color-neutral-100)); background-size: 200% 100%; animation: ks-puls 1.2s linear infinite; }
  @keyframes ks-puls { from { background-position: 200% 0; } to { background-position: -200% 0; } }
}

/* Odesílací tlačítko po odeslání: zablokované s indikátorem. */
.ui-btn.is-loading { position: relative; padding-left: calc(var(--ui-space-4) + 1.1rem); }
.ui-btn.is-loading::before {
  content: ""; position: absolute; left: var(--ui-space-3); top: 50%; width: 0.85rem; height: 0.85rem;
  margin-top: -0.425rem; border: 0.125rem solid currentColor; border-right-color: transparent;
  border-radius: 50%; animation: ks-rotace 0.7s linear infinite;
}
@keyframes ks-rotace { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .ui-btn.is-loading::before { animation: none; } }

/* === Tisk === */
@media print {
  .ks-filtry, .ks-tabs, .ks-page-header__akce, .ks-card__akce,
  .ks-lista-akci, .ks-footer, .ks-skip, .ks-pagination, .ks-sloupec-akce, .ks-hromadne, .ks-sloupec-vyber { display: none !important; }
  body.ks-app { background: var(--ui-color-neutral-0); }
  .ks-card, .ks-sekce, .ks-table-wrap, .ks-detail-card { border: 0; box-shadow: none; }
  .ks-table thead { display: table-header-group; }
  .ks-table tr, .ks-card, .ks-sekce { break-inside: avoid; }
  .ks-stav, .ks-badge { background: transparent !important; border: var(--ui-border-width-1) solid currentColor; }
  a[href]::after { content: ""; }
}

/* QR pro nastavení druhého faktoru; SVG je vložené přímo v HTML kvůli CSP. */
.ks-qr { display: inline-block; padding: var(--ui-space-3); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-1); }
.ks-qr svg { display: block; width: 12rem; height: 12rem; }

/* Vrácení rozúčtování: důvod se rozbalí až po kliknutí, aby řádek nerostl do výšky. */
.ks-vraceni { display: inline-block; position: relative; }
.ks-vraceni > summary { list-style: none; cursor: pointer; }
.ks-vraceni > summary::-webkit-details-marker { display: none; }
.ks-vraceni__form { position: absolute; right: 0; z-index: 5; display: grid; gap: var(--ui-space-2); width: 18rem; padding: var(--ui-space-3); background: var(--ui-color-neutral-0); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-2); box-shadow: var(--ui-shadow-2); text-align: left; }

.ks-obdobi { display: flex; gap: var(--ui-space-2); align-items: center; }
.ks-obdobi .ks-field__label { margin: 0; }

/* Koláčový graf (ui/kolac.html): donut ze SVG kružnic a legenda vedle. */
.ks-kolac { display: flex; gap: var(--ui-space-5); align-items: center; flex-wrap: wrap; }
.ks-kolac__graf { width: 11rem; height: 11rem; transform: rotate(-90deg); flex: none; }
.ks-kolac__pozadi { fill: none; stroke: var(--ui-color-neutral-100); stroke-width: 6; }
.ks-kolac__dil { fill: none; stroke-width: 6; }
.ks-kolac__legenda { list-style: none; margin: 0; padding: 0; display: grid; gap: var(--ui-space-2); min-width: 12rem; flex: 1; }
.ks-kolac__polozka { display: grid; grid-template-columns: auto 1fr auto auto; gap: var(--ui-space-3); align-items: baseline; font-size: var(--ui-font-size-sm); }
.ks-kolac__znak { width: 0.75rem; height: 0.75rem; border-radius: var(--ui-radius-1); display: inline-block; }
.ks-kolac__hodnota { font-weight: var(--ui-font-weight-semibold); }
.ks-kolac__podil { color: var(--ui-color-text-muted); }
.ks-kolac__dil--1, .ks-kolac__znak--1 { stroke: var(--ui-color-primary); background: var(--ui-color-primary); }
.ks-kolac__dil--2, .ks-kolac__znak--2 { stroke: var(--ui-color-success); background: var(--ui-color-success); }
.ks-kolac__dil--3, .ks-kolac__znak--3 { stroke: var(--ui-color-warning); background: var(--ui-color-warning); }
.ks-kolac__dil--4, .ks-kolac__znak--4 { stroke: var(--ui-color-danger); background: var(--ui-color-danger); }
.ks-kolac__dil--5, .ks-kolac__znak--5 { stroke: var(--ui-color-info); background: var(--ui-color-info); }
.ks-kolac__dil--6, .ks-kolac__znak--6 { stroke: var(--ui-color-text-muted); background: var(--ui-color-text-muted); }

/* Řádek změny dodatku ve formuláři založení. */
.ks-zmena-radek { padding: var(--ui-space-4) 0; border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-zmena-radek:first-child { padding-top: 0; border-top: 0; }
.ks-zmena-radek + .ks-zmena-radek { margin-top: var(--ui-space-2); }

/* Odznaky v seznamu studií jsou odkazy na záložku detailu, ale vypadají jako odznak. */
.ks-app main a.ks-badge:not(.ui-btn) { color: inherit; text-decoration: none; }
.ks-app main a.ks-badge:hover { text-decoration: underline; }

/* Přidání záznamu z číselníku pod tabulkou v kartě. */
.ks-tabulka-pridat { justify-content: flex-start; align-items: center; }
.ks-tabulka-pridat__vyber { flex: 1 1 20rem; }

/* Zakázané pole (formulář jen ke čtení) se nesmí plést s polem k vyplnění. */
.form-control:disabled, .form-select:disabled, .form-control[readonly] {
  background-color: var(--ui-color-neutral-100); color: var(--ui-color-text-muted); cursor: default; opacity: 1;
}

/* Lišta převzaté identity (django-hijack), drží se dole přes celou šířku. */
.ks-prevzeti { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1100; display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: var(--ui-space-3); padding: var(--ui-space-2) var(--ui-space-4); background: var(--ui-color-warning-soft); color: var(--ui-color-text); border-top: var(--ui-border-width-1) solid var(--ui-color-warning); }
.ks-prevzeti__akce { margin: 0; }

/* Jméno přihlášeného v postranním panelu je jen popisek, odhlášení má vlastní položku. */
/* S lištou převzetí se obsah i postranní panel zkrátí o její výšku, nic pod ní nezmizí. */
body:has(.ks-prevzeti) { padding-bottom: 3.5rem; }
body:has(.ks-prevzeti) .ks-sidebar { height: calc(100dvh - 3.5rem); }

/* --- ks-pruvodce: formulář po krocích --- */
.ks-pruvodce__kroky { list-style: none; margin: 0 0 var(--ui-space-5); padding: 0; display: flex; flex-wrap: wrap; gap: var(--ui-space-2) var(--ui-space-6); }
.ks-pruvodce__tlacitko { display: inline-flex; align-items: center; gap: var(--ui-space-2); padding: 0; border: 0; background: none; color: var(--ui-color-text-muted); font: inherit; font-size: var(--ui-font-size-md); cursor: pointer; }
.ks-pruvodce__tlacitko:disabled { cursor: default; color: var(--ui-color-text-subtle); }
.ks-pruvodce__tlacitko:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-pruvodce__cislo { display: inline-flex; align-items: center; justify-content: center; flex: none; width: var(--ui-space-6); height: var(--ui-space-6); border: var(--ui-border-width-1) solid var(--ui-color-border-silna); border-radius: var(--ui-radius-pill); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); }
.ks-pruvodce__tlacitko[aria-current="step"] { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
.ks-pruvodce__tlacitko[aria-current="step"] .ks-pruvodce__cislo { background: var(--ui-color-primary); border-color: var(--ui-color-primary); color: var(--ui-color-neutral-0); }
.ks-pruvodce__polozka.je-hotovo .ks-pruvodce__cislo { border-color: var(--ui-color-success); color: var(--ui-color-success); }
.ks-pruvodce__polozka.ma-chybu .ks-pruvodce__cislo { border-color: var(--ui-color-danger); color: var(--ui-color-danger); }
.ks-pruvodce__panel[hidden], .ks-pruvodce [data-pruvodce-zpet][hidden], .ks-pruvodce [data-pruvodce-dal][hidden], .ks-pruvodce__zalozit[hidden] { display: none; }
.ks-pruvodce__potreba { margin: 0 0 var(--ui-space-3); padding-left: var(--ui-space-5); }
.ks-pruvodce__potreba li[hidden] { display: none; }
.ks-pruvodce__poznamka { margin: 0; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }
.ks-pruvodce__upravit { padding: 0; border: 0; background: none; color: var(--ui-color-primary); font: inherit; font-weight: var(--ui-font-weight-semibold); cursor: pointer; }
.ks-pruvodce__upravit:hover { text-decoration: underline; }
.ks-pruvodce__upravit:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-zmena-radek__jine { margin-top: var(--ui-space-2); }
.ks-zmena-radek__jine > summary { cursor: pointer; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }

/* Navržená hodnota z dokumentu (PATTERN_navrh_hodnoty, ui/navrh_hodnoty.html) */
.ks-navrh { margin-top: var(--ui-space-2); font-size: var(--ui-font-size-sm); }
.ks-navrh__zdroj > summary { display: inline-flex; align-items: center; gap: var(--ui-space-2); cursor: pointer; color: var(--ui-color-text-muted); }
.ks-navrh__zdroj > summary:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }
.ks-navrh__citace { margin: var(--ui-space-2) 0 0; padding: var(--ui-space-2) var(--ui-space-3); border-left: calc(var(--ui-border-width-1) * 3) solid var(--ui-color-info); background: var(--ui-color-info-soft); color: var(--ui-color-text); overflow-wrap: anywhere; }
.ks-navrh__rozpor { margin: 0 0 var(--ui-space-2); color: var(--ui-color-warning); font-weight: var(--ui-font-weight-semibold); }
.ks-navrh__moznosti { display: grid; gap: var(--ui-space-2); margin: 0; padding: 0; list-style: none; }
.ks-navrh__moznost { display: flex; flex-wrap: wrap; align-items: center; gap: var(--ui-space-2) var(--ui-space-3); padding: var(--ui-space-2) var(--ui-space-3); border: var(--ui-border-width-1) dashed var(--ui-color-border-silna); border-radius: var(--ui-radius-1); }
.ks-navrh__moznost > .ks-navrh__zdroj { flex-basis: 100%; }
.ks-navrh__text { color: var(--ui-color-text); overflow-wrap: anywhere; }
.ks-navrh__souhrn-zdroj { display: block; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-regular); }
[data-navrh-souhrn][hidden], [data-navrh-souhrn-pole][hidden] { display: none; }
.ks-tezba__prubeh { margin: var(--ui-space-4) 0 0; color: var(--ui-color-text-muted); font-size: var(--ui-font-size-sm); }

/* --- pracovní plocha: dlaždice se šipkou, řádek stavů, termíny s filtrem (PATTERN_home_stats_strip) --- */
.ks-kpi--plocha .ks-kpi__polozka { justify-content: flex-start; gap: var(--ui-space-1); min-height: 0; padding: var(--ui-space-3) var(--ui-space-4); }
.ks-kpi--plocha .ks-kpi__hodnota { display: flex; align-items: center; justify-content: space-between; gap: var(--ui-space-2); }
.ks-kpi__sipka { flex: none; display: inline-flex; color: var(--ui-color-text-muted); }
.ks-kpi__sipka .ks-ikona { width: 1rem; height: 1rem; }
.ks-kpi--plocha .ks-kpi__popis { min-height: 1rem; margin-top: calc(var(--ui-space-1) * -1); font-size: var(--ui-font-size-xs); line-height: 1rem; }
.ks-stavy-radek__odkaz { margin-left: auto; font-size: var(--ui-font-size-sm); font-weight: var(--ui-font-weight-semibold); text-decoration: none; }
.ks-stavy-radek__odkaz::after { content: " ›"; }
.ks-dalsi-krok__studie { display: block; margin-top: 0.125rem; font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-terminy__filtry { display: flex; flex-wrap: wrap; gap: var(--ui-space-2); padding: 0 var(--ui-card-pad) var(--ui-space-3); }
.ks-filtr-volba { padding: 0.1875rem var(--ui-space-3); border: var(--ui-border-width-1) solid var(--ui-color-border); border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-0); color: var(--ui-color-text-muted); font: inherit; font-size: var(--ui-font-size-sm); cursor: pointer; }
.ks-filtr-volba:hover { color: var(--ui-color-text); background: var(--ui-color-neutral-50); }
.ks-filtr-volba:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }
.ks-filtr-volba[aria-pressed="true"] { border-color: var(--ui-color-primary); background: var(--ui-color-primary-soft); color: var(--ui-color-primary); }
.ks-filtr-volba__pocet { margin-left: var(--ui-space-1); font-weight: var(--ui-font-weight-semibold); }
.ks-terminy__dalsi { padding: var(--ui-space-3) var(--ui-card-pad); border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-terminy__dalsi[hidden], .ks-table tr[hidden], .ks-table tbody[hidden] { display: none; }
/* Řádek tabulky jako celý odkaz: odkaz v buňce se roztáhne přes řádek. */
.ks-radek-odkaz { position: relative; }
.ks-radek-odkaz:hover td { background: var(--ui-color-neutral-50); }
.ks-app main .ks-radek-odkaz a.ks-radek-odkaz__odkaz:not(.ui-btn):not(.dropdown-item),
.ks-app main .ks-radek-odkaz a.ks-radek-odkaz__odkaz:not(.ui-btn):not(.dropdown-item):hover { color: inherit; text-decoration: none; }
.ks-radek-odkaz__odkaz::after { content: ""; position: absolute; inset: 0; }
.ks-radek-odkaz__odkaz:focus-visible { outline: none; }
.ks-radek-odkaz:has(.ks-radek-odkaz__odkaz:focus-visible) { outline: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-primary); outline-offset: calc(var(--ui-border-width-1) * -2); }
.ks-radek-odkaz__sipka { width: 1.5rem; color: var(--ui-color-text-muted); }
.ks-radek-odkaz__sipka .ks-ikona { display: block; width: 1rem; height: 1rem; margin-left: auto; }
/* Lhůta uveřejnění v registru smluv v buňce seznamu (ui/stav_uverejneni.html). */
.ks-uverejneni__lhuta { color: var(--ui-color-danger); }

/* Odstíny primární barvy v pruhu ks-progress-bar (ui/progress.html), od nejsytějšího */
.ks-progress__segment--odstin-1, .ks-progress__tecka--odstin-1 { background: var(--ui-color-primary); }
.ks-progress__segment--odstin-2, .ks-progress__tecka--odstin-2 { background: color-mix(in srgb, var(--ui-color-primary) 65%, var(--ui-color-neutral-0)); }
.ks-progress__segment--odstin-3, .ks-progress__tecka--odstin-3 { background: color-mix(in srgb, var(--ui-color-primary) 45%, var(--ui-color-neutral-0)); }
.ks-progress__segment--odstin-4, .ks-progress__tecka--odstin-4 { background: color-mix(in srgb, var(--ui-color-primary) 30%, var(--ui-color-neutral-0)); }

.ks-card__radek-nad { margin: 0 0 var(--ui-space-3); padding-bottom: var(--ui-space-3); border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-card__radek-pod { margin: var(--ui-space-3) 0 0; padding-top: var(--ui-space-3); border-top: var(--ui-border-width-1) solid var(--ui-color-border); font-size: var(--ui-font-size-sm); color: var(--ui-color-text-muted); }
.ks-srovnani.ks-srovnani--pozor, .ks-radek--pozor .ks-srovnani--pozor { color: var(--ui-color-warning); }
.ks-text-chyba { color: var(--ui-color-danger); }

/* Ztlumený řádek tabulky: ukončený subjekt, neaktivní položka, procedura, která dnes neplatí */
.ks-radek--tlumeny td, .ks-radek--tlumeny th { color: var(--ui-color-text-muted); }
.ks-app main .ks-radek--tlumeny a:not(.ui-btn):not(.dropdown-item):not(.nav-link):not(.ks-tab) { color: var(--ui-color-text-muted); }

/* --- ks-osa-stavu: stavy studie v hlavičce detailu (PATTERN_osa_stavu, ui/osa_stavu.html) --- */
.ks-osa-stavu { list-style: none; margin: var(--ui-space-4) 0 0; padding: 0 0 var(--ui-space-5); display: flex; align-items: flex-start; overflow-x: auto; border-bottom: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-osa-stavu__stav { flex: none; display: flex; flex-direction: column; }
/* Spojnice ve výšce středu názvu (řádek 1.125rem). */
.ks-osa-stavu__spoj { flex: 1 1 auto; min-width: 1.5rem; margin: 0.5625rem var(--ui-space-4) 0; border-top: var(--ui-border-width-1) dashed var(--ui-color-border-silna); }
.ks-osa-stavu__spoj--plna { margin-top: 0.5rem; border-top: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-text-muted); }
.ks-osa-stavu__nazev { font-size: var(--ui-font-size-sm); line-height: 1.125rem; white-space: nowrap; color: var(--ui-color-text-subtle); }
.ks-osa-stavu__stav--hotovo .ks-osa-stavu__nazev { color: var(--ui-color-text-muted); }
.ks-osa-stavu__stav--aktualni .ks-osa-stavu__nazev,
.ks-osa-stavu__stav--zrusena .ks-osa-stavu__nazev { color: var(--ui-color-text); font-weight: var(--ui-font-weight-semibold); }
.ks-osa-stavu__stav--zrusena .ks-osa-stavu__nazev { display: inline-flex; align-items: center; gap: var(--ui-space-2); }
.ks-osa-stavu__stav--zrusena .ks-osa-stavu__nazev::before { content: ""; flex: none; width: 0.5rem; height: 0.5rem; border-radius: var(--ui-radius-pill); background: var(--ui-color-danger); }
.ks-osa-stavu__datum { font-size: var(--ui-font-size-xs); line-height: 1rem; color: var(--ui-color-text-muted); font-variant-numeric: tabular-nums; }
.ks-page-header--lepici.je-kompaktni .ks-osa-stavu { display: none; }

/* --- ks-prubeh: průběh studie na Přehledu (PATTERN_prubeh_studie, ui/prubeh_studie.html) --- */
/* Řádek větve má pevnou výšku 2.5rem a mezeru 0.75rem, střed mezi čarami větví leží 2.1875rem pod horním
   okrajem; svorka i společná část se k němu počítají, takže čáry lícují bez ohledu na šířku písma. */
.ks-prubeh { display: flex; align-items: flex-start; }
.ks-prubeh__vetve { flex: 3 1 0; min-width: 0; display: flex; flex-direction: column; gap: 0.75rem; }
.ks-prubeh__vetev { display: grid; grid-template-columns: 4.75rem minmax(0, 1fr) minmax(0, 1fr) 1.25rem; align-items: start; height: 2.5rem; }
.ks-prubeh--jedna-vetev .ks-prubeh__vetev { grid-template-columns: 4.75rem minmax(0, 1fr) minmax(0, 1fr); }
.ks-prubeh__vetev-nazev { font-size: var(--ui-font-size-xs); line-height: 1.125rem; color: var(--ui-color-text-muted); }
.ks-prubeh__bunka { display: flex; align-items: flex-start; min-width: 0; }
.ks-prubeh__bunka--cela { grid-column: span 2; }
.ks-prubeh__bunka + .ks-prubeh__bunka { padding-left: var(--ui-space-3); }
.ks-prubeh__bunka > .ks-prubeh__spoj { margin-right: 0; }
.ks-prubeh__krok { flex: none; display: flex; flex-direction: column; }
.ks-prubeh__nazev { font-size: var(--ui-font-size-sm); line-height: 1.125rem; white-space: nowrap; color: var(--ui-color-text); }
.ks-prubeh__krok--chybi .ks-prubeh__nazev,
.ks-prubeh__krok--planovano .ks-prubeh__nazev { color: var(--ui-color-text-subtle); }
.ks-prubeh__datum { min-height: 1rem; font-size: var(--ui-font-size-xs); line-height: 1rem; color: var(--ui-color-text-muted); font-variant-numeric: tabular-nums; }
.ks-prubeh__spoj { flex: 1 1 auto; min-width: 1rem; margin: 0.5625rem var(--ui-space-3) 0; border-top: var(--ui-border-width-1) dashed var(--ui-color-border-silna); }
.ks-prubeh__spoj--plna { margin-top: 0.5rem; border-top: calc(var(--ui-border-width-1) * 2) solid var(--ui-color-text-muted); }
.ks-prubeh__konec { box-sizing: border-box; height: 1.6875rem; border: 0 solid var(--ui-color-text-muted); border-right-width: calc(var(--ui-border-width-1) * 2); }
.ks-prubeh__konec--horni { margin-top: 0.5rem; border-top-width: calc(var(--ui-border-width-1) * 2); }
.ks-prubeh__konec--dolni { margin-top: -1.0625rem; border-bottom-width: calc(var(--ui-border-width-1) * 2); }
.ks-prubeh__konec--prerusovana { border-style: dashed; border-color: var(--ui-color-border-silna); }
.ks-prubeh__spolecne { flex: 2 1 0; min-width: 0; display: flex; align-items: flex-start; margin-top: 1.625rem; }
.ks-prubeh--jedna-vetev .ks-prubeh__spolecne { margin-top: 0; }
.ks-prubeh__spolecne > .ks-prubeh__spoj:first-child { margin-left: 0; }
@media (max-width: 48rem) {
  .ks-prubeh { flex-direction: column; gap: var(--ui-space-4); }
  .ks-prubeh__vetve, .ks-prubeh__spolecne { flex: none; width: 100%; }
  .ks-prubeh__vetev, .ks-prubeh--jedna-vetev .ks-prubeh__vetev { grid-template-columns: 4.75rem minmax(0, 1fr) minmax(0, 1fr); height: auto; }
  .ks-prubeh__konec { display: none; }
  .ks-prubeh__spolecne { margin-top: 0; padding-left: 4.75rem; }
  .ks-prubeh__krok { flex: 0 1 auto; min-width: 0; }
  .ks-prubeh__nazev { white-space: normal; }
}

/* --- ks-nabidka-dok: nabídka Vytvořit v hlavičce detailu (PATTERN_nabidka, ui/nabidka_vytvorit.html) --- */
.ks-nabidka-dok__menu { min-width: 20rem; }
.ks-nabidka-dok__radek { display: flex; align-items: center; gap: var(--ui-space-6); min-height: var(--ui-control-height); padding: var(--ui-space-1) var(--ui-space-2) var(--ui-space-1) var(--ui-space-3); border-radius: var(--ui-radius-1); color: var(--ui-color-text); font-size: var(--ui-font-size-md); cursor: default; }
.ks-nabidka-dok__radek:hover { background: var(--ui-color-neutral-50); }
/* Formáty ve dvou stejně širokých sloupcích, osamělé tlačítko v pravém. */
.ks-nabidka-dok__formaty { margin-left: auto; display: grid; grid-template-columns: 3.5rem 3.5rem; gap: var(--ui-space-1); }
.ks-nabidka-dok__formaty > :only-child { grid-column: 2; }
.ks-nabidka-dok__format { display: block; text-align: center; border: var(--ui-border-width-1) solid var(--ui-color-border-silna); border-radius: var(--ui-radius-1); background: var(--ui-color-neutral-0); color: var(--ui-color-text); font-size: var(--ui-font-size-xs); line-height: 1.5rem; text-decoration: none; cursor: pointer; }
.ks-nabidka-dok__format:hover { background: var(--ui-color-neutral-100); color: var(--ui-color-text); }
.ks-nabidka-dok__format:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); }

/* --- ks-souhrn: údaje studie v bočním panelu Přehledu (core/detail/_souhrn.html) --- */
.ks-souhrn__oddil { padding: var(--ui-space-4) 0; }
.ks-souhrn__oddil + .ks-souhrn__oddil { border-top: var(--ui-border-width-1) solid var(--ui-color-border); }
.ks-souhrn__oddil .ks-souhrn__nadpis { margin: 0 0 var(--ui-space-3); font-size: var(--ui-font-size-xs); color: var(--ui-color-text-muted); }
.ks-souhrn__udaje { margin: 0; }
.ks-souhrn__udaje dt { font-size: var(--ui-font-size-xs); font-weight: var(--ui-font-weight-regular); color: var(--ui-color-text-muted); }
.ks-souhrn__udaje dt:not(:first-child) { margin-top: var(--ui-space-3); }
.ks-souhrn__udaje dd { margin: 0; color: var(--ui-color-text); overflow-wrap: anywhere; }
/* Dlouhý název na tři řádky, kliknutím celý (ui.js, data-ks-cely-text). */
.ks-souhrn__nazev { display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; cursor: pointer; }
.ks-souhrn__nazev.je-cely { display: block; }
.ks-souhrn__nazev:focus-visible { outline: none; box-shadow: var(--ui-focus-ring); border-radius: var(--ui-radius-1); }

/* Řádek seznamu na Přehledu má barvu textu; selektor přebíjí obecné pravidlo odkazů v main (stejná váha, je za ním). */
.ks-app main .ks-dalsi-krok a.ks-dalsi-krok__odkaz:not(.ui-btn):not(.dropdown-item),
.ks-app main .ks-dalsi-krok a.ks-dalsi-krok__odkaz:not(.ui-btn):not(.dropdown-item):hover { color: inherit; text-decoration: none; }
