/* ——— Библиотека «Знаний»: навигация, шапка, превью карточек, экран урока ———
   Отдельный файл поверх styles.css: там у библиотеки накопилось по три слоя правил,
   и править их на месте значило бы ловить ребейз-конфликты (см. память про styles.css).
   Файл подключён последним, поэтому при равной специфичности побеждает он. */

/* Неявная колонка сетки = auto: она раздувалась до ширины всех вкладок сразу
   (у полоски вкладок flex: 0 0 100%), и вся библиотека — с «Создать», таблицей,
   переключателем вида — уезжала за правый край окна. */
.knowledge-shell {
    grid-template-columns: minmax(0, 1fr);
}

/* ========== Шапка раздела: ☰ · крошки · Управление · Создать ========== */

.knowledge-section-header {
    justify-content: flex-start;
    padding-bottom: 10px;
    margin-bottom: 14px;
}

.knowledge-section-header .section-header-actions {
    flex: 1;
    width: 100%;
    flex-wrap: nowrap;
    gap: 8px;
    min-width: 0;
}

.knowledge-header-crumbs {
    flex: 1 1 auto;
    justify-content: flex-start;
    display: flex;
    align-items: baseline;
    gap: 10px;
    min-width: 0;
    margin: 0 0 0 4px;
    overflow: hidden;
    white-space: nowrap;
}

.knowledge-header-crumbs span,
.knowledge-header-crumbs strong {
    display: inline;
}

.knowledge-header-crumbs .knowledge-crumbs {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
    overflow: hidden;
    color: var(--color-text-muted);
    font-size: 14px;
}

.knowledge-crumbs i {
    font-style: normal;
    opacity: 0.6;
    margin: 0 1px;
}

.knowledge-crumbs .current {
    color: var(--color-text-primary);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
}

.knowledge-header-crumbs > strong {
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 500;
}

.knowledge-header-crumbs > #knowledgeStatus {
    color: var(--color-text-muted);
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.knowledge-header-crumbs > #knowledgeStatus:empty {
    display: none;
}

#courseManageBtn {
    margin-left: 0;
    flex-shrink: 0;
    height: 34px;
    min-height: 0;
    padding: 0 12px;
    border-radius: 10px;
    font-size: 13px;
}

/* «＋ Создать ▾» — одна кнопка вместо «Страница / Карта / Доска». */
.kb-create-menu {
    position: relative;
    flex-shrink: 0;
}

.kb-create-trigger {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 14px 0 10px;
    border: 1px solid color-mix(in srgb, var(--color-primary) 55%, transparent);
    border-radius: 10px;
    background: color-mix(in srgb, var(--color-primary) 16%, transparent);
    color: var(--color-text-primary);
    font: inherit;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    cursor: pointer;
}

.kb-create-trigger svg {
    width: 16px;
    height: 16px;
}

.kb-create-trigger:hover,
.kb-create-trigger[aria-expanded="true"] {
    background: color-mix(in srgb, var(--color-primary) 26%, transparent);
}

.kb-create-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    right: 0;
    z-index: 60;
    width: 264px;
    display: grid;
    gap: 2px;
    padding: 6px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: var(--color-bg-solid, var(--color-bg-card));
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
}

.kb-create-dropdown[hidden] {
    display: none;
}

.kb-create-dropdown button {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 8px 10px;
    border: 0;
    border-radius: 8px;
    background: none;
    color: var(--color-text-primary);
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.kb-create-dropdown button:hover,
.kb-create-dropdown button:focus-visible {
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.12));
    outline: none;
}

.kb-create-dropdown b {
    display: block;
    font-size: 14px;
    font-weight: 600;
}

.kb-create-dropdown small {
    display: block;
    color: var(--color-text-muted);
    font-size: 12px;
}

.kb-create-ic {
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    border-radius: 8px;
    background: var(--color-bg-secondary);
    color: var(--color-text-secondary);
}

.kb-create-ic svg {
    width: 18px;
    height: 18px;
}

body.knowledge-editor-open .kb-create-menu {
    display: none;
}

/* ========== Меню библиотеки ========== */

/* Только шире телефона: без условия правило перебивало мобильную «одну колонку»
   из styles.css — меню и список вставали рядом, страница вылезала вбок */
@media (min-width: 821px) {
    .knowledge-library-browser {
        grid-template-columns: 264px minmax(0, 1fr);
        gap: 18px;
    }
}

.knowledge-library-sidebar {
    /* Одна колонка по ширине меню: без этого длинное название урока растягивало
       неявную колонку грида, и меню уезжало вбок вместе с кнопкой сворачивания. */
    grid-template-columns: minmax(0, 1fr);
    overflow-x: hidden;
    gap: 1px;
    padding: 8px;
    border-radius: 12px;
    background: var(--color-bg-secondary);
    scrollbar-width: thin;
}

/* Шапка меню: поиск + сворачивание. Липкая — при длинном дереве не уезжает. */
.knowledge-library-head {
    position: sticky;
    top: -8px;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 6px;
    margin: -8px -8px 6px;
    padding: 8px;
    background: var(--color-bg-secondary);
    border-radius: 12px 12px 0 0;
}

.knowledge-library-search {
    position: relative;
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    align-items: center;
}

.knowledge-library-search-ic {
    position: absolute;
    left: 9px;
    width: 15px;
    height: 15px;
    color: var(--color-text-muted);
    pointer-events: none;
}

.knowledge-library-search-ic svg {
    width: 15px;
    height: 15px;
    display: block;
}

.knowledge-library-search input {
    width: 100%;
    height: 32px;
    margin: 0;
    box-sizing: border-box;
    padding: 0 40px 0 30px;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--color-bg-input, var(--color-bg-primary));
    color: var(--color-text-primary);
    font: inherit;
    font-size: 13px;
}

.knowledge-library-search input:focus {
    outline: none;
    border-color: var(--color-border-focus, var(--color-primary));
}

.knowledge-library-search input::-webkit-search-cancel-button {
    display: none;
}

.knowledge-library-search kbd {
    position: absolute;
    top: 50%;
    right: 7px;
    transform: translateY(-50%);
    line-height: 16px;
    padding: 1px 5px;
    border: 1px solid var(--color-border);
    border-radius: 5px;
    color: var(--color-text-muted);
    font-family: inherit;
    font-size: 11px;
    background: none;
    box-shadow: none;
    pointer-events: none;
}

.knowledge-library-search input:focus ~ kbd,
.knowledge-library-search input:not(:placeholder-shown) ~ kbd {
    display: none;
}

.knowledge-library-collapse {
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    display: grid;
    place-items: center;
    padding: 0;
    border: 0;
    border-radius: 8px;
    background: none;
    color: var(--color-text-muted);
    cursor: pointer;
}

.knowledge-library-collapse svg {
    width: 18px;
    height: 18px;
}

.knowledge-library-collapse:hover {
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.12));
    color: var(--color-text-primary);
}

/* Пункт меню: 32 px, без рамки; выбранный — мягкая заливка, а не обводка. */
.knowledge-library-root {
    min-height: 32px;
    gap: 8px;
    padding: 5px 8px;
    border: 0;
    border-radius: 7px;
    font-size: 14px;
    line-height: 1.25;
}

.knowledge-library-root:hover {
    border-color: transparent;
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.1));
    color: var(--color-text-primary);
}

.knowledge-library-root.active {
    border-color: transparent;
    background: color-mix(in srgb, var(--color-primary) 18%, transparent);
    color: var(--color-text-primary);
    font-weight: 600;
}

.knowledge-library-root-main {
    flex: 1 1 auto;
    gap: 9px;
}

.knowledge-library-glyph {
    width: 18px;
    flex: 0 0 18px;
    display: grid;
    place-items: center;
}

.knowledge-library-glyph svg {
    width: 17px;
    height: 17px;
}

.knowledge-library-root.active .knowledge-library-glyph,
.knowledge-library-root.active .knowledge-library-glyph svg {
    color: var(--color-primary);
}

.knowledge-library-root strong {
    flex-shrink: 0;
    font-size: 12px;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

.knowledge-library-caret {
    flex: 0 0 14px;
    width: 14px;
    height: 14px;
    margin-left: -4px;
    color: var(--color-text-muted);
    transition: transform 0.15s;
}

.knowledge-library-caret svg {
    width: 14px;
    height: 14px;
    display: block;
}

.knowledge-library-caret.open {
    transform: rotate(90deg);
}

/* Заголовок группы: мелкий и тихий, без линии — группы и так видны по отступу. */
.knowledge-library-group {
    margin: 14px 8px 4px;
    padding-top: 0;
    border-top: 0;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.05em;
}

.knowledge-library-group .kb-page-menu-info {
    opacity: 0;
    transition: opacity 0.15s;
}

.knowledge-library-group:hover .kb-page-menu-info,
.knowledge-library-group .kb-page-menu-info:focus-visible {
    opacity: 1;
}

@media (hover: none) {
    .knowledge-library-group .kb-page-menu-info { opacity: 0.6; }
}

.knowledge-library-recent .knowledge-library-root-main {
    color: var(--color-text-secondary);
}

.knowledge-library-more {
    width: 100%;
    margin: 0;
    padding: 4px 8px 4px 35px;
    border: 0;
    border-radius: 7px;
    background: none;
    color: var(--color-text-muted);
    font: inherit;
    font-size: 12px;
    text-align: left;
    cursor: pointer;
}

.knowledge-library-more:hover {
    color: var(--color-text-primary);
}

/* Поиск внутри раскрытого источника (уроки, папки, страницы). */
.knowledge-library-sidebar .knowledge-kaiten-search {
    margin: 4px 0 4px 8px;
}

.knowledge-library-sidebar .knowledge-kaiten-search input {
    height: 30px;
    padding: 0 10px;
    border-radius: 7px;
    font-size: 13px;
}

/* Вложенные уровни: тонкая направляющая слева, как в Notion/Obsidian. */
.knowledge-library-sidebar .knowledge-course-tree,
.knowledge-library-sidebar .knowledge-kaiten-tree-embedded,
.knowledge-library-sidebar .knowledge-page-tree,
.knowledge-library-sidebar .knowledge-telegram-tree,
.knowledge-library-sidebar .knowledge-note-categories {
    margin: 2px 0 6px 16px;
    padding-left: 6px;
    border-left: 1px solid var(--color-border);
}

/* Дерево курса — в тон остальному меню: тот же размер шрифта, без жирных мелких строк. */
.knowledge-library-sidebar .knowledge-course-tree {
    gap: 1px;
}

.knowledge-library-sidebar .knowledge-course-tree-row,
.knowledge-library-sidebar .knowledge-course-lesson-row {
    min-height: 30px;
    padding: 5px 8px;
    border-radius: 7px;
    font-size: 13px;
    line-height: 1.3;
}

.knowledge-library-sidebar .knowledge-course-tree-row strong {
    font-weight: 600;
    font-size: 13px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.knowledge-library-sidebar .knowledge-course-module-row {
    padding-left: 12px;
    color: var(--color-text-secondary);
}

.knowledge-library-sidebar .knowledge-course-module-row > span:not(.knowledge-kaiten-toggle) {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.knowledge-library-sidebar .knowledge-course-tree-lessons {
    padding-left: 14px;
    gap: 1px;
}

.knowledge-library-sidebar .knowledge-course-lesson-row {
    gap: 1px;
    min-width: 0;
}

.knowledge-library-sidebar .knowledge-course-tree-row {
    min-width: 0;
}

.knowledge-library-sidebar .knowledge-course-lesson-row small {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.knowledge-library-sidebar .knowledge-course-lesson-row.active {
    box-shadow: none;
    background: color-mix(in srgb, var(--color-primary) 18%, transparent);
}

.knowledge-library-sidebar .knowledge-course-lesson-row small {
    padding-left: 16px;
    font-size: 11px;
    color: var(--color-text-muted);
}

.knowledge-library-sidebar .knowledge-course-status-badge {
    margin-left: auto;
    font-size: 10px;
    font-weight: 500;
    opacity: 0.75;
}

.knowledge-library-sidebar .knowledge-course-study-status i {
    width: 7px;
    height: 7px;
    flex-basis: 7px;
}

.knowledge-library-sidebar .knowledge-library-sub {
    min-height: 28px;
    padding: 4px 8px;
    border-radius: 7px;
}

/* ——— Свёрнутое меню: узкая колонка иконок, а не пустота ———
   Раньше меню пряталось целиком, и развернуть его можно было только кнопкой в
   другой части экрана. Теперь кнопка остаётся на месте — в шапке колонки. */
@media (min-width: 821px) {
    .knowledge-library-browser.sidebar-collapsed {
        grid-template-columns: 48px minmax(0, 1fr);
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-sidebar {
        display: grid;
        justify-items: center;
        padding: 6px 4px;
        overflow-x: hidden;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-head {
        margin: -6px -4px 6px;
        padding: 6px 4px;
        justify-content: center;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-search,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-root strong,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-caret,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-more,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-recent,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-group--recent,
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-source-rename,
    .knowledge-library-browser.sidebar-collapsed .knowledge-kaiten-filter,
    .knowledge-library-browser.sidebar-collapsed .knowledge-kaiten-search,
    .knowledge-library-browser.sidebar-collapsed .knowledge-course-tree,
    .knowledge-library-browser.sidebar-collapsed .knowledge-kaiten-tree-embedded,
    .knowledge-library-browser.sidebar-collapsed .knowledge-page-tree,
    .knowledge-library-browser.sidebar-collapsed .knowledge-telegram-tree,
    .knowledge-library-browser.sidebar-collapsed .knowledge-note-categories {
        display: none;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-group {
        width: 20px;
        height: 1px;
        margin: 8px auto;
        overflow: hidden;
        background: var(--color-border);
        color: transparent;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-root {
        width: 36px;
        min-height: 36px;
        justify-content: center;
        padding: 0;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-root-main {
        flex: 0 0 auto;
    }

    /* Подпись прячем визуально, но оставляем для экранного диктора. */
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-root-main > span:last-child {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-source-row {
        display: contents;
    }
}

/* Телефон: свёрнутое меню — строка с поиском и кнопкой над содержимым. */
@media (max-width: 820px) {
    .knowledge-library-browser.sidebar-collapsed .knowledge-library-sidebar {
        display: block;
        height: auto;
        max-height: none;
        position: static;
        padding: 6px;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-sidebar > :not(.knowledge-library-head) {
        display: none;
    }

    .knowledge-library-browser.sidebar-collapsed .knowledge-library-head {
        position: static;
        margin: 0;
        padding: 0;
    }

    .knowledge-header-crumbs > strong,
    .knowledge-header-crumbs > #knowledgeStatus,
    .knowledge-crumbs > span:first-child,
    .knowledge-crumbs > i:first-of-type {
        display: none;
    }

    .kb-create-trigger {
        width: 36px;
        height: 36px;
        padding: 0;
        justify-content: center;
    }

    .kb-create-trigger span {
        display: none;
    }
}

/* ========== Карточки с превью (галерея, как в Notion) ========== */

.knowledge-library-grid:not(.is-list) {
    grid-template-columns: repeat(auto-fill, minmax(232px, 1fr));
    gap: 14px;
}

.knowledge-card.has-cover {
    gap: 0;
    padding: 0;
    border: 1px solid var(--color-border);
    border-left-width: 1px;
    border-radius: 12px;
    align-content: start;
    background: var(--color-bg-secondary);
}

.knowledge-card.has-cover:hover {
    transform: translateY(-2px);
    border-color: color-mix(in srgb, var(--color-primary) 45%, var(--color-border));
    box-shadow: 0 8px 22px rgba(0, 0, 0, 0.18);
}

.knowledge-card-cover {
    position: relative;
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    padding: 0;
    border: 0;
    border-bottom: 1px solid var(--color-border);
    background: color-mix(in srgb, var(--color-bg-card) 70%, var(--color-bg-secondary));
    overflow: hidden;
    cursor: pointer;
}

.knowledge-card-cover > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* Под картинкой — начало текста: видно, пока картинка грузится или если она битая. */
.knowledge-card.cover-image .knowledge-card-cover > .knowledge-card-excerpt {
    visibility: hidden;
}

.knowledge-card.cover-image.cover-broken .knowledge-card-cover > img {
    display: none;
}

.knowledge-card.cover-image.cover-broken .knowledge-card-cover > .knowledge-card-excerpt {
    visibility: visible;
}

.knowledge-card-gradient {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    padding: 10px 12px;
}

.knowledge-card-cover-emoji {
    font-size: 30px;
    line-height: 1;
    filter: drop-shadow(0 2px 6px rgba(0, 0, 0, 0.25));
}

.knowledge-card-excerpt {
    position: absolute;
    inset: 0;
    display: block;
    padding: 12px 14px;
    color: var(--color-text-secondary);
    font-size: 11.5px;
    line-height: 1.5;
    text-align: left;
    white-space: pre-line;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(180deg, #000 62%, transparent);
    mask-image: linear-gradient(180deg, #000 62%, transparent);
}

.knowledge-card-excerpt-icon {
    display: block;
    margin-bottom: 4px;
    font-size: 22px;
    line-height: 1.1;
}

.knowledge-card-excerpt-empty {
    color: var(--color-text-muted);
    font-style: italic;
}

.knowledge-card-canvas {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    padding: 6px;
    color: var(--color-text-secondary);
}

.knowledge-card-canvas > svg {
    width: 100%;
    height: 100%;
}

/* Пока схема не пришла — крупная бледная иконка типа. */
.knowledge-card-canvas:not([data-loaded="1"]) > svg {
    width: 38px;
    height: 38px;
    opacity: 0.35;
}

.knowledge-card-body {
    display: grid;
    gap: 5px;
    min-width: 0;
    padding: 10px 12px 11px;
}

.knowledge-card-icon {
    margin-right: 6px;
}

.knowledge-card.has-cover .knowledge-card-title {
    font-size: 14.5px;
}

/* В галерее начало текста уже видно в превью — второй раз не повторяем. */
.knowledge-library-grid:not(.is-list) .knowledge-card.cover-text .knowledge-card-preview {
    display: none;
}

.knowledge-library-grid:not(.is-list) .knowledge-card.cover-image .knowledge-card-preview,
.knowledge-library-grid:not(.is-list) .knowledge-card.cover-canvas .knowledge-card-preview {
    -webkit-line-clamp: 1;
}

/* Заголовок раздела над сеткой: тише и ниже, фильтр — компактнее. */
.knowledge-library-section-head h3 {
    margin: 0;
    font-size: 16px;
}

.knowledge-library-list-filter {
    height: 32px;
    padding: 0 10px;
}

/* Сортировка списка — рядом с фильтром, тем же видом. */
.knowledge-library-list-sort {
    height: 32px;
    max-width: 190px;
    padding: 0 8px;
    border: 1px solid var(--color-border);
    border-radius: 8px;
    background: var(--color-bg-primary);
    color: var(--color-text-primary);
    font: inherit;
    font-size: 13px;
    cursor: pointer;
}

.knowledge-layout-switch button {
    height: 30px;
}

.knowledge-layout-switch button.active {
    background: color-mix(in srgb, var(--color-primary) 22%, transparent);
    color: var(--color-text-primary);
}

/* ========== Экран урока ========== */

/* Видео ещё обрабатывается: компактная плашка вместо пустого прямоугольника на треть экрана. */
.knowledge-course-player-home.is-pending {
    min-height: 0;
}

.knowledge-course-video-pending {
    min-height: 0;
    gap: 8px;
    padding: 14px 16px 14px 58px;
    position: relative;
    border-radius: 10px;
}

.knowledge-course-video-pending::before {
    content: '';
    position: absolute;
    left: 16px;
    top: 50%;
    width: 28px;
    height: 28px;
    margin-top: -14px;
    border-radius: 50%;
    border: 2px solid color-mix(in srgb, var(--color-primary) 30%, transparent);
    border-top-color: var(--color-primary);
    animation: kb-pending-spin 1.1s linear infinite;
}

.knowledge-course-video-pending.failed::before {
    animation: none;
    border-color: rgba(239, 68, 68, 0.6);
}

/* Без активной обработки (видео просто нет) крутилка не нужна. */
.knowledge-course-video-pending:not(:has(.knowledge-course-progress)):not(.failed)::before {
    animation: none;
    border-color: var(--color-border);
}

@keyframes kb-pending-spin {
    to { transform: rotate(360deg); }
}

@media (prefers-reduced-motion: reduce) {
    .knowledge-course-video-pending::before { animation: none; }
}

.knowledge-course-video-pending strong {
    font-size: 14px;
}

.knowledge-course-video-pending p {
    font-size: 13px;
}

.knowledge-course-video-pending .knowledge-course-progress {
    height: 5px;
}

/* Пустые «Материалы урока» (видны только админу) — строка-ссылка, а не карточка. */
.knowledge-course-materials.is-empty:not([open]) {
    width: auto;
    justify-self: start;
    margin-top: 0;
    padding: 4px 10px;
    border-style: dashed;
    border-radius: 8px;
    background: none;
}

.knowledge-course-materials.is-empty:not([open]) > summary .knowledge-type {
    background: none;
    padding: 0;
    color: var(--color-text-muted);
    font-size: 12px;
}

.knowledge-course-materials.is-empty:not([open]) > summary .knowledge-type::before {
    content: '+\00a0';
}

/* Вложенные гриды дерева — тоже в одну колонку по ширине, иначе длинный заголовок
   урока раздвигает неявную колонку и строки уходят под край меню. */
.knowledge-library-sidebar .knowledge-course-tree,
.knowledge-library-sidebar .knowledge-course-tree-children,
.knowledge-library-sidebar .knowledge-course-tree-lessons,
.knowledge-library-sidebar .knowledge-course-lesson-row,
.knowledge-library-sidebar .knowledge-kaiten-tree,
.knowledge-library-sidebar .knowledge-note-categories,
.knowledge-library-sidebar .knowledge-telegram-tree,
.knowledge-library-sidebar .knowledge-page-tree {
    grid-template-columns: minmax(0, 1fr);
    min-width: 0;
}

.knowledge-library-sidebar .knowledge-course-tree-row > strong,
.knowledge-library-sidebar .knowledge-course-tree-row > span:not(.knowledge-kaiten-toggle):not(.knowledge-course-status-badge):not(.knowledge-course-count-badge) {
    min-width: 0;
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ========== Каталог курсов: карточки с обложкой ========== */

.kb-course-cover-bg {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
}

.kb-course-cover-bg > span {
    color: rgba(255, 255, 255, 0.92);
    font-size: 54px;
    font-weight: 700;
    line-height: 1;
    text-shadow: 0 4px 18px rgba(0, 0, 0, 0.25);
}

/* Кадр видео поверх градиента: до загрузки прозрачен, чтобы не мелькала пустая рамка. */
.kb-course-thumb {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.kb-course-thumb:not([src]) {
    visibility: hidden;
}

.kb-course-badge {
    position: absolute;
    top: 8px;
    left: 8px;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.55);
    color: #fff;
    font-size: 11px;
    font-weight: 500;
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* Прогресс курса — тонкая полоса по нижнему краю обложки. */
.kb-course-progress {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 4px;
    background: rgba(0, 0, 0, 0.35);
}

.kb-course-progress > i {
    display: block;
    height: 100%;
    background: var(--color-primary);
}

.kb-course-card .knowledge-card-preview {
    -webkit-line-clamp: 2;
}

.kb-course-continue {
    display: flex;
    align-items: center;
    gap: 7px;
    min-width: 0;
    margin-top: 4px;
    padding: 6px 10px;
    border: 1px solid color-mix(in srgb, var(--color-primary) 40%, var(--color-border));
    border-radius: 8px;
    background: color-mix(in srgb, var(--color-primary) 12%, transparent);
    color: var(--color-text-primary);
    font: inherit;
    font-size: 12.5px;
    text-align: left;
    cursor: pointer;
}

.kb-course-continue > span:first-child {
    flex-shrink: 0;
    color: var(--color-primary);
    font-size: 10px;
}

.kb-course-continue > span:last-child {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.kb-course-continue:hover {
    background: color-mix(in srgb, var(--color-primary) 22%, transparent);
}

/* Строка урока в каталоге модуля: кадр видео слева. */
.kb-course-lesson-thumb {
    position: relative;
    flex: 0 0 72px;
    width: 72px;
    aspect-ratio: 16 / 9;
    display: grid;
    place-items: center;
    overflow: hidden;
    border: 1px solid var(--color-border);
    border-radius: 6px;
    background: color-mix(in srgb, var(--color-bg-card) 60%, transparent);
    color: var(--color-text-muted);
    font-size: 11px;
}

.kb-course-lesson-thumb > img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.kb-course-lesson-thumb > img:not([src]) {
    visibility: hidden;
}

.knowledge-course-catalog-lesson {
    padding: 6px 12px 6px 6px;
}

/* В styles.css у `.knowledge-course-progress` два смысла: прогресс курса (полоса + подпись)
   и полоска обработки видео. Второе правило лежит ниже и превращало подпись «0 из 2» в
   толстую серую полосу — возвращаем каталогу его вид. */
.knowledge-course-catalog .knowledge-course-progress {
    height: auto;
    display: grid;
    gap: 5px;
    border-radius: 0;
    background: none;
    overflow: visible;
}

.knowledge-course-catalog .knowledge-course-progress > span {
    height: auto;
    border-radius: 0;
    background: none;
    color: var(--color-text-muted);
    font-size: 12px;
}

.knowledge-course-catalog .knowledge-course-progress-bar {
    height: 5px;
}

/* Шапка курса: обложка слева, описание, прогресс и «Продолжить» справа. */
.kb-course-back {
    justify-self: start;
}

.kb-course-hero {
    display: grid;
    grid-template-columns: minmax(180px, 280px) minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    padding: 14px;
    border: 1px solid var(--color-border);
    border-radius: 12px;
    background: var(--color-bg-secondary);
    text-align: left;
}

.kb-course-hero-cover {
    position: relative;
    aspect-ratio: 16 / 9;
    overflow: hidden;
    border-radius: 9px;
}

.kb-course-hero-main {
    display: grid;
    gap: 8px;
    min-width: 0;
}

.kb-course-hero-main h3 {
    margin: 0;
    font-size: 20px;
    line-height: 1.25;
    color: var(--color-text-primary);
}

.kb-course-hero-main p {
    margin: 0;
    color: var(--color-text-secondary);
    font-size: 14px;
    line-height: 1.5;
}

.kb-course-hero-start {
    justify-self: start;
    max-width: 100%;
    padding: 8px 14px;
    font-size: 13.5px;
}

@media (max-width: 640px) {
    .kb-course-hero {
        grid-template-columns: minmax(0, 1fr);
    }
}


/* ========== Вид «списком» во всех разделах — как файлы в Облаке ==========
   Строка: миниатюра слева, название в одну строку, под ним тихая подпись;
   разделитель начинается после миниатюры. Карточной рамки нет. */

.knowledge-section-count {
    margin-left: 4px;
    color: var(--color-text-muted);
    font-size: 13px;
    font-weight: 500;
}

.knowledge-layout-switch button {
    display: grid;
    place-items: center;
}

.knowledge-layout-switch svg {
    width: 16px;
    height: 16px;
}

.knowledge-card-tile {
    display: none;
}

.knowledge-library-grid.is-list {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
}

.knowledge-library-grid.is-list > .knowledge-card,
.knowledge-library-grid.is-list > .knowledge-card.has-cover {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr);
    align-items: center;
    gap: 14px;
    padding: 0 10px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    box-shadow: none;
    transform: none;
}

.knowledge-library-grid.is-list > .knowledge-card:hover {
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.08));
    box-shadow: none;
    transform: none;
}

.knowledge-library-grid.is-list .knowledge-card-cover {
    grid-row: 1 / span 2;
    width: 64px;
    height: 48px;
    aspect-ratio: auto;
    margin: 8px 0;
    border: 1px solid var(--color-border);
    border-radius: 8px;
}

.knowledge-library-grid.is-list .knowledge-card.cover-text .knowledge-card-cover,
.knowledge-library-grid.is-list .knowledge-card.cover-broken .knowledge-card-cover {
    display: grid;
    place-items: center;
}

.knowledge-library-grid.is-list .knowledge-card.cover-text .knowledge-card-excerpt,
.knowledge-library-grid.is-list .knowledge-card.cover-broken .knowledge-card-excerpt {
    display: none;
}

.knowledge-library-grid.is-list .knowledge-card.cover-broken .knowledge-card-cover > img {
    display: none;
}

.knowledge-library-grid.is-list .knowledge-card.cover-image:not(.cover-broken) .knowledge-card-tile {
    display: none;
}

.knowledge-library-grid.is-list .knowledge-card-tile {
    display: grid;
    place-items: center;
    width: 100%;
    height: 100%;
    color: var(--color-text-muted);
    font-size: 22px;
    line-height: 1;
}

.knowledge-library-grid.is-list .knowledge-card-tile svg {
    width: 22px;
    height: 22px;
}

.knowledge-library-grid.is-list .knowledge-card-cover .knowledge-card-cover-emoji {
    font-size: 16px;
}

.knowledge-library-grid.is-list .knowledge-card-gradient {
    padding: 4px 6px;
}

.knowledge-library-grid.is-list .knowledge-card-canvas {
    padding: 2px;
}

.knowledge-library-grid.is-list .knowledge-card-canvas:not([data-loaded="1"]) > svg {
    width: 20px;
    height: 20px;
}

.knowledge-library-grid.is-list .knowledge-card-body {
    align-self: stretch;
    align-content: center;
    gap: 3px;
    padding: 10px 0;
    border-bottom: 1px solid var(--color-border);
}

.knowledge-library-grid.is-list > .knowledge-card:last-child .knowledge-card-body {
    border-bottom: 0;
}

.knowledge-library-grid.is-list .knowledge-card-title {
    font-size: 14.5px;
    -webkit-line-clamp: 1;
}

.knowledge-library-grid.is-list .knowledge-card-preview,
.knowledge-library-grid.is-list .knowledge-card-snippet {
    display: none;
}

.knowledge-library-grid.is-list .knowledge-card-tags span {
    padding: 0 6px;
    font-size: 10.5px;
}

/* Курс списком: обложка 16:9, справа — «Продолжить». */
.knowledge-library-grid.is-list > .knowledge-card.has-cover.kb-course-card {
    grid-template-columns: 96px minmax(0, 1fr);
}

.knowledge-library-grid.is-list .kb-course-card .knowledge-card-cover {
    width: 96px;
    height: 54px;
}

.knowledge-library-grid.is-list .kb-course-cover-bg > span {
    font-size: 22px;
}

.knowledge-library-grid.is-list .kb-course-badge {
    top: 3px;
    left: 3px;
    padding: 0 5px;
    font-size: 9.5px;
}

.knowledge-library-grid.is-list .kb-course-card .knowledge-card-body {
    grid-template-columns: minmax(0, 1fr) auto;
    column-gap: 12px;
}

.knowledge-library-grid.is-list .kb-course-card .knowledge-card-title,
.knowledge-library-grid.is-list .kb-course-card .knowledge-card-meta {
    grid-column: 1;
}

.knowledge-library-grid.is-list .kb-course-continue {
    grid-column: 2;
    grid-row: 1 / span 2;
    align-self: center;
    max-width: 260px;
    margin: 0;
}

/* Старые карточки «Материалов» и «Подборок» списком: только тип и название. */
.knowledge-library-grid.is-list > .knowledge-card:not(.has-cover) {
    grid-template-columns: minmax(0, 1fr);
    gap: 2px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
}

.knowledge-library-grid.is-list > .knowledge-card:not(.has-cover) h3 {
    font-size: 14.5px;
}

.knowledge-library-grid.is-list > .knowledge-artifact > :not(.knowledge-card-top):not(h3) {
    display: none;
}

/* Уроки курса карточками: кадр сверху, название в две строки. */
.kb-course-lessons-head {
    margin-top: 4px;
}

.kb-course-modules {
    display: grid;
    gap: 14px;
}

.kb-course-modules.is-cards .knowledge-course-catalog-lessons {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 12px;
}

.kb-course-modules.is-cards .knowledge-course-catalog-lesson {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    align-content: start;
    gap: 6px 8px;
    padding: 0 0 10px;
    border: 1px solid var(--color-border);
    border-radius: 10px;
    overflow: hidden;
}

.kb-course-modules.is-cards .kb-course-lesson-thumb {
    grid-column: 1 / -1;
    width: 100%;
    flex-basis: auto;
    border-radius: 0;
    font-size: 18px;
}

.kb-course-modules.is-cards .knowledge-course-study-status {
    margin-left: 10px;
    align-self: start;
    margin-top: 5px;
}

.kb-course-modules.is-cards .knowledge-course-catalog-lesson-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    padding-right: 10px;
    white-space: normal;
}

.kb-course-modules.is-cards .knowledge-course-catalog-lesson small {
    grid-column: 2;
    padding-right: 10px;
}

.kb-course-modules.is-cards .knowledge-course-catalog-lesson small:empty {
    display: none;
}

/* Папки Кайтена и каналы Telegram карточками — плитки. */
.knowledge-kaiten-list.is-cards {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 10px;
    margin-bottom: 14px;
}

.knowledge-kaiten-list.is-cards .knowledge-kaiten-row.is-folder {
    grid-template-columns: auto minmax(0, 1fr) auto;
    min-height: 0;
    padding: 12px;
}

.knowledge-kaiten-head-summary .knowledge-layout-switch {
    flex-shrink: 0;
}

/* Книги и презентации списком. */
.kb-books-grid.is-list,
.kb-decks-grid.is-list {
    grid-template-columns: minmax(0, 1fr);
    gap: 0;
}

.kb-books-grid.is-list .kb-book-card,
.kb-decks-grid.is-list .kb-deck-card {
    flex-direction: row;
    align-items: center;
    gap: 14px;
    padding: 8px 10px;
    border: 0;
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
    background: transparent;
    overflow: visible;
}

.kb-books-grid.is-list .kb-book-cover {
    flex: 0 0 40px;
    width: 40px;
    box-shadow: none;
    border-radius: 4px;
}

.kb-books-grid.is-list .kb-book-cover-fallback {
    font-size: 20px;
}

.kb-decks-grid.is-list .kb-deck-cover {
    flex: 0 0 76px;
    width: 76px;
    border-radius: 6px;
}

.kb-decks-grid.is-list .kb-deck-cover-fallback {
    font-size: 18px;
}

.kb-books-grid.is-list .kb-book-meta,
.kb-decks-grid.is-list .kb-deck-meta {
    flex: 1;
    min-width: 0;
    padding: 0;
}

.kb-books-grid.is-list .kb-book-title {
    font-size: 14.5px;
    -webkit-line-clamp: 1;
}

.kb-decks-grid.is-list .kb-deck-progress {
    max-width: 240px;
}

.kb-books-grid.is-list .kb-book-actions,
.kb-decks-grid.is-list .kb-deck-actions {
    position: static;
    box-shadow: none;
    background: none;
}

/* Иконка папки вместо «▸» — как в файловом менеджере. */
.kb-folder-icon {
    display: grid;
    place-items: center;
    color: #e8b84a;
}

.kb-folder-icon svg {
    width: 22px;
    height: 22px;
    fill: color-mix(in srgb, #e8b84a 28%, transparent);
}

.knowledge-kaiten-list.is-cards .knowledge-kaiten-row.is-folder strong {
    font-size: 14px;
}

.knowledge-kaiten-list.is-cards .knowledge-kaiten-row.is-folder p {
    font-size: 12px;
    color: var(--color-text-muted);
}

/* Уроки списком — строки с разделителем, как файлы в Облаке. */
.kb-course-modules:not(.is-cards) .knowledge-course-catalog-lessons {
    gap: 0;
}

.kb-course-modules:not(.is-cards) .knowledge-course-catalog-lesson {
    gap: 12px;
    padding: 8px 10px 8px 6px;
    border: 0;
    border-bottom: 1px solid var(--color-border);
    border-radius: 0;
    background: transparent;
}

.kb-course-modules:not(.is-cards) .knowledge-course-catalog-lesson:last-child {
    border-bottom: 0;
}

.kb-course-modules:not(.is-cards) .knowledge-course-catalog-lesson:hover {
    border-color: var(--color-border);
    border-radius: 8px;
    background: var(--color-bg-hover, rgba(127, 127, 127, 0.08));
}

.kb-course-modules:not(.is-cards) .kb-course-lesson-thumb {
    flex-basis: 84px;
    width: 84px;
}

/* Конспекты: строка источника. Сетка из четырёх колонок с жёсткими минимумами
   не влезала в контент рядом с меню — кнопки уезжали за правый край, а форма
   раздувалась по высоте. Теперь поля тянутся, а кнопки переносятся строкой ниже. */
.knowledge-outline-form.knowledge-outline-source-row {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
}

.knowledge-outline-source-row > label {
    flex: 1 1 200px;
    min-width: 0;
}

.knowledge-outline-source-row > label:nth-of-type(2) {
    flex: 0 1 150px;
}

.knowledge-outline-source-row > .knowledge-outline-form-actions {
    flex: 0 0 auto;
    margin-left: auto;
}

.knowledge-outline-source-row select {
    height: 40px;
}

/* Вид «Таблица» — как список в Finder: строка на материал, полосы через одну,
   заголовки колонок сортируют. */
.knowledge-notes-table-wrap {
    overflow-x: auto;
    /* Колонки прячутся по ширине самой таблицы, а не окна: при открытом меню
       библиотеки таблица узкая и на широком экране — «Название» схлопывалось в ноль. */
    container-type: inline-size;
}

.knowledge-notes-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-size: 13px;
}

.knowledge-notes-table th {
    border-bottom: 1px solid var(--color-border);
    padding: 8px 10px;
    text-align: left;
    font-weight: 500;
    color: var(--color-text-secondary);
}

.knowledge-notes-table th:has(> button) {
    padding: 0;
}

.knowledge-notes-table th > button {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 8px 10px;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.knowledge-notes-table th.is-sorted {
    color: var(--color-text-primary);
}

.knowledge-notes-table-arrow {
    font-size: 9px;
    opacity: 0.7;
}

.knowledge-notes-table .col-title { width: auto; }
.knowledge-notes-table .col-place { width: 22%; }
.knowledge-notes-table .col-created,
.knowledge-notes-table .col-updated { width: 170px; }

.knowledge-notes-table td {
    padding: 7px 10px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--color-text-secondary);
}

.knowledge-notes-table td.col-title {
    color: var(--color-text-primary);
}

.knowledge-notes-table tbody tr {
    cursor: pointer;
}

.knowledge-notes-table tbody tr:nth-child(even) {
    background: color-mix(in srgb, var(--color-text-primary) 4%, transparent);
}

.knowledge-notes-table tbody tr:hover,
.knowledge-notes-table tbody tr:focus-visible {
    background: color-mix(in srgb, var(--color-primary) 14%, transparent);
    outline: none;
}

.knowledge-notes-table-icon {
    display: inline-block;
    width: 22px;
}

@media (max-width: 820px) {
    .knowledge-notes-table .col-place { display: none; }
    .knowledge-notes-table .col-created,
    .knowledge-notes-table .col-updated { width: 120px; }
}

@media (max-width: 560px) {
    .knowledge-notes-table .col-created { display: none; }
}

@container (max-width: 760px) {
    .knowledge-notes-table .col-created,
    .knowledge-notes-table .col-updated { width: 124px; }
}

@container (max-width: 500px) {
    .knowledge-notes-table .col-place { display: none; }
}

@container (max-width: 400px) {
    .knowledge-notes-table .col-created { display: none; }
}

.knowledge-notes-table tr.is-folder td.col-title {
    font-weight: 600;
}

.knowledge-notes-table-icon svg {
    width: 16px;
    height: 16px;
    vertical-align: -3px;
}

.knowledge-notes-table-badge {
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 6px;
    background: color-mix(in srgb, #dc2626 14%, transparent);
    color: #dc2626;
    font-size: 11px;
}

.knowledge-notes-table .col-actions {
    width: 132px;
    text-align: right;
}

.knowledge-notes-table td.col-actions .kb-book-actions {
    position: static;
    display: inline-flex;
    gap: 2px;
    opacity: 1;
}

/* Конспекты: заголовок над списком источников и вид «список» одной колонкой. */
.knowledge-outline-sidebar > .knowledge-library-section-head {
    margin-bottom: 8px;
}

.knowledge-outline-list.is-list {
    grid-template-columns: minmax(0, 1fr);
}

/* ========== Кнопка «🎬 Суфлёр» на странице строки контент-плана (Э2) ========== */

.kb-db-peek-head .kb-db-tp-btn { margin-right: auto; }
.kb-db-row-tools { display: inline-flex; align-items: center; gap: 8px; }
.kb-db-peek-head .kb-db-row-tools { margin-right: auto; }
.kb-db-peek-head .kb-db-row-tools .kb-db-tp-btn { margin-right: 0; }
.kb-db-assist-btn {
    display: inline-flex;
    align-items: center;
    height: 30px;
    padding: 0 12px;
    border-radius: 8px;
    border: 1px solid var(--color-border, rgba(0, 0, 0, 0.12));
    background: transparent;
    color: var(--color-text);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}
.kb-db-assist-btn:hover { background: var(--color-bg-secondary, rgba(0, 0, 0, 0.04)); }

/* Публикация и итоги (Э6) */
.kb-db-pub-panel, .kb-db-stats-panel { width: min(460px, calc(100vw - 32px)); display: flex; flex-direction: column; gap: 8px; }
.kb-db-pub-grid { display: grid; grid-template-columns: 0.8fr 1.4fr; gap: 6px; }
.kb-db-pub-grid label { display: flex; flex-direction: column; gap: 2px; font-size: 11px; color: var(--color-text-secondary, #64748b); }
.kb-db-pub-grid .kb-db-menu-input { margin: 0; min-width: 0; }
.kb-db-pub-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.kb-db-pub-chip { display: inline-flex; align-items: center; gap: 4px; padding: 3px 8px; border-radius: 999px; background: var(--color-bg-secondary, rgba(0, 0, 0, 0.05)); font-size: 12px; cursor: pointer; }
.kb-db-stats-periods { display: flex; gap: 4px; }
.kb-db-stats-period { flex: 1; padding: 4px 6px; border: 1px solid var(--color-border-light, rgba(0, 0, 0, 0.1)); border-radius: 6px; background: transparent; color: var(--color-text-secondary, #64748b); font-size: 12px; cursor: pointer; }
.kb-db-stats-period.is-active { background: var(--color-primary, #4aa3ff); border-color: transparent; color: #fff; }
.kb-db-stats-totals { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
.kb-db-stats-totals > div { display: flex; flex-direction: column; align-items: center; padding: 8px 4px; border-radius: 8px; background: var(--color-bg-secondary, rgba(0, 0, 0, 0.04)); }
.kb-db-stats-totals b { font-size: 18px; font-variant-numeric: tabular-nums; }
.kb-db-stats-totals small { font-size: 11px; color: var(--color-text-secondary, #64748b); }
.kb-db-stats-table { display: flex; flex-direction: column; gap: 2px; font-size: 13px; }
.kb-db-stats-table > div { display: grid; grid-template-columns: 1fr 32px 92px 64px; gap: 6px; align-items: baseline; padding: 3px 4px; }
.kb-db-stats-table > div > :not(:first-child) { text-align: right; font-variant-numeric: tabular-nums; }
.kb-db-stats-top { margin: 0; padding-left: 20px; font-size: 13px; line-height: 1.6; }
.kb-db-stats-link { padding: 0; border: 0; background: none; color: var(--color-primary, #4aa3ff); font: inherit; text-align: left; cursor: pointer; }
@media (max-width: 480px) {
    .kb-db-pub-grid { grid-template-columns: 1fr; }
}

.kb-db-dev-idea { align-items: flex-start; }
.kb-db-dev-idea > span:not(.kb-db-shoot-status) { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.kb-db-dev-idea small { color: var(--color-text-secondary, #64748b); font-size: 12px; line-height: 1.35; }
.kb-db-dev-idea.is-done { opacity: 0.6; }

/* Панель помощника (Э5) */
.kb-db-assist-panel { width: min(480px, calc(100vw - 32px)); display: flex; flex-direction: column; gap: 2px; }
.kb-db-assist-action { display: flex; align-items: flex-start; gap: 10px; text-align: left; }
.kb-db-assist-action small { display: block; color: var(--color-text-secondary, #64748b); font-size: 11px; font-weight: 400; }
.kb-db-assist-action.is-active { background: var(--color-bg-secondary, rgba(0, 0, 0, 0.05)); }
.kb-db-assist-action:disabled { opacity: 0.6; cursor: progress; }
.kb-db-assist-ic { flex: 0 0 22px; font-size: 16px; }
.kb-db-assist-result { margin-top: 8px; padding-top: 8px; border-top: 1px solid var(--color-border-light, rgba(0, 0, 0, 0.08)); max-height: min(52vh, 460px); overflow-y: auto; display: flex; flex-direction: column; gap: 8px; }
.kb-db-assist-wait, .kb-db-assist-ok { padding: 8px 4px; color: var(--color-text-secondary, #64748b); }
.kb-db-assist-error { padding: 8px; border-radius: 6px; background: rgba(239, 68, 68, 0.12); color: #b91c1c; }
.kb-db-assist-note { font-size: 11px; color: var(--color-text-muted, #94a3b8); }
.kb-db-assist-draft p { margin: 0 0 6px; line-height: 1.45; }
.kb-db-assist-draft ol, .kb-db-assist-lines { margin: 0; padding-left: 20px; line-height: 1.5; }
.kb-db-assist-hooks { display: flex; flex-direction: column; gap: 8px; }
.kb-db-assist-hook { display: flex; flex-direction: column; gap: 4px; padding: 6px; border-radius: 6px; background: var(--color-bg-secondary, rgba(0, 0, 0, 0.04)); }
.kb-db-assist-hook-btns { display: flex; gap: 6px; flex-wrap: wrap; }
.kb-db-assist-hook.is-best { box-shadow: inset 0 0 0 1px rgba(245, 158, 11, 0.55); }
.kb-db-assist-hook-text { font-weight: 600; line-height: 1.4; }
.kb-db-assist-best { font-size: 11px; color: #b45309; }
.kb-db-assist-goals { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; padding: 2px 0 8px; margin-bottom: 4px; border-bottom: 1px solid var(--color-border-light, rgba(0, 0, 0, 0.08)); }
.kb-db-assist-goals-label { font-size: 12px; color: var(--color-text-secondary, #64748b); margin-right: 2px; }
.kb-db-assist-goal { padding: 3px 9px; border-radius: 999px; border: 1px solid var(--color-border-light, rgba(0, 0, 0, 0.12)); background: transparent; color: inherit; font: inherit; font-size: 12px; cursor: pointer; }
.kb-db-assist-goal:hover { background: var(--color-bg-secondary, rgba(0, 0, 0, 0.04)); }
.kb-db-assist-goal.is-active { background: var(--color-primary, #6366f1); border-color: var(--color-primary, #6366f1); color: #fff; }
.kb-db-assist-frames { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 2px; font-size: 12px; line-height: 1.4; }
.kb-db-assist-frames b { display: inline-block; min-width: 42px; color: var(--color-text-secondary, #64748b); font-weight: 600; font-variant-numeric: tabular-nums; }
.kb-db-assist-checks { margin: 0; padding: 0 0 0 16px; font-size: 11px; line-height: 1.4; color: #b45309; }
.kb-db-assist-checks.is-ok { padding: 0; color: #15803d; }
.kb-db-assist-beats small { display: block; color: var(--color-text-secondary, #64748b); font-size: 11px; }
.kb-db-assist-issues { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.kb-db-assist-issues li { padding: 6px 8px; border-radius: 6px; border-left: 3px solid #f59e0b; background: rgba(245, 158, 11, 0.08); line-height: 1.4; }
.kb-db-assist-issues li.is-high { border-left-color: #ef4444; background: rgba(239, 68, 68, 0.08); }
.kb-db-assist-issues li.is-model { border-left-color: #8b5cf6; background: rgba(139, 92, 246, 0.08); }
.kb-db-assist-issues small { display: block; color: var(--color-text-secondary, #64748b); font-size: 12px; }
.kb-db-row-actions { display: flex; margin-bottom: 10px; }

.kb-db-tp-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 30px;
    padding: 0 12px;
    border-radius: 8px;
    background: var(--color-primary, #6d28d9);
    color: #fff;
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}
.kb-db-tp-btn:hover { filter: brightness(1.08); }

/* Шеврон «›» у источника — отдельная кнопка-зона: раскрывает дерево в меню, а клик
   по остальной строке только открывает раздел. Зона нажатия шире самого значка. */
.knowledge-library-caret[data-library-tree-caret] {
    box-sizing: content-box;
    padding: 5px;
    margin: -5px -5px -5px -9px;
    border-radius: 6px;
    cursor: pointer;
}

.knowledge-library-caret[data-library-tree-caret]:hover {
    color: var(--color-text-primary);
    background: color-mix(in srgb, var(--color-text-primary) 10%, transparent);
}

/* «Где лежит» — ссылка в место: родительская страница, категория или источник. */
.knowledge-notes-table-place {
    max-width: 100%;
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    cursor: pointer;
    vertical-align: bottom;
}

.knowledge-notes-table-place:hover,
.knowledge-notes-table-place:focus-visible {
    color: var(--color-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
    outline: none;
}

/* Группы при сортировке «По месту»: заголовок как папка в Finder, сворачивает группу. */
.knowledge-notes-table tbody tr.knowledge-notes-table-group {
    background: none;
}

.knowledge-notes-table tr.knowledge-notes-table-group td {
    padding: 14px 10px 6px;
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-primary);
    font-weight: 600;
}

.knowledge-notes-table tbody tr.knowledge-notes-table-group:first-child td {
    padding-top: 8px;
}

.knowledge-notes-table-group-caret {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: 6px;
    vertical-align: -2px;
    color: var(--color-text-muted);
    transform: rotate(90deg);
    transition: transform 0.15s;
}

.knowledge-notes-table-group-caret svg {
    width: 14px;
    height: 14px;
    display: block;
}

.knowledge-notes-table-group.is-collapsed .knowledge-notes-table-group-caret {
    transform: none;
}

.knowledge-notes-table-group-count {
    margin-left: 8px;
    color: var(--color-text-muted);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

.knowledge-notes-table tbody tr[hidden] {
    display: none;
}

/* Шапка «Знания / раздел / категория» — звенья-ссылки (раньше были простым текстом). */
.knowledge-crumbs button {
    padding: 0;
    border: 0;
    background: none;
    color: inherit;
    font: inherit;
    white-space: nowrap;
    cursor: pointer;
}

.knowledge-crumbs button:hover,
.knowledge-crumbs button:focus-visible {
    color: var(--color-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
    outline: none;
}

/* Путь страницы: первое звено — раздел-источник («Notion», «Создано в LIFE UP»). */
.kb-page-crumb-source {
    color: var(--color-text-muted);
}

/* Всплывающий список у звена пути: заголовок «Внутри «Родитель» · N страниц». */
.kb-crumb-peek-head {
    padding: 5px 9px 6px;
    color: var(--color-text-muted);
    font-size: 12px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Ручка блоков «+ ⠿» у пустой страницы: расширение делает её видимой ещё до того, как
   посчитало позицию (left/top в style), и она вставала в левый угол поверх пути
   страницы. Без координат — прячем. */
.kb-drag-handle:not([style*="top:"]) {
    visibility: hidden !important;
    pointer-events: none !important;
}
