/* =========================================================
   ema frontend — vzhled dle design manuálu, flex (ne float).
   Konvence new_opatov: var.css → fontface.css → screen.css.
========================================================= */

/* === reset === */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; border-radius: 4px; }
section, article, header, footer, nav, main, div { display: block; }

body {
	font-family: var(--font);
	font-size: 16px; line-height: 1.625;
	color: var(--text);
	background: var(--bg);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

/* === typografie === */
h1, .h1 { font-size: 28px; font-weight: 500; line-height: 1.29; letter-spacing: -0.3px; color: var(--ink); margin-bottom: 16px; }
h2, .h2 { font-size: 22px; font-weight: 500; line-height: 1.36; letter-spacing: -0.2px; color: var(--ink); margin: 32px 0 12px; }
h2:first-child { margin-top: 0; }
h3, .h3 { font-size: 18px; font-weight: 500; line-height: 1.44; color: var(--ink); margin: 24px 0 8px; }
h3:first-child { margin-top: 0; }
h4, .h4 { font-size: 16px; font-weight: 500; color: var(--ink); margin: 20px 0 8px; }
p { font-size: 16px; line-height: 1.625; margin-bottom: 12px; }
p:last-child { margin-bottom: 0; }
a { color: var(--cyan); text-decoration: none; cursor: pointer; }
a:hover { text-decoration: underline; }
strong { font-weight: 700; }
.text-ui { font-size: 15px; line-height: 1.4; font-weight: 500; }
.text-sm { font-size: 14px; line-height: 1.5; }
.text-xs { font-size: 13px; line-height: 1.4; color: var(--muted); }
.muted { color: var(--muted); }

/* Grid systém (.grid float / .flex flex / .g-*) je v lib/elite.css — ZDE NE.
   Zde jen ema-design komponenty. Drobné flex helpery: */
.row { display: flex; align-items: center; gap: 12px; }
.row.between { justify-content: space-between; }
.spread { display: flex; align-items: baseline; justify-content: space-between; }

/* === buttons === */
.btn {
	display: inline-flex; align-items: center; justify-content: center; gap: 8px;
	height: 44px; padding: 0 20px;
	font: 700 15px/1 var(--font);
	color: var(--white); background: var(--orange);
	border: 0; border-radius: var(--radius); cursor: pointer; text-decoration: none;
}
.btn:hover { background: var(--orange-hover); text-decoration: none; }
.btn:active { background: var(--orange-active); }
.btn[disabled], .btn.disabled { background: var(--fill); color: var(--muted); cursor: not-allowed; }
/* disabled musí přebít i BAREVNÉ varianty (accent/secondary) vč. hoveru - jinak zůstane tlačítko
   modré (accent) jen se šedým textem; nedostupné = celé šedé (uživatel 2026-08-22) */
.btn.accent[disabled], .btn.accent.disabled, .btn.accent[disabled]:hover,
.btn.secondary[disabled], .btn.secondary.disabled, .btn.secondary[disabled]:hover { background: var(--fill); color: var(--muted); }
.btn.secondary { background: var(--cyan-dark); }
.btn.secondary:hover { background: #006b96; }
.btn.accent { background: var(--cyan); }
.btn.accent:hover { background: var(--cyan-dark); }
.btn.outline { background: var(--white); color: var(--ink); border: 1px solid var(--border); }
.btn.outline:hover { background: var(--ink); color: var(--white); border-color: var(--ink); }
.btn.ghost { background: transparent; color: var(--ink); }
.btn.ghost:hover { background: var(--border-soft); }
.btn.small { height: 34px; padding: 0 14px; font-size: 14px; }
/* explicit flex — třída .icon na tlačítku jinak přebije display z .btn a ikona spadne doleva */
.btn.icon { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; }
.btn .icon { width: 18px; height: 18px; }

/* === form fields === */
.field { margin-bottom: 16px; }
label { display: block; font: 500 14px/1.4 var(--font); color: var(--ink); margin-bottom: 6px; }
input[type="text"], input[type="email"], input[type="password"],
input[type="number"], input[type="search"], select {
	width: 100%; height: 44px; font: 400 15px/1.4 var(--font);
	color: var(--ink); background: var(--white);
	border: 1px solid var(--border); border-radius: var(--radius); padding: 0 14px;
}
textarea {
	width: 100%; min-height: 120px; font: 400 15px/1.6 var(--font);
	color: var(--ink); background: var(--white);
	border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; resize: vertical;
}
::placeholder { color: var(--muted); }
input:focus, textarea:focus, select:focus {
	border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(0,152,212,0.18); outline: none;
}

/* === icons (inline SVG) === */
.icon { width: 24px; height: 24px; display: inline-block; vertical-align: middle; flex: none; }
.icon.sm { width: 20px; height: 20px; }
svg.icon { fill: none; stroke: currentColor; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.icon-circle {
	display: inline-flex; align-items: center; justify-content: center;
	width: 44px; height: 44px; border-radius: 999px; flex: none;
	background: var(--cyan-tint); color: var(--cyan);
}

/* === card === */
.card { background: var(--white); border-radius: var(--radius-lg); box-shadow: 0 6px 20px rgba(19,15,61,0.08); padding: 24px; }
.card.lg { border-radius: var(--radius-xl); box-shadow: 0 16px 40px rgba(19,15,61,0.10); }
.card.flat { box-shadow: none; border: 1px solid var(--border); }

/* === avatar === */
.avatar {
	display: inline-flex; align-items: center; justify-content: center;
	width: 40px; height: 40px; border-radius: 999px; overflow: hidden; flex: none;
	background: var(--fill); color: var(--ink); font: 500 15px/1 var(--font);
}
.avatar.sm { width: 32px; height: 32px; font-size: 13px; }
.avatar.cyan { background: var(--cyan); color: var(--white); }
.avatar.on-dark { background: var(--navy-2); color: var(--muted-navy); }

/* === list-row === */
.list-row { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-bottom: 1px solid var(--border-soft); }
.list-row:last-child { border-bottom: 0; }
.list-row .lr-body { flex: 1; min-width: 0; }
/* verdikt běhu ve výpisu (stejná ikona jako nadpis reportu — „doběhlo" ≠ „v pořádku").
   Ikona je součástí ŘÁDKU S NÁZVEM, ne sloupec vedle → „Vytvořeno:" pod ním lícuje vlevo. */
.list-row .lr-title i.fa-solid { font-size: 16px; margin-right: 6px; }
.list-row .lr-title { color: var(--ink); font-weight: 500; }
.list-row .lr-sub { color: var(--muted); font-size: 13px; }
.list-row .lr-type { color: var(--muted); font-size: 12px; margin: 1px 0 4px; }   /* typ nástroje menším fontem pod nadpisem (= LLM podtitul); spodní mezera oddělí od data+stavu */
/* stav běhu a verdikt: barevné jen samotné slovo, popisek („Stav:", „Výsledek:") zůstává tlumený */
.list-row .lr-sub .st-done { color: var(--success); font-weight: 500; }
.list-row .lr-sub .st-error { color: var(--error); font-weight: 500; }
.list-row .lr-sub .vd-pass { color: var(--success); font-weight: 500; }
.list-row .lr-sub .vd-warn { color: var(--warning); font-weight: 500; }
.list-row .lr-sub .vd-fail { color: var(--error); font-weight: 500; }
.list-row .lr-meta { color: var(--muted); font-size: 13px; white-space: nowrap; }
.list-row.clickable { cursor: pointer; }
.list-row.clickable:hover { background: var(--bg-soft); }
.list-row .lr-main { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 0; text-decoration: none; color: inherit; }
.list-row .lr-main:hover .lr-title { color: var(--cyan-dark); }

/* detail projektu — členové a jejich role po modulech */
/* pod-nadpis pod-sekce v boxu „Uživatelé" (Manažer × Členové); první bez horní mezery */
.ws-users-sub { margin: 18px 0 0; font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.card > .ws-users-sub:first-child { margin-top: 0; }
.ws-members { display: flex; flex-direction: column; gap: 14px; margin-top: 8px; }
.ws-member { border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px 14px; }
.wm-head { display: flex; align-items: center; gap: 10px; }
.avatar-sm { width: 30px; height: 30px; border-radius: 50%; background: var(--cyan-tint); color: var(--cyan-dark); font-size: 12px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; flex: 0 0 auto; }
.wm-name { font-weight: 500; color: var(--ink); }
.wm-badge { font-size: 11px; font-weight: 600; color: var(--cyan-dark); background: var(--cyan-tint); padding: 2px 8px; border-radius: 10px; }
.wm-roles { list-style: none; margin: 8px 0 0; padding: 0 0 0 40px; display: flex; flex-direction: column; gap: 4px; }
.wm-roles li { color: var(--text); font-size: 14px; }
.wm-noroles { margin: 6px 0 0 40px; color: var(--muted); font-size: 13px; }
.wm-role { margin: 6px 0 0 40px; color: var(--text); font-size: 14px; }   /* role čtenáře u document-query (zarovnáno pod jméno jako wm-roles) */

/* === icon-tile === */
.icon-tile {
	display: flex; flex-direction: column; align-items: center; gap: 12px;
	background: var(--white); border-radius: var(--radius-lg); box-shadow: 0 6px 20px rgba(19,15,61,0.08);
	padding: 20px; text-align: center; cursor: pointer; border: 0; font: inherit;
}
.icon-tile:hover { box-shadow: 0 10px 28px rgba(19,15,61,0.12); }
.icon-tile .label { color: var(--ink); font-weight: 500; }

/* === tag === */
.tag { display: inline-flex; align-items: center; height: 24px; padding: 0 10px; border-radius: 999px; font: 500 13px/1 var(--font); color: var(--white); background: var(--cyan); }
.tag.navy { background: var(--navy); }
.tag.tint { background: var(--cyan-tint); color: var(--cyan-dark); }
.tag.outline { background: transparent; border: 1px solid var(--border); color: var(--text); }

/* === hlášky === */
.msg { border-radius: var(--radius); padding: 12px 16px; margin-bottom: 16px; font-size: 14px; }
.msg.ok { background: #e4f6ee; color: var(--success); }
.msg.err { background: #fbe7e5; color: var(--error); }

/* flash hlášky nad content (vzor admin getMessages; kulaté rohy + ikona dle typu) */
.messages { display: flex; flex-direction: column; gap: 12px; margin-bottom: 24px; }
.message { display: flex; align-items: center; gap: 12px; padding: 12px 16px; border-radius: var(--radius-lg); font-size: 14px; }
.message .icon { width: 20px; height: 20px; flex: none; }
.message.error-msg { background: #fbe7e5; color: var(--error); }
.message.ok-msg { background: #e5f5ee; color: var(--success); }
.message.info-msg { background: var(--cyan-tint); color: var(--cyan-dark); }

/* =========================================================
   APP SHELL (flex): sidebar + main
========================================================= */
.app-shell { display: flex; min-height: 100vh; min-width: 320px; }   /* min podporovaná šířka 320px (iPhone SE) — pod ní radši horiz. scroll než rozbitý layout */

.app-sidebar {
	width: var(--sidebar-w); flex: none;
	background: var(--navy); color: var(--white);
	display: flex; flex-direction: column; padding: 0 16px 24px;
}
.sidebar-logo { height: var(--topbar-h); display: flex; align-items: center; padding: 0 8px; margin-bottom: 8px; }
.sidebar-logo img { height: 51px; display: block; }

.sidebar-nav { display: flex; flex-direction: column; gap: 2px; flex: 1; }
.nav-item {
	display: flex; align-items: center; gap: 12px;
	padding: 10px 12px; border-radius: 10px;
	color: var(--muted-navy); font: 500 15px/1 var(--font);
	text-decoration: none; position: relative; cursor: pointer;
	background: none; border: 0; text-align: left; width: 100%;
}
.nav-item:hover { background: rgba(255,255,255,0.06); color: var(--white); text-decoration: none; }
.nav-item.active { background: var(--navy-2); color: var(--white); }
.nav-item.active::before { content: ""; position: absolute; left: 0; top: 8px; bottom: 8px; width: 3px; border-radius: 3px; background: var(--cyan-accent); }
.nav-item .icon { width: 20px; height: 20px; flex: none; }

.sidebar-user { display: flex; align-items: center; gap: 12px; padding-top: 16px; margin-top: 16px; border-top: 1px solid var(--navy-line); }
.sidebar-user .su-name { color: var(--white); font-weight: 500; font-size: 14px; }
.sidebar-owner { margin-top: 14px; padding: 20px 8px 0 0; border-top: 1px solid rgba(255,255,255,0.06); display: flex; align-items: center; justify-content: flex-start; gap: 16px; }  /* FINEP · „Ema v1.1" · „© 2026" VLEVO pohromadě s většími mezerami (gap), NE stretch přes celou šířku (user) */
.sidebar-owner img { height: 18px; opacity: 0.55; display: block; }
.sidebar-owner .version, .sidebar-owner .copyright { font-size: 11px; color: #aeb4d6; letter-spacing: 0.2px; white-space: nowrap; }  /* verze + copyright čitelně, oddělené (space-between výš) */

.app-main { flex: 1; display: flex; flex-direction: column; background: var(--bg); min-width: 0; }
.app-topbar {
	display: flex; align-items: center; justify-content: space-between; gap: 16px;
	background: var(--white); border-bottom: 1px solid var(--border); padding: 0 32px; min-height: var(--topbar-h);
}
.app-topbar .tb-head { min-width: 0; flex: 1 1 auto; }   /* min-width:0 → .tb-title smí ořezat (jinak flex item neshrinkne pod obsah) */
.app-topbar .tb-title { color: var(--ink); font-weight: 500; font-size: 20px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }   /* U24: 1 řádek + „…"; plný text v title (hover) */
.app-topbar .tb-sub { color: var(--muted); font-size: 13px; }
.app-topbar .tb-actions { display: flex; align-items: center; gap: 16px; }
.app-topbar .tb-icon { color: var(--text); }
.tb-bell { display: inline-flex; cursor: pointer; }
.tb-bell:hover .tb-icon { color: var(--ink); }
/* === impersonační indikátor (warning ikona + popover u zvonku) — nahradil sticky .imp-banner (redesign).
   Trigger+panel v JEDNOM .imp-ind wrapperu = žádná mrtvá mezera; panel drží na :hover I :focus-within
   (button je focusable → tap na mobilu ho otevře → touch bez JS). Downward. 2 instance: desktop .tb-actions / mobil .m-topbar-right. */
.imp-ind { position: relative; display: inline-flex; align-items: center; }
.imp-ind-icon { display: inline-flex; align-items: center; padding: 0; margin: 0; background: none; border: 0; line-height: 0; cursor: pointer; color: var(--warning); }
.imp-ind-icon .tb-icon { color: var(--warning); }   /* amber warning — přebíjí neutrální .app-topbar .tb-icon (stejná specificita, pozdější pravidlo); stroke dědí přes currentColor */
.imp-ind-icon:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; border-radius: 6px; }
.imp-ind-pop {
	position: absolute; top: 100%; right: 0; z-index: 80;   /* DOWNWARD, přilepené (top:100% = bez mrtvé mezery); nad .m-topbar (z60) i obsahem */
	display: none; flex-direction: column; gap: 8px;
	min-width: 210px; max-width: 280px; padding: 12px 14px;
	background: var(--white); border: 1px solid var(--border); border-radius: 10px; box-shadow: 0 10px 28px rgba(19,15,61,0.14);
}
.imp-ind:hover .imp-ind-pop, .imp-ind:focus-within .imp-ind-pop, .imp-ind.is-open .imp-ind-pop { display: flex; }   /* myš (hover) + tab/klávesnice (focus-within) + volitelný JS toggle (.is-open) pro spolehlivý touch (iOS Safari nefokusuje <button> na tap → :focus-within tam nestačí) */
.imp-ind-text { color: var(--ink); font-size: 13px; font-weight: 500; line-height: 1.35; }
.imp-ind-form { margin: 0; }
.imp-ind-form .btn { width: 100%; justify-content: center; }   /* „Zpět na sebe" = oranžová .btn.small (dědí barvu), přes celou šířku panelu = snadný tap */
@media (max-width: 959.98px){ .imp-ind-pop { position: fixed; top: 56px; right: 12px; left: auto; min-width: 0; max-width: calc(100vw - 24px); } }   /* mobil: panel kotvený k viewportu pod navy pruhem (ne k ikoně) → nikdy mimo obrazovku */
.app-content { padding: 32px; flex: 1; min-width: 0; }

/* =========================================================
   LOGIN (split-screen: navy + světlá karta)
========================================================= */
.login-split { display: flex; min-height: 100vh; }
.login-navy {
	flex: 1; background: var(--navy);
	display: flex; flex-direction: column; align-items: center; justify-content: center;
	padding: 48px; text-align: center;
}
.login-navy img { height: 88px; }
.login-navy .login-tag { color: var(--muted-navy); margin-top: 24px; letter-spacing: 1.5px; text-transform: uppercase; font-size: 13px; font-weight: 500; }
.login-light {
	flex: 1; background: var(--bg-soft);
	display: flex; align-items: center; justify-content: center; padding: 48px;
}
.login-card { width: 100%; max-width: 400px; text-align: center; }
.login-card .finep { height: 28px; margin: 0 auto 28px; display: block; }
.login-card h2 { margin: 0 0 8px; }
.login-card .login-note { margin: 20px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.login-card .field { text-align: left; }
.login-card .btn { width: 100%; }
.login-sub { margin: 0 0 24px; }

/* === podmínky užití — bare stránka souhlasu (layout 'terms') === */
body.terms { background: var(--bg); }
.terms-page { min-height: 100vh; display: flex; justify-content: center; padding: 48px 20px; box-sizing: border-box; }
.terms-consent { width: 100%; max-width: 760px; background: var(--white); border-radius: var(--radius-xl); box-shadow: 0 10px 44px rgba(19, 15, 61, .10); padding: 44px 48px; box-sizing: border-box; display: flex; flex-direction: column; }
.terms-consent-head { text-align: center; margin-bottom: 28px; }
.terms-consent-head .terms-logo { height: 26px; margin: 0 auto 24px; display: block; }
.terms-consent-head h1 { margin: 0 0 8px; color: var(--ink); font-size: 26px; }
.terms-consent-lead { margin: 0; font-size: 13px; }
.terms-consent-body { color: var(--text); line-height: 1.7; }
.terms-consent-body h1, .terms-consent-body h2, .terms-consent-body h3, .terms-consent-body h4 { color: var(--ink); margin: 24px 0 10px; line-height: 1.35; }
.terms-consent-body h1:first-child, .terms-consent-body h2:first-child, .terms-consent-body h3:first-child { margin-top: 0; }
.terms-consent-body p { margin: 0 0 12px; }
.terms-consent-body ul, .terms-consent-body ol { margin: 0 0 12px; padding-left: 22px; }
.terms-consent-body li { margin: 0 0 6px; }
.terms-consent-body a { color: var(--cyan); }
.terms-consent-actions { position: sticky; bottom: 0; z-index: 1; display: flex; flex-wrap: wrap; gap: 12px; justify-content: flex-end; margin: 32px -48px -44px; padding: 20px 48px; background: var(--white); border-top: 1px solid var(--border-soft); border-radius: 0 0 var(--radius-xl) var(--radius-xl); }
.terms-consent-actions .btn { min-width: 156px; }
@media (max-width: 640px){
	.terms-consent { padding: 28px 22px; }
	.terms-consent-actions { margin: 28px -22px -28px; padding: 16px 22px; }
	.terms-consent-actions .btn { flex: 1; min-width: 0; }
}

/* === homepage === */
.home-intro { margin-bottom: 24px; }
.home-head { margin-bottom: 10px; }   /* nadpis BLÍŽ obsahu POD ním (malá mezera pod). Mezera NAD (mezi sekcemi) je na wrapperech (.home-section+, .tool-filter, .tools-all-head) → asymetrie „víc nad než pod" + první nadpis BEZ mezery-nad (obsah začne vysoko jako /conversations); user 2026-10-11 */
.home-head h3 { margin: 0; }
/* poslední aktivita: NADPIS mimo bílý box (na šedé, .home-head), sekce pod sebou */
.home-section + .home-section { margin-top: 24px; }
.home-more { font-size: 13px; color: var(--cyan); white-space: nowrap; }
.home-more:hover { color: var(--cyan-dark); text-decoration: underline; }
/* „Nová konverzace" / „Nový projekt" — vycentrované tlačítko NAD výpisem (přesunuto z topbaru) */
.list-new { display: flex; justify-content: flex-start; margin-bottom: 20px; }   /* „Nová konverzace"/„Nový dotaz" DOLEVA */
/* Konverzace sekce = nadpis „Konverzace" → CTA „Nová konverzace" → filtr „Předchozí konverzace" → list. Seskupit a
   ODDĚLIT od bloku „Předchozí dotazy" nad ní: VĚTŠÍ mezera NAD nadpisem „Konverzace", pak nadpis→CTA→filtr přitažené.
   Scope: „Konverzace" = jediný .tools-runs-head následovaný .list-new; „Nástroje" (→ .tool-catalog) i první-poziční
   „Nový dotaz"/„Napsat článek" (:first-child) NETKNUTY (ema-0f: jen Konverzace). */
.ws-detail > .tools-runs-head:has(+ .list-new) { margin-top: 24px; }   /* oddělení sekce shora = na NADPISU „Konverzace" (gapAbove > gapBelow) */
.ws-detail > .list-new:not(:first-child) { margin-bottom: 10px; }   /* CTA bez margin-top → přitažené k nadpisu „Konverzace" nad ním; margin-bottom = tight k filtru pod ním */
.ws-detail > .list-new:not(:first-child) + .tool-filter { margin-top: 0; }   /* „Předchozí konverzace" filtr přitáhni k CTA (potlač jeho 24px margin-top) */
.tools-runs-head { margin-top: 16px; }   /* jednotný jednostranný odstup bloků detailu běhu (jako .tool-refine/.ti-more-card/.ti-actions) → robustní při skrývání/zobrazování */
.card-list { padding: 0; overflow: hidden; }   /* overflow: hover pozadí řádku se ořízne na zaoblené rohy karty (jinak se rohy jeví hranaté) */
.su-logout { color: var(--muted-navy); }

/* === chat (konverzace s Emou) === */
/* full-height JEN pro chat — zprávy scrollují uvnitř, compose připnutá dole */
.chat-page .app-shell { height: 100vh; }
.chat-page .app-main { min-height: 0; }
.chat-page .messages { padding: 16px 32px 0; margin: 0; }

.chat { flex: 1; min-height: 0; display: flex; flex-direction: column; }
.chat-scroll { flex: 1; min-height: 0; overflow: auto; padding: 32px; }
/* back-bar nad PROJEKTOVOU konverzací (commit ef0819a): první dítě .chat (mimo .chat-scroll → sám nescrolluje).
   Padding zarovnaný s obsahem .chat-scroll (32px; mobil 16/12). Osobní konverzace bar nemá. */
.chat-project-bar { flex: none; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 32px; border-bottom: 1px solid var(--border-soft); }   /* kontext vlevo + „Zpět na projekt" vpravo (space-between; user 2026-10-11) */
.chat-project-bar .ti-scope { margin: 0; flex: none; }   /* tlačítko se nesmršťuje — label vedle něj ořízne (ne tlačítko) */
.cpb-context { min-width: 0; color: var(--muted); font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }   /* kontext vlevo; ellipsis ať tlačítko nikdy neutlačí */
.cpb-name { color: var(--ink); font-weight: 500; }   /* jméno projektu zvýrazněné vůči tlumené frázi */
@media (max-width: 959.98px){ .chat-project-bar { padding: 10px 16px; } }
@media (max-width: 479.98px){ .chat-project-bar { padding: 10px 12px; } }
@media (max-width: 559.98px){ .chat-project-bar { flex-direction: column; align-items: stretch; gap: 8px; } .chat-project-bar .ti-scope { align-self: flex-end; } }   /* úzký mobil: label NAD tlačítko (plná šířka → jméno projektu se nezkrátí), tlačítko zůstává vpravo */
.chat-inner { max-width: 1040px; margin: 0 auto; }
.chat-scroll .chat-inner { display: flex; flex-direction: column; gap: 16px; }
.chat-compose { border-top: 1px solid var(--border); background: var(--white); padding: 16px 32px; }

/* bublina zprávy (components/chat-bubble.md): uživatel navy vpravo, asistent bílá vlevo */
.bubble { position: relative; max-width: 70%; padding: 12px 16px; border-radius: var(--radius-xl); line-height: 1.6; word-wrap: break-word; }
.bubble.user { margin-left: auto; background: var(--navy); color: var(--white); border-bottom-right-radius: 4px; }
/* časová značka nad bublinou, k vnějšímu okraji (user vpravo, asistent vlevo), viditelná on hover */
.msg-time { position: absolute; bottom: 100%; margin-bottom: 4px; font-size: 11px; line-height: 1; color: var(--muted); white-space: nowrap; opacity: 0; transition: opacity .12s ease; pointer-events: none; }
.bubble.user .msg-time { right: 4px; }
.bubble.assistant .msg-time, .bubble.blocked .msg-time { left: 4px; }
.bubble:hover .msg-time { opacity: 1; }
.bubble.assistant { background: var(--white); color: var(--navy); border: 1px solid var(--border-soft); box-shadow: 0 1px 2px rgba(19,15,61,0.06); border-bottom-left-radius: 4px; }
/* autor user-bubliny v projektové (týmové) konverzaci - jméno nad bublinou vpravo (phase 2) */
.bubble-author { max-width: 70%; margin-left: auto; padding: 0 4px 2px; font-size: 12px; color: var(--muted); text-align: right; }
/* PROJEKTOVÁ konverzace (commit 46c6da4): meta (čas+autor) je UVNITŘ .bubble (první prvek), visí NAD bublinou vpravo.
   Autor PERSISTENTNĚ na pozici, kde byl čas; čas se odkrývá ON HOVER vlevo od jména (reuse .bubble:hover .msg-time). */
.bubble-meta { position: absolute; bottom: 100%; right: 4px; margin-bottom: 4px; display: flex; align-items: baseline; gap: 6px; white-space: nowrap; pointer-events: none; }
.bubble-meta .msg-time { position: static; margin: 0; }   /* přebij absolute z .msg-time → sedí ve flex řádku; opacity 0 zůstává (hover ji zapne) */
.bubble-meta .bubble-author { opacity: 1; max-width: 220px; margin: 0; padding: 0; overflow: hidden; text-overflow: ellipsis; }   /* jméno persistentně; přebij max-width/margin-left:auto/padding pro flex kontext */
/* user zpráva S PŘÍLOHOU: meta nad bublinou by se překryla s chipy (.msg-attachments = in-flow sourozenec PŘED .bubble).
   → meta DOVNITŘ bubliny (static, nahoře vpravo); na navy pozadí barva muted-navy (gray by byla nečitelná). */
.msg-attachments + .bubble.user .bubble-meta { position: static; justify-content: flex-end; margin: 0 0 6px; }
.msg-attachments + .bubble.user .bubble-meta .msg-time,
.msg-attachments + .bubble.user .bubble-meta .bubble-author { color: var(--muted-navy); }
/* projektová konverzace jen pro čtení (čtenář bez write-conversations) - místo compose boxu (phase 2) */
.chat-readonly { border-top: 1px solid var(--border); padding: 16px 32px; text-align: center; font-size: 13px; }
.msg-assistant { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; max-width: 70%; }
.msg-assistant .bubble { max-width: 100%; }

/* úzký desktop + mobil (<1200): bubliny širší (user: „pod 1200 px zbytečně úzké, větší překryv") — 70% → 85%,
   blíž k šířce composeru. Tool-bubliny (.bubble.tool.has-body cap 680px, vyšší specificita) tím nedotčené. */
@media (max-width: 1199.98px) {
	.bubble, .bubble-author, .msg-assistant { max-width: 85%; }
}

/* akční lišta pod asistentskou bublinou (fork = větev odtud / continue = pokračovat s výstupy) —
   nenápadná, zvýrazní se on hover celé bubliny; provenience se eviduje serverem */
.msg-actions { display: flex; gap: 8px; opacity: 0; transition: opacity .12s; }
.msg-assistant:hover .msg-actions, .msg-actions:focus-within { opacity: 1; }
.msg-act { background: none; border: 1px solid var(--border-soft); color: var(--muted); border-radius: 999px; padding: 2px 12px; font-size: 12px; cursor: pointer; }
.msg-act:hover { color: var(--fg); border-color: var(--border); background: var(--bg-soft); }
.msg-act:disabled { opacity: .5; cursor: default; }
.msg-continue { color: var(--accent, #2563eb); border-color: var(--accent, #2563eb); }

/* JEDNOTNÉ AKCE POD BUBLINOU (kopírovat / hodnotit palci / oddělit konverzaci / upravit) — subtilní
   ikonolinky <a> ve stylu „úpravy" (ne pilulky). Kopírování/hodnocení/oddělení jen ikona (text v title/
   tooltipu), úprava ikona + text. (uživatel 2026-09-13) */
.ba-row { display: flex; align-items: center; gap: 14px; margin: 3px 3px 10px; flex-wrap: wrap; }
.ba-row.ba-user { justify-content: flex-end; }
/* akční lišta bubliny (copy/fork/👍👎/znalost) = JEN ON HOVER bubliny (jinak skrytá, plynulý fade; místo
   si drží → neposkakuje). Scopováno na .chat-inner, ať se netýká hodnocení na detailu nástroje (.ti-rating .ba-row). */
.chat-inner .ba-row { opacity: 0; transition: opacity .12s ease; margin-top: 0; }
/* USER bublina: lišta je SIBLING v .chat-inner (flex gap 16px = dead-gap pro hover). Záporný margin zruší ten
   flex gap → box lišty NAVAZUJE na bublinu (žádný mrtvý pixel); padding-top drží vizuální odstup UVNITŘ hover-zóny
   → přejezd myší z bubliny na ikonky hover NEzruší. Assistant/tool jsou ve wrapperu (.msg-*) → jejich 6px mezera je
   UVNITŘ wrapperu a :hover ji kryje (žádný dead-gap), proto u nich padding netřeba. */
.chat-inner .ba-row.ba-user { margin-top: -16px; padding-top: 6px; }
.chat-inner .msg-assistant:hover .ba-row, .chat-inner .msg-tool:hover .ba-row, .chat-inner .bubble.user:hover + .ba-row,
.chat-inner .ba-row:hover, .chat-inner .ba-row:focus-within { opacity: 1; }
@media (hover: none) { .chat-inner .ba-row { opacity: 1; } }   /* touch (bez hoveru) → lišta trvale viditelná */
.ba { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 0; cursor: pointer; color: var(--muted); font: 400 12px/1.2 var(--font); text-decoration: none; }
.ba:hover { color: var(--cyan-dark); }
.ba .icon { width: 17px; height: 17px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ba-fork .icon { transform: rotate(180deg); }   /* rozbíhá se (fork), ne sbíhá (merge) */
.ba-up.ba-on { color: #2e8b57; }     /* palec nahoru aktivní */
.ba-down.ba-on { color: #c0392b; }   /* palec dolů aktivní */

/* ── Lehký CSS tooltip (ZNOVUPOUŽITELNÝ komponent, U34/U43/U44) ───────────────────────────────
   Prvek s třídou `.tip` + atributem `data-tip="text"` → tmavá bublina u prvku na hover/focus.
   SMĚR: default NAHORU (composer ikony u spodního okraje → nahoru, ať neutečou z viewportu);
   `.tip-down` = DOLŮ pod prvek (ikonky pod bublinou → nepřekrývají text bubliny, U43).
   Bez knihovny, bez JS. PILOT: ikonky akcí pod bublinou (.ba = .tip.tip-down) + VŠECHNY composer
   ikony (prompt/nástroj/sponka = .tip, nahoru; U44) — native `title` tam ZRUŠEN (ať není dvojitý);
   jinde v appce `title` zatím zůstává → plošný rollout = přidat `.tip`(+`.tip-down`)+`data-tip`. `aria-label` a11y. */
.tip { position: relative; --tip-bg: #33373c; }   /* tmavší NEUTRÁLNÍ šedá (ne modrá --ink #130f3d); jedno místo pro barvu */
.tip::after {
	content: attr(data-tip); position: absolute; left: 50%; z-index: 70;
	background: var(--tip-bg); color: #fff; font: 400 12px/1.35 var(--font); white-space: nowrap;
	max-width: 70vw; overflow: hidden; text-overflow: ellipsis;
	margin-left: var(--tip-shift, 0px);   /* edge-clamp: JS posune tooltip zpět do viewportu u krajových ikon (šipka ::before zůstává na ikoně) */
	padding: 5px 9px; border-radius: 7px; box-shadow: 0 6px 20px rgba(19,15,61,0.22);
	opacity: 0; pointer-events: none; transition: opacity .12s ease, transform .12s ease;
}
.tip::before {   /* šipka k prvku */
	content: ''; position: absolute; left: 50%; transform: translateX(-50%);
	border: 5px solid transparent; z-index: 70;
	opacity: 0; pointer-events: none; transition: opacity .12s ease;
}
/* default = NAD prvkem (šipka dolů) */
.tip::after { bottom: calc(100% + 7px); transform: translateX(-50%) translateY(3px); }
.tip::before { bottom: calc(100% + 2px); border-top-color: var(--tip-bg); }
/* U43: .tip-down = POD prvkem (šipka nahoru) — pozdější + stejná specificita → přebije směr u .tip.tip-down */
.tip-down::after { top: calc(100% + 7px); bottom: auto; transform: translateX(-50%) translateY(-3px); }
.tip-down::before { top: calc(100% + 2px); bottom: auto; border-top-color: transparent; border-bottom-color: var(--tip-bg); }
.tip:hover::after, .tip:focus-visible::after { opacity: 1; transform: translateX(-50%) translateY(0); }
.tip:hover::before, .tip:focus-visible::before { opacity: 1; }
@media (hover: none) { .tip::after, .tip::before { display: none; } }   /* touch: bez hoveru tooltip nemá smysl (akce drží aria-label) */

/* popup komentáře u palce dolů */
.ba-pop { position: absolute; z-index: 60; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 8px 24px rgba(19,15,61,0.16); padding: 12px; width: 280px; max-width: 90vw; }
.ba-pop label { display: block; font: 400 16px/1.5 var(--font); color: var(--ink); margin: 0 0 12px; }   /* stejný vzhled jako otázka v dialogu mazání (.modal-msg): 16px, ink, normální váha */
.ba-pop textarea { width: 100%; box-sizing: border-box; height: 66px; resize: vertical; border: 1px solid var(--border); border-radius: var(--radius); padding: 8px; font: 400 13px var(--font); color: var(--navy); }
.ba-pop-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; }
.ba-pop-actions .btn { font-size: 13px; }
/* hodnocení běhu nástroje: feedback popup = CENTROVANÝ MODAL na střed obrazovky (overlay), ne u tlačítka */
.ba-modal { position: fixed; inset: 0; z-index: 60; background: rgba(19,15,61,.35); display: flex; align-items: center; justify-content: center; padding: 20px; }
.ba-modal .ba-pop { position: static; width: 340px; max-width: 100%; }
/* KOPÍROVAT CELOU KONVERZACI — vycentrované nad „Náklady konverzace" */
.conv-copy-all { display: flex; justify-content: center; margin: 20px 0 4px; }
.conv-copy-all .ba { font-size: 13px; }
/* provenience nahoře vlákna (odkaz na zdroj větve/pokračování) */
.lineage-notice a { color: var(--muted); text-decoration: none; }
.lineage-notice a:hover { color: var(--fg); text-decoration: underline; }

/* „Ema píše…" preloader (3 pulzující tečky) + AJAX chybová hláška */
.bubble.typing { display: inline-flex; align-items: center; gap: 5px; }
.bubble.typing span { width: 7px; height: 7px; border-radius: 50%; background: var(--muted); animation: ema-typing 1.2s infinite ease-in-out; }
.bubble.typing span:nth-child(2) { animation-delay: .18s; }
.bubble.typing span:nth-child(3) { animation-delay: .36s; }
@keyframes ema-typing { 0%, 70%, 100% { opacity: .35; transform: translateY(0); } 35% { opacity: 1; transform: translateY(-3px); } }
/* „Upravit" u poslední odeslané zprávy — tlumené, vpravo pod bublinou (jako sama bublina) */
.edit-cta { display: flex; justify-content: flex-end; margin: 2px 0 8px; }
.edit-cta .edit-btn { display: inline-flex; align-items: center; gap: 5px; background: none; border: 0; padding: 2px 4px; cursor: pointer; color: var(--muted); font: 400 12px/1.2 var(--font); }
.edit-cta .edit-btn:hover { color: var(--cyan-dark); }
.edit-cta.is-editing .edit-btn { color: var(--cyan-dark); }
/* upravované kolo: zůstává ve vlákně (nic se nemazalo), jen je vidět, že se právě přepisuje */
.bubble.user.editing { opacity: .55; outline: 1px dashed var(--border); outline-offset: 2px; }
.edit-cta .edit-btn .icon { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* „Zastavit a upravit" — CTA pod tečkami preloaderu (přeruší generování, vrátí zprávu do compose) */
.chat-stop { display: inline-flex; align-items: center; gap: 5px; margin-top: 2px; padding: 3px 8px; font-size: 12px; line-height: 1.4; color: var(--muted); background: transparent; border: 1px solid var(--border); border-radius: 6px; cursor: pointer; transition: color .12s, border-color .12s, background .12s; }
.chat-stop:hover { color: #d8382f; border-color: #d8382f; background: rgba(216, 56, 47, .06); }
.chat-stop .icon { width: 12px; height: 12px; }
.chat-error { align-self: center; color: #d8382f; font-size: 13px; padding: 8px 12px; }

/* vyčerpaný rozpočet: proaktivní banner nad vláknem - celý (pod)strom je postaven od používání */
.budget-banner { display: flex; align-items: center; gap: 8px; margin: 12px 16px 0; padding: 10px 14px; border-radius: 8px; background: rgba(216, 56, 47, .08); border: 1px solid rgba(216, 56, 47, .3); color: #b02a22; font-size: 13px; line-height: 1.4; }
.budget-banner .icon { width: 16px; height: 16px; flex: 0 0 auto; }

/* přehled rozpočtu na stránce Moje náklady: osobní + útvar, útrata / limit / % vyčerpání */
/* typografie sjednocená s okolím (tokeny + 14px, jako .cost-table): Gordita má jen váhy 400/500/700 */
.budget-summary { display: flex; flex-wrap: wrap; gap: 28px; }
.budget-summary .bs-block { flex: 1 1 260px; min-width: 260px; }
.budget-summary h3 { margin: 0 0 10px; font-size: 14px; font-weight: 500; color: var(--navy); }
.bs-row { display: grid; grid-template-columns: 90px auto 1fr 70px 46px; align-items: center; gap: 8px; padding: 4px 0; font-size: 14px; }
.bs-period { color: var(--muted); }
.bs-spent { font-variant-numeric: tabular-nums; font-weight: 500; color: var(--ink); }
.bs-limit { color: var(--muted); font-variant-numeric: tabular-nums; }
.bs-bar { height: 6px; border-radius: 4px; background: var(--fill); overflow: hidden; }
.bs-bar i { display: block; height: 100%; background: #4a9e6f; }
.bs-bar i.over { background: #d8382f; }
.bs-pct { text-align: right; font-variant-numeric: tabular-nums; color: var(--muted); }
.bs-pct.over { color: #d8382f; font-weight: 700; }

/* blok guardrailem = Ema „odpoví" error-styled bublinou (barva + ikona) v konverzaci */
.bubble.blocked { display: flex; align-items: flex-start; gap: 10px; background: #fdecea; border: 1px solid #f5c2bd; color: #9a1c11; }
.bubble.blocked .icon { width: 18px; height: 18px; flex: none; color: #d8382f; margin-top: 1px; }
.resend-cta { align-self: center; margin: 2px 0 6px; display: flex; flex-direction: column; align-items: center; gap: 8px; }
.resend-atts { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; }
/* akce po guardrail bloku: „Zpracovat pomocí <model>" (aktivní) + „Odeslat znovu" (neaktivní) */
.resend-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; align-items: center; }
/* CTA tlačítka po guardrail/přepnutí bloku mají dlouhé popisky („Přepnout i tak (na mou odpovědnost)",
   „Zpracovat pomocí <model>") - pevná výška .btn.small (34px) + line-height:1 je oříznou a text vytéká.
   Necháme je zalomit a růst do výšky (min-height drží zarovnání s jednořádkovými). */
.resend-actions .btn.small { height: auto; min-height: 34px; padding-top: 5px; padding-bottom: 5px; line-height: 1.2; white-space: normal; }

/* akce po výpadku modelu I fallbacku: „Zkusit znovu" + „Zkusit jiný model" */
.retry-cta { align-self: center; margin: 2px 0 6px; display: flex; justify-content: center; }
.retry-actions { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; align-items: center; }

/* dotaz na kompresi vlákna (rolling summary) — neutrální (ne chyba) info bublina s tlačítkem */
.bubble.compact-ask { display: block; background: var(--bg-soft); border: 1px solid var(--border-soft); color: var(--navy); }
.bubble.compact-ask .compact-actions { margin-top: 10px; display: flex; flex-wrap: wrap; gap: 8px; }
.bubble.compact-ask .compact-go { display: inline-flex; align-items: center; justify-content: center; height: 34px; padding: 0 14px; font-size: 14px; }

/* celková cena konverzace pod posledním sdělením — nenápadná, šedá */
.conv-cost { align-self: center; margin: 6px 0 2px; color: var(--muted); font-size: 12px; display: flex; align-items: center; gap: 5px; }   /* flex+center: „Kopírovat konverzaci" (icon-flex) a text nákladů na společné ose (jinak ikona výš); gap = mezera kolem pajpy */
.conv-cost .cc-sep { white-space: pre; }   /* pajpa „ | " si drží mezery i ve flexu */
.run-cost { margin: 16px 0 2px; font-size: 12px; }   /* náklady běhu nástroje = jednoduchá řádka VLEVO (jako .conv-cost, jen ne center); barva z .muted */
.copy-md { display: none; }   /* skrytý nosič raw markdownu pro „Kopírovat do schránky" (čte JS); explicitně, UA [hidden] framework display přebíjí */

/* report nákladů (stránka Náklady) — 1. sloupec vlevo, číselné sloupce vpravo (zarovnané) */
.cost-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.cost-table th, .cost-table td { padding: 10px 12px; border-bottom: 1px solid var(--border-soft); text-align: right; font-variant-numeric: tabular-nums; }
.cost-table th:first-child, .cost-table td:first-child { text-align: left; }
.cost-table thead th { color: var(--muted); font-weight: 600; font-size: 12px; text-transform: uppercase; letter-spacing: .02em; }
.cost-table tfoot th { border-top: 2px solid var(--border); border-bottom: 0; color: var(--navy); font-weight: 700; }
/* dvouúrovňový rozpad: čerstvé tokeny = hlavní číslo, cache jako tichá anotace (menší, šedě);
   „Nástroje" = mezisoučet (ct-sub), jednotlivé nástroje odsazené pod ním (ct-child) */
.cost-table .ct-cache { display: block; margin-top: 2px; font-size: 12px; font-weight: 400; color: var(--muted); font-variant-numeric: tabular-nums; }
.cost-table tr.ct-sub td { font-weight: 600; color: var(--navy); }
.cost-table tr.ct-child td { color: var(--muted); }
.cost-table tr.ct-child td:first-child { padding-left: 30px; }

/* 3. druh bubliny: systémová poznámka (změna modelu) — šedivá, na střed, méně výrazná */
/* oddělovač se změnou modelu: pill uprostřed + hr linky do krajů, větší vertikální odsazení */
/* nabídka nástrojů v compose baru (vedle sponky) */
/* Ovládání je VEDLE pole a drží se u PRVNÍHO řádku: textarea roste dolů, tlačítka zůstávají nahoře.
   margin-top = horní padding ask-baru, aby tlačítka seděla na prvním řádku textu. */
.ask-row { display: flex; align-items: flex-start; gap: 8px; }
.ask-row .ask-bar { flex: 1; min-width: 0; padding: 10px 16px; }
.ask-row > .btn.icon, .ask-row > .tool-menu-wrap { flex: 0 0 auto; margin-top: 10px; }
.tool-menu-wrap { position: relative; }
.tool-menu[hidden] { display: none; }  /* explicitně: framework display přebíjí UA [hidden] */
.tool-menu { position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 30; width: 320px; max-width: 78vw; background: var(--white); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 8px 24px rgba(19,15,61,0.14); padding: 6px; }
.tool-menu-item { display: flex; flex-direction: column; gap: 2px; width: 100%; text-align: left; background: none; border: 0; border-radius: 8px; padding: 8px 10px; cursor: pointer; font: inherit; color: var(--navy); }
.tool-menu-item:hover { background: var(--bg-soft); }

/* ⭐ DEV-ONLY marker (EMA_App::devMarker) — jen na LOC za názvem dev-only položky („neběží v prod live"). Amber čitelný na světlém i tmavém (nav). */
.dev-star { color: #e0a81e; font-size: 0.72em; vertical-align: super; margin-left: 2px; cursor: help; font-weight: 700; }
/* Vlákno dělá vždycky jen jednu věc (uživatel 2026-08-14): během generování odpovědi i po dobu běhu
   nástroje se nabídka nedá vyvolat. Zůstává VIDĚT (aby nepřeskakovala rozvržení), jen zšedne. */
.tool-menu-open.is-off { opacity: 0.4; cursor: default; }
/* běh spuštěný z konverzace: cesta zpátky do vlákna (v žádném výpisu nástrojů takový běh není) */
.tool-origin { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; padding: 14px 24px; }
.tool-origin .muted { font-size: 13px; }
/* Odstup sekcí detailu drží OBAL, ne jednotlivé bloky: dřív si ho dával každý blok sám (margin-top),
   takže jakmile některý vypadl (např. doladění), sousedi se slepili. Přebíjí margin-top bloků
   (specificita 2 třídy vs 1), hodnota je stejná, takže se nic vizuálně neposouvá. */
.tool-detail > .card + .card { margin-top: 16px; }
/* detail projektu: mezery mezi kartami (jinak slepené — .wz-card nemá margin) + edit tlačítko vpravo nahoře */
.ws-detail > .card + .card { margin-top: 16px; }
.ws-detail-top { display: flex; justify-content: flex-end; gap: 8px; margin-bottom: 16px; }
.tool-menu-item .muted { font-size: 12px; }
/* volba vstupu (jen u nástrojů, které smí dostat konverzaci) — rozbalí se pod položkou nástroje */
.tool-src { display: flex; flex-direction: column; gap: 2px; padding: 6px 8px 8px; background: var(--bg-soft); border-top: 1px solid var(--border-soft); }
.tool-src-head { font-size: 12px; color: var(--muted); padding: 2px 4px 4px; }
.tool-src-btn { text-align: left; background: none; border: 0; cursor: pointer; padding: 6px 8px; border-radius: var(--radius); font: inherit; font-size: 13px; color: var(--navy); }
.tool-src-btn:hover { background: var(--fill); }

/* propojka s nástroji: zástupná bublina běhu (krátká stopa ve vlákně, obsah jde do kontextu) */
.msg-tool { align-self: stretch; margin: 10px 0; display: flex; flex-direction: column; align-items: center; gap: 6px; }   /* tool-bublina CENTROVANÁ (vč. akční lišty) - zřejmější, volba uživatele 2026-10 */
.bubble.tool { display: inline-flex; align-items: center; gap: 8px; background: var(--bg-soft); border: 1px dashed var(--border); color: var(--navy); border-radius: 999px; padding: 6px 16px; font-size: 13px; max-width: 100%; }
.bubble.tool .icon { width: 16px; height: 16px; flex: none; color: var(--muted); }
.bubble.tool .tool-label { font-weight: 600; }
.bubble.tool .tool-link { color: var(--muted); text-decoration: none; }
/* nástroj pustil do vlákna i obsah (shrnutí celé, dlouhý report výtahem) → z pilulky se stává
   karta: hlavička nahoře, pod ní text; proklik na celý report zůstává v hlavičce */
.bubble.tool.has-body { display: block; width: 100%; max-width: 680px; border-radius: 14px; border-style: solid; padding: 10px 16px 12px; text-align: left; background: var(--white); font-size: 16px; }
.bubble.tool.has-body .icon, .bubble.tool.has-body .tool-label { vertical-align: middle; }
.bubble.tool.has-body .icon { display: inline-block; width: 19px; height: 19px; margin-right: 7px; }
/* proklik na celý report na DRUHÉ straně záhlaví, ať se s popiskem nepere o místo */
.bubble.tool.has-body .tool-link { float: right; margin-left: 16px; }
.bubble.tool.has-body .tool-body { clear: both; }
/* velikost písma jako zbytek vlákna (16px); `font-size: inherit` na potomcích je nutné —
   globální `p { font-size: 16px }` by jinak přebilo dědění a odrážky by byly menší než odstavce */
.tool-body { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--border-soft, var(--border)); font-size: 16px; line-height: 1.625; color: var(--text); }
.tool-body > *:first-child { margin-top: 0; }
.tool-body > *:last-child { margin-bottom: 0; }
.tool-body h1, .tool-body h2, .tool-body h3, .tool-body h4 { font-size: inherit; font-weight: 600; color: var(--ink); margin: 14px 0 6px; letter-spacing: 0; }
.tool-body p, .tool-body ul, .tool-body ol, .tool-body li { font-size: inherit; }
.tool-body p, .tool-body ul, .tool-body ol { margin: 8px 0; }
.tool-body ul, .tool-body ol { padding-left: 22px; }
/* odrážka: vlastní kolečko místo ::marker, protože marker jde obarvit, ale ne posunout —
   opticky sedí nízko, tak je o 1px výš; barvu bere z textu */
.tool-body ul { list-style: none; }
.tool-body ul > li { position: relative; }
.tool-body ul > li::before { content: "•"; position: absolute; left: -16px; top: -1px; color: inherit; font-size: inherit; line-height: inherit; }
.tool-body ol { list-style: decimal; }
.tool-body ol > li::marker { color: inherit; }
.tool-body li { margin: 4px 0; }
.tool-body li > p { margin: 0; }
.tool-body table { border-collapse: collapse; margin: 10px 0; font-size: 14px; display: block; overflow-x: auto; max-width: 100%; }
.tool-body th, .tool-body td { border: 1px solid var(--border); padding: 4px 8px; text-align: left; }
.tool-body code { background: var(--bg-soft); padding: 1px 4px; border-radius: 4px; }
.tool-body hr { border: 0; border-top: 1px solid var(--border); margin: 10px 0; }
/* U54: nabídka nástroje pod odpovědí („Na tohle je v Ema nástroj…") = ÚHLEDNÁ KARTA, ne divider-notice.
   Přebíjí .msg-notice (čáry ::before/::after + center-pill) — pro bublinu s akčními tlačítky nevhodné:
   text nahoře, akce v řádku pod ním (wrap), žádné dělící čáry. */
.msg-notice.tool-advice { flex-direction: column; align-items: stretch; gap: 10px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; color: var(--text); font-size: 14px; }
.msg-notice.tool-advice::before, .msg-notice.tool-advice::after { content: none; }   /* žádné divider čáry (přebíjí .msg-notice) */
.msg-notice.tool-advice > span { flex: none; background: none; border: 0; border-radius: 0; padding: 0; }   /* text = plný řádek v kartě, ne pill */
.tool-advice .resend-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-left: 0; }
.tool-waiting span:last-child { display: inline-flex; align-items: center; gap: 8px; }

.msg-notice { display: flex; align-items: center; gap: 12px; align-self: stretch; margin: 12px 0; color: var(--muted); font-size: 12px; }
.msg-notice::before, .msg-notice::after { content: ""; flex: 1; height: 1px; background: var(--border); }
.msg-notice span { flex: none; background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: 999px; padding: 4px 14px; }

/* klikací model v hlavičce chatu (→ přepínač) */
.tb-model-open { display: inline-flex; align-items: center; gap: 4px; color: var(--muted); text-decoration: none; cursor: pointer; }
.tb-model-open:hover { color: var(--cyan); }
/* zamčené během generování / běhu nástroje - nastavení (výkon/osobní údaje) se uprostřed kola nemění */
.tb-model-open.is-off { opacity: 0.4; cursor: default; pointer-events: none; }
.tb-model-open .icon { width: 14px; height: 14px; }

/* modal přepínače modelů (magnific inline; overlay/centrování dělá magnific .mfp-*) — styl dle pattern-knowledge */
.modal { background: var(--white); border-radius: var(--radius-xl); box-shadow: 0 16px 50px rgba(19,15,61,0.25); width: 100%; max-width: 460px; margin: 20px auto; overflow: hidden; }
.modal-header { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 24px; border-bottom: 1px solid var(--border-soft); }
.modal-header h3 { margin: 0; }
.modal-close { background: none; border: 0; color: var(--muted); cursor: pointer; display: inline-flex; }
.modal-close:hover { color: var(--navy); }
.modal-body { padding: 16px 24px 24px; }
.model-popup { max-width: 600px; }
.model-table { width: 100%; border-collapse: collapse; }
.model-table th { text-align: left; font-size: 12px; font-weight: 500; color: var(--muted); padding: 0 10px 8px; border-bottom: 1px solid var(--border); }
.model-table th:nth-child(3), .model-table th:nth-child(4) { text-align: center; }
.model-table td { padding: 10px; border-bottom: 1px solid var(--border-soft); vertical-align: middle; }
.model-table tbody tr:last-child td { border-bottom: 0; }
.model-option { cursor: pointer; }
.model-option:hover td { background: var(--bg-soft); }
.model-option.active td { background: var(--cyan-tint); }
.model-option .mo-name { color: var(--navy); font-weight: 500; }
.model-option .mo-meta { color: var(--muted); font-size: 12px; }
.mo-price { white-space: nowrap; color: var(--text); }
.mo-rating, .mo-pd { text-align: center; white-space: nowrap; }

/* rating: zlaté hvězdy přes šedé, ořez šířkou (fill-* dle půl-hvězdy) */
.stars { position: relative; display: inline-block; line-height: 1; font-size: 16px; }
.stars-bg { color: var(--border); }
.stars-fg { position: absolute; left: 0; top: 0; color: #f5a623; overflow: hidden; white-space: nowrap; }
.stars-na { color: var(--muted); }
.fill-0{width:0}.fill-10{width:10%}.fill-20{width:20%}.fill-30{width:30%}.fill-40{width:40%}.fill-50{width:50%}.fill-60{width:60%}.fill-70{width:70%}.fill-80{width:80%}.fill-90{width:90%}.fill-100{width:100%}

/* osobní údaje ✓ / ✗ */
.dc { display: inline-flex; }
.dc .icon { width: 18px; height: 18px; }
.dc-yes { color: #2e9b57; }
.dc-no { color: #d8382f; }

/* compose (ask-bar) */
.ask-bar { display: flex; align-items: flex-end; gap: 8px; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 10px 10px 10px 16px; }
.ask-bar textarea { flex: 1; border: 0; background: transparent; box-sizing: border-box; min-height: 44px; max-height: 132px; padding: 11px 0; resize: none; overflow-y: auto; font: 400 15px/1.45 var(--font); color: var(--navy); }
.ask-bar textarea:focus { box-shadow: none; outline: none; }
.ask-bar:focus-within { border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(0,152,212,0.18); }
.ask-bar .btn.icon { flex: 0 0 auto; }
.ask-bar .att-open { align-self: flex-end; color: var(--muted); }
.ask-bar .att-open:hover { color: var(--cyan); background: var(--border-soft); }

/* === přílohy: souborový chip (design manuál .attachment) === */
.attachment { display: inline-flex; align-items: center; gap: 10px; background: var(--white); border: 1px solid var(--border); border-radius: 10px; padding: 8px 12px; max-width: 280px; }
.attachment .att-icon { display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 8px; background: #e4f4fb; color: var(--cyan); flex: none; }
.attachment .att-icon .icon { width: 20px; height: 20px; }
.attachment .att-body { min-width: 0; }
.attachment .att-name { color: var(--navy); font-weight: 500; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.attachment .att-meta { color: var(--muted); font-size: 12px; }
/* OBRÁZKOVÁ příloha = náhled místo ikony souboru. Miniatura má PEVNOU výšku a `cover`, aby řádek
   příloh nepodskakoval podle poměru stran; klik otevře plnou velikost. */
.attachment.att-image { align-items: flex-start; }
.attachment .att-thumb { flex: none; display: block; width: 56px; height: 56px; border-radius: 8px; overflow: hidden; background: var(--bg-soft); }
.attachment .att-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.attachment.att-blocked .att-thumb { opacity: 0.45; }
.attachment .att-remove { flex: none; display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: none; border: 0; color: var(--muted); cursor: pointer; padding: 0; }
.attachment .att-remove .icon { width: 16px; height: 16px; }
.attachment .att-remove:hover { color: var(--danger, #d8382f); }
.att-remove-all { display: inline-flex; align-items: center; gap: 4px; background: none; border: 0; color: var(--danger, #d8382f); cursor: pointer; padding: 0 8px; font-size: 13px; align-self: center; }
.att-remove-all .icon { width: 16px; height: 16px; }

/* === Ad-hoc sada znalostí nad composerem (U36 B2) — kompaktní inline chip „📚 Znalosti (N) ×" ===
   Dřív bez CSS → render jako plná řádka. Teď tint-pilulka (jako .tag.tint/.wm-badge) + decentní × tlačítko. */
.kb-set-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 2px 8px; }
.kb-set-chips[hidden] { display: none; }   /* explicitní `display` by jinak přebil `hidden` atribut (kbSetRender ho přepíná) */
.kb-set-chip { display: inline-flex; align-items: center; gap: 7px; background: var(--cyan-tint); color: var(--cyan-dark); font-size: 13px; font-weight: 500; line-height: 1; padding: 5px 6px 5px 11px; border-radius: 999px; }
.kb-set-chip i { font-size: 12px; }
.kb-set-clear { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; padding: 0; margin: 0; border: 0; border-radius: 999px; background: none; color: inherit; opacity: .65; font-size: 15px; line-height: 1; cursor: pointer; }
.kb-set-clear:hover { background: rgba(19,15,61,.1); opacity: 1; }
.att-remove-all:hover { text-decoration: underline; }
.attachment.att-up { opacity: 0.75; }
/* async klasifikace citlivosti běží na pozadí (stav „Kontroluji…") — jemně odlišené od hotové přílohy */
.attachment.att-checking { opacity: 0.85; }
.attachment.att-checking .att-meta { color: var(--cyan); }
.attachment.att-error { border-color: var(--danger, #d8382f); background: #fdecea; }
.attachment.att-error .att-icon { background: #f7d4d1; color: var(--danger, #d8382f); }
/* příloha u zablokovaného pokusu — šedivá/inactive (neodešla) */
.attachment.att-blocked { opacity: 0.6; background: var(--bg-soft); border-color: var(--border-soft); }
.attachment.att-blocked .att-icon { background: var(--border-soft); color: var(--muted); }
.attachment.att-blocked .att-name { color: var(--muted); }
.att-spin { flex: none; width: 16px; height: 16px; border: 2px solid var(--border); border-top-color: var(--cyan); border-radius: 50%; animation: att-spin 0.7s linear infinite; }
@keyframes att-spin { to { transform: rotate(360deg); } }

/* pending přílohy nad compose (skryté dokud nejsou) */
.compose-attachments { display: none; }
.compose-attachments.has { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; max-height: 30vh; overflow-y: auto; }

/* přílohy odeslané zprávy — vpravo, nad user bublinou */
.msg-attachments { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; margin-left: auto; max-width: 72%; }

/* prázdný stav nového dotazu */
.chat-empty { margin: auto; text-align: center; color: var(--muted); padding: 40px 16px; }
.chat-empty .icon { width: 40px; height: 40px; color: var(--cyan); margin-bottom: 8px; }
.chat-empty h2 { color: var(--navy); margin: 0 0 4px; }

/* klikací řádek v seznamu konverzací */
a.list-row { text-decoration: none; color: inherit; cursor: pointer; }
a.list-row:hover { background: var(--bg-soft); }

/* === pracovní prostory: řádek s tužkou + modal založení/editace === */
.list-row { position: relative; }

/* Seznam konverzací: řádek = odkaz + tlačítko smazat (koš); potvrzení = popup modal (conversations.js) */
.conv-list .conv-row { display: flex; align-items: center; border-bottom: 1px solid var(--border-soft); }
.conv-list .conv-row:last-child { border-bottom: 0; }
.conv-list .conv-row .list-row { flex: 1; min-width: 0; border-bottom: 0; }
.conv-delete { flex: none; background: none; border: 0; cursor: pointer; color: var(--muted); padding: 10px 14px; border-radius: 8px; display: inline-flex; align-items: center; }
.conv-delete:hover { color: var(--error); background: var(--border-soft); }
.conv-delete .icon { width: 18px; height: 18px; }
/* běhy nástrojů: řádek s mazáním (vzor conv-row) + stránkovací pager */
.tool-runs-list .tool-run-row { display: flex; align-items: center; border-bottom: 1px solid var(--border-soft); }
.tool-runs-list .tool-run-row:last-child { border-bottom: 0; }
.tool-runs-list .tool-run-row .list-row { flex: 1; min-width: 0; border-bottom: 0; }
.tool-delete { flex: none; background: none; border: 0; cursor: pointer; color: var(--muted); padding: 10px 14px; border-radius: 8px; display: inline-flex; align-items: center; }
.tool-delete:hover { color: var(--error); }   /* jen červený font, bez šedého pozadí klikací zóny (uživatel 2026-09-13) */
.tool-delete .icon { width: 18px; height: 18px; }
/* zdroj dotazování, který už NENÍ RAG-povolený (admin skryl/odebral úložiště) — řádek ztlumený + varovný badge „už není povoleno" */
.tool-run-row.source-invalid { opacity: 0.62; }
.tool-run-row.source-invalid .lr-title { color: var(--muted); }
.src-revoked { display: inline-flex; align-items: center; gap: 4px; margin-left: 8px; font-size: 12px; font-weight: 500; color: var(--warning); white-space: nowrap; }
.src-revoked i { font-size: 12px; }
/* sdílený číslovaný pager (EMA_App::listPager) — vzhled dle admin S_ADM_List */
.list-pager { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: 16px; flex-wrap: wrap; }
.list-pager .lp-item { display: inline-flex; align-items: center; justify-content: center; min-width: 34px; height: 34px; padding: 0 6px; border-radius: var(--radius); font-size: 14px; color: var(--ink); text-decoration: none; box-sizing: border-box; }
.list-pager a.lp-item:hover { background: var(--bg-soft); }
.list-pager .lp-item .icon { width: 15px; height: 15px; stroke: currentColor; fill: none; stroke-width: 2.4; }
.list-pager .lp-nav .icon + .icon { margin-left: -9px; }   /* dvojitý chevron (« ») překrytý */
.list-pager .lp-item.active { background: var(--cyan); color: var(--white); font-weight: 600; }
.list-pager .lp-item.inactive { color: var(--border); pointer-events: none; }
.list-pager .lp-gap { color: var(--muted); pointer-events: none; min-width: 20px; }

/* Popup potvrzovací dialog (mazání konverzace) — vlastní overlay (magnific na /conversations není) */
.modal-overlay { position: fixed; inset: 0; z-index: 10000; display: flex; align-items: center; justify-content: center; background: rgba(19,15,61,0.45); padding: 20px; }
.modal-confirm { max-width: 420px; margin: 0; }
.modal-confirm .modal-msg { margin: 0 0 20px; color: var(--ink); }
.modal-actions { display: flex; gap: 12px; justify-content: flex-end; }
.btn-ghost { background: transparent; color: var(--muted); border: 1px solid var(--border-soft); }
.btn-ghost:hover { background: var(--border-soft); color: var(--ink); }
.btn-danger { background: var(--error); border-color: var(--error); color: #fff; }
.btn-danger:hover { background: var(--error); filter: brightness(0.92); }
.lr-edit { margin-left: auto; flex: none; display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 0; border-radius: 8px; background: transparent; color: var(--muted); cursor: pointer; }
.lr-edit:hover { background: var(--border-soft); color: var(--cyan); }
.lr-edit .icon { width: 18px; height: 18px; }
/* ikona tužky na konci řádku (edit affordance, např. Nastavení → Nástroje) */
.lr-edit-ico { flex: none; width: 18px; height: 18px; color: var(--muted); }
a.list-row:hover .lr-edit-ico { color: var(--cyan-dark); }
/* chevron „proklik na detail" na konci řádku (např. výpis projektů) */
.lr-go { flex: none; width: 18px; height: 18px; color: var(--muted); margin-left: 8px; }
a.lr-main:hover .lr-go { color: var(--cyan-dark); }

/* form v body (ne modal) — přepíná se s listem */
.ws-list[hidden], .ws-form-wrap[hidden] { display: none; }  /* explicitně: UA [hidden] přebíjí framework */

/* === generický vícekrokový form (osa s kolečky, oba směry, show/hide) === */
.ms-step[hidden], .stepper[hidden] { display: none; }  /* explicitně: UA [hidden] přebíjí framework */
.stepper { display: flex; align-items: flex-start; margin-bottom: 24px; }
.step { flex: 1; display: flex; flex-direction: column; align-items: center; position: relative; cursor: default; }
.step[data-idx]:not(.active) { cursor: pointer; }
.step:not(:last-child)::after { content: ""; position: absolute; top: 15px; left: 50%; width: 100%; height: 2px; background: var(--fill); z-index: 0; }
.step.done::after { background: var(--success); }  /* hotovo = zelená (design manual) */
.step-dot { position: relative; z-index: 1; width: 32px; height: 32px; border-radius: 999px; display: inline-flex; align-items: center; justify-content: center; background: var(--fill); color: var(--muted); border: 2px solid var(--fill); font: 500 14px/1 var(--font); }
.step.done .step-dot { background: var(--success); border-color: var(--success); color: var(--white); }  /* zelená + check */
.step.active .step-dot { background: var(--cyan); border-color: var(--cyan); color: var(--white); }  /* cyan + číslo */
.step-dot .icon { width: 18px; height: 18px; }
.step-label { margin-top: 8px; font-size: 13px; color: var(--muted); text-align: center; }
.step.done .step-label, .step.active .step-label { color: var(--navy); font-weight: 500; }
/* tool-instance stepper: chybný aktuální krok = červené kolečko s „!" (wizard tenhle stav nemá) */
.step.error .step-dot { background: var(--danger, #d8382f); border-color: var(--danger, #d8382f); color: var(--white); }
.step.error .step-label { color: var(--navy); font-weight: 500; }
.ms-nav { display: flex; justify-content: flex-end; gap: 10px; margin-top: 4px; }
.ms-nav [hidden] { display: none; }  /* explicitně: .btn display přebíjí UA [hidden] */
.ms-nav [data-step-back] { margin-right: auto; }

/* === WIZARD (samostatný layout: zakládání/editace prostoru na vlastních URL) ===
   Server-side kroky; stepper (.stepper/.step/.step-dot/.step-label) sdílí styl výše. */
body.wizard { background: var(--navy); min-height: 100vh; }
.wizard-shell { width: 100%; max-width: 640px; margin: 0 auto; padding: 40px 20px 64px; }
.wizard-brand { text-align: center; margin-bottom: 28px; }
.wizard-brand img { height: 40px; }
.wizard-messages:empty { display: none; }
.wizard-messages { margin-bottom: 16px; }
.wz-card { padding: 28px 32px; }  /* form v body na PLNOU šířku (jako výpis); ve variantě bez navigace drží šířku .wizard-shell */
.wz-form { display: flex; flex-direction: column; gap: 18px; }

/* === Nástroje (karty spustitelných nástrojů) === */
/* katalog nástrojů = use-case karty (components/usecase-card.md) */
.tool-catalog { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; }   /* bez margin-bottom → mezera k další sekci je JEN na jejím wrapperu (margin-top), nesčítá se (user 2026-10-11) */
/* obecný projekt (detail): launch dlaždice užší (~1/3), ne full-width — scope JEN .ws-detail; /tools katalog i rozcestník Znalostí/Agentů (plain .tool-catalog mimo .ws-detail) beze změny. auto-FILL (ne auto-fit) → i jediná dlaždice drží ~1/3, nenatáhne se. */
.ws-detail .tool-catalog { grid-template-columns: repeat(auto-fill, minmax(240px, 300px)); justify-content: start; }
@media (max-width: 559.98px){ .ws-detail .tool-catalog { grid-template-columns: 1fr; } }   /* úzký mobil: launch dlaždice přes celou šířku */
/* karta nástroje: CELÁ klikací (odkaz .uc-link vyplní kartu); srdíčko .uc-fav = absolutní výjimka v rohu */
.usecase-card { position: relative; background: var(--white); border: 1px solid var(--border); border-radius: 12px; width: 100%; transition: box-shadow .15s ease, border-color .15s ease; }
.usecase-card:hover { box-shadow: 0 10px 28px rgba(19,15,61,0.10); border-color: var(--cyan-accent); }
.uc-link { display: flex; flex-direction: column; align-items: flex-start; gap: 10px; padding: 20px; text-align: left; text-decoration: none; color: inherit; height: 100%; box-sizing: border-box; }
.uc-link:hover, .uc-link:hover .uc-title, .uc-link:hover .uc-foot { text-decoration: none; }   /* dlaždice bez podtržení na hover (stejně jako Podrobnosti) */
.tools-all-head { margin-top: 24px; }   /* oddělení „Všechny nástroje" od „Použité nástroje" (nebyly nalepené) */
.uc-link:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; }
.usecase-card .uc-title { color: var(--navy); font-weight: 500; font-size: 16px; }
.usecase-card .uc-foot { display: inline-flex; align-items: center; gap: 6px; color: var(--cyan-dark); font-size: 13px; font-weight: 500; }
.usecase-card .uc-foot .icon { width: 16px; height: 16px; }
/* „Spustit →" launch CTA = hlavní akce → oranžová (jako .btn; viz memory ema-frontend-button-colors). JEN /tools (fav+all) a launch v projektu; rozcestník Znalostí/Agentů má „Otevřít" a zůstává cyan. Šipka dědí barvu přes currentColor. */
.tool-favorites .uc-foot,
.tool-all .uc-foot,
.ws-detail .tool-catalog .uc-foot { color: var(--orange); }
/* Nastavení — rozcestník: jednoduchý řádkový box (název vlevo, „Otevřít" vpravo), cap šířky */
.set-hub { display: flex; flex-direction: column; gap: 12px; }
.set-tile { display: flex; align-items: center; justify-content: space-between; gap: 16px; background: var(--white); border: 1px solid var(--border); border-radius: 12px; padding: 18px 20px; text-decoration: none; transition: box-shadow .15s ease, border-color .15s ease; }
.set-tile:hover { box-shadow: 0 10px 28px rgba(19,15,61,0.10); border-color: var(--cyan-accent); text-decoration: none; }
.set-tile-title { color: var(--navy); font-weight: 500; font-size: 16px; }
.set-tile-open { display: inline-flex; align-items: center; gap: 6px; color: var(--cyan-dark); font-size: 13px; font-weight: 500; white-space: nowrap; }
.set-tile-open .icon { width: 16px; height: 16px; }
/* srdíčko = tlačítko v pravém dolním rohu, NAD odkazem (klik na něj nástroj NEspustí, jen přepne oblíbené) */
.uc-fav { position: absolute; right: 14px; bottom: 14px; z-index: 2; background: none; border: 0; padding: 4px; cursor: pointer; color: var(--muted); display: inline-flex; align-items: center; border-radius: 8px; }
.uc-fav:hover { color: var(--cyan-dark); }
.uc-fav .icon { width: 20px; height: 20px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.uc-fav.is-fav { color: var(--cyan); }
.uc-fav.is-fav .icon { fill: currentColor; stroke: currentColor; }   /* oblíbené = vyplněné srdíčko */

/* nástroj: launch stránka + výsledek (markdown report přes Parsedown) */
.tool-launch-desc { margin: -4px 0 8px; }
/* file dropzone (plocha s čárkovaným borderem + drag&drop; vzor DMS .file-dropzone) */
.file-dropzone { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; padding: 28px 20px; border: 2px dashed var(--cyan-accent); border-radius: var(--radius); background: var(--bg-soft); cursor: pointer; text-align: center; transition: border-color .2s, background .2s; }
.file-dropzone:hover, .file-dropzone.dragover { border-color: var(--cyan-dark); background: var(--cyan-tint); }
/* soubor přes limit (client-side varování; server je autorita) — červené zvýraznění */
.file-dropzone.dz-error { border-color: #d64545; background: #fdecea; }
.file-dropzone.dz-error .file-dropzone-label { color: #b3261e; }

/* Dokumenty — strom norem/standardů (složky + dokumenty + zanořené verze) */
.doc-crumbs { margin-bottom: 12px; color: var(--cyan-accent); font-size: 25px; line-height: 1.3; position: relative; top: 2px; }   /* „›" separátory = 25px + světle modrá (--cyan-accent #34b4e4); top:2px posune „›" (plain text) na baseline textu crumbů (counter na a/.crumb-current ať se text nehne); user 2026-10-11 */
.doc-crumbs a, .doc-crumbs .crumb-current { font-size: 14px; position: relative; top: -2px; }   /* text crumbů 14px vlastní barva; counter -2px = text zůstane na místě (klesne JEN „›") */
.doc-crumbs a { color: var(--cyan-dark); }
.doc-crumbs .crumb-current { color: var(--ink); }

/* ── WEB_Table: obecný tabulkový výpis (admin-list styl) ── */
.list-card { padding: 0; overflow: hidden; }
.list-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 18px 20px 10px; }
.wz-card .list-head { padding-left: 0; padding-right: 0; }   /* md read-view (Dokumenty/Znalosti): .list-head je uvnitř .wz-card (padding 32px) → bok 20px navíc odsazoval NADPIS vůči tělu (title 84 vs body 64). Zarovnat nadpis flush s obsahem; user 2026-10-11 „divné odsazení zleva na /skills" */
.list-head-title .big { margin: 0; }
.list-head-title .muted { margin: 2px 0 0; }
.list-toolbar { display: flex; gap: 8px; flex-wrap: wrap; }
.list-toolbar .dt-add { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; color: var(--success); font-size: 18px; border-radius: var(--radius); text-decoration: none; }
.list-toolbar .dt-add:hover { background: var(--border-soft); text-decoration: none; }
.dt-act.dt-approve { color: var(--success); }
.wz-json { overflow: auto; max-height: 60vh; background: var(--border-soft); padding: 12px; border-radius: var(--radius); font-size: 13px; line-height: 1.5; }
/* v listu odkazy nepodtrhávat (přebíjí globální a:hover) */
.list-card a:hover, .doc-crumbs a:hover { text-decoration: none; }
.dt-wrap { overflow-x: auto; }
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.data-table thead th { text-align: left; font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .02em; padding: 10px 16px; border-bottom: 1px solid var(--border); white-space: nowrap; }
.data-table td { padding: 11px 16px; border-bottom: 1px solid var(--border-soft); vertical-align: middle; height: 57px; }   /* min výška řádku = sjednocení jednořádkových (seznam dokumentů) s dvouřádkovými (verze souborů), uživatel 2026-09-14 */
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table tbody tr:hover { background: var(--bg-soft); }
.data-table .dt-nowrap { white-space: nowrap; color: var(--muted); }
.data-table .dt-num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; color: var(--muted); }
.dt-name { color: var(--navy); font-weight: 500; text-decoration: none; }
a.dt-name:hover { color: var(--cyan-dark); }
.dt-name i { color: var(--cyan); margin-right: 8px; }
.dt-sub { color: var(--muted); font-size: 12px; margin-top: 2px; }
.dt-badge { display: inline-block; color: var(--muted); font-size: 12px; background: var(--bg-soft); border: 1px solid var(--border-soft); padding: 1px 8px; border-radius: 999px; }
/* stav snapshotu (fronta dks_task): běží/čeká = žlutá, hotovo = zelená, chyba = červená */
.kb-snap-badge { display: inline-block; font-size: 12px; font-weight: 500; padding: 1px 9px; border-radius: 999px; border: 1px solid transparent; }
.kb-snap-run  { color: #a15c00; background: #f8eede; border-color: #ecd9b0; }
.kb-snap-ok   { color: #2f7a55; background: #e3f0e8; border-color: #bfe0cd; }
.kb-snap-err  { color: #c0392b; background: #fbe9e6; border-color: #f1c9c2; }
.kb-snap-none { color: var(--muted); background: var(--bg-soft); border-color: var(--border-soft); }
.dt-empty { color: var(--muted); text-align: center; padding: 28px 14px; }
.dt-actions-col { width: 1%; }
.dt-actions { white-space: nowrap; text-align: right; }
.dt-actions .dt-act-form { display: inline; margin: 0; }
.btn.icon.dt-act { width: 34px; height: 34px; color: var(--muted); }
.btn.icon.dt-act:hover { color: var(--ink); background: var(--border-soft); }
.btn.icon.dt-remove:hover { color: #d64545; background: transparent; }

/* ── form-view (samostatná add/edit stránka, ne inline v listu) ── */
.doc-form-view { padding: 10px 20px 22px; max-width: 620px; }
/* markdown authoring (ACE editor) = form na PLNOU šířku containeru; krátký text-input (název) drží čitelnou šířku */
.doc-form-view.doc-form-wide { max-width: none; }
.doc-form-view.doc-form-wide .form-field input.ws-input { max-width: 620px; }
.form-field { margin-bottom: 14px; }
.form-field .ff-label { display: block; font-size: 13px; color: var(--muted); margin-bottom: 5px; }
.form-field .ws-input { width: 100%; }
.form-actions { margin-top: 22px; display: flex; gap: 10px; }
.doc-dl { color: var(--cyan-dark); text-decoration: none; }
.doc-dl i { margin-right: 6px; }

/* ── date input: nativní <input type=date> v ema stylu + ikona kalendáře (klik → showPicker; vzor ERP) ── */
.date-input-wrapper { position: relative; display: block; }
/* text data je krátký → padding-right netřeba; navíc by v FF odsunul nativní tlačítko zpod krycí ikony */
.date-input-wrapper .ws-input { width: 100%; }
/* skryj nativní sub-ovladače (Chrome/Edge) — používáme vlastní ikonu */
.date-input-wrapper input[type="date"]::-webkit-calendar-picker-indicator,
.date-input-wrapper input[type="date"]::-webkit-clear-button,
.date-input-wrapper input[type="date"]::-webkit-inner-spin-button { -webkit-appearance: none; appearance: none; display: none; }
/* vlastní ikona u pravého okraje; neprůhledné pozadí ZAKRYJE i nativní tlačítko FF/Safari (vzor ERP) */
.date-input-wrapper .fa-calendar-days { position: absolute; top: 1px; right: 1px; bottom: 1px; width: 40px; display: flex; align-items: center; justify-content: center; background: var(--white); color: var(--muted); font-size: 16px; cursor: pointer; border-radius: 0 var(--radius) var(--radius) 0; }
.date-input-wrapper .fa-calendar-days:hover { color: var(--cyan-dark); }
.file-dropzone input[type="file"] { display: none; }
.file-dropzone-icon { width: 30px; height: 30px; color: var(--cyan); }
.file-dropzone-label { color: var(--navy); font-weight: 500; }
.file-dropzone-hint { font-size: 13px; color: var(--muted); }
.wz-nav-standalone { margin-top: 16px; }
.md-report { line-height: 1.6; }
.md-report h1 { font-size: 22px; margin: 0 0 12px; }
.md-report h2 { font-size: 16px; font-weight: 600; color: var(--navy); margin: 20px 0 12px; }  /* sjednoceno s block/chain nadpisy */
.md-report h3 { font-size: 16px; margin: 16px 0 6px; }
.md-report p { margin: 0 0 12px; }
.md-report ul, .md-report ol { margin: 0 0 12px; padding-left: 22px; }
.md-report ul { list-style: disc; }
.md-report ol { list-style: decimal; }
.md-report li { margin-bottom: 4px; }
.md-report hr { border: 0; border-top: 1px solid var(--border-soft); margin: 16px 0; }
.md-report .ci-none { color: var(--muted); }

/* TABULKY v reportu (markdown z LLM je běžně vrací) — bez stylů vypadaly jako holý text */
.md-report table { width: 100%; border-collapse: collapse; margin: 0 0 16px; font-size: 14px; }
.md-report th, .md-report td { padding: 8px 12px; border: 1px solid var(--border-soft); text-align: left; vertical-align: top; }
.md-report thead th { background: var(--bg-soft); color: var(--navy); font-weight: 600; font-size: 13px; }
.md-report tbody tr:nth-child(even) { background: var(--bg-soft); }
.md-report table + p { margin-top: 0; }

/* doladění výsledku: odsazení pole i akce (resend-actions je z chatu = centrované CTA, sem nesedí) */
/* zadání běhu: rozklikávací, ve složeném stavu jeden řádek (styly summary sdílí s .md-report) */
/* seznam běhů úkolu: aktuální je zvýrazněný a neodkazuje sám na sebe */
.list-row.lr-current { background: var(--bg-soft); cursor: default; }
.lr-badge { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 999px; background: var(--border-soft); color: var(--muted); font-size: 11px; font-weight: 500; vertical-align: middle; }
.lr-badge-err { background: #fdecea; color: #9a1c11; }

.cost-table tfoot .ct-task th { border-top: 0; font-weight: 600; color: var(--muted); }  /* kumulativ za úkol pod součtem běhu */
.tool-input { margin-top: 16px; padding: 16px 24px; }
.tool-input .more-info summary { cursor: pointer; color: var(--cyan-dark); font-size: 14px; font-weight: 500; }
.tool-input .more-info summary:hover { text-decoration: underline; }
.tool-input .more-info-body { margin-top: 12px; color: var(--muted); font-size: 13px; }
.tool-input .more-info-body p { margin: 0 0 8px; }
.tool-input .more-info-body strong { color: var(--navy); }
.tool-input-text { white-space: pre-wrap; word-break: break-word; background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 12px; margin: 0 0 12px; font: 400 13px/1.5 var(--font); max-height: 320px; overflow: auto; }

.tool-refine { margin-top: 16px; }  /* .card sám odstup nemá — dávají ho bloky (vzor .block-card) */
.tool-refine .tr-applied { margin: 0 0 12px; }  /* předchozí pokyny nad formulářem doladění */
.tool-refine .tr-applied pre { margin: 0 0 6px; }  /* šedé boxy pokynů pod sebou (bez nadpisu) */
.tool-refine .tr-applied pre:last-child { margin-bottom: 0; }
.tool-refine .tr-applied-title { font-weight: 500; color: var(--ink); margin: 0 0 6px; }
.tool-refine h3 { margin: 0 0 6px; }
.tool-refine p.muted { margin: 0 0 12px; }
.tool-refine .tool-textarea { margin-bottom: 12px; }
.tool-refine .tr-actions { display: flex; justify-content: flex-end; }

/* status ikony reportu = Font Awesome s dynamickou barvou (místo emoji) */
.md-report i.fa-solid { font-size: 0.9em; margin-right: 4px; }
.st-ok { color: var(--success); }
.st-warn { color: #e0900d; }
.st-err { color: #d64545; }
.st-none { color: var(--muted); }
/* body checklistu s vizuálem: ikona · mapička (puntík) · detail (kroužek) · text.
   Body bez vizuálu mají buňky prázdné (nekreslíme placeholder) — sloupce drží šířku. */
.rf-items { border-collapse: collapse; width: 100%; }
/* nahoru, ne na střed: u nálezu s víc obrázky je buňka vysoká a popis vycentrovaný na střed
   by se odtrhl od nadpisu bodu (i od ikony) */
.rf-items td { padding: 14px 10px; border-top: 1px solid var(--border-soft); vertical-align: top; }
.rf-items tr:first-child td { border-top: 0; }
.rf-items .rfi-ico { width: 30px; text-align: center; }
.rf-items .rfi-ico i.fa-solid { font-size: 20px; margin: 0; }
/* mapička + detail = dohromady ~54 % šířky karty (nález musí být čitelný bez zvětšování) */
.rf-items .rfi-map { width: 24%; }
.rf-items .rfi-det { width: 30%; }
/* víc obrázků v buňce = víc kusů téhož nálezu (pod sebou); bez zoom kurzoru — nezvětšuje se */
.rf-items .rfi-map img, .rf-items .rfi-det img { width: 100%; display: block; border: 1px solid var(--border-soft); border-radius: 6px; background: var(--white); }
.rf-items .rfi-map img + img, .rf-items .rfi-det img + img { margin-top: 8px; }
.rf-items .rfi-title { font-weight: 700; color: var(--navy); margin-bottom: 3px; }
.rf-items .rfi-body { color: var(--text); font-size: 14px; line-height: 1.5; }
.rf-items .rfi-none .rfi-title, .rf-items .rfi-none .rfi-body { color: var(--muted); font-weight: 500; }
/* technické poznámky pod vizuálem ve stejném toggle */
.md-report .more-info-body .mi-notes { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border-soft); }

/* dávka: každý výkres ve vlastní kartě (jasný předěl) */
.file-card { margin-bottom: 18px; }
.md-report h2.rf-file { font-size: 23px; font-weight: 600; margin: 0 0 12px; }
.md-report strong { font-weight: 700; }
.md-report code { background: var(--bg-soft); padding: 1px 5px; border-radius: 4px; font-size: 13px; }
.wz-title { margin: 0; text-align: center; color: var(--navy); font-size: 22px; }  /* nadpis dialogu nahoře na střed, pak stepper, pak form */
.wz-subhead { margin: 10px 0 0; color: var(--navy); font-size: 16px; border-top: 1px solid var(--border-soft); padding-top: 18px; }
/* border-top = oddělovač sekcí UVNITŘ karty; když je subhead PRVNÍ v kartě, čára nemá nad sebou nic → pryč */
.wz-subhead:first-child { border-top: 0; padding-top: 0; margin-top: 0; }
.ws-static { padding: 8px 0; color: var(--navy); font-weight: 600; }
.wz-nav { display: flex; justify-content: flex-end; gap: 10px; margin-top: 8px; padding-top: 18px; border-top: 1px solid var(--border-soft); }
.wz-nav.wz-nav-flush { border-top: 0; padding-top: 0; margin-top: 24px; }  /* krátký form (editace prostoru) — bez oddělovací čáry nad tlačítky */
.wz-nav .wz-back { margin-right: auto; }
/* editor-last: je-li POSLEDNÍ prvek formu editor (ACE/jodit/full-width tool-textarea), wz-nav NEMÁ „hr" nad
   tlačítky (čára je redundantní — editor má vlastní rámeček). Pokrývá přímý sourozenec i editor zabalený v .ws-field
   (field-primitiva). Platí STRUKTURÁLNĚ (jen když je editor fakt poslední, těsně před .wz-nav). Tool-steps i Dokumenty. */
.ace_editor + .wz-nav, .jodit-container + .wz-nav, .tool-textarea + .wz-nav,
.ws-field:has(.ace_editor) + .wz-nav, .ws-field:has(.tool-textarea) + .wz-nav,
.form-field:has(.ace_editor) + .wz-nav, .form-field:has(.tool-textarea) + .wz-nav { border-top: none; padding-top: 0; }
a.step { text-decoration: none; }
a.step:hover .step-label { color: var(--cyan); }
.ws-slot-label { font-size: 16px; font-weight: 500; color: var(--navy); }  /* slot = h4-nadpis (typography.md: nadpisy weight 500) */

/* krok 2 — sloty typu (modul + matice člen→role) */
.ws-slot { border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 16px; margin-bottom: 14px; background: var(--bg-soft); }
.ws-slot-head { font-weight: 600; color: var(--navy); margin-bottom: 12px; }
.ws-slot-roles { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.ws-role-row { display: flex; align-items: center; gap: 12px; }
.ws-role-login { flex: 1 1 auto; min-width: 0; font-size: 14px; color: var(--navy); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ws-role-row .ws-role-sel { flex: 0 0 210px; height: 44px; }  /* = foundation select (form-fields.md) */
.ws-tool-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }   /* obecný projekt: zapínání nástrojů (checkboxy) */
.ws-tool-row { display: flex; align-items: center; gap: 10px; cursor: pointer; font-size: 14px; color: var(--navy); }
.ws-tool-row input { flex: 0 0 auto; }
.ws-form-card { max-width: none; }  /* plná šířka jako výpis (ne rozměr modalu) */
.ws-form-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 20px; }
.ws-form-head h3 { margin: 0; color: var(--navy); }

.ws-form { display: flex; flex-direction: column; gap: 16px; }
/* vnitřní gap = label→control (6px, těsně); margin-bottom = mezera MEZI poli (větší,
   ať label patří vizuálně ke SVÉMU controlu, ne k tomu nad ním) */
.ws-field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 18px; }
.ws-field:last-of-type { margin-bottom: 0; }
/* explicitně: .ws-field má vlastní display:flex → UA [hidden] nestačí (author přebíjí UA) → skryté pole-primitivum
   (Název jen Nová, Pokyny jen Obohatit) MUSÍ zmizet i na přepnutí radia (JS toggluje .hidden + required). */
.ws-field[hidden] { display: none; }
.ws-label { font: 500 14px/1.4 var(--font); color: var(--navy); }  /* = foundation label (form-fields.md) */
.ws-hint { color: var(--muted); font-size: 12px; line-height: 1.4; }  /* nápověda pod polem (volitelný markdown kontext) */
.ws-input { width: 100%; box-sizing: border-box; height: 44px; padding: 0 14px; border: 1px solid var(--border); border-radius: var(--radius); font: 400 15px var(--font); color: var(--navy); }
.ws-input:focus { outline: none; border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(0,152,212,0.18); }
textarea.ws-input { height: auto; padding: 10px 14px; resize: vertical; line-height: 1.5; }
/* inline validace (kanon kroku nástroje): .ws-error pod polem + .ws-field-error zvýraznění + flash souhrn nahoře */
.ws-error { display: block; margin-top: 4px; font-size: 12.5px; color: var(--danger, #d8382f); }
.ws-field-error .ws-input, .ws-field-error textarea.ws-input { border-color: var(--danger, #d8382f); }
.ws-error-summary { margin: 0 0 14px; padding: 9px 12px; border-radius: var(--radius); background: #fdecea; color: var(--danger, #d8382f); font-size: 13px; }
/* datum = úzký datepicker: FIXNÍ šířka + align-self, ať ho flex-column .ws-field (align-items:stretch) neroztáhne ani nesloží */
.date-input-wrapper.ws-input-date { width: 180px; min-width: 180px; flex: none; align-self: flex-start; }   /* PX ne rem: root font je 5px → 12rem = jen 60px a datum se nevešlo; 180px = DD.MM.YYYY + ikona + rezerva */
.tool-textarea { min-height: 110px; }
.tool-or { text-align: center; color: var(--muted); font-size: 13px; margin: 8px 0 14px; }
.ws-actions { display: flex; justify-content: flex-start; gap: 10px; margin-top: 4px; }   /* hlavní akce (oranžové) DOLEVA (konzistence detailu) */

/* našeptávač osob */
.ppl-picker { position: relative; }  /* = .combobox */
.ppl-field { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; min-height: 44px; padding: 5px 8px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--white); box-sizing: border-box; }  /* = combo-input: chipy + input v jednom (wrapujícím) řádku */
.ppl-field:focus-within { border-color: var(--cyan); box-shadow: 0 0 0 3px rgba(0,152,212,0.18); }
.ppl-chips { display: contents; }  /* chipy jsou přímé flex položky .ppl-field */
.ppl-chip { display: inline-flex; align-items: center; gap: 6px; background: var(--cyan-tint); border-radius: 6px; padding: 3px 6px 3px 10px; font: 500 13px var(--font); color: var(--cyan-dark); }  /* = combo-chip (combobox.md) */
.ppl-x { display: inline-flex; align-items: center; justify-content: center; width: 16px; height: 16px; border: 0; border-radius: 4px; background: transparent; color: var(--cyan-dark); cursor: pointer; font-size: 15px; line-height: 1; }
.ppl-x:hover { background: rgba(0,123,174,0.14); }
/* vyšší specificita (.ppl-field .ppl-input) než globální input[type=text] → přebije jeho rámeček/výšku/ring; vnitřní pole je „holé" */
.ppl-field .ppl-input { flex: 1; min-width: 90px; height: 32px; padding: 0 4px; border: 0; background: transparent; box-shadow: none; font: 400 14px var(--font); color: var(--navy); }
.ppl-field .ppl-input:focus { border: 0; box-shadow: none; outline: none; }
.ppl-input:disabled { display: none; }
.ppl-results { position: absolute; left: 0; right: 0; top: 100%; margin-top: 4px; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 6px 20px rgba(19,15,61,0.10); padding: 4px; max-height: 220px; overflow: auto; z-index: 5; display: none; }  /* = combo-list */
.ppl-results.open { display: block; }
.ppl-item { padding: 8px 10px; border-radius: 6px; font-size: 14px; color: var(--navy); cursor: pointer; }
.ppl-item:hover, .ppl-item.active { background: var(--bg); color: var(--navy); }  /* .active = klávesová navigace (šipky) */

/* === responsive === */

/* mobil chrome (<960): defaultně skryté (horní navy pruh, dolní patička, drawer overlay); zapne media query níže */
.m-topbar, .m-footer, .drawer-overlay { display: none; }

/* < 960 = MOBIL: levý sidebar → off-canvas drawer (zleva + overlay); horní navy pruh (.m-topbar z getTopbar)
   nad šedou hlavičkou; dolní navy patička (.m-footer z layoutu). NAHRAZUJE dřívější 900px icon-only lištu
   (jedno mobilní číslo = 960). */
@media (max-width: 959.98px) {

	/* horní navy pruh uvnitř .app-topbar, nad šedou .tb-head; z-index 60 → nad otevřeným drawerem (✕ klikatelný) */
	.app-topbar { display: block; padding: 0; background: transparent; border-bottom: 0; min-height: 0; }
	.m-topbar { position: relative; z-index: 60; display: flex; align-items: center; justify-content: space-between; height: 50px; background: var(--navy); padding: 0 15px; border-bottom: 1px solid var(--navy-line); }
	.m-topbar .m-logo { display: inline-flex; align-items: center; }
	.m-topbar .m-logo img { height: 26px; display: block; }
	.m-topbar-right { display: flex; align-items: center; gap: 14px; }
	.m-topbar .m-bell .tb-icon { color: var(--white); }
	.m-burger { position: relative; width: 28px; height: 28px; padding: 0; background: none; border: 0; cursor: pointer; }
	.m-burger span, .m-burger::before, .m-burger::after { content: ""; position: absolute; left: 4px; right: 4px; height: 2px; background: var(--white); border-radius: 2px; transition: transform .2s ease, opacity .2s ease; }
	.m-burger span { top: 13px; }
	.m-burger::before { top: 8px; }
	.m-burger::after { top: 18px; }
	.app-shell.drawer-open .m-burger span { opacity: 0; }
	.app-shell.drawer-open .m-burger::before { transform: translateY(5px) rotate(45deg); }
	.app-shell.drawer-open .m-burger::after { transform: translateY(-5px) rotate(-45deg); }

	/* šedá hlavička (getTopbar .tb-head) pod navy pruhem; akce (zvonek) ve staré šedé skryté (zvonek je v m-topbaru) */
	.app-topbar .tb-head { flex: none; background: var(--bg-soft); padding: 10px 16px; border-bottom: 1px solid var(--border); }
	.app-topbar .tb-title { font-size: 16px; }
	.app-topbar .tb-actions { display: none; }

	/* levý sidebar = off-canvas drawer (zleva, pod navy pruhem), overlay za ním */
	.app-sidebar { position: fixed; top: 50px; left: 0; bottom: 0; width: 264px; transform: translateX(-100%); transition: transform .22s ease; z-index: 50; overflow-y: auto; }
	.app-shell.drawer-open .app-sidebar { transform: translateX(0); box-shadow: 0 0 40px rgba(0,0,0,.4); }
	.drawer-overlay { display: block; position: fixed; top: 50px; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,.42); opacity: 0; visibility: hidden; transition: opacity .2s ease, visibility .2s ease; z-index: 40; }
	.app-shell.drawer-open .drawer-overlay { opacity: 1; visibility: visible; }
	body.drawer-open { overflow: hidden; }

	/* uvnitř draweru: logo → m-topbar, FINEP → m-footer; LABELY nav VIDITELNÉ (ne icon-only) */
	.app-sidebar .sidebar-logo { display: none; }
	.app-sidebar .sidebar-owner { display: none; }
	.nav-item > span { white-space: nowrap; }   /* label + dev-✱ na JEDNOM řádku; cílit JEN přímý span (ne .dev-star uvnitř → ta zůstane inline, nepadá pod text) */
	.sidebar-user div { display: block; }

	/* dolní navy patička (.m-footer z layoutu), fixní dole; obsah dostane spodní padding, ať pod ni neleze */
	.m-footer { display: flex; align-items: center; justify-content: space-between; position: fixed; left: 0; right: 0; bottom: 0; min-height: 56px; background: var(--navy); padding: 0 18px; z-index: 30; }
	.m-footer .m-finep { height: 18px; opacity: 0.8; display: block; }
	.m-footer .m-ver { color: var(--white); font-size: 13px; font-weight: normal; }
	.m-footer .m-cop { color: var(--muted-navy); font-size: 13px; }
	.app-shell.drawer-open .m-footer { display: none; }   /* otevřený drawer překryje obsah → patička pryč (žádný prosvit „© 2026" za overlayem) */
	/* menší paddingy na mobilu — víc šířky pro obsah (user: „menší padding containerů") */
	.app-content { padding: 20px 16px 72px; }   /* bok 32→16; bottom 72 drží fixní patičku */
	.card, .doc-picker, .ti-more-card .ti-more-sum { padding: 16px; }
	.wz-card { padding: 20px 16px; }
	.uc-link { padding: 16px; }
	.chat-scroll { padding: 16px; }
	.chat-compose, .chat-readonly { padding: 12px 16px; }
	.chat-page .messages { padding: 12px 16px 0; }

	.login-navy { display: none; }
}

/* < 480 = úzký mobil: drawer přes CELOU ŠÍŘKU (full-screen menu dle mockupu), ne partial off-canvas zleva.
   Horní navy pruh (50px) zůstává nad ním (✕ zavírá). Pásmo 480–960 drží levý 264px off-canvas (tablet). */
@media (max-width: 479.98px) {
	.app-sidebar { width: 100vw; }
	/* ještě menší padding na úzkém mobilu */
	.app-content { padding: 16px 12px 72px; }
	.card { padding: 14px; }
	.chat-scroll { padding: 12px; }
	.chat-compose { padding: 10px 12px; }
}

/* checklist (krok 2 kontroly výkresu) — checkboxy z getChecklistItems() */
.checklist { display: flex; flex-direction: column; gap: 4px; }
.checklist-item { display: flex; align-items: flex-start; gap: 12px; padding: 10px 12px; border-radius: var(--radius); cursor: pointer; }
.checklist-item:hover { background: var(--bg-soft); }
.checklist-item input[type="checkbox"] { margin-top: 2px; flex: none; }
.checklist-item .ci-body { display: flex; flex-direction: column; gap: 2px; }
.checklist-item .ci-title { color: var(--navy); font-weight: 500; font-size: 15px; }
.checklist-item .ci-desc { color: var(--text); font-size: 13px; line-height: 1.4; }

/* review (krok 3 drawing-check): odsouhlasení dohledaných prahů „proti čemu se validuje" */
.review-list { display: flex; flex-direction: column; }
.review-item { padding: 16px 12px; border-bottom: 1px solid var(--border-soft); display: flex; flex-direction: column; gap: 8px; }
.review-item:last-child { border-bottom: 0; }
.review-item .ri-title { color: var(--navy); font-weight: 500; font-size: 15px; }
.ri-threshold { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ri-threshold .ri-cmp { color: var(--muted); font-size: 13px; min-width: 54px; }
.ri-threshold .ri-value { width: 130px; }
.ri-threshold .ri-unit { width: 88px; }
.ri-stmt { color: var(--text); font-size: 13px; line-height: 1.45; }
.ri-src { color: var(--muted); font-size: 12px; line-height: 1.4; }
.ri-nothreshold { color: var(--muted); font-size: 13px; line-height: 1.45; }

/* loading overlay (preloader po odeslání pomalého kroku — drží do reloadu) */
.loading-overlay { position: fixed; inset: 0; z-index: 9999; display: flex; align-items: center; justify-content: center; background: rgba(255,255,255,0.82); backdrop-filter: blur(2px); }
.loading-box { display: flex; flex-direction: column; align-items: center; gap: 16px; }
.loading-spinner { width: 40px; height: 40px; border-radius: 50%; border: 3px solid var(--border); border-top-color: var(--cyan); animation: ema-spin 0.8s linear infinite; }
.loading-text { color: var(--navy); font: 500 15px/1.4 var(--font); max-width: 320px; text-align: center; }
@keyframes ema-spin { to { transform: rotate(360deg); } }

/* řetězení výsledku do jiného nástroje (na stránce výsledku) */
.tool-chain { margin-top: 16px; }
.ti-actions { margin-top: 16px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }   /* Klonovat + tlačítka řetězení „přeposlat do jiného nástroje" v jedné řadě */
.ti-actions form { margin: 0; }
/* chat-launched banner + SIDE-akce uložený artefakt (detail Tvorby znalostí = potvrzení + proklik) */
.ti-from-chat { margin: 0 0 12px; }
.ti-saved-artifact { margin-top: 16px; }
.ti-saved-open .icon { margin-right: 6px; }
.ti-saved-name { font-weight: 600; margin-left: 2px; }
.ti-saved-meta { margin-top: 8px; font-size: 13px; }

/* HODNOCENÍ běhu (palec nahoru/dolů) — MIRROR .ba-row v chatu (.ba/.ba-on/.ba-pop reusnuté beze změny) */
/* hodnocení běhu = icon-buttony palců V ŘÁDKU akcí (za řetězem nástrojů), řada se zalamuje */
.ti-rating { display: inline-flex; align-items: center; gap: 8px; margin-left: 4px; }
/* palce jako TLAČÍTKA (šedý border), ne holé ikonky — .ba je jinak border:0 */
.ti-rating .ba { padding: 8px; border-radius: var(--radius); border: 1px solid var(--border); color: var(--muted); }
.ti-rating .ba .icon { width: 18px; height: 18px; }
.ti-rating .ba:hover { background: var(--bg-soft); border-color: var(--cyan-accent); color: var(--ink); }
.ti-rating .ba-up.ba-on { color: #2e8b57; }     /* zvolený rating = barevná IKONA (zelená), border zůstává šedý */
.ti-rating .ba-down.ba-on { color: #c0392b; }   /* červená */

/* „Uložit jako šablonu" (script-create) — samostatná karta nad Klonovat: kompaktní řádek název + tlačítko
   na JEDNÉ lince (ne roztažený full-width input s nalepeným tlačítkem pod ním). */
.sc-save-tpl { margin-top: 16px; }
.sc-save-tpl h3 { margin: 0 0 10px; }
.sc-tpl-form { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
.ws-input.sc-tpl-name { flex: 0 1 20rem; width: auto; height: 34px; }   /* užší než full-width, výškou zarovnané s .btn.small */

/* Koncept e-mailu: PŘEDMĚT zvlášť (kopíruje se do pole Předmět), TĚLO zvlášť (do těla mailu) — dvě
   samostatná tlačítka kopírování. Předmět + „Kopírovat předmět" nad tělem. */
.em-subject { margin-bottom: 18px; }
.em-subject-line { margin: 0 0 8px; font-size: 16px; color: var(--navy); }
.em-copy-actions { margin: 0; }

/* ZADÁNÍ jako sekce UVNITŘ „Podrobnosti" (ne samostatný card ani vlastní collapsible) */
.ti-input-section { margin-top: 14px; }
.ti-input-section:first-child { margin-top: 0; }
.ti-input-title { margin: 0 0 8px; font: 600 15px/1.3 var(--font); color: var(--navy); }
.tool-chain-head { font: 600 16px/1.3 var(--font); color: var(--navy); margin: 0 0 12px; }  /* sjednoceno s .block-card-title */
.tool-chain-actions { display: flex; flex-wrap: wrap; gap: 10px; }
.tool-chain-actions form { margin: 0; }

/* „Více informací" na stránce výsledku (technické poznámky v rozklikávacím detailu) */
.md-report .more-info { margin-top: 18px; }
.md-report .more-info summary { cursor: pointer; color: var(--cyan-dark); font-size: 14px; font-weight: 500; }
.md-report .more-info summary:hover { text-decoration: underline; }
.md-report .more-info-body { margin-top: 10px; color: var(--muted); }
.md-report .more-info-body p, .md-report .more-info-body li { font-size: 13px; }
.md-report .more-info-body ul { margin: 8px 0 0; }

/* znovupoužitelný blokový kontejner (cost blok na detailu běhu, do budoucna i jinde) */
.block-card { margin-top: 16px; }
.block-card .block-card-title { font: 600 16px/1.3 var(--font); color: var(--navy); margin: 0 0 12px; }
.block-card .cost-table { width: 100%; }

/* ===== běh kompozičního nástroje (WEB_ToolInstance) ===== */
/* obsah na PLNOU šířku jako legacy výsledek /tools/run — report/diff se do úzkého sloupce nevejde */
.ti-card { width: 100%; }

/* „Podrobnosti" pod výsledkem — doklad, co proběhlo; sjednoceno s .more-info u kontroly výkresů */
.ti-more { margin-top: 18px; }
.ti-more-card { margin-top: 16px; padding: 0; }   /* samostatná karta Podrobností odsazená od „Úprava zadání" nad ní (.card sám margin nemá); padding=0: přesunut na summary/body, aby ve SBALENÉM stavu byla klikací CELÁ bílá plocha (summary vyplní kartu) */
.ti-more-card .ti-more { margin-top: 0; }   /* uvnitř karty bez dvojitého odsazení */
.ti-more-card .ti-more-sum { padding: 24px; }   /* summary nese padding karty → ve sbaleném stavu vyplní celou kartu → klik kdekoliv toggluje (native details) */
.ti-more-card .ti-more-body { margin-top: 0; padding: 0 24px 24px; }   /* tělo drží boční/spodní padding karty (horní navazuje na summary) */
.ti-more summary { cursor: pointer; color: var(--cyan-dark); font-size: 14px; font-weight: 500; }
.ti-more-body { margin-top: 10px; color: var(--muted); font-size: 13px; }
/* ve sbaleném výpisu jde o prostý seznam s odrážkami — display:flex z .ti-step by marker potlačil */
.ti-more-body .ti-steps { margin: 0; gap: 2px; list-style: disc; padding-left: 20px; }
.ti-more-body .ti-step { display: list-item; padding: 2px 0; }
.ti-more-body .ti-outcome { color: inherit; }
.ti-source-docs { margin: 6px 0 0; padding-left: 20px; list-style: disc; }
.ti-source-docs li { padding: 2px 0; }
/* Podrobnosti: nadpis vlevo + „zobrazit/skrýt" se šipkou vpravo (druhá strana řádku) */
.ti-more-sum { display: flex; align-items: center; justify-content: space-between; gap: 12px; cursor: pointer; list-style: none; }
.ti-more-sum:hover { text-decoration: none; }
.ti-more-sum::-webkit-details-marker { display: none; }
.ti-more-title { font: 500 18px/1.3 var(--font); color: var(--ink); }
.ti-more-toggle { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; font-weight: 500; color: var(--cyan-dark); white-space: nowrap; }
.ti-more-arrow { width: 16px; height: 16px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; transition: transform .15s; }
details[open] .ti-more-arrow { transform: rotate(180deg); }
.ti-more-hide { display: none; }
details[open] .ti-more-show { display: none; }
details[open] .ti-more-hide { display: inline; }
/* „Všechny běhy úkolu" jako bílá karta se zanořeným seznamem běhů */
.tools-runs-card { margin-top: 16px; }
.tools-runs-title { margin: 0 0 14px; font: 500 18px/1.3 var(--font); color: var(--ink); }
.tools-runs-card .card-list { padding: 0; }
/* Kopírovací tlačítka = TIER 3 (méně výrazná, šedá) — odlišené od .btn.outline (navigace/klonovat/řetězení) a .btn.accent (submit) */
.btn.ghost.copy-rich { color: var(--muted); border: 1px solid var(--border); font-weight: normal; }   /* šedý border, ať i bez hoveru vypadá jako tlačítko; normální font */
.btn.ghost.copy-rich:hover { color: var(--ink); background: var(--border-soft); }
.ti-title { display: flex; align-items: center; gap: 10px; }
/* detail nástroje: sekční nadpisy MIMO bílý box (na šedé); „Podrobnosti" jako jediné zůstává uvnitř karty */
.ti-head { margin-bottom: 16px; align-items: center; }   /* titulek běhu + „Zpět na projekt" button na JEDNOM řádku */
.ti-head .ti-title { margin: 0; }
/* „Zpět na projekt" (outline button): na VSTUPNÍM kroku = top proužek (margin dole), na DETAILU běhu = v ti-head
   řádku vpravo (bez margin; ti-head je .spread → titulek vlevo, button vpravo). Button flex:none ať se nesmrští. */
.ti-scope { margin-bottom: 10px; }
.ti-head .ti-scope { margin: 0; flex: none; }
.ti-sec-head { margin-top: 24px; }
/* MathJax vzorce v reportech: DISPLAY vzorec větší (jinak sotva čitelný) + klikací blok = kopíruj LaTeX
   (SVG nejde označit). Wide vzorec scrolluje vodorovně uvnitř bloku, ne přes stránku. */
mjx-container[display="true"] { font-size: 1.85em; }
mjx-container:not([display="true"]) { font-size: 1.35em; }   /* inline vzorce (legenda: k_{Ln,w,i}, L_{n,w}) - taky větší, ať nejsou drobné vedle display vzorce */
.math-copy { display: block; overflow-x: auto; padding: 2px 4px; }   /* display vzorec: širší scrolluje uvnitř bloku (kopírování řeší Ctrl+C → PNG, bez hoveru) */
.ti-badge { font-size: 12px; padding: 2px 8px; border-radius: 10px; }
.ti-b-run  { background: var(--bg-soft); color: var(--navy); }
.ti-b-wait { background: #fff4d6; color: #8a6d00; }
.ti-b-done { background: #e3f5e6; color: #1c7a34; }
.ti-b-err  { background: #fdeaea; color: #c0392b; }
.ti-steps { list-style: none; padding: 0; margin: 14px 0; display: flex; flex-direction: column; gap: 6px; }
.ti-step { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 8px; }
.ti-step.ti-current { background: var(--bg-soft); font-weight: 600; }
.ti-ico { width: 20px; text-align: center; }
.ti-kind { font-size: 12px; }
/* .ti-form / .ti-field (legacy form-shell B) RETIRED (F5 2026-10-10): generický form-krok jede gold chrome
   (renderStepChrome + field-primitiva .ws-field). Žádný nástroj už .ti-form/.ti-field neemituje. */
.ti-running { margin-top: 12px; }
.ti-spinner { display: inline-block; width: 12px; height: 12px; border: 2px solid var(--border); border-top-color: var(--cyan); border-radius: 50%; vertical-align: -1px; margin-right: 4px; animation: ema-spin .7s linear infinite; }
.ti-bag { font-size: 13px; }
.ti-bag code { word-break: break-all; }
.ws-dks-slot { padding: 12px 0; border-top: 1px solid var(--border-soft); }
.ws-dks-slot:first-of-type { border-top: 0; }
.ws-dks-form { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 6px 0; }
.mk-checklist { display: flex; flex-direction: column; gap: 6px; margin: 8px 0; }
.mk-check { display: flex; align-items: center; gap: 8px; font-weight: 400; margin: 0; }
.mk-check input[type="checkbox"] { width: auto; height: auto; }
.ws-dks-override { margin: 8px 0; }
.ws-dks-actions { display: flex; gap: 8px; flex-wrap: wrap; margin: 8px 0; }

/* ── Vizuální diff porovnání dokumentů (styl Phabricator: čísla řádků + old/new + intraline bright) ── */
.ti-report { line-height: 1.5; }
/* Vizuální overlay redline (Porovnání dokumentů) — dvě PDF vedle sebe: věrný render + KOPÍROVATELNÝ text */
.ema-overlay { margin: 0 0 24px; }
.ema-overlay-head { font-size: 13px; color: #4a5170; margin: 0 0 10px; }
.ema-overlay-head a { color: #3a63d0; }
.ema-overlay-note { color: #7a8099; }
.ema-overlay-cols { display: flex; gap: 12px; align-items: stretch; }
.ema-overlay-doc { flex: 1 1 0; min-width: 0; height: 82vh; border: 1px solid #e6e8f0; border-radius: 4px; background: #fff; }
@media (max-width: 900px){ .ema-overlay-cols { flex-direction: column; } .ema-overlay-doc { height: 70vh; } }

.ema-diff-wrap { overflow-x: auto; }
.ema-diff-page { margin: 0 0 20px; }
.ema-diff-ph { font-size: 12px; font-weight: 600; color: #6f77a0; text-transform: uppercase; letter-spacing: .04em; padding: 4px 0; border-bottom: 1px solid #e6e8f0; margin-bottom: 4px; }
table.ema-diff { width: 100%; border-collapse: collapse; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12.5px; }
table.ema-diff td, table.ema-diff th { vertical-align: top; padding: 1px 8px; }
table.ema-diff th.ln { width: 1%; min-width: 34px; text-align: right; color: #a0a6c0; background: #f6f7fb; border-right: 1px solid #e6e8f0; user-select: none; font-weight: 400; }
table.ema-diff td { white-space: pre-wrap; word-break: break-word; }
/* Vedle sebe: pevné rozdělení 50:50 nezávisle na obsahu — s auto layoutem by se prázdná
   strana (samé td.none) smrskla a strany by se nedaly porovnávat okem. */
.ema-diff-side table.ema-diff { table-layout: fixed; }
.ema-diff-side table.ema-diff th.ln { width: 44px; min-width: 44px; }
.ema-diff-side table.ema-diff td { width: calc(50% - 44px); }
table.ema-diff td.ctx { color: #3a3f5c; }
table.ema-diff td.old { background: #fdecea; color: #9a1c11; }
table.ema-diff td.new { background: #e4f6ee; color: #1c6b41; }
table.ema-diff td.chg { background: #fffbe6; color: #3a3f5c; }
table.ema-diff td.none { background: #fafbfd; }
.ema-diff .bright { border-radius: 2px; padding: 0 1px; }
table.ema-diff td.old .bright { background: #f7b7b1; }
table.ema-diff td.new .bright { background: #a6e6c1; }
.ema-diff del { color: #9a1c11; background: #fbdedb; text-decoration: line-through; }
.ema-diff ins { color: #1c6b41; background: #d3f2e0; text-decoration: none; }
/* legenda barev pod diffem (nad výpisem nákladů) */
.ema-diff-legend { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--border); font-size: 13px; color: var(--muted); }
.ema-diff-leg-item { display: inline-flex; align-items: center; gap: 6px; }
.ema-diff-leg-swatch { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 18px; padding: 0 4px; border-radius: 3px; font-size: 11px; line-height: 1; }
.ema-diff-leg-swatch.old { background: #fdecea; } .ema-diff-leg-swatch.new { background: #e4f6ee; } .ema-diff-leg-swatch.chg { background: #fffbe6; }
.ema-diff-leg-swatch .bright { background: #a6e6c1; color: #1c6b41; border-radius: 2px; padding: 0 1px; }
/* přepínač režimu (Vedle sebe / Pod sebou) */
.ema-diff-tabs { display: flex; align-items: center; gap: 4px; margin: 0 0 10px; }
.ema-diff-tab { appearance: none; border: 1px solid #d7dbe8; background: #f6f7fb; color: #5b647f; font: inherit; font-size: 13px; padding: 5px 14px; border-radius: 7px; cursor: pointer; }
.ema-diff-tab:hover { background: #eef0f7; }
.ema-diff-tab.is-active { background: #006b96; color: #fff; border-color: #006b96; }
.ema-diff-panel { display: none; }

/* ZPĚTNÁ KOMPATIBILITA: reporty uložené před zavedením normalizace nemají data-norm
   (report_html je v bagu instance, takže staré běhy se renderují starým markupem) —
   bez tohohle pravidla by se u nich neukázal žádný panel. */
.ema-diff-view[data-mode="side"] .ema-diff-panel[data-mode="side"]:not([data-norm]),
.ema-diff-view[data-mode="unified"] .ema-diff-panel[data-mode="unified"]:not([data-norm]) { display: block; }

.ema-diff-view[data-mode="side"][data-norm="0"] .ema-diff-panel[data-mode="side"][data-norm="0"],
.ema-diff-view[data-mode="unified"][data-norm="0"] .ema-diff-panel[data-mode="unified"][data-norm="0"],
.ema-diff-view[data-mode="side"][data-norm="1"] .ema-diff-panel[data-mode="side"][data-norm="1"],
.ema-diff-view[data-mode="unified"][data-norm="1"] .ema-diff-panel[data-mode="unified"][data-norm="1"] { display: block; }

/* Záhlaví s názvy souborů — kopíruje raster tabulky pod ním: značka A/B sedí na sloupci
   s čísly řádků (44px, zarovnáno vpravo), název začíná tam, kde text (padding 8px jako td). */
.ema-diff-files { display: grid; grid-template-columns: 1fr 1fr; gap: 0; margin: 0 0 8px; }
.ema-diff-files-unified { grid-template-columns: 1fr; gap: 2px; }
.ema-diff-file { display: flex; align-items: baseline; font-size: 13px; color: #3a3f5c; padding: 6px 0; border-bottom: 1px solid #e6e8f0; overflow: hidden; }
.ema-diff-file-side { box-sizing: border-box; width: 44px; min-width: 44px; padding: 0 8px; text-align: right; font-weight: 700; color: #a0a6c0; }
.ema-diff-file-name { padding-left: 8px; font-weight: 600; overflow-wrap: anywhere; }
.ema-diff-file-ocr { font-size: 11px; font-weight: 600; color: #8a6d00; background: #fff4d6; border-radius: 4px; padding: 1px 5px; margin-left: 6px; }

/* přepínač normalizace vedle tabů (default zapnuto, když je jedna strana z OCR) */
.ema-diff-norm { display: inline-flex; align-items: center; gap: 6px; margin-left: auto; color: var(--muted); font-size: 13px; cursor: pointer; }
.ema-diff-norm input { cursor: pointer; }
/* doc-compare: dva pojmenované sloty A/B v launchi */
.dc-slots { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin: 8px 0; }
@media (max-width: 640px) { .dc-slots { grid-template-columns: 1fr; } }
.dc-slot-hint { font-weight: 400; color: #8a90ab; font-size: 12px; margin-left: 6px; }

/* parametry místo přepínače modelů (dropdown + 2 zaškrtávátka) */
.model-popup .mp-row { margin-bottom: 16px; }
.model-popup .mp-label { display: block; font-weight: 600; margin-bottom: 6px; color: var(--navy); }
/* úroveň = tři tlačítka, ale doopravdy radio (jen jedno aktivní; funguje i bez JS ve formuláři nástroje) */
.mp-levels { display: flex; gap: 8px; flex-wrap: wrap; }
.mp-level-btn { position: relative; }
.mp-level-btn input { position: absolute; opacity: 0; width: 0; height: 0; }
.mp-level-btn span { display: inline-block; padding: 8px 16px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--white); color: var(--navy); font-size: 14px; cursor: pointer; user-select: none; }
.mp-level-btn span:hover { border-color: var(--cyan); }
.mp-level-btn input:checked + span { background: var(--navy); border-color: var(--navy); color: var(--white); }
.mp-level-btn input:focus-visible + span { outline: 2px solid var(--cyan); outline-offset: 2px; }
.model-popup .mp-checks { display: flex; flex-direction: column; gap: 8px; }
.mp-check { display: flex; align-items: center; gap: 8px; cursor: pointer; }
.mp-check input { width: 16px; height: 16px; }
.model-popup .mp-actions { display: flex; justify-content: flex-end; }
.tool-params .mp-check { margin-top: 8px; }

/* odpověď asistenta je markdown (tučné, odrážky, nadpisy) — rendruje ho server, tady jen sazba */
.bubble.assistant .md > *:first-child { margin-top: 0; }
.bubble.assistant .md > *:last-child { margin-bottom: 0; }
.bubble.assistant .md p { font-size: inherit; margin: 8px 0; }
.bubble.assistant .md h1, .bubble.assistant .md h2, .bubble.assistant .md h3, .bubble.assistant .md h4 { font-size: inherit; font-weight: 600; color: var(--ink); margin: 14px 0 6px; letter-spacing: 0; }
.bubble.assistant .md ul, .bubble.assistant .md ol { margin: 8px 0; padding-left: 22px; }
.bubble.assistant .md ul { list-style: none; }
.bubble.assistant .md ul > li { position: relative; }
.bubble.assistant .md ul > li::before { content: "•"; position: absolute; left: -16px; top: 0; line-height: inherit; color: inherit; }  /* zarovnat odrážku na PRVNÍ řádek textu (line-height), ne na horní hranu boxu — dřív top:-1px = marker moc vysoko u line-height 1.6 */
.bubble.assistant .md ul > li:has(mjx-container)::before { top: 5px; }   /* inline vzorec nafoukne první řádek (text klesne ~5px) → sraz odrážku dolů s textem; :has graceful fallback */
.bubble.assistant .md ol { list-style: decimal; }
.bubble.assistant .md li { margin: 4px 0; font-size: inherit; }
.bubble.assistant .md li > p { margin: 0; }
.bubble.assistant .md code { background: var(--bg-soft); padding: 1px 4px; border-radius: 4px; }
.bubble.assistant .md table { border-collapse: collapse; margin: 10px 0; font-size: 14px; display: block; overflow-x: auto; max-width: 100%; }
.bubble.assistant .md th, .bubble.assistant .md td { border: 1px solid var(--border); padding: 4px 8px; text-align: left; }
.bubble.assistant .md hr { border: 0; border-top: 1px solid var(--border); margin: 10px 0; }

/* ===== sponka: nabídka „z počítače" × „z Dokumentů" ===== */
.att-menu-wrap { position: relative; flex: 0 0 auto; margin-top: 10px; }
.att-menu[hidden] { display: none; }
.att-menu { position: absolute; bottom: calc(100% + 8px); left: 0; z-index: 30; width: 220px; background: var(--white); border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 8px 24px rgba(19,15,61,0.14); padding: 6px; }
.att-menu-item { display: block; width: 100%; text-align: left; background: none; border: 0; border-radius: 8px; padding: 8px 10px; cursor: pointer; font: inherit; color: var(--navy); }
.att-menu-item:hover { background: var(--bg-soft); }
/* VLOŽIT PROMPT/ZNALOST popup (reuse .att-menu pozicování): širší panel + scroll + položka název/náhled */
.kb-insert-menu { width: 340px; max-width: 80vw; max-height: 320px; overflow-y: auto; }
.kb-insert-list { display: flex; flex-direction: column; gap: 2px; }
.kb-insert-item { display: flex; flex-direction: column; gap: 2px; width: 100%; text-align: left; background: none; border: 0; border-radius: 8px; padding: 8px 10px; cursor: pointer; font: inherit; color: var(--navy); }
.kb-insert-item:hover { background: var(--bg-soft); }
.kb-i-name { font-weight: 600; font-size: 14px; }
.kb-i-preview { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.kb-insert-loading, .kb-insert-empty { padding: 10px; margin: 0; font-size: 13px; }
.kb-write-open { font-weight: 600; }
.kb-write[hidden] { display: none; }
.kb-write { display: flex; flex-direction: column; gap: 6px; padding: 8px 10px; border-bottom: 1px solid var(--border-soft); margin-bottom: 4px; }
.kb-write .ws-input { width: 100%; font-size: 13px; }
.kb-write-go { align-self: flex-start; }

/* ===== výběr dokumentu ze stromu ===== */
.doc-picker { background: var(--white); border-radius: 14px; padding: 24px; width: min(1040px, 92vw); margin: 0 auto; position: relative; }
.doc-picker h3 { margin: 0 0 6px; }
.doc-picker-path { color: var(--muted); font-size: 13px; min-height: 18px; margin-bottom: 10px; }
.doc-picker-crumbs .crumb-link { cursor: pointer; }
.doc-row.doc-pick { cursor: pointer; }   /* single mód: klik na soubor ho vybere (přebíjí .doc-file cursor:default) */
.doc-picker-body { max-height: min(60vh, 520px); overflow-y: auto; border: 1px solid var(--border-soft); border-radius: 10px; padding: 0; }
/* picker řádky = vizuál jako výpis modulu Dokumenty (docFolderView / .data-table .dt-name): cyan ikona, navy název,
   prostorné řádky s oddělovačem — navíc jen SELECT checkbox (jinak ať sedí s /documents). */
.doc-row { display: flex; align-items: center; gap: 10px; width: 100%; text-align: left; background: none; border: 0; border-bottom: 1px solid var(--border-soft); border-radius: 0; padding: 12px 14px; cursor: pointer; font: inherit; color: var(--navy); }
.doc-row:last-child { border-bottom: 0; }
.doc-row i { color: var(--cyan); flex: 0 0 auto; }
.doc-row:hover { background: var(--bg-soft); }
.doc-row.doc-file { cursor: default; }
.doc-row.is-busy { opacity: .5; }   /* nevytěžený DKS vstup — zašedlý + disabled (viz .doc-analyzing) */
.doc-analyzing { font-size: 12px; font-style: italic; color: var(--muted); }
.doc-row input[type=checkbox] { flex: 0 0 auto; }
.doc-row > span:not(.muted) { flex: 1; min-width: 0; overflow-wrap: anywhere; font-weight: 500; }
.doc-row .muted { margin-left: auto; flex: 0 0 auto; font-size: 12px; white-space: nowrap; }
/* multiDir: adresář = checkbox (výběr do dir_ref[]) + tlačítko názvu (navigace dovnitř) na jednom řádku */
.doc-dir-row { display: flex; align-items: center; gap: 10px; border: 0; border-bottom: 1px solid var(--border-soft); border-radius: 0; padding: 12px 14px; }
.doc-dir-row:last-child { border-bottom: 0; }
.doc-dir-row:hover { background: var(--bg-soft); }
.doc-dir-check { display: inline-flex; align-items: center; gap: 8px; flex: 0 0 auto; margin: 0; cursor: pointer; }
.doc-dir-check i { color: var(--cyan); }
.doc-dir-open, .doc-dir-open-storage { flex: 1; min-width: 0; text-align: left; background: none; border: 0; padding: 0; cursor: pointer; font: inherit; font-weight: 500; color: var(--navy); overflow-wrap: anywhere; }
.doc-dir-open:hover, .doc-dir-open-storage:hover { color: var(--cyan-dark); }
.doc-picker-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px; }
.doc-picker-hint { font-size: 12px; margin-top: 10px; }
/* explicitně: .btn display přebíjí UA [hidden] → jinak „Vzít celý adresář" zůstane VIDITELNÉ i v multiDir
   (kde ho JS skrývá) a jeho single-take dá chip jen s leaf názvem místo celé cesty. Vzor .ms-nav [hidden]. */
.doc-picker-dir[hidden], .doc-picker-add[hidden], .doc-picker-hint[hidden] { display: none; }

/* single/target picker: název+velikost na řádku (.doc-file-main); u md (insert/target) i NÁHLED obsahu pod ním */
.doc-row.doc-pick .doc-file-main { display: flex; align-items: center; gap: 10px; min-width: 0; }
.doc-row.doc-pick .doc-file-main > span:not(.muted) { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.doc-row.doc-pick.has-preview { flex-direction: column; align-items: stretch; gap: 4px; }
.doc-row.doc-pick.has-preview > .doc-file-main { flex: 0 0 auto; width: 100%; }
.doc-file-preview { font-size: 12px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; padding-left: 26px; }
/* target „Nová" (dir-pick): JASNÉ tlačítko „Vybrat jako cíl" u adresáře/úložiště (vedle názvu = navigace).
   .btn drží vzhled; tady jen layout (nezalamovat, neroztahovat). */
.doc-dir-pick { flex: 0 0 auto; white-space: nowrap; }
.doc-dir-pick i { margin-right: 2px; }
/* prázdná složka v pickeru: zašedlý empty-state s paddingem (ne holá pomlčka) */
.doc-picker-empty { padding: 22px 14px; text-align: center; font-size: 13px; }

/* odkaz na dokument ve wizardu nástroje */
.doc-ref { margin-top: 10px; }
.doc-ref-list { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.doc-ref-item { display: inline-flex; align-items: center; gap: 6px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 8px; padding: 4px 8px; font-size: 13px; }
.doc-ref-remove { background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 16px; line-height: 1; padding: 0; }
/* per-slot výběr konkrétní verze z Dokumentů (Porovnání dokumentů A/B) */
.doc-slot-ref { margin-top: 8px; }
.doc-slot-chip { display: inline-flex; align-items: center; gap: 6px; margin-top: 6px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 8px; padding: 4px 8px; font-size: 13px; }
.doc-slot-chip:empty { display: none; }
.doc-slot-name { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.doc-slot-clear { background: none; border: 0; color: var(--muted); cursor: pointer; font-size: 16px; line-height: 1; padding: 0; }

/* DMS: lišta zrcadlového adresáře + našeptávač zdrojového dms adresáře */
.dms-track-bar { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; padding: 8px 12px; background: var(--bg-soft); border: 1px solid var(--border-soft); border-radius: var(--radius); font-size: 13px; }
.dms-track-bar .dms-inline { display: inline-flex; align-items: center; gap: 6px; margin: 0 0 0 auto; }   /* tlačítko (Synchronizovat) doprava */
.dms-sched { flex-basis: 100%; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; margin-top: 4px; }
.dms-mirror-child { color: var(--muted); }
.dms-dir-picker { position: relative; display: block; }                                  /* ve formu plná šířka jako .ws-input */
.dms-inline .dms-dir-picker { display: inline-block; width: auto; min-width: 220px; vertical-align: middle; }   /* v liště zrcadla kompaktní */
.dms-dir-search { width: 100%; }
.dms-dir-results { position: absolute; left: 0; right: 0; top: 100%; z-index: 30; max-height: 220px; overflow: auto; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: 0 6px 18px rgba(0, 0, 0, .14); margin-top: 2px; }
.dms-dir-results[hidden] { display: none; }   /* explicitně: elite.css display přebíjí UA [hidden] → jinak prázdný absolutní box = čára */
.dms-dir-opt { display: block; width: 100%; text-align: left; padding: 6px 10px; border: 0; background: none; cursor: pointer; font: inherit; color: var(--text); }
.dms-dir-opt:hover { background: var(--bg-soft); }
.dms-dir-empty { padding: 6px 10px; }

/* ── NÁKLADY: časové záložky (Náklady dle položky) + osobní útrata ── */
.cost-tabs { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 14px; }
.cost-tab { appearance: none; display: inline-flex; align-items: center; height: 34px; padding: 0 14px; font: 500 14px/1 var(--font); color: var(--ink); background: var(--white); border: 1px solid var(--border); border-radius: var(--radius); cursor: pointer; }   /* vzhled .btn.small.outline (jako „Zobrazit vše" na HP): NEAKTIVNÍ = orámované; žádná světle modrá (user 2026-10-11) */
.cost-tab:hover, .cost-tab.active { background: var(--ink); color: var(--white); border-color: var(--ink); }   /* hover + AKTIVNÍ = filled (jako .btn.outline:hover) */
.cost-tab-panel { display: none; }
.cost-tab-panel.active { display: block; }
.cost-tab-panel > .muted { margin: 4px 0; }   /* prázdný stav záložky (Zatím žádné náklady za toto období) */
.cost-table .ct-num.over { color: #d8382f; font-weight: 700; }   /* náklady přes rozpočet (osobní útrata) */
.budget-summary.cost-dept { margin-top: 24px; }   /* blok Útvar (manažer) pod tabulkou osobní útraty */

/* === /tools: filtr výpisu „Použité nástroje" (toggle) + AJAX-swap stav === */
.tool-filter { margin: 24px 0 12px; }   /* mezera NAD filtr-sekcí = jednotná s .tools-all-head (24px) → sekce /tools stejně rozestoupené (Oblíbené→Použité = Použité→Všechny; user 2026-10-11) */
.tool-filter-toggle { display: inline-flex; align-items: center; gap: 6px; }
.tool-filter-bar { display: none; flex-wrap: wrap; align-items: flex-end; gap: 12px 16px; margin-top: 12px; padding: 16px; background: var(--white); border: 1px solid var(--border); border-radius: var(--radius-lg); }
.tool-filter-bar.is-open { display: flex; }
.tool-filter-bar .tf-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.tool-filter-bar .tf-label { font-size: 12px; font-weight: 600; text-transform: uppercase; letter-spacing: .03em; color: var(--muted); }
.tool-filter-bar .tf-q { flex: 1 1 220px; }
.tool-filter-bar .tf-q .ws-input { width: 100%; }
.tool-filter-bar .tf-date { flex: 0 0 auto; width: 170px; }
.tool-filter-bar .tf-date .date-input-wrapper { width: 100%; }
.tool-filter-bar .tf-types { flex: 1 1 100%; }
.tool-filter-bar .tf-wide { flex: 1 1 100%; }   /* pole přes celou šířku na vlastním řádku (U32: „hledat v obsahu" pod názvem+daty) */
.tool-filter-bar .tf-wide .ws-input { width: 100%; }
.tool-filter-bar .tf-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.tool-filter-bar .tf-chip { display: inline-flex; align-items: center; gap: 6px; padding: 5px 10px; border: 1px solid var(--border); border-radius: 999px; font-size: 13px; cursor: pointer; background: var(--white); user-select: none; }
.tool-filter-bar .tf-chip input { margin: 0; }
.tool-filter-bar .tf-chip.is-on { background: var(--cyan-tint); border-color: var(--cyan-dark); color: var(--cyan-dark); }
.tool-filter-bar .tf-actions { display: flex; gap: 8px; align-items: center; flex: 1 1 100%; justify-content: flex-end; }   /* akční tlačítka (Vyčistit/Filtrovat) VŽDY na vlastním řádku pod poli, zarovnaná vpravo (user 2026-10-11) */
.tf-header { align-items: baseline; gap: 12px; }   /* hlavička filtru [nadpis ——— toggle]: baseline = text nadpisu a text buttonu na JEDNÉ lajně (dřív flex-end → vyšší button nad nadpisem; user 2026-10-11) */
.tf-barehead { display: flex; justify-content: flex-end; }   /* filtr bez nadpisu (např. běhy projektu) = jen toggle, zarovnaný vpravo (user 2026-10-11) */
.tool-runs-ajax { transition: opacity .12s ease; }
.tool-runs-ajax.is-loading { opacity: .55; pointer-events: none; }

@media (max-width: 560px){
	.tool-filter-bar .tf-date { width: 100%; }
	.tf-header { flex-direction: column; align-items: flex-start; gap: 6px; }   /* mobil: toggle POD nadpis (stack) */
}
