@import '_content/PSC.Blazor.Components.MarkdownEditor/PSC.Blazor.Components.MarkdownEditor.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-2hc8bnt79q] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-2hc8bnt79q] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-g48ay516ty],
.components-reconnect-repeated-attempt-visible[b-g48ay516ty],
.components-reconnect-failed-visible[b-g48ay516ty],
.components-pause-visible[b-g48ay516ty],
.components-resume-failed-visible[b-g48ay516ty],
.components-rejoining-animation[b-g48ay516ty] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-retrying[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-failed[b-g48ay516ty],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-g48ay516ty] {
    display: block;
}


#components-reconnect-modal[b-g48ay516ty] {
    background-color: var(--reconnect-bg);
    color: var(--reconnect-color);
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-g48ay516ty 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-g48ay516ty 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-g48ay516ty 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-g48ay516ty]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-g48ay516ty 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-g48ay516ty {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-g48ay516ty {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-g48ay516ty {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-g48ay516ty] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-g48ay516ty] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-g48ay516ty] {
    border: 0;
    background-color: var(--reconnect-btn-bg);
    color: var(--reconnect-btn-color);
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-g48ay516ty] {
        background-color: var(--reconnect-btn-hover);
    }

    #components-reconnect-modal button:active[b-g48ay516ty] {
        background-color: var(--reconnect-btn-bg);
    }

.components-rejoining-animation[b-g48ay516ty] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-g48ay516ty] {
        position: absolute;
        border: 3px solid var(--reconnect-animation-color);
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-g48ay516ty 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-g48ay516ty] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-g48ay516ty {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Layouts/Ba/BaModuleLayout.razor.rz.scp.css */
/* Note: AppBar breadcrumb styling (white text on primary background) lives in the
   global stylesheet `wwwroot/css/ba-module.css`. MudBlazor's MudBreadcrumbs renders a
   <nav>/<ol>/<li> tree whose item classes don't reliably pick up Blazor scoped-CSS
   `::deep` selectors when MudBlazor's stylesheet is loaded later in the cascade, so
   we keep the override unscoped. */
/* /Components/Pages/Admin/AdminLogDetail.razor.rz.scp.css */
[b-qaqxac0d0b] .mw-log-mono {
    font-family: var(--mw-font-mono, ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace);
    font-size: 0.85em;
}

[b-qaqxac0d0b] .mw-log-correlation {
    font-family: var(--mw-font-mono, ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace);
}

[b-qaqxac0d0b] .mw-log-properties {
    margin-bottom: 0;
}

[b-qaqxac0d0b] .mw-log-properties-key {
    font-weight: 500;
    white-space: nowrap;
    width: 1%;
    color: var(--mud-palette-text-secondary);
}

[b-qaqxac0d0b] .mw-log-properties td.mw-log-mono {
    word-break: break-all;
}
/* /Components/Pages/Admin/AdminLogs.razor.rz.scp.css */
/* FS-1127 / TP-1489 — scoped styles for AdminLogs admin viewer.
   Replaces inline styles flagged by ui-rev (RF-221: no inline styles in Razor). */

[b-x3sw1w58pt] .mw-log-category {
    font-family: var(--mw-font-mono, ui-monospace, SFMono-Regular, "SF Mono", Consolas, "Liberation Mono", Menlo, monospace);
    font-size: 0.85em;
}

[b-x3sw1w58pt] .mw-log-message {
    max-width: 600px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-x3sw1w58pt] .mw-log-filter-min-width-180 { min-width: 180px; }
[b-x3sw1w58pt] .mw-log-filter-min-width-200 { min-width: 200px; }
[b-x3sw1w58pt] .mw-log-filter-min-width-150 { min-width: 150px; }
/* /Components/Pages/Ba/Analyses.razor.rz.scp.css */
/* FS-1475 — Analýzy (přehled verzí) styling.
   Stale (historie) rows mají tlumený text, aby aktuální verze vizuálně dominovaly.
   Code chip používá monospace font pro analyst-style kód. */

[b-o344c5ghqx] .ba-batches-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.5px;
    color: var(--mud-palette-text-secondary);
}

[b-o344c5ghqx] .ba-batches-source {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    color: var(--mud-palette-text-secondary);
}

[b-o344c5ghqx] .ba-batches-row {
    cursor: pointer;
}

[b-o344c5ghqx] .ba-batches-row--stale {
    opacity: 0.55;
}

[b-o344c5ghqx] .ba-batches-row--stale:hover {
    opacity: 0.85;
}

[b-o344c5ghqx] .ba-batches-group-header {
    background: var(--mud-palette-background-grey);
    font-weight: 600;
}
/* /Components/Pages/Ba/AnalysisEditor.razor.rz.scp.css */
/* AnalysisEditor full-viewport layout — port Knowledge Details `kd-page` pattern.
   TopBar + side panel + tabs bar = static. Jen tab panel content scrolluje. */

.ae-page[b-xm0gmqm6px] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--mud-appbar-height, 64px) - 2rem);
}

.ae-header[b-xm0gmqm6px] {
    flex-shrink: 0;
}

.ae-content[b-xm0gmqm6px] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    margin-top: 8px;
}

/* Per-tab 2-pane layout: levý sidebar s anchor navigation, vpravo obsah. Sidebar
   je render-uje až uvnitř tabu (= sedí pod tab barem), takže PŘEHLED / POŽADAVKY
   tabs jsou full-width na top. */
[b-xm0gmqm6px] .ae-tab-body {
    display: flex;
    gap: 16px;
    align-items: stretch;
    min-height: 0;
}

[b-xm0gmqm6px] .ae-tab-sidebar {
    flex: 0 0 240px;
    min-width: 240px;
    /* Sticky pozice: sidebar zůstane v viewportu když user scrolluje obsah tabu
       (scroll chodí na .mud-tabs-panels parent). `align-self: flex-start` zamezí
       sticky elementu stretch-ovat na celou výšku flex containeru, jinak by sticky
       nefungovalo. Max-height + overflow umožní vlastní scroll, pokud bude seznam
       FR/UC anchorů delší než viewport. */
    position: sticky;
    top: 0;
    align-self: flex-start;
    max-height: calc(100vh - var(--mud-appbar-height, 64px) - 8rem);
    overflow-y: auto;
}

[b-xm0gmqm6px] .ae-tab-content {
    flex: 1 1 0;
    min-width: 0;
}

/* Mobile (ui-rev feedback 2026-05-20): 240px sidebar + obsah by na úzké obrazovce
   nechalo content < 100 px. Pod MUD `sm` breakpoint (600 px) sidebar stack-ujeme
   nad content + omezíme max-height aby se v každém tabu daly anchor itemy obejít
   bez gigantického scrollu. */
@media (max-width: 600px) {
    [b-xm0gmqm6px] .ae-tab-body {
        flex-direction: column;
    }
    [b-xm0gmqm6px] .ae-tab-sidebar {
        flex: 0 0 auto;
        min-width: 0;
        max-height: 30vh;
    }
}

/* MudTabs root — vyplní zbytek ae-content + flex column tak, aby toolbar
   zůstal nahoře a panel content scrolloval pod ním. */
[b-xm0gmqm6px] .ae-tabs {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* Tab bar (= .mud-tabs-toolbar) static + gap pod nim. */
[b-xm0gmqm6px] .ae-tabs > .mud-tabs-toolbar,
[b-xm0gmqm6px] .ae-tabs .mud-tabs-toolbar-wrapper {
    flex-shrink: 0;
    margin-bottom: 10px;
}

/* Tab panels container scrolluje */
[b-xm0gmqm6px] .ae-tabs .mud-tabs-panels {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    margin-top: 10px;
    scrollbar-width: thin;
    scrollbar-color: var(--color-primary) transparent;
}

[b-xm0gmqm6px] .ae-tabs .mud-tabs-panels::-webkit-scrollbar {
    width: 4px;
}

[b-xm0gmqm6px] .ae-tabs .mud-tabs-panels::-webkit-scrollbar-track {
    background: transparent;
}

[b-xm0gmqm6px] .ae-tabs .mud-tabs-panels::-webkit-scrollbar-thumb {
    background: var(--color-primary);
    border-radius: 2px;
}

[b-xm0gmqm6px] .ae-tabs .mud-tabs-panels::-webkit-scrollbar-thumb:hover {
    background: var(--color-primary-hover);
}
/* /Components/Pages/Ba/BaAnalysisEditMdPage.razor.rz.scp.css */
/*
 * BA Analysis MD Edit — full-viewport editor jako Knowledge Edit (FS-1003 layout).
 * Sticky header (filename + Save/Cancel), MarkdownEditor vyplňuje zbytek vertically.
 */
.ba-md-edit-page[b-l5mww9bv4m] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--page-editor-top, 120px));
    overflow: hidden;
}

[b-l5mww9bv4m] .mw-md-editor {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

[b-l5mww9bv4m] .mw-md-editor > .mud-grid {
    flex: 1 1 0;
    min-height: 0;
}
/* /Components/Pages/Ba/Components/AnalysisEditor/BaPublishDrawer.razor.rz.scp.css */
.ba-publish-tree[b-t1m4qt01h4] {
    padding: 6px 0;
}

.ba-publish-tree-node[b-t1m4qt01h4] {
    margin-bottom: 6px;
}

.ba-publish-tree-line[b-t1m4qt01h4] {
    display: flex;
    align-items: center;
    gap: 2px;
    font-size: 0.9rem;
    line-height: 1.4;
}

.ba-publish-tree-branch[b-t1m4qt01h4] {
    color: var(--mud-palette-text-secondary);
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    margin-right: 4px;
}
/* /Components/Pages/Ba/Components/BaAnalysisCard.razor.rz.scp.css */
/* TP-1658 / FS-1475 sekce 1 — Dashboard analysis card.
   Card is a clickable role=button with keyboard handler (Enter/Space). Layout
   matches the analyst's UMLEditor dashboard cards (3-up grid, code-monospace
   tag in top-left, title, subtitle, footer with date + status). */

.ba-analysis-card[b-frblbi3tm9] {
    cursor: pointer;
    height: 100%;
    display: flex;
    flex-direction: column;
    transition: box-shadow 120ms ease, transform 120ms ease;
}

.ba-analysis-card:hover[b-frblbi3tm9] {
    box-shadow: var(--mud-elevation-4);
    transform: translateY(-1px);
}

.ba-analysis-card:focus-visible[b-frblbi3tm9] {
    outline: 2px solid var(--mud-palette-primary);
    outline-offset: 2px;
}

.ba-analysis-card__content[b-frblbi3tm9] {
    flex: 1;
    gap: 6px;
}

.ba-analysis-card__code[b-frblbi3tm9] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    letter-spacing: 0.5px;
    font-weight: 600;
}

.ba-analysis-card__title[b-frblbi3tm9] {
    font-weight: 600;
    line-height: 1.3;
}

.ba-analysis-card__footer[b-frblbi3tm9] {
    gap: 8px;
}
/* /Components/Pages/Ba/Components/BaProjectCockpitLayout.razor.rz.scp.css */
/* BA cockpit layout — reuses .project-header* from app.css (same look as MW
   core ProjectCockpitLayout). The BA-specific add-on is the small "BA" badge
   anchored in the bottom-right corner of the avatar so the user immediately
   recognises the BA module without losing the consistent project chrome. */

[b-zlfk6a8rv9] .ba-cockpit__avatar {
    position: relative;
    overflow: visible;
}

[b-zlfk6a8rv9] .ba-cockpit__avatar-badge {
    position: absolute;
    right: -4px;
    bottom: -4px;
    background-color: var(--mud-palette-info);
    color: var(--mud-palette-info-text, #fff);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.5px;
    padding: 1px 5px;
    border-radius: 6px;
    line-height: 1.2;
    box-shadow: 0 0 0 2px var(--mud-palette-background);
}
/* /Components/Pages/Ba/Components/Dictionary/DictionaryElementsTab.razor.rz.scp.css */
/* Dictionary Elements tab — category headers between chip groups. The label
   (REQ / UC / GUI / LM / Ostatní) sits inline as a small uppercase tag so the
   strip reads like the analyst legend. */

[b-u5pgfiqd63] .dict-chip-category {
    /* WCAG AA min 12px (= 0.75rem at 16px root) — uppercase + letter-spacing
       udržuje vizuální váhu analyst legendy. */
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
    align-self: center;
    padding: 0 4px;
}

/* Highlight the table row whose drawer is currently open. Border-left
   accent + tinted background so the active selection is obvious even
   when the drawer covers part of the table. */
[b-u5pgfiqd63] tr.ba-dict-row-selected,
[b-u5pgfiqd63] tr.ba-dict-row-selected:hover {
    background-color: var(--mud-palette-primary-hover) !important;
    border-left: 3px solid var(--mud-palette-primary);
}
/* /Components/Pages/Ba/Components/Dictionary/ElementMiniTable.razor.rz.scp.css */
/* Element mini-table — composition hierarchy indent.
   Padding-left is set inline per row by ElementMiniTable.razor (Depth × 20px)
   because Blazor scoped CSS doesn't propagate CSS custom properties across
   MudTable cells. The styles here cover non-positional aspects only. */

[b-v41jvo3e7y] .ba-mini-row-name {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

[b-v41jvo3e7y] .ba-mini-row-indent {
    color: var(--mud-palette-text-secondary);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
    font-size: 0.8rem;
    user-select: none;
}
/* /Components/Pages/Ba/Dashboard.razor.rz.scp.css */
/* TP-1658 — Dashboard tree view styling.
   Pozor: ba-tree-row* / ba-tree-iteration* class definice musí být v globální
   app.css (ne v ::deep), jinak Scoped CSS nepronikne přes MudTreeViewItem
   komponentu hranice (= 1 vrstva ::deep nestačí). Tady drží jen vlastnosti
   parent dashboard layoutu. */

[b-i6fomusiwy] .ba-dashboard__header {
    gap: 12px;
    flex-wrap: wrap;
}

[b-i6fomusiwy] .ba-dashboard__toolbar {
    gap: 8px;
    flex-wrap: nowrap;
}

[b-i6fomusiwy] .ba-dashboard__filter {
    width: 200px;
    flex-shrink: 0;
}
/* /Components/Pages/Knowledge/Create.razor.rz.scp.css */
/*
 * Knowledge create — wiki-style layout. Mirrors Edit.razor.css; kept as a
 * separate file because Blazor scoped CSS is per-component and class selectors
 * get a unique scope attribute. Any change here must mirror Edit.razor.css.
 */
.ku-edit-page[b-3849jiw7pf] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--page-editor-top, 120px));
    overflow: hidden;
}

.ku-edit-header[b-3849jiw7pf] {
    flex-shrink: 0;
    padding: 12px 4px 4px 4px;
    background: var(--mud-palette-background);
    position: sticky;
    top: 0;
    z-index: 5;
}

[b-3849jiw7pf] .ku-edit-title-row {
    display: flex;
    align-items: center;
    gap: 4px;
    padding-bottom: 4px;
}

[b-3849jiw7pf] .ku-edit-title-input {
    flex: 1 1 auto;
    min-width: 0;
}

/* Hide MudTextField's native underline (spans only the input width).
   A subtle full-width underline is drawn on .mud-input-slot instead, so the
   title reads as an input without looking heavy. Idle = divider, focus = primary. */
[b-3849jiw7pf] .ku-edit-title-input .mud-input-control-input-container::after,
[b-3849jiw7pf] .ku-edit-title-input .mud-input-control-input-container::before,
[b-3849jiw7pf] .ku-edit-title-input .mud-input-underline::after,
[b-3849jiw7pf] .ku-edit-title-input .mud-input-underline::before {
    display: none !important;
}

[b-3849jiw7pf] .ku-edit-title-input .mud-input-slot {
    border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.15));
    transition: border-color 0.15s ease;
}
[b-3849jiw7pf] .ku-edit-title-input .mud-input-slot:hover {
    border-bottom-color: var(--color-border-strong, rgba(0, 0, 0, 0.3));
}
[b-3849jiw7pf] .ku-edit-title-input .mud-input-slot:focus-within {
    border-bottom-color: var(--mud-palette-primary);
}

.ku-edit-body[b-3849jiw7pf] {
    flex: 1 1 0;
    min-height: 0;
    position: relative;
    padding-top: 8px;
}

[b-3849jiw7pf] .ku-edit-grid {
    height: 100%;
    overflow: hidden;
    align-content: flex-start;
    margin-top: 0 !important;
}

[b-3849jiw7pf] .mud-grid-spacing-xs-6 > .mud-grid-item {
    padding-top: 0 !important;
}

[b-3849jiw7pf] .ku-edit-content-col {
    height: 100%;
    overflow: hidden;
    transition: max-width 0.3s ease, flex 0.3s ease;
    display: flex;
    flex-direction: column;
}

[b-3849jiw7pf] .ku-edit-sidebar-col {
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease, padding 0.3s ease, min-width 0.3s ease;
}

.ku-sidebar-collapsed[b-3849jiw7pf]  .ku-edit-sidebar-col {
    max-width: 0 !important;
    min-width: 0 !important;
    flex: 0 0 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
}

.ku-sidebar-collapsed[b-3849jiw7pf]  .ku-edit-content-col {
    max-width: 100% !important;
    flex: 0 0 100% !important;
}

[b-3849jiw7pf] .ku-edit-sidebar-content {
    transition: opacity 0.2s ease;
}

.ku-sidebar-collapsed[b-3849jiw7pf]  .ku-edit-sidebar-content {
    opacity: 0;
    pointer-events: none;
}

@media (max-width: 768px) {
    .ku-edit-page[b-3849jiw7pf] {
        height: auto;
        min-height: calc(100vh - var(--page-editor-top, 120px));
    }

    [b-3849jiw7pf] .ku-edit-content-col {
        height: auto;
        min-height: 70vh;
    }
}
/* /Components/Pages/Knowledge/Details.razor.rz.scp.css */
/* Celá stránka jako flex column - zaujme zbývající výšku po AppBaru */
.kd-page[b-uo2gyfwffz] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--mud-appbar-height, 64px) - 2rem);
}

/* Header (breadcrumb + název + tlačítka) */
.kd-header[b-uo2gyfwffz] {
    flex-shrink: 0;
}

/* Plná tlačítka - normálně viditelná, v focus mode skrytá */
[b-uo2gyfwffz] .kd-btn-full {
    display: inline-flex;
}

/* Ikonková tlačítka - normálně skrytá, v focus mode viditelná */
[b-uo2gyfwffz] .kd-btn-icon-only {
    display: none;
}

/* Titulek - zvýrazněný, větší než default h4 */
[b-uo2gyfwffz] .kd-title {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: -0.01em;
}

/* ReferenceId chip na řádku se statusy - trochu výraznější */
[b-uo2gyfwffz] .kd-ref-chip {
    font-weight: 600;
    font-size: 0.8rem;
    border-width: 2px !important;
    opacity: 0.9;
}

/* Toggle button - ve flow headeru */
[b-uo2gyfwffz] .kd-sidebar-toggle {
    flex-shrink: 0;
}

/* Wrapper pro grid + absolutně pozicovaný toggle button */
.kd-grid-wrap[b-uo2gyfwffz] {
    flex: 1 1 0;
    min-height: 0;
    position: relative;
}

/* Grid zabere celý wrap */
[b-uo2gyfwffz] .kd-grid {
    height: 100%;
    overflow: hidden;
    align-content: flex-start;
    margin-top: 0 !important;
}

/* Oprava mezery v MudGrid spacing */
[b-uo2gyfwffz] .mud-grid-spacing-xs-6 > .mud-grid-item {
    padding-top: 0 !important;
}

/* Levý sloupec scrolluje */
[b-uo2gyfwffz] .kd-content-col {
    height: 100%;
    overflow-y: auto;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease;
}

/* Pravý sloupec (sidebar) scrolluje */
[b-uo2gyfwffz] .kd-sidebar-col {
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease, padding 0.3s ease, min-width 0.3s ease;
}

/* Toggle button - ve flow headeru */
[b-uo2gyfwffz] .kd-sidebar-toggle {
    flex-shrink: 0;
}

/* Collapsed sidebar */
.kd-sidebar-collapsed[b-uo2gyfwffz]  .kd-sidebar-col {
    max-width: 0 !important;
    min-width: 0 !important;
    flex: 0 0 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
}

/* Content zabere plnou šířku při sbalení */
.kd-sidebar-collapsed[b-uo2gyfwffz]  .kd-content-col {
    max-width: 100% !important;
    flex: 0 0 100% !important;
}

/* Sidebar obsah - fade při sbalení */
[b-uo2gyfwffz] .kd-sidebar-content {
    transition: opacity 0.2s ease;
}

/* Relation / inverse-relation rows — render like a menu item, not a text link.
   Browser default link underline-on-hover was distracting; we swap it for a
   subtle background tint that matches .settings-nav-item:hover used in the
   app's left navigation (same visual vocabulary for clickable rows). */
[b-uo2gyfwffz] .kd-sidebar-content a.mud-typography,
[b-uo2gyfwffz] .kd-sidebar-content a.mud-typography:hover,
[b-uo2gyfwffz] .kd-sidebar-content a.mud-typography:focus {
    text-decoration: none;
    color: inherit;
}
[b-uo2gyfwffz] .kd-sidebar-content a.mud-typography {
    padding: 4px 6px;
    margin: 0 -6px;                   /* cancel the padding so the text itself stays aligned */
    border-radius: var(--radius-sm);
    transition: background-color var(--duration-fast) var(--ease-out);
}
[b-uo2gyfwffz] .kd-sidebar-content a.mud-typography:hover {
    background-color: rgba(0, 0, 0, 0.04);
}

.kd-sidebar-collapsed[b-uo2gyfwffz]  .kd-sidebar-content {
    opacity: 0;
    pointer-events: none;
}

/* Fragment highlight animation */
@keyframes kd-fragment-flash-b-uo2gyfwffz {
    0% { background-color: var(--mud-palette-warning-lighten); }
    100% { background-color: transparent; }
}

[b-uo2gyfwffz] .kd-fragment-target {
    animation: kd-fragment-flash-b-uo2gyfwffz 2s ease-out;
    border-radius: 4px;
    padding: 2px 4px;
    margin: -2px -4px;
}

/* Heading link icon - visible on hover */
[b-uo2gyfwffz] .heading-link {
    display: inline-flex;
    align-items: center;
    margin-left: 8px;
    opacity: 0;
    transition: opacity 0.15s ease;
    color: var(--mud-palette-text-secondary);
    vertical-align: middle;
    cursor: pointer;
    text-decoration: none;
}

[b-uo2gyfwffz] .heading-link:hover {
    color: var(--mud-palette-primary);
}

[b-uo2gyfwffz] h1:hover .heading-link,
[b-uo2gyfwffz] h2:hover .heading-link,
[b-uo2gyfwffz] h3:hover .heading-link,
[b-uo2gyfwffz] h4:hover .heading-link,
[b-uo2gyfwffz] h5:hover .heading-link,
[b-uo2gyfwffz] h6:hover .heading-link {
    opacity: 1;
}

/* Na mobilu/tabletu vypneme fixní výšku a přepneme na vertikální layout */
@media (max-width: 960px) {
    .kd-page[b-uo2gyfwffz] {
        height: auto;
    }

    .kd-grid-wrap[b-uo2gyfwffz] {
        flex: unset;
        min-height: unset;
        overflow: visible;
    }

    [b-uo2gyfwffz] .kd-content-col,
    [b-uo2gyfwffz] .kd-sidebar-col {
        height: auto;
        overflow-y: visible;
    }

    [b-uo2gyfwffz] .kd-sidebar-toggle {
        position: static;
        display: none;
    }

    /* Collapsed sidebar na mobilu - zrušit skrytí, zobrazit pod obsahem */
    .kd-sidebar-collapsed[b-uo2gyfwffz]  .kd-sidebar-col {
        max-width: 100% !important;
        min-width: unset !important;
        flex: 0 0 100% !important;
        overflow: visible !important;
        padding: 12px !important;
    }

    .kd-sidebar-collapsed[b-uo2gyfwffz]  .kd-sidebar-content {
        opacity: 1;
        pointer-events: auto;
    }

    /* Tlačítka: plná → ikony na úzkém viewportu */
    [b-uo2gyfwffz] .kd-btn-full {
        display: none;
    }

    [b-uo2gyfwffz] .kd-btn-icon-only {
        display: inline-flex;
    }
}

/* Status chip v relacích - kompaktní */
[b-uo2gyfwffz] .kd-status-chip {
    font-size: 0.65rem;
    height: 20px;
    padding: 0 6px;
    opacity: 0.85;
}
/* /Components/Pages/Knowledge/Edit.razor.rz.scp.css */
/*
 * Knowledge edit (Create + Edit) — wiki-style layout (TP-1372 / FS-1003 bod 2):
 *   ┌──────────────────────────────────────────────────┐
 *   │ Sticky header: title input + toolbar + Save/Cancel│
 *   ├─────────────────────────┬────────────────────────┤
 *   │ MarkdownEditor          │ Metadata sidebar       │
 *   │  (toolbar+textarea+prev)│  (Type/Cat/Tags/Info)  │
 *   └─────────────────────────┴────────────────────────┘
 *
 * Vyplňuje viewport pod top barem. PageEditor (wiki) používá vlastní
 * .kd-page sourozenecký set; tady udržujeme nezávislé .ku-edit-* class names
 * aby Knowledge mohl mít vlastní paddings a sticky offset bez zásahu do wiki.
 */
.ku-edit-page[b-l2kudg2m4o] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--page-editor-top, 120px));
    overflow: hidden;
}

.ku-edit-header[b-l2kudg2m4o] {
    flex-shrink: 0;
    padding: 12px 4px 4px 4px;
    background: var(--mud-palette-background);
    position: sticky;
    top: 0;
    z-index: 5;
}

[b-l2kudg2m4o] .ku-edit-title-row {
    display: flex;
    align-items: center;
    gap: 4px;
    padding-bottom: 4px;
}

[b-l2kudg2m4o] .ku-edit-title-input {
    flex: 1 1 auto;
    min-width: 0;
}

/* Hide MudTextField's native underline (spans only the input width).
   Draw a subtle full-width underline on the slot instead so the title reads as
   an input. Idle = divider colour, focus = primary. */
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-control-input-container::after,
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-control-input-container::before,
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-underline::after,
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-underline::before {
    display: none !important;
}

[b-l2kudg2m4o] .ku-edit-title-input .mud-input-slot {
    border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.15));
    transition: border-color 0.15s ease;
}
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-slot:hover {
    border-bottom-color: var(--color-border-strong, rgba(0, 0, 0, 0.3));
}
[b-l2kudg2m4o] .ku-edit-title-input .mud-input-slot:focus-within {
    border-bottom-color: var(--mud-palette-primary);
}

.ku-edit-body[b-l2kudg2m4o] {
    flex: 1 1 0;
    min-height: 0;
    position: relative;
    padding-top: 8px;
}

[b-l2kudg2m4o] .ku-edit-grid {
    height: 100%;
    overflow: hidden;
    align-content: flex-start;
    margin-top: 0 !important;
}

[b-l2kudg2m4o] .mud-grid-spacing-xs-6 > .mud-grid-item {
    padding-top: 0 !important;
}

[b-l2kudg2m4o] .ku-edit-content-col {
    height: 100%;
    overflow: hidden;
    transition: max-width 0.3s ease, flex 0.3s ease;
    display: flex;
    flex-direction: column;
}

[b-l2kudg2m4o] .ku-edit-sidebar-col {
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease, padding 0.3s ease, min-width 0.3s ease;
}

.ku-sidebar-collapsed[b-l2kudg2m4o]  .ku-edit-sidebar-col {
    max-width: 0 !important;
    min-width: 0 !important;
    flex: 0 0 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
}

.ku-sidebar-collapsed[b-l2kudg2m4o]  .ku-edit-content-col {
    max-width: 100% !important;
    flex: 0 0 100% !important;
}

[b-l2kudg2m4o] .ku-edit-sidebar-content {
    transition: opacity 0.2s ease;
}

.ku-sidebar-collapsed[b-l2kudg2m4o]  .ku-edit-sidebar-content {
    opacity: 0;
    pointer-events: none;
}

/* Mobile: sticky header zachován, sidebar stack pod editor (MudGrid xs="12" už to dělá),
   toolbar uvnitř MarkdownEditor scrolluje horizontálně (řešeno v MarkdownEditor.razor.css). */
@media (max-width: 768px) {
    .ku-edit-page[b-l2kudg2m4o] {
        height: auto;
        min-height: calc(100vh - var(--page-editor-top, 120px));
    }

    [b-l2kudg2m4o] .ku-edit-content-col {
        height: auto;
        min-height: 70vh;
    }
}
/* /Components/Pages/Projects/Cockpit/TagDetail.razor.rz.scp.css */
/* Tag detail — progress bar and legend.
   Sci-fi themed: glowing neon segments, scan-line shimmer on the InProgress
   section, soft starfield on the Todo remainder. Respects prefers-reduced-motion. */

.tag-progress-bar[b-vt0555x62s] {
    position: relative;
    display: flex;
    width: 100%;
    height: 14px;
    border-radius: 9999px;
    overflow: hidden;
    /* Dark "screen" background with a subtle inner glow so neon pops. */
    background: linear-gradient(180deg,
        rgba(10, 14, 26, 0.9),
        rgba(10, 14, 26, 0.7));
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, 0.04),
        inset 0 1px 3px rgba(0, 0, 0, 0.4);
}

/* Faint animated grid overlay across the whole bar — gives the "HUD display"
   vibe without interfering with legibility. */
.tag-progress-bar[b-vt0555x62s]::after {
    content: "";
    position: absolute;
    inset: 0;
    background-image:
        repeating-linear-gradient(90deg,
            rgba(255, 255, 255, 0.04) 0 1px,
            transparent 1px 6px);
    mix-blend-mode: overlay;
    pointer-events: none;
    animation: tag-progress-grid-pan-b-vt0555x62s 6s linear infinite;
}

@keyframes tag-progress-grid-pan-b-vt0555x62s {
    from { background-position: 0 0; }
    to   { background-position: 24px 0; }
}

.tag-progress-bar__segment[b-vt0555x62s] {
    position: relative;
    height: 100%;
    transition: width 900ms cubic-bezier(0.22, 1, 0.36, 1);
}

/* DONE — solid neon green with a halo glow around the edge */
.tag-progress-bar__segment--done[b-vt0555x62s] {
    background: linear-gradient(90deg,
        #22c55e 0%,
        #10b981 50%,
        #34d399 100%);
    box-shadow:
        0 0 8px rgba(34, 197, 94, 0.8),
        0 0 18px rgba(34, 197, 94, 0.45),
        inset 0 0 6px rgba(255, 255, 255, 0.25);
}

/* IN PROGRESS — cyan/magenta scan-line that sweeps across. */
.tag-progress-bar__segment--inprogress[b-vt0555x62s] {
    background:
        /* scanning beam */
        linear-gradient(90deg,
            transparent 0%,
            rgba(255, 255, 255, 0.55) 45%,
            rgba(255, 255, 255, 0.9) 50%,
            rgba(255, 255, 255, 0.55) 55%,
            transparent 100%) 0 0 / 40% 100% no-repeat,
        /* base neon gradient */
        linear-gradient(90deg, #06b6d4 0%, #a855f7 100%);
    box-shadow:
        0 0 10px rgba(168, 85, 247, 0.85),
        0 0 22px rgba(6, 182, 212, 0.55),
        inset 0 0 6px rgba(255, 255, 255, 0.35);
    animation: tag-progress-scan-b-vt0555x62s 1.8s linear infinite;
}

@keyframes tag-progress-scan-b-vt0555x62s {
    0%   { background-position: -40% 0, 0 0; }
    100% { background-position: 140% 0,  0 0; }
}

/* Tiny "pulse" on the trailing edge of Done — like a data spike. */
.tag-progress-bar__segment--done[b-vt0555x62s]::after {
    content: "";
    position: absolute;
    top: -2px;
    bottom: -2px;
    right: -1px;
    width: 2px;
    background: rgba(255, 255, 255, 0.9);
    box-shadow: 0 0 8px #34d399, 0 0 14px #22c55e;
    animation: tag-progress-pulse-b-vt0555x62s 1.6s ease-in-out infinite;
}

@keyframes tag-progress-pulse-b-vt0555x62s {
    0%, 100% { opacity: 0.35; transform: scaleY(0.7); }
    50%      { opacity: 1;    transform: scaleY(1); }
}

/* Reduced-motion users deserve a still display — drop all animations, keep colours. */
@media (prefers-reduced-motion: reduce) {
    .tag-progress-bar[b-vt0555x62s]::after,
    .tag-progress-bar__segment[b-vt0555x62s],
    .tag-progress-bar__segment--inprogress[b-vt0555x62s],
    .tag-progress-bar__segment--done[b-vt0555x62s]::after {
        animation: none !important;
        transition: none !important;
    }
}

/* Legend row — tiny coloured dots matching the bar. */
.tag-progress-legend[b-vt0555x62s] {
    font-size: var(--font-size-xs, 0.75rem);
    color: var(--color-text-secondary);
}
.tag-progress-legend__item[b-vt0555x62s] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    white-space: nowrap;
}
.tag-progress-legend__dot[b-vt0555x62s] {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    display: inline-block;
}
.tag-progress-legend__dot--done[b-vt0555x62s] {
    background: #22c55e;
    box-shadow: 0 0 6px rgba(34, 197, 94, 0.7);
}
.tag-progress-legend__dot--inprogress[b-vt0555x62s] {
    background: linear-gradient(135deg, #06b6d4, #a855f7);
    box-shadow: 0 0 6px rgba(168, 85, 247, 0.6);
}
.tag-progress-legend__dot--todo[b-vt0555x62s] {
    background: rgba(148, 163, 184, 0.6);
}
/* /Components/Pages/Qa/Common/MultiColorResultBar.razor.rz.scp.css */
/*
 * QA result distribution bar — colors map to MudBlazor theme palette where
 * possible (auto-adapts to light/dark mode). NotRun has no MudBlazor analogue
 * (it's a "no decision yet" state, not a status), so it gets an explicit
 * neutral grey that meets WCAG AA contrast on both backgrounds.
 */

.qa-multicolor-bar[b-apb4axkj6k] {
    display: flex;
    width: 100%;
    min-width: 80px;
    background: var(--mud-palette-action-disabled-background);
    border-radius: 4px;
    overflow: hidden;
}

.qa-multicolor-segment[b-apb4axkj6k] {
    display: block;
    height: 100%;
}

/* QA výsledková paleta — MUSÍ ladit s donutem (BuildDonutRows v TestRunSummary.razor
   a ProjectDashboard.razor), aby bar i donut měly stejné barvy napříč QA. Konkrétní
   hex záměrně (ne MudBlazor tokeny): error/error-darken byly pro Fail/Error
   nerozeznatelné a token secondary kolidoval s 'Přeskočen' v klasickém tématu.
   Hodnoty čtou dobře na light i dark. POZOR: držet v sync s BuildDonutRows. (EP #5631) */
.qa-multicolor-segment.seg-pass[b-apb4axkj6k]    { background: #2ea043; }
.qa-multicolor-segment.seg-fail[b-apb4axkj6k]    { background: #f85149; }
.qa-multicolor-segment.seg-error[b-apb4axkj6k]   { background: #d73a49; }
.qa-multicolor-segment.seg-blocked[b-apb4axkj6k] { background: #e3b341; }
.qa-multicolor-segment.seg-skip[b-apb4axkj6k]    { background: #8b949e; }
.qa-multicolor-segment.seg-notrun[b-apb4axkj6k]  { background: #6e7681; }
/* /Components/Pages/Qa/ScenariosList.razor.rz.scp.css */
/* TP-1523 — visual feedback during drag&drop in grouped folder view.
   Active drop target gets a primary-colored border + faint background tint
   so the user can see exactly which folder will receive the dropped item.
   Outer container uses ::deep because MudExpansionPanel renders the
   TitleContent inside its own scoped subtree. */
[b-yj0sm8q0kw] .qa-drop-target-active {
    outline: 2px dashed var(--mud-palette-primary);
    outline-offset: -2px;
    background: color-mix(in srgb, var(--mud-palette-primary) 8%, transparent);
    border-radius: 4px;
    transition: background-color 0.12s, outline-color 0.12s;
}

/* Scenario rows during drag — slightly faded so the user knows they're
   actively dragging, and the cursor shifts to grabbing. The grab cursor
   on idle rows is set inline (style="cursor: grab;") to avoid a CSS
   specificity fight with MudSimpleTable's own row styles. */
[b-yj0sm8q0kw] tr[draggable="true"]:active {
    cursor: grabbing;
    opacity: 0.6;
}
/* /Components/Shared/ChatbotSidebar.razor.rz.scp.css */
.chatbot-sidebar[b-dfeoovzbt3] {
    position: fixed;
    top: var(--mud-appbar-height);
    right: 0;
    bottom: 0;
    z-index: 1099;
    display: flex;
    flex-direction: row;
    background: var(--mud-palette-background);
    border-left: 1px solid var(--mud-palette-lines-default);
}

.chatbot-resize-handle[b-dfeoovzbt3] {
    width: 5px;
    cursor: col-resize;
    background: transparent;
    transition: background 0.15s;
    flex-shrink: 0;
}

.chatbot-resize-handle:hover[b-dfeoovzbt3] {
    background: var(--mud-palette-primary);
}

.chatbot-panel[b-dfeoovzbt3] {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-width: 0;
}

.chatbot-header[b-dfeoovzbt3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-bottom: 1px solid var(--mud-palette-lines-default);
    flex-shrink: 0;
}

.chatbot-messages[b-dfeoovzbt3] {
    flex: 1;
    overflow-y: auto;
    padding: 8px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.chatbot-empty[b-dfeoovzbt3] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    opacity: 0.4;
}

.chatbot-msg[b-dfeoovzbt3] {
    padding: 6px 10px;
    border-radius: 6px;
    max-width: 90%;
    font-size: 0.85rem;
    line-height: 1.5;
}

.chatbot-msg-user[b-dfeoovzbt3] {
    align-self: flex-end;
    background: var(--mud-palette-action-default-hover);
    color: var(--mud-palette-text-primary);
}

.chatbot-msg-ai[b-dfeoovzbt3] {
    align-self: flex-start;
    background: var(--mud-palette-background-grey);
    color: var(--mud-palette-text-primary);
    border: 1px solid var(--mud-palette-lines-default);
}

.chatbot-msg-system[b-dfeoovzbt3] {
    align-self: flex-start;
    font-size: 0.72rem;
    color: var(--mud-palette-text-disabled);
    padding: 2px 0;
}

.chatbot-msg-meta[b-dfeoovzbt3] {
    font-size: 0.7rem;
    opacity: 0.6;
    margin-bottom: 2px;
}

.chatbot-msg-meta-user[b-dfeoovzbt3] {
    color: var(--mud-palette-primary);
    opacity: 1;
}

.chatbot-msg-body[b-dfeoovzbt3] {
    word-break: break-word;
}

.chatbot-msg-user .chatbot-msg-body[b-dfeoovzbt3] {
    white-space: pre-wrap;
}

/* ::deep needed because MarkupString content lacks Blazor isolation attributes */
.chatbot-msg-body[b-dfeoovzbt3]  p {
    margin: 0 0 4px 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  p:last-child {
    margin-bottom: 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  ul,
.chatbot-msg-body[b-dfeoovzbt3]  ol {
    padding-left: 18px;
    margin: 2px 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  li {
    margin: 0;
    padding: 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  li + li {
    margin-top: 1px;
}

.chatbot-msg-body[b-dfeoovzbt3]  h1,
.chatbot-msg-body[b-dfeoovzbt3]  h2,
.chatbot-msg-body[b-dfeoovzbt3]  h3,
.chatbot-msg-body[b-dfeoovzbt3]  h4 {
    font-size: 0.85rem;
    font-weight: 700;
    margin: 6px 0 2px 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  strong {
    font-weight: 700;
}

.chatbot-msg-body[b-dfeoovzbt3]  pre {
    background: var(--mud-palette-surface);
    padding: 6px 8px;
    border-radius: 4px;
    overflow-x: auto;
    font-size: 0.78rem;
    margin: 4px 0;
}

.chatbot-msg-body[b-dfeoovzbt3]  code {
    font-size: 0.78rem;
}

.chatbot-input[b-dfeoovzbt3] {
    border-top: 1px solid var(--mud-palette-lines-default);
    padding: 8px;
    flex-shrink: 0;
}

.chatbot-textarea[b-dfeoovzbt3] {
    width: 100%;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 6px;
    padding: 8px 10px;
    font-family: inherit;
    font-size: 0.85rem;
    line-height: 1.4;
    /* Vertikální resize povolen — analyst si může v případě dlouhého promptu
       (= paste velkého kontextu ze selection menu) potáhnout výšku větší. */
    resize: vertical;
    /* Větší výchozí výška — Petrův typický prompt s kontextovým úryvkem se
       3-řádkové textarea nevejde. ~140px = ~7-8 řádků. */
    min-height: 140px;
    background: var(--mud-palette-surface);
    color: var(--mud-palette-text-primary);
    outline: none;
}

.chatbot-textarea:focus[b-dfeoovzbt3] {
    border-color: var(--mud-palette-primary);
}

.chatbot-textarea:disabled[b-dfeoovzbt3] {
    opacity: 0.5;
}

.chatbot-input-footer[b-dfeoovzbt3] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 4px;
}

.chatbot-context[b-dfeoovzbt3] {
    font-size: 0.7rem;
    opacity: 0.4;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Collapsible handoff prompt expander button — sbalíme dlouhé strukturované messages */
.chatbot-msg-expand[b-dfeoovzbt3] {
    background: none;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 4px;
    padding: 2px 8px;
    margin-top: 4px;
    margin-bottom: 4px;
    font-size: 0.7rem;
    color: var(--mud-palette-primary);
    cursor: pointer;
}
.chatbot-msg-expand:hover[b-dfeoovzbt3] {
    background-color: var(--mud-palette-action-default-hover);
}


/* Override - decentnější expand link (z předchozí verze byl button-like) */
.chatbot-msg-expand[b-dfeoovzbt3] {
    background: none !important;
    border: none !important;
    padding: 0 !important;
    margin-left: 4px;
    font-size: 0.75rem;
    color: var(--mud-palette-primary);
    cursor: pointer;
    text-decoration: underline;
    text-decoration-style: dotted;
    text-underline-offset: 2px;
}
.chatbot-msg-expand:hover[b-dfeoovzbt3] {
    text-decoration-style: solid;
    background: none !important;
}
/* /Components/Shared/DetailDrawer.razor.rz.scp.css */
/* DetailDrawer - Responsive styles */

/* Container fills the drawer and uses flexbox for sticky footer */
.drawer-container[b-mb261ho73v] {
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    align-items: stretch;
    height: 100%;
    overflow: hidden;
}

/* Prevent MudDivider from growing in flex container */
.drawer-container[b-mb261ho73v]  hr.mud-divider {
    flex-shrink: 0;
    flex-grow: 0;
}

/* Header with title and close button */
.drawer-header[b-mb261ho73v] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px;
    flex-shrink: 0;
}

.drawer-title[b-mb261ho73v] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
    min-width: 0; /* Allow text truncation */
}

.drawer-header-actions[b-mb261ho73v] {
    display: flex;
    align-items: center;
    gap: 2px;
    flex-shrink: 0;
}

/* Scrollable body - fills remaining space */
.drawer-body[b-mb261ho73v] {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 16px;
    min-height: 0; /* Required for flex overflow to work */
    /* Ensure content aligns to top */
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
}

/* Sticky footer */
.drawer-footer[b-mb261ho73v] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 16px;
    flex-shrink: 0;
}

/* Note: Drawer width and responsive behavior is defined in app.css (global) */
/* /Components/Shared/MarkdownEditor.razor.rz.scp.css */
/*
 * MarkdownEditor — outer wrapper. Vnitřní layout (textarea + .markdown-content
 * preview) používá inline styly přesně jako původní Wiki PageEditor, aby se
 * globální .markdown-content z app.css aplikoval konzistentně.
 *
 * Komponenta sama nedrží výšku — fillne dostupné místo (height: 100%). Parent
 * (Knowledge edit, PageEditor edit) dodá kontejner s pevnou výškou.
 */
.mw-md-editor[b-n1awe47dwi] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 320px;
}

[b-n1awe47dwi] .mw-md-toolbar {
    border-bottom: 1px solid var(--mud-palette-lines-default);
    flex-shrink: 0;
    overflow-x: auto;
    overflow-y: hidden;
    flex-wrap: nowrap;
}

/* Drag handle mezi editor textareou a preview. Široký 6px (klikatelný),
   barva dědí z lines-default, hover/active dostává primary highlight. */
[b-n1awe47dwi] .mw-md-splitter {
    flex: 0 0 6px;
    cursor: col-resize;
    background: transparent;
    position: relative;
    user-select: none;
    transition: background-color 0.15s;
}

[b-n1awe47dwi] .mw-md-splitter::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--mud-palette-lines-default);
    transform: translateX(-50%);
}

[b-n1awe47dwi] .mw-md-splitter:hover,
[b-n1awe47dwi] .mw-md-splitter.mw-md-splitter-dragging {
    background: var(--mud-palette-primary-lighten);
}

[b-n1awe47dwi] .mw-md-splitter:hover::before,
[b-n1awe47dwi] .mw-md-splitter.mw-md-splitter-dragging::before {
    background: var(--mud-palette-primary);
    width: 2px;
}

/* === Layout panes === */

.mw-md-body[b-n1awe47dwi] {
    flex: 1 1 0;
    min-height: 0;
}

.mw-md-split[b-n1awe47dwi] {
    display: flex;
    height: 100%;
}

.mw-md-edit-pane[b-n1awe47dwi] {
    flex: 0 0 50%;
    display: flex;
    flex-direction: column;
    min-width: 100px;
}

.mw-md-textarea[b-n1awe47dwi] {
    width: 100%;
    height: 100%;
    border: none;
    outline: none;
    resize: none;
    padding: 12px;
    font-family: 'Cascadia Code', 'Fira Code', monospace;
    font-size: 0.85rem;
    background: var(--mud-palette-surface);
    color: inherit;
}

.mw-md-textarea-full[b-n1awe47dwi] {
    flex: 1 1 0;
}

.mw-md-preview-pane[b-n1awe47dwi] {
    flex: 1 1 0;
    min-width: 100px;
    border-left: 1px solid var(--mud-palette-lines-default);
    padding: 24px;
    background: var(--mud-palette-surface);
    overflow-y: auto;
    position: relative;
}

.mw-md-preview-pane-full[b-n1awe47dwi] {
    border-left: none;
    flex: 1 1 0;
    height: 100%;
    position: relative;
}

/* Stacked layout — edit nahore, preview dole. Pouzity pro uzka pole
   (komentare, kratke popisy) kde vertikalni split je nepouzitelny.
   UX-followup — pro stacked variantu KOMPLET vyhazujeme fixed height z
   editor/body wrapperů (.mw-md-editor + .mw-md-body), takže preview pane
   roste podle obsahu a parent MudPaper se s ním zvětší. Vertikální split
   varianta to nepoužívá, takže její chování se nemění. */
.mw-md-editor:has(.mw-md-stacked)[b-n1awe47dwi] {
    height: auto;
}

.mw-md-editor:has(.mw-md-stacked) .mw-md-body[b-n1awe47dwi] {
    flex: 0 0 auto;
    min-height: 0;
}

.mw-md-stacked[b-n1awe47dwi] {
    display: flex;
    flex-direction: column;
    width: 100%;
    gap: 0;
}

.mw-md-textarea-stacked[b-n1awe47dwi] {
    flex: 0 0 auto;
    min-height: 140px;
    max-height: 60vh;
    resize: vertical;
}

/* Preview pane roste přesně podle obsahu — žádný overflow:auto vnitřní
   scrollbar, žádné fixed dimensions. Obrázky max-width: 100% aby
   nepřetekly do stran. */
.mw-md-preview-pane-stacked[b-n1awe47dwi] {
    flex: 0 0 auto;
    min-height: 80px;
    border-left: none;
    border-top: 1px solid var(--mud-palette-lines-default);
    padding: 16px;
    background: var(--mud-palette-surface);
    overflow: hidden;
    position: relative;
}

.mw-md-preview-pane-stacked[b-n1awe47dwi]  img {
    max-width: 100%;
    height: auto;
    display: block;
}

/* Stale = preview je o keystroke pozadu (debounced render). Blur + lehký
   gradient sweep navečer aby user viděl, že se preview "vařit" a brzy se
   aktualizuje. Bez ::deep — root komponenty má scope attribute, vnitřní
   markdown HTML je v ::deep. */
.mw-md-preview-stale[b-n1awe47dwi] {
    pointer-events: none;
}

.mw-md-preview-stale[b-n1awe47dwi]  .markdown-content {
    filter: blur(1.5px);
    opacity: 0.65;
    transition: filter 0.18s ease, opacity 0.18s ease;
}

.mw-md-preview-stale[b-n1awe47dwi]::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(
        110deg,
        transparent 0%,
        transparent 40%,
        color-mix(in srgb, var(--mud-palette-primary) 8%, transparent) 50%,
        transparent 60%,
        transparent 100%
    );
    background-size: 200% 100%;
    animation: mw-md-preview-shimmer-b-n1awe47dwi 1.4s linear infinite;
    pointer-events: none;
}

@keyframes mw-md-preview-shimmer-b-n1awe47dwi {
    0%   { background-position: 100% 0; }
    100% { background-position: -100% 0; }
}

/* Mobile: stack textarea + preview vertikálně */
@media (max-width: 768px) {
    .mw-md-split[b-n1awe47dwi] {
        flex-direction: column;
    }

    .mw-md-edit-pane[b-n1awe47dwi] {
        flex: 0 0 50% !important;
    }

    .mw-md-preview-pane[b-n1awe47dwi] {
        border-left: none;
        border-top: 1px solid var(--mud-palette-lines-default);
    }
}

/* === Table-size picker (clone of PageEditor wiki-table-picker) === */
.mw-md-table-picker[b-n1awe47dwi] {
    padding: 8px;
}

.mw-md-table-picker-label[b-n1awe47dwi] {
    font-size: 0.8rem;
    margin-bottom: 6px;
    color: var(--mud-palette-text-secondary);
}

.mw-md-table-picker-grid[b-n1awe47dwi] {
    display: grid;
    grid-template-columns: repeat(10, 14px);
    grid-template-rows: repeat(7, 14px);
    gap: 2px;
}

.mw-md-table-picker-cell[b-n1awe47dwi] {
    width: 14px;
    height: 14px;
    background: var(--mud-palette-action-default-hover);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 2px;
    cursor: pointer;
}

.mw-md-table-picker-cell.selected[b-n1awe47dwi] {
    background: var(--mud-palette-primary);
    border-color: var(--mud-palette-primary);
}
/* /Components/Shared/MarkdownViewer.razor.rz.scp.css */
/*
 * MarkdownViewer — vlastní scoped styly. Root template <div class="markdown-content">
 * dostává Blazor scope attribute (b-XXX), takže `.markdown-content` selector matches
 * root. Vnitřní HTML (z MarkupString) scope attribute nemá → descendants stylujeme
 * přes `::deep`, který scope vyřeší na ancestor element.
 *
 * Sjednocený zdroj pravdy pro renderovaný markdown — používá Wiki view, Wiki preview
 * (přes MarkdownEditor) i Knowledge Details. Stejný komponent = stejné CSS = žádný
 * preview ↔ view drift.
 */

.markdown-content[b-s3978siglz] {
    line-height: 1.7;
    color: var(--mud-palette-text-primary);
}

/* Heading typography (font-size, margins, weight, line-height, color) je definovaná
   globálně v wwwroot/css/components/markdown.css (token-based, density-aware přes
   --md-font-size). Tady **NEDUPLIKUJEME** — duplicitní pravidla měla stejnou
   specificity ale Blazor scoped CSS se loaduje až po globálním, takže lokální
   em-based velikosti vyhrávaly a v drawerech / wikis vznikal font drift
   (user feedback ES-241 polish, 2026-05-20). Zachováváme jen styling co globální
   nemá: GitHub-style underline pro h1 a h2. */
[b-s3978siglz] h1 {
    border-bottom: 1px solid var(--mud-palette-lines-default);
    padding-bottom: 0.3em;
}

[b-s3978siglz] h2 {
    border-bottom: 1px solid var(--mud-palette-lines-default);
    padding-bottom: 0.3em;
}

[b-s3978siglz] p { margin-bottom: 1em; }

[b-s3978siglz] ul,
[b-s3978siglz] ol {
    padding-left: 24px;
    margin: 8px 0;
}

[b-s3978siglz] li { margin-bottom: 0.25em; }

[b-s3978siglz] li > ul,
[b-s3978siglz] li > ol {
    margin-top: 0.25em;
    margin-bottom: 0;
}

/* Inline code — GitHub style: subtle neutral tint bg, text colour inherits
   so the chip doesn't paint a different colour across the prose. */
[b-s3978siglz] code {
    font-family: 'Cascadia Code', 'Fira Code', Consolas, monospace;
    background-color: rgba(175, 184, 193, 0.2);
    color: inherit;
    padding: 0.2em 0.4em;
    border-radius: 6px;
    font-size: 0.85em;
    border: 0;
}

[b-s3978siglz] pre code {
    background: transparent;
    padding: 0;
    border-radius: 0;
    font-size: inherit;
}

/* Fenced code block — light wash, primary left rule, scrollable. */
[b-s3978siglz] pre {
    background: var(--color-bg-muted);
    color: var(--color-text-primary);
    border: 1px solid var(--mud-palette-lines-default);
    border-left: 3px solid var(--mud-palette-primary);
    padding: 12px 16px;
    border-radius: 4px;
    overflow-x: auto;
    margin: 8px 0;
}

/* <code> inside <pre> drops its own pill so the wrapper background shows through.
   Also targets hljs-decorated blocks (highlight.js adds class="hljs"). */
[b-s3978siglz] pre code,
[b-s3978siglz] pre code.hljs {
    background: transparent;
    padding: 0;
    border: none;
    font-size: 0.85em;
}

[b-s3978siglz] table {
    border-collapse: collapse;
    width: 100%;
    margin-bottom: 1em;
}

[b-s3978siglz] th,
[b-s3978siglz] td {
    border: 1px solid var(--mud-palette-lines-default);
    padding: 0.5em 1em;
    text-align: left;
}

[b-s3978siglz] th {
    background-color: var(--mud-palette-background-grey);
    font-weight: 600;
}

[b-s3978siglz] tr:nth-child(even) {
    background-color: rgba(0, 0, 0, 0.02);
}

[b-s3978siglz] blockquote {
    border-left: 4px solid var(--mud-palette-primary);
    padding-left: 1em;
    margin-left: 0;
    margin-bottom: 1em;
    color: var(--mud-palette-text-secondary);
    font-style: italic;
}

[b-s3978siglz] hr {
    border: none;
    border-top: 1px solid var(--mud-palette-lines-default);
    margin: 1.5em 0;
}

[b-s3978siglz] input[type="checkbox"] {
    appearance: none;
    -webkit-appearance: none;
    width: 1.1em;
    height: 1.1em;
    border: 2px solid var(--color-border-strong);
    border-radius: 4px;
    margin-right: 0.5em;
    vertical-align: middle;
    cursor: default;
    position: relative;
    background-color: var(--color-bg-surface);
}

[b-s3978siglz] input[type="checkbox"]:checked {
    background-color: var(--color-success);
    border-color: var(--color-success);
}

[b-s3978siglz] input[type="checkbox"]:checked::after {
    content: "\2713";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    color: white;
    font-size: 0.8em;
    font-weight: bold;
}

/* Inline links — use the theme-aware text-link token (blue in modern,
   bright-blue in classic) and keep them underlined by default so they
   read as actionable on the first glance. The previous rule painted
   them with --mud-palette-primary, which in modern theme is the brand
   purple and bled into body text without an underline. */
[b-s3978siglz] a {
    color: var(--color-text-link);
    text-decoration: underline;
    text-underline-offset: 2px;
}

[b-s3978siglz] a:hover {
    color: var(--color-text-link-hover);
}

[b-s3978siglz] a:focus-visible {
    outline: 2px solid var(--color-focus-ring);
    outline-offset: 2px;
    border-radius: 2px;
}

[b-s3978siglz] img {
    max-width: 100%;
    height: auto;
}

/* === Diagram wrappers (mermaid + plantuml) === */

[b-s3978siglz] .mermaid-render,
[b-s3978siglz] .plantuml-render {
    position: relative;
    margin: 12px 0;
    text-align: center;
    padding: 8px;
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 4px;
    overflow-x: auto;
}

[b-s3978siglz] .mermaid-render svg,
[b-s3978siglz] .plantuml-render svg {
    max-width: 100%;
    height: auto;
}

/* Floating controls (size toggle + fullscreen) — hidden until hover. */
[b-s3978siglz] .diagram-controls {
    position: absolute;
    top: 6px;
    right: 6px;
    display: flex;
    gap: 4px;
    opacity: 0;
    transition: opacity 0.15s ease;
    z-index: 2;
}

[b-s3978siglz] .mermaid-render:hover .diagram-controls,
[b-s3978siglz] .plantuml-render:hover .diagram-controls,
[b-s3978siglz] .diagram-controls:focus-within {
    opacity: 1;
}

[b-s3978siglz] .diagram-ctrl-btn {
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--mud-palette-background-grey);
    color: var(--mud-palette-text-secondary);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 4px;
    cursor: pointer;
    padding: 0;
    transition: background 0.15s ease, color 0.15s ease;
}

[b-s3978siglz] .diagram-ctrl-btn:hover {
    background: var(--mud-palette-action-default-hover);
    color: var(--mud-palette-primary);
}

/* Actual-size mode: SVG keeps intrinsic dimensions, wrapper scrolls. */
[b-s3978siglz] .mermaid-render.diagram-actual-size,
[b-s3978siglz] .plantuml-render.diagram-actual-size {
    max-height: 600px;
    overflow: auto;
}

[b-s3978siglz] .mermaid-render.diagram-actual-size svg,
[b-s3978siglz] .plantuml-render.diagram-actual-size svg {
    max-width: none;
    width: auto;
    height: auto;
}

/* Fullscreen — fill the black backdrop with the page surface and centre the SVG. */
[b-s3978siglz] .mermaid-render:fullscreen,
[b-s3978siglz] .plantuml-render:fullscreen {
    background: var(--mud-palette-surface);
    padding: 40px;
    display: flex;
    align-items: center;
    justify-content: center;
}

[b-s3978siglz] .mermaid-render:fullscreen svg,
[b-s3978siglz] .plantuml-render:fullscreen svg {
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
}

[b-s3978siglz] .mermaid-render:fullscreen .diagram-controls,
[b-s3978siglz] .plantuml-render:fullscreen .diagram-controls {
    opacity: 1;
}

/* PlantUML [[url]] hyperlinks — viz-js drops them, JS injects <a> wrappers. */
[b-s3978siglz] .plantuml-render svg a {
    cursor: pointer;
}

[b-s3978siglz] .plantuml-render svg a rect,
[b-s3978siglz] .plantuml-render svg a polygon,
[b-s3978siglz] .plantuml-render svg a ellipse,
[b-s3978siglz] .plantuml-render svg a path {
    transition: filter 0.12s ease, stroke-width 0.12s ease;
}

[b-s3978siglz] .plantuml-render svg a:hover rect,
[b-s3978siglz] .plantuml-render svg a:hover polygon,
[b-s3978siglz] .plantuml-render svg a:hover ellipse,
[b-s3978siglz] .plantuml-render svg a:hover path {
    filter: drop-shadow(0 0 4px var(--mud-palette-primary));
    stroke-width: 2;
}

/* Klikatelnost zařízena pres `cursor: pointer` + hover drop-shadow na shape.
   Underline na text by jen šuměl po `_injectPlantUmlLinks` wrap (= celý <g>
   entity má `<a>` parent, takže všechen text uvnitř by dostal underline). */
[b-s3978siglz] .plantuml-render svg a,
[b-s3978siglz] .plantuml-render svg a:hover {
    text-decoration: none;
}

[b-s3978siglz] .diagram-error {
    background: var(--mud-palette-error);
    color: var(--mud-palette-error-contrast-text);
    padding: 8px 12px;
    border-radius: 4px;
    font-family: 'Cascadia Code', 'Fira Code', Consolas, monospace;
    font-size: 0.85em;
    white-space: pre-wrap;
}
/* /Components/Shared/PageEditor.razor.rz.scp.css */
/*
 * PageEditor — layout stejný jako KU Details, použitý pro projektovou i globální wiki.
 * Výška viewportu se liší podle toho, zda je komponenta uvnitř ProjectCockpitLayout
 * (projekt přidává ~174 px: tabs + breadcrumbs + project name).
 * Nadřazená stránka (Docs.razor / Wiki.razor) to řeší přes CSS custom property
 * --page-editor-top. Default fallback = AppBar height + 2 rem padding (sjednoceno
 * s Knowledge Details, aby Wiki / Knowledge view měly stejný spodní dorovnání).
 */
.kd-page[b-10t8akagxw] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - var(--page-editor-top, calc(var(--mud-appbar-height, 64px) + 2rem)));
    overflow: hidden;
}

.kd-header[b-10t8akagxw] {
    flex-shrink: 0;
}

[b-10t8akagxw] .kd-edit-title-row {
    display: flex;
    align-items: center;
    gap: 4px;
    padding-bottom: 4px;
}

[b-10t8akagxw] .kd-edit-title-input {
    flex: 1 1 auto;
    min-width: 0;
}

/* Hide MudTextField's native underline (spans only the input width), then
   repaint a full-width border-bottom on the input slot so the title reads
   as an editable input. Idle = divider, focus = primary. Matches the pattern
   in Knowledge Edit (ku-edit-title-input). */
[b-10t8akagxw] .kd-edit-title-input .mud-input-control-input-container::after,
[b-10t8akagxw] .kd-edit-title-input .mud-input-control-input-container::before,
[b-10t8akagxw] .kd-edit-title-input .mud-input-underline::after,
[b-10t8akagxw] .kd-edit-title-input .mud-input-underline::before {
    display: none !important;
}

[b-10t8akagxw] .kd-edit-title-input .mud-input-slot {
    border-bottom: 1px solid var(--color-border, rgba(0, 0, 0, 0.15));
    transition: border-color 0.15s ease;
}
[b-10t8akagxw] .kd-edit-title-input .mud-input-slot:hover {
    border-bottom-color: var(--color-border-strong, rgba(0, 0, 0, 0.3));
}
[b-10t8akagxw] .kd-edit-title-input .mud-input-slot:focus-within {
    border-bottom-color: var(--mud-palette-primary);
}

[b-10t8akagxw] .kd-title {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.3;
}

.kd-grid-wrap[b-10t8akagxw] {
    flex: 1 1 0;
    min-height: 0;
    position: relative;
}

[b-10t8akagxw] .kd-grid {
    height: 100%;
    overflow: hidden;
    align-content: flex-start;
    margin-top: 0 !important;
}

[b-10t8akagxw] .mud-grid-spacing-xs-6 > .mud-grid-item {
    padding-top: 0 !important;
}

[b-10t8akagxw] .kd-content-col {
    height: 100%;
    overflow-y: auto;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease;
}

[b-10t8akagxw] .kd-sidebar-col {
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 1rem;
    transition: max-width 0.3s ease, flex 0.3s ease, padding 0.3s ease, min-width 0.3s ease;
}

[b-10t8akagxw] .kd-sidebar-toggle {
    flex-shrink: 0;
}

.kd-sidebar-collapsed[b-10t8akagxw]  .kd-sidebar-col {
    max-width: 0 !important;
    min-width: 0 !important;
    flex: 0 0 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
}

.kd-sidebar-collapsed[b-10t8akagxw]  .kd-content-col {
    max-width: 100% !important;
    flex: 0 0 100% !important;
}

[b-10t8akagxw] .kd-sidebar-content {
    transition: opacity 0.2s ease;
}

.kd-sidebar-collapsed[b-10t8akagxw]  .kd-sidebar-content {
    opacity: 0;
    pointer-events: none;
}

[b-10t8akagxw] .wiki-tree-item {
    transition: background-color 0.15s ease;
}

[b-10t8akagxw] .wiki-drag-over {
    background-color: var(--mud-palette-primary-lighten);
    border-radius: 4px;
}

/* Flex řádek: chevron + MudNavLink vedle sebe, bez zbytečných mezer. */
[b-10t8akagxw] .wiki-tree-row {
    display: flex;
    align-items: center;
    gap: 0;
}

[b-10t8akagxw] .wiki-tree-row > .mud-nav-item {
    flex: 1 1 auto;
    min-width: 0;
    margin: 0 !important;
}

/* Kompaktnější řádky ve wiki stromu (TP-1266 Fáze 1).
   MudBlazor default MudNavLink je cca 48 px vysoký — na stromu s desítkami
   položek příliš roztahané. Scoped ::deep cílí dovnitř MudBlazor struktury
   (.mud-nav-item > a.mud-nav-link). */
[b-10t8akagxw] .wiki-tree-item .mud-nav-item {
    margin: 0 !important;
    min-height: 0 !important;
}

[b-10t8akagxw] .wiki-tree-item .mud-nav-link {
    padding: 0px 1px !important;
    line-height: 1.2 !important;
    display: flex !important;
    align-items: center !important;
}

[b-10t8akagxw] .wiki-tree-item .mud-nav-link .mud-nav-link-icon {
    margin-right: 6px !important;
}

[b-10t8akagxw] .wiki-tree-item .mud-nav-link-text {
    line-height: 1.2 !important;
    margin-inline-start: 0 !important;
    margin-left: 0 !important;
}

/* Chevron pro expand/collapse ve stylu MudBlazor icon button — jemné
   šedé kolečko s hover state. Stejně široký spacer pro uzly bez potomků,
   takže všechny řádky jsou vizuálně zarovnané. */
[b-10t8akagxw] .wiki-tree-chevron {
    flex: 0 0 auto;
    width: 24px;
    height: 24px;
    margin-right: 2px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--mud-palette-text-secondary);
    background-color: var(--mud-palette-action-default-hover);
    cursor: pointer;
    user-select: none;
    border-radius: 50%;
    transition: background-color 0.15s ease, color 0.15s ease;
}

[b-10t8akagxw] .wiki-tree-chevron:hover {
    background-color: var(--mud-palette-action-default);
    color: var(--mud-palette-primary);
}

[b-10t8akagxw] .wiki-tree-chevron .mud-icon-root {
    font-size: 18px !important;
    width: 18px !important;
    height: 18px !important;
}

[b-10t8akagxw] .wiki-tree-chevron-empty {
    background-color: transparent;
    cursor: default;
    pointer-events: none;
}

[b-10t8akagxw] .wiki-tree-chevron-empty:hover {
    background-color: transparent;
}

/* Table grid picker (Azure DevOps-style): hover a rectangle from (1,1) to cursor,
   click commits the size. Kept in the toolbar's MudMenu popover. */
[b-10t8akagxw] .wiki-table-picker {
    padding: 8px 10px;
    user-select: none;
}

[b-10t8akagxw] .wiki-table-picker-label {
    font-size: 0.85rem;
    text-align: center;
    margin-bottom: 6px;
    min-height: 1.2em;
    color: var(--mud-palette-text-secondary);
}

[b-10t8akagxw] .wiki-table-picker-grid {
    display: grid;
    grid-template-columns: repeat(10, 16px);
    grid-auto-rows: 16px;
    gap: 2px;
}

[b-10t8akagxw] .wiki-table-picker-cell {
    background: var(--mud-palette-action-default-hover);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 2px;
    cursor: pointer;
    transition: background 0.05s;
}

[b-10t8akagxw] .wiki-table-picker-cell.selected {
    background: var(--mud-palette-primary);
    border-color: var(--mud-palette-primary);
}

/* Shared markdown styling (code, pre, lists, diagrams) lives in MarkdownViewer.razor.css
   — že je ve scope MarkdownVieweru a ne PageEditoru, znamená že stejné rules platí pro
   Wiki view, Wiki preview (přes MarkdownEditor) i Knowledge Details. */

@media (max-width: 960px) {
    .kd-page[b-10t8akagxw] {
        height: auto;
    }

    .kd-grid-wrap[b-10t8akagxw] {
        flex: unset;
        min-height: unset;
        overflow: visible;
    }

    [b-10t8akagxw] .kd-content-col,
    [b-10t8akagxw] .kd-sidebar-col {
        height: auto;
        overflow-y: visible;
    }

    [b-10t8akagxw] .kd-sidebar-toggle {
        display: none;
    }

    .kd-sidebar-collapsed[b-10t8akagxw]  .kd-sidebar-col {
        max-width: 100% !important;
        min-width: unset !important;
        flex: 0 0 100% !important;
        overflow: visible !important;
        padding: 12px !important;
    }

    .kd-sidebar-collapsed[b-10t8akagxw]  .kd-sidebar-content {
        opacity: 1;
        pointer-events: auto;
    }
}
