/* ============================================================
   File card (Frame 53594) — карточка-misfit: сложный адаптив + состояния.
   Обёртка списка и шапка таблицы переехали в Tailwind (см. _file-table.php,
   _header.php). Здесь остаётся карточка целиком.
   ============================================================ */

/* Шапка таблицы: сортировка по «Дате» — шеврон вниз = desc (новые сверху),
   вверх = asc. Крутим так же, как стрелку сворачивания архива (см. ниже). */
[data-lk-sort] svg { transition: transform 140ms; }
[data-lk-sort][data-dir="asc"] svg { transform: rotate(180deg); }

/* Шапка таблицы: раньше правый столбец «Плеер с таймкодами» упирался в скруглённый угол
   (текст шире своего w-[127px], вылезал за край), чинили асимметричным padding-right:40px
   (при px-5=20px слева) — из-за этого весь правый блок колонок сидел не по центру своей
   рамки. Настоящая причина — сам текст (150px) шире объявленной колонки (127px); увеличили
   колонку в _header.php до w-[150px], текст умещается — padding снова симметричный (px-5). */

/* Карточка файла (Frame 53594) */
.lk-file-card {
    background-color: var(--lk-white);
    border-radius: 16px;
    padding: 0 20px;
    box-shadow: 0 1px 3px rgba(21, 21, 21, 0.04), 0 0 0 1px rgba(var(--lk-slate), 0.06);
}

.lk-file-card__inner {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 20px 0;
}

/* Верхняя строка карточки. align-items:flex-start (не center) — иначе .main и .actions-top
   центрируются друг относительно друга по высоте и съезжают при любой разнице их высот
   (например, когда включён AI-отчёт), из-за чего плавает и разделительная полоса ниже. */
.lk-file-card__top {
    position: relative;
    display: flex;
    gap: 20px;
    align-items: flex-start;
    width: 100%;
}

/* Разделительная полоса между строкой файла (имя/плеер/AI-отчёт/скачать) и строкой мета
   (Audio/Video, язык/спикеры, обсудить с ИИ+готовые отчёты, саммари+удалить). Раньше сидела
   бордером в самом низу .lk-file-card__top (под обеими строками сразу) — подняли абсолютным
   позиционированием. 52px — после нижнего края .lk-file-card__file-duration (46px) и перед
   стартом второй строки (62px: и Audio/Video — см. margin-top у .lk-file-card__media-group,
   и остальные колонки actions-top — 36px кнопка + 26px гэп, см. .lk-file-card__player-group
   и соседние) — подобрано так, чтобы не наезжать на контент ни слева, ни справа. */
.lk-file-card__row-divider {
    position: absolute;
    top: 52px;
    left: 0;
    right: 0;
    height: 1px;
    background-color: rgba(var(--lk-slate), 0.08);
}

.lk-file-card__main {
    display: flex;
    gap: 20px;
    align-items: flex-start;
    /* Ширина ровно как первый блок шапки (дата 82px + gap 72px + файл 300px, см. _header.php) —
       иначе всё, что идёт после (.lk-file-card__actions-top), уезжает относительно колонок шапки. */
    width: 512px;
    flex-shrink: 0;
}

.lk-file-card__date-block {
    display: flex;
    gap: 10px;
    align-items: flex-start;
}

/* Бейдж статуса (фон + иконка по статусу), заполняется в file-list.js */
.lk-file-card__status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    flex-shrink: 0;
    margin-top: 1px;
    border-radius: 4px;
    background-color: var(--lk-bg);
}

.lk-file-card__status-icon {
    display: inline-flex;
    width: 18px;
    height: 18px;
}

.lk-file-card__status-icon svg { width: 100%; height: 100%; display: block; }

.lk-file-card__status--recognized { background-color: #C9FFEF; }
.lk-file-card__status--recognized .lk-file-card__status-icon { color: #40DB88; }

.lk-file-card__status--error { background-color: #FDE9E9; }
.lk-file-card__status--error .lk-file-card__status-icon { color: #FF122E; }

.lk-file-card__status--in-progress { background-color: #FDF8E9; }
.lk-file-card__status--in-progress .lk-file-card__status-icon { color: #FFD400; }

.lk-file-card__status--pause { background-color: var(--lk-bg); }
.lk-file-card__status--pause .lk-file-card__status-icon { color: #B7BFCA; }

.lk-file-card__status--payment { background-color: #FDF2E9; }
.lk-file-card__status--payment .lk-file-card__status-icon { color: #FF9317; }

.lk-file-card__date {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding-top: 5px;
}

.lk-file-card__date-day {
    font-size: 14px;
    line-height: 1.1;
    color: var(--lk-text);
    white-space: nowrap;
}

.lk-file-card__date-time {
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey-light);
    white-space: nowrap;
}

/* Иконка ссылки на источник — для файлов по ссылке и встреч (есть url источника).
   Показываем/прячем через visibility, а не display: скрытая иконка остаётся флекс-элементом и
   резервирует своё место (16px + gap), поэтому имя файла у файлов БЕЗ иконки выровнено по той же
   вертикали, что и у файлов с иконкой (иначе display:none схлопывал и бокс, и gap — имя уезжало влево). */
.lk-file-card__link-icon {
    display: inline-flex;
    visibility: hidden;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    margin-top: 3px;
    color: var(--lk-icon-grey);
}

.lk-file-card[data-url-file="1"] .lk-file-card__link-icon,
.lk-file-card[data-meeting="1"] .lk-file-card__link-icon {
    visibility: visible;
}

.lk-file-card__link-icon svg,
.lk-file-card__link-icon img { width: 100%; height: 100%; display: block; }

/* Иконка Telegram — файл прислан через бота (is_file_from_messenger). Тот же приём, что у
   .lk-file-card__link-icon: скрываем через visibility, а не display, чтобы не сдвигать имя файла.
   Обе иконки (link-icon и telegram-icon) — переключаемые «слоты» в одном и том же ряду: у
   каждого файла видна максимум одна из них, но раньше они сидели в РАЗНЫХ зарезервированных
   позициях (link-icon — сразу после даты, telegram — на 36px правее), поэтому при пролистывании
   списка иконка «прыгала» то левее, то правее в зависимости от типа файла.
   margin-left: -36px возвращает telegram-icon точно в позицию link-icon (совпадает по факту
   измерений), чтобы все файлы, независимо от типа, показывали свою иконку на одной вертикали. */
.lk-file-card__telegram-icon {
    display: inline-flex;
    visibility: hidden;
    width: 14px;
    height: 14px;
    flex-shrink: 0;
    margin-top: 3px;
    margin-left: -36px;
}

.lk-file-card[data-from-messenger="1"] .lk-file-card__telegram-icon {
    visibility: visible;
}

.lk-file-card__telegram-icon svg,
.lk-file-card__telegram-icon img { width: 100%; height: 100%; display: block; }

.lk-file-card__file {
    display: flex;
    flex-direction: column;
    gap: 4px;
    /* Фиксированная ширина как у колонки «Исходный файл» в шапке (300px) — иначе flex:1 растягивает
       блок на всю освободившуюся ширину .lk-file-card__main и между (коротким) именем и кнопками
       действий справа зияет пустота. */
    width: 300px;
    flex: none;
    min-width: 0;
}

.lk-file-card__file-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lk-file-card__file-name {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.1;
    color: var(--lk-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    /* Ограничиваем длину имени — длинные названия обрезаются многоточием (long-filenam…),
       чтобы не растягивать строку. Полное имя видно в подсказке (title) и в режиме переименования. */
    max-width: 220px;
}

/* Режим инлайн-редактирования названия */
.lk-file-card__file-name[contenteditable="true"] {
    overflow: visible;
    text-overflow: clip;
    outline: none;
    padding: 2px 6px;
    margin: -2px -6px;
    border-radius: 6px;
    background-color: var(--lk-white);
    box-shadow: 0 0 0 1.5px var(--lk-violet);
    cursor: text;
}

.lk-file-card__file-duration {
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey-light);
}

/* Правая часть верхней строки — действия. justify-content:space-between с ровно теми же
   колонками, что и в шапке (Результат/AI-отчёт/Плеер), — первый и последний элемент садятся
   точно на левый/правый край этого блока, так же как соответствующие подписи в _header.php. */
.lk-file-card__actions-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex: 1;
    min-width: 0;
    gap: 12px;
    /* Группа «Результат» с Саммари внутри (см. .lk-file-card__result-group) не всегда помещается
       в одну линию с «Открыть плеер» без переполнения карточки — переносим по необходимости,
       а не даём вылезти за край. */
    flex-wrap: wrap;
    row-gap: 10px;
}

/* Завершённый файл: выравниваем действия по верху, чтобы «Скачать»/AI-отчёт/плеер стояли в одну
   линию с верхней кнопкой (Audio), а стопка Audio/Video росла вниз (Video под Audio).
   justify-content НЕ переопределяем — на нём и держится выравнивание по колонкам шапки.
   Статусы обработки (downloading/converting/transcript/recording) — та же причина: без
   flex-start спиннер+текст (.lk-file-card__processing) центрируются по высоте всей строки
   и наезжают на .lk-file-card__row-divider. */
.lk-file-card[data-status="completed"] .lk-file-card__actions-top,
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__actions-top,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__actions-top,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__actions-top,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__actions-top {
    align-items: flex-start;
}

/* Три колонки actions-top (player/ai/result-group) сидят через justify-content:space-between —
   значит их позиция зависит от ширины ВСЕХ трёх (общий свободный остаток делится поровну между
   зазорами). Без фиксированной width колонка «Результат» то у́же (только «Скачать»), то шире
   (когда появляется Саммари) — из-за этого «Создать AI-отчёт» между ними плавает то влево, то
   вправо от карточки к карточке. width + flex-shrink:0 держат все три колонки одного размера
   независимо от контента строки — тогда всё стабильно. Ширины — по самому широкому реальному
   контенту (Саммари+иконка+удалить) с небольшим запасом. */
/* align-items ВСЕГДА flex-start — «Скачать» должен стоять на одном и том же месте (под
   «РЕЗУЛЬТАТ» в шапке) независимо от того, есть в строке саммари или нет. Раньше здесь было
   условное flex-end «без саммари» — но align-items двигает ОБА элемента колонки (и «Скачать»
   сверху тоже), из-за чего сама кнопка «Скачать» прыгала между двумя позициями. Правильное
   место для условной логики — только нижняя строка, см. .lk-file-card__result-group-bottom
   ниже. */
.lk-file-card__result-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 26px;
    width: 215px;
    flex-shrink: 0;
}

.lk-file-card__result-group-bottom {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Без саммари в нижней строке остаётся одна мусорка. width: 130px — та же ширина, что у
   .lk-file-card__download-wrap сверху (тот же .lk-file-card__result-group, align-items:
   flex-start, поэтому оба левым краем садятся в одну точку) — plus justify-content:flex-end
   ставит мусорку на ПРАВЫЙ край именно этих 130px, т.е. точно под стрелку скачивания, а не
   под правый край всей (более широкой) колонки «Результат». */
.lk-file-card__result-group-bottom:not(:has(.lk-file-card__summary-wrap)) {
    width: 130px;
    justify-content: flex-end;
}

/* Колонка «Плеер с таймкодами»: плеер+поделиться сверху, язык/спикеры снизу.
   gap/width — см. комментарий у .lk-file-card__result-group. */
.lk-file-card__player-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 26px;
    width: 270px;
    flex-shrink: 0;
}

.lk-file-card__player-group-top {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Колонка «AI-отчёт»: создать сверху, готовые отчёты снизу.
   gap/width — см. комментарий у .lk-file-card__result-group. */
.lk-file-card__ai-group {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 26px;
    width: 160px;
    flex-shrink: 0;
}

.lk-file-card__ai-group-bottom {
    display: flex;
    align-items: center;
    gap: 12px;
}

/* Кнопка "Скачать" — фиолетовый сплит (по образцу саммари): основная часть качает,
   стрелка открывает поп-ап настроек. Внутренние отступы дают сами кнопки-половинки. */
.lk-file-card__download {
    display: inline-flex;
    align-items: stretch;
    height: 36px;
    background: var(--lk-violet);
    border-radius: 12px;
    flex-shrink: 0;
    box-sizing: border-box;
}

.lk-file-card__download-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 8px 8px 8px 12px;
    background: transparent;
    border: 0;
    border-radius: 12px 0 0 12px;
    font-size: 14px;
    font-weight: 500;
    color: var(--lk-white);
    white-space: nowrap;
    cursor: pointer;
    transition: background-color 120ms;
}

.lk-file-card__download-btn:hover {
    background-color: rgba(255, 255, 255, 0.22);
}

.lk-file-card__download-arrow {
    display: inline-flex;
    align-items: center;
    padding: 8px;
    background: transparent;
    border: 0;
    border-left: 1px solid rgba(255, 255, 255, 0.4);
    border-radius: 0 12px 12px 0;
    color: var(--lk-white);
    cursor: pointer;
    transition: background-color 120ms;
}

.lk-file-card__download-arrow:hover {
    background-color: rgba(255, 255, 255, 0.22);
}

.lk-file-card__btn-icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    color: var(--lk-white);
}

.lk-file-card__btn-icon svg { width: 100%; height: 100%; display: block; }

.lk-file-card__download-chevron {
    display: inline-flex;
    align-items: center;
    width: 16px;
    height: 16px;
    color: var(--lk-white);
}

.lk-file-card__download-chevron svg { width: 16px; height: 16px; display: block; }

/* Кнопки скачивания исходной медиа «Audio» / «Video» — теперь под именем файла (колонка
   «Исходный файл»), в один ряд. Тот же приглушённый формат, что и «Поделиться»
   (.lk-file-card__share) — сплошной фиолетовый фон смотрелся слишком тяжело. */
.lk-file-card__media-group {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
    /* Доп. отступ сверху (сверх обычного 4px-гэпа .lk-file-card__file) — чтобы кнопки Audio/Video
       начинались вровень со второй строкой остальных колонок (62px, см. .lk-file-card__row-divider
       и .lk-file-card__result-group), иначе разделительная полоса наезжает на кнопку. */
    margin-top: 12px;
}

/* Плейсхолдер до заполнения JS (fillMediaDownload заменяет его на .lk-file-card__media-group) —
   резервирует высоту строки, чтобы карточки без аудио/видео (архив и т.п.) не прыгали. */
.lk-file-card__media-row:empty {
    display: none;
}

.lk-file-card__media-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 12px;
    background-color: var(--lk-bg);
    color: rgba(var(--lk-slate), 0.9);
    border-radius: 8px;
    font-size: 13px;
    line-height: 1.2;
    white-space: nowrap;
    text-decoration: none;
    flex-shrink: 0;
    box-sizing: border-box;
}

.lk-file-card__media-btn:hover { color: var(--lk-text); }

/* .lk-file-card__btn-icon зашит белым для тёмных (фиолетовых) кнопок — на светлом фоне
   media-btn нужен цвет самой кнопки (наследуется через currentColor у SVG). */
.lk-file-card__media-btn .lk-file-card__btn-icon { color: inherit; }

/* ============================================================
   Поп-ап скачивания файла (под кнопкой "Скачать")
   ============================================================ */
.lk-file-card__download-wrap {
    position: relative;
    display: inline-flex;
    flex-shrink: 0;
}

/* Компактные отступы: раньше поп-ап выходил за ~600px и на низких экранах (аноним) кнопка
   «Скачать» не влезала без прокрутки страницы. */
.lk-file-card__download-pop {
    position: absolute;
    top: calc(100% + 12px);
    right: 0;
    z-index: 40;
    display: none;
    width: 373px;
    max-width: calc(100vw - 24px);
    background-color: var(--lk-white);
    border-radius: 24px;
    padding: 16px;
    box-shadow: 0 12px 40px rgba(55, 54, 56, 0.18);
    box-sizing: border-box;
    cursor: default;
}

.lk-file-card__download-wrap.is-open .lk-file-card__download-pop {
    display: block;
}

/* стрелка вверх к кнопке */
.lk-file-card__download-pop::before {
    content: "";
    position: absolute;
    top: -6px;
    right: 28px;
    width: 14px;
    height: 14px;
    background-color: var(--lk-white);
    transform: rotate(45deg);
    border-radius: 3px;
}

/* Раскрытие вверх, когда снизу не хватает места до края вьюпорта (класс ставит
   positionDownloadPop в file-list.js при каждом открытии). Ромбик — снизу, к кнопке. */
.lk-file-card__download-wrap.is-up .lk-file-card__download-pop {
    top: auto;
    bottom: calc(100% + 12px);
}

.lk-file-card__download-wrap.is-up .lk-file-card__download-pop::before {
    top: auto;
    bottom: -6px;
}

/* Поп-ап не влезает целиком ни вниз, ни вверх — высоту ограничил JS (inline max-height),
   внутри прокрутка; торчащий за рамку ромбик при overflow был бы срезан — прячем. */
.lk-file-card__download-pop.is-scroll {
    overflow-y: auto;
    overscroll-behavior: contain;
}

.lk-file-card__download-pop.is-scroll::before {
    display: none;
}

.lk-file-card__download-title {
    margin: 0 0 12px;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.1;
    color: var(--lk-text);
}

.lk-file-card__download-section {
    margin-bottom: 16px;
}

.lk-file-card__download-section:last-of-type {
    margin-bottom: 0;
}

.lk-file-card__download-subtitle {
    margin: 0 0 8px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    color: var(--lk-grey);
}

.lk-file-card__download-formats {
    display: flex;
    gap: 6px;
}

.lk-file-card__download-format {
    flex: 1 1 0;
    min-width: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    height: 36px;
    padding: 8px 12px;
    background-color: #f8fafc;
    border: 1px solid transparent;
    border-radius: 6px;
    cursor: pointer;
    font-size: 16px;
    color: var(--lk-grey);
    transition: border-color 120ms, background-color 120ms;
}

.lk-file-card__download-format:hover:not([disabled]):not(.is-selected) {
    border-color: var(--lk-violet);
}

.lk-file-card__download-format.is-selected {
    background-color: var(--lk-violet);
    border-color: var(--lk-violet);
    color: var(--lk-white);
}

.lk-file-card__download-format[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
}

.lk-file-card__download-format-icon {
    display: inline-flex;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

.lk-file-card__download-format-icon svg { width: 100%; height: 100%; display: block; }

.lk-file-card__download-option {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    height: 36px;
    padding: 6px 12px;
    margin-bottom: 4px;
    background-color: var(--lk-bg);
    border-radius: 10px;
    font-size: 14px;
    color: var(--lk-text);
    cursor: pointer;
}

.lk-file-card__download-option:last-child {
    margin-bottom: 0;
}

/* переключатель-пилюля из чекбокса */
.lk-dl-toggle {
    appearance: none;
    -webkit-appearance: none;
    position: relative;
    width: 40px;
    height: 22px;
    flex-shrink: 0;
    border-radius: 100px;
    background-color: var(--lk-stroke);
    cursor: pointer;
    transition: background-color 140ms;
}

.lk-dl-toggle::before {
    content: "";
    position: absolute;
    top: 2px;
    left: 2px;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background-color: var(--lk-white);
    transition: transform 140ms;
}

.lk-dl-toggle:checked {
    background-color: var(--lk-violet);
}

.lk-dl-toggle:checked::before {
    transform: translateX(18px);
}

.lk-file-card__download-remember {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid rgba(154, 166, 178, 0.12);
    cursor: pointer;
}

.lk-file-card__download-remember-check {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    accent-color: var(--lk-violet);
    cursor: pointer;
}

.lk-file-card__download-remember span {
    font-size: 14px;
    font-weight: 600;
    color: var(--lk-text);
}

/* Кнопки действия скачивания */
.lk-file-card__download-actions {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-top: 12px;
}

.lk-file-card__download-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 100%;
    padding: 10px 16px;
    border-radius: 10px;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    border: 0;
    white-space: nowrap;
    box-sizing: border-box;
}

.lk-file-card__download-action--primary {
    background: var(--lk-violet);
    color: var(--lk-white);
}

.lk-file-card__download-action--secondary {
    background: transparent;
    border: 1px solid var(--lk-violet);
    color: var(--lk-violet);
}

.lk-file-card__download-action[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
}

.lk-file-card__download-action-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.lk-file-card__download-action-icon--google {
    width: 22px;
    height: 20px;
}

.lk-file-card__download-action-icon svg,
.lk-file-card__download-action-icon img { width: 100%; height: 100%; display: block; }

/* Планшет/мобайл: поп-ап по центру экрана, без привязки к кнопке */
@media (max-width: 640px) {
    .lk-file-card__download-pop,
    /* .is-up мог остаться с десктопной ширины (ресайз при открытом поп-апе) — центр важнее */
    .lk-file-card__download-wrap.is-up .lk-file-card__download-pop {
        position: fixed;
        top: 50%;
        bottom: auto;
        left: 12px;
        right: 12px;
        width: auto;
        max-width: none;
        transform: translateY(-50%);
        max-height: calc(100vh - 24px);
        max-height: calc(100dvh - 24px);
        overflow-y: auto;
        overscroll-behavior: contain;
    }

    .lk-file-card__download-pop::before {
        display: none;
    }
}

/* Текстовые кнопки (AI-отчет, плеер) */
.lk-btn-text {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    height: 36px;
    padding: 6px 0;
    background: transparent;
    border: 0;
    cursor: pointer;
    font-size: 14px;
    font-weight: 500;
    color: var(--lk-grey);
    white-space: nowrap;
    text-decoration: none;
}

.lk-btn-text:hover { color: var(--lk-text); }

.lk-btn-text__icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.lk-btn-text__icon svg,
.lk-btn-text__icon img { width: 100%; height: 100%; display: block; }

/* Нижняя строка карточки */
.lk-file-card__bottom {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
}

/* Саммари (.lk-file-card__result-group) и Готовые AI-отчёты (.lk-file-card__ai-group-bottom)
   переехали в верхнюю строку карточки, каждый в свою колонку (см. _row-templates.php) — здесь
   просто flex-элементы без позиционирования, старая абсолютная grid-раскладка не нужна. */
.lk-file-card__summary-wrap {
    display: flex;
    align-items: center;
}

.lk-file-card__ready-reports-wrap {
    display: flex;
    align-items: center;
}

/* Раньше строка меты шла отдельным полноширинным рядом внизу карточки (язык и спикеры в одну
   линию) и padding-left выравнивал её под колонку «Исходный файл» (154px). Теперь чипы вложены
   в .lk-file-card__player-group (своя колонка, язык и спикеры — друг под другом), старый
   горизонтальный отступ и раскладка не нужны. */
.lk-file-card__meta {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
}

.lk-file-card__lang,
.lk-file-card__speakers {
    display: flex;
    align-items: center;
    gap: 4px;
    position: relative;
}

/* Подсказка «Поменять язык» / «Переименовать спикеров» при наведении (тот же стиль, что у
   ошибки саммари — стилизованная, без нативного title, без задержки) */
.lk-file-card__lang[data-tooltip]:not([data-tooltip=""])::after,
.lk-file-card__speakers[data-tooltip]:not([data-tooltip=""])::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 9px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 40;
    width: max-content;
    max-width: 220px;
    padding: 8px 11px;
    border-radius: 8px;
    background-color: var(--lk-text);
    color: var(--lk-white);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
    white-space: normal;
    box-shadow: 0 6px 20px rgba(21, 21, 21, 0.18);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.lk-file-card__lang[data-tooltip]:not([data-tooltip=""])::before,
.lk-file-card__speakers[data-tooltip]:not([data-tooltip=""])::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 40;
    border: 5px solid transparent;
    border-top-color: var(--lk-text);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.lk-file-card__lang[data-tooltip]:not([data-tooltip=""]):hover::after,
.lk-file-card__lang[data-tooltip]:not([data-tooltip=""]):hover::before,
.lk-file-card__speakers[data-tooltip]:not([data-tooltip=""]):hover::after,
.lk-file-card__speakers[data-tooltip]:not([data-tooltip=""]):hover::before {
    opacity: 1;
    visibility: visible;
}

.lk-file-card__chip-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 4px;
    background-color: var(--lk-violet-bg);
    color: var(--lk-violet);
    flex-shrink: 0;
    box-sizing: border-box;
}

.lk-file-card__chip-icon svg { width: 16px; height: 16px; display: block; }

/* Флаг языка (flag-icons), как в модалке выбора языка */
.lk-file-card__chip-icon .fi {
    font-size: 12px;
    border-radius: 2px;
}

.lk-file-card__meta-label {
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    color: var(--lk-violet);
    white-space: nowrap;
}

/* «Изменить язык» / «Имена спикеров» — видимая ссылка-действие рядом с чипом (замена подсказки
   по наведению, см. _row-templates.php: раньше это было только в data-tooltip на hover). */
.lk-file-card__meta-link {
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    color: var(--lk-violet);
    text-decoration: underline;
    white-space: nowrap;
}

.lk-file-card__actions-bottom {
    display: flex;
    align-items: center;
    gap: 6px;
    /* Всегда прижимаем «Поделиться»/«Ещё» вправо. Когда у файла нет языка и спикеров, слот meta
       удаляется из DOM (buildMeta → null), и при одном flex-потомке justify-content:space-between
       прижал бы кнопки влево — margin-left:auto держит их справа в любом случае. */
    margin-left: auto;
}

/* Меню "Ещё" с действием удаления */
.lk-file-card__menu {
    position: relative;
    display: inline-flex;
}

.lk-file-card__menu-panel {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 30;
    display: none;
    padding: 10px 24px;
    background-color: var(--lk-white);
    border-radius: 16px;
    box-shadow: 0 0 7.5px rgba(12, 7, 32, 0.08);
}

.lk-file-card__menu.is-open .lk-file-card__menu-panel {
    display: block;
}

/* стрелка вверх к кнопке "Ещё" */
.lk-file-card__menu-panel::before {
    content: "";
    position: absolute;
    top: -6px;
    right: 12px;
    width: 14px;
    height: 14px;
    background-color: var(--lk-white);
    transform: rotate(45deg);
    border-radius: 3px;
}

.lk-file-card__menu-item {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    height: 40px;
    padding: 8px 0;
    background: transparent;
    border: 0;
    border-radius: 6px;
    cursor: pointer;
    font-size: 16px;
    font-weight: 500;
    line-height: 20px;
    color: var(--lk-text);
    white-space: nowrap;
    text-align: left;
    box-sizing: border-box;
}

.lk-file-card__menu-item--danger {
    color: #ff122e;
}

.lk-file-card__menu-item-icon {
    display: inline-flex;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
}

.lk-file-card__menu-item-icon svg { width: 100%; height: 100%; display: block; }

/* Кнопка "Поделиться" */
.lk-file-card__share {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 36px;
    padding: 0 12px;
    background-color: var(--lk-bg);
    border: 0;
    border-radius: 8px;
    cursor: pointer;
    color: rgba(var(--lk-slate), 0.9);
    font-size: 13px;
    line-height: 1.2;
    white-space: nowrap;
    flex-shrink: 0;
}

.lk-file-card__share:hover { color: var(--lk-text); }

.lk-file-card__share-icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.lk-file-card__share-icon svg { width: 100%; height: 100%; display: block; }

/* Серые квадратные кнопки-иконки */
.lk-icon-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    background-color: var(--lk-bg);
    border: 0;
    border-radius: 8px;
    cursor: pointer;
    color: var(--lk-icon-grey);
    flex-shrink: 0;
}

.lk-icon-btn:hover { color: var(--lk-text); }

.lk-icon-btn svg { width: 16px; height: 16px; display: block; }

/* Кнопка удаления строки: серая в покое, краснеет при наведении (сигнал опасного действия) */
.lk-icon-btn--danger:hover {
    color: #ff122e;
    background-color: #fff5f5;
}

.lk-icon-btn--xs {
    width: 24px;
    height: 24px;
    border-radius: 6px;
}

/* Маленький чекбокс (шапка/массовый выбор) */
.lk-checkbox {
    display: inline-block;
    width: 15px;
    height: 15px;
    border: 1px solid rgba(var(--lk-slate), 0.4);
    border-radius: 4px;
    background-color: var(--lk-white);
    flex-shrink: 0;
    cursor: pointer;
    box-sizing: border-box;
}

.lk-checkbox[aria-checked="true"] {
    background-color: var(--lk-violet);
    border-color: var(--lk-violet);
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'><path d='M2.5 6.5l2.5 2.5 4.5-5'/></svg>");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 11px;
}

/* ============================================================
   Архивная карточка (Figma 1024:16160) — папка с дочерними файлами.
   Переиспользует .lk-file-card (фон/радиус/паддинг) и блок скачивания.
   ============================================================ */

/* Архивная карточка: .lk-file-card__bottom--archive — отдельный блок-сосед (не часть .top,
   как в обычной карточке), поэтому разделитель ему нужен свой собственный (в отличие от обычной
   карточки, где полосу подняли выше через .lk-file-card__row-divider — см. базовый .top). */
.lk-file-card--archive .lk-file-card__top {
    align-items: flex-start;
    gap: 20px;
    padding-bottom: 10px;
    border-bottom: 1px solid rgba(var(--lk-slate), 0.08);
}

/* Фиолетовая иконка ZIP — только для архива */
.lk-file-card__archive-zip {
    display: inline-flex;
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    margin-top: 3px;
    color: var(--lk-violet);
}

.lk-file-card__archive-zip svg,
.lk-file-card__archive-zip img { width: 100%; height: 100%; display: block; }

/* Колонка с заголовком архива, деревом детей и подписью */
.lk-file-card__archive-file {
    display: flex;
    flex-direction: column;
    gap: 8px;
    flex: 1;
    min-width: 0;
}

.lk-file-card__archive-head {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Стрелка-переключатель (вверх — раскрыто, вниз — свёрнуто) */
.lk-file-card__archive-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    padding: 0;
    background: transparent;
    border: 0;
    cursor: pointer;
    color: var(--lk-icon-grey);
    flex-shrink: 0;
}

.lk-file-card__archive-toggle-icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    transform: rotate(180deg);
    transition: transform 140ms;
}

.lk-file-card__archive-toggle-icon svg { width: 100%; height: 100%; display: block; }

/* В свёрнутом виде стрелка смотрит вниз */
.lk-file-card--archive.is-collapsed .lk-file-card__archive-toggle-icon {
    transform: rotate(0deg);
}

/* Иконка открытой папки в фиолетовом боксе */
.lk-file-card__archive-folder {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 4px;
    background-color: var(--lk-violet-bg);
    color: var(--lk-violet);
    flex-shrink: 0;
}

.lk-file-card__archive-folder svg { width: 14px; height: 14px; display: block; }

.lk-file-card__archive-name {
    font-size: 14px;
    font-weight: 600;
    line-height: 1.1;
    color: var(--lk-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lk-file-card__archive-name[contenteditable="true"] {
    overflow: visible;
    text-overflow: clip;
    outline: none;
    padding: 2px 6px;
    margin: -2px -6px;
    border-radius: 6px;
    background-color: var(--lk-white);
    box-shadow: 0 0 0 1.5px var(--lk-violet);
    cursor: text;
}

/* Список дочерних файлов с деревом-связкой слева */
.lk-file-card__archive-children {
    display: flex;
    flex-direction: column;
    gap: 6px;
    position: relative;
    padding-left: 40px;
}

/* Вертикальная линия дерева */
.lk-file-card__archive-children::before {
    content: "";
    position: absolute;
    left: 24px;
    top: -2px;
    bottom: 14px;
    width: 1px;
    background-color: #DDE1E5;
}

.lk-file-card--archive.is-collapsed .lk-file-card__archive-children {
    display: none;
}

/* Строка дочернего файла */
.lk-file-card__child-row {
    display: flex;
    align-items: center;
    gap: 8px;
    position: relative;
}

/* Горизонтальный «усик» дерева к каждому ребёнку */
.lk-file-card__child-row::before {
    content: "";
    position: absolute;
    left: -16px;
    top: 50%;
    width: 12px;
    height: 1px;
    background-color: #DDE1E5;
}

/* Бейдж статуса 20px */
.lk-file-card__child-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    border-radius: 4px;
    flex-shrink: 0;
    box-sizing: border-box;
}

.lk-file-card__child-badge-icon {
    display: inline-flex;
    width: 14px;
    height: 14px;
}

.lk-file-card__child-badge-icon svg { width: 100%; height: 100%; display: block; }

.lk-file-card__child-name {
    font-size: 14px;
    font-weight: 500;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Варианты статуса: фон бейджа + цвет иконки + цвет имени */
.lk-file-card__child-row--recognized .lk-file-card__child-badge { background-color: #C9FFEF; }
.lk-file-card__child-row--recognized .lk-file-card__child-badge-icon { color: #40DB88; }
.lk-file-card__child-row--recognized .lk-file-card__child-name { color: var(--lk-grey); }

.lk-file-card__child-row--error .lk-file-card__child-badge { background-color: #FDE9E9; }
.lk-file-card__child-row--error .lk-file-card__child-badge-icon { color: #FF122E; }
.lk-file-card__child-row--error .lk-file-card__child-name { color: #FF122E; }

.lk-file-card__child-row--in-progress .lk-file-card__child-badge { background-color: #FDF8E9; }
.lk-file-card__child-row--in-progress .lk-file-card__child-badge-icon { color: #FFD400; }
.lk-file-card__child-row--in-progress .lk-file-card__child-name { color: var(--lk-grey-light); }

.lk-file-card__child-row--pause .lk-file-card__child-badge { background-color: var(--lk-bg); }
.lk-file-card__child-row--pause .lk-file-card__child-badge-icon { color: #B7BFCA; }
.lk-file-card__child-row--pause .lk-file-card__child-name { color: var(--lk-grey-light); }

.lk-file-card__child-row--payment .lk-file-card__child-badge { background-color: #FDF2E9; }
.lk-file-card__child-row--payment .lk-file-card__child-badge-icon { color: #FF9317; }
.lk-file-card__child-row--payment .lk-file-card__child-name { color: var(--lk-grey-light); }

/* Подсказка при наведении на дочерний файл архива — в стиле лк (светлая карточка, фиолетовые акценты).
   Строка-родитель уже position:relative, контейнеры не режут overflow — всплывает над строкой. */
.lk-child-tooltip {
    position: absolute;
    bottom: calc(100% + 10px);
    left: 6px;
    z-index: 40;
    width: max-content;
    min-width: 216px;
    max-width: 340px;
    padding: 12px 14px;
    border-radius: 12px;
    background-color: var(--lk-white);
    border: 1px solid rgba(var(--lk-slate), 0.12);
    box-shadow: 0 16px 36px rgba(21, 21, 21, 0.14);
    color: var(--lk-text);
    font-size: 13px;
    line-height: 1.4;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transform: translateY(4px);
    transition: opacity 0.15s ease, transform 0.15s ease;
}

/* Стрелка — повёрнутый квадрат, чтобы держать рамку и тень как у карточки */
.lk-child-tooltip::after {
    content: "";
    position: absolute;
    top: 100%;
    left: 22px;
    width: 12px;
    height: 12px;
    margin-top: -7px;
    background-color: var(--lk-white);
    border-right: 1px solid rgba(var(--lk-slate), 0.12);
    border-bottom: 1px solid rgba(var(--lk-slate), 0.12);
    transform: rotate(45deg);
}

.lk-file-card__child-row:hover .lk-child-tooltip {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

/* Заголовок: подпись-eyebrow + имя файла */
.lk-child-tooltip__head {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding-bottom: 10px;
    margin-bottom: 10px;
    border-bottom: 1px solid rgba(var(--lk-slate), 0.10);
}

.lk-child-tooltip__caption {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--lk-violet);
}

.lk-child-tooltip__name {
    font-size: 13px;
    font-weight: 600;
    color: var(--lk-text);
    word-break: break-word;
}

/* Список характеристик (длительность / язык / спикеры) */
.lk-child-tooltip__specs {
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.lk-child-tooltip__spec {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.lk-child-tooltip__spec dt {
    font-size: 12px;
    font-weight: 500;
    color: var(--lk-grey-light);
    white-space: nowrap;
}

.lk-child-tooltip__spec dd {
    margin: 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--lk-text);
    text-align: right;
}

.lk-child-tooltip__lang {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.lk-child-tooltip__flag {
    display: inline-flex;
}

.lk-child-tooltip__flag .fi {
    font-size: 13px;
    border-radius: 3px;
}

/* Строка статуса — только для незавершённых файлов (в процессе / ошибка / ожидание) */
.lk-child-tooltip__status {
    margin: 10px 0 0;
    padding-top: 10px;
    border-top: 1px solid rgba(var(--lk-slate), 0.10);
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    font-weight: 500;
    color: var(--lk-grey);
}

.lk-child-tooltip__status::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background-color: var(--lk-grey-light);
    flex-shrink: 0;
}

.lk-child-tooltip__status--in-progress::before { background-color: #FFD400; }
.lk-child-tooltip__status--error::before { background-color: #FF122E; }
.lk-child-tooltip__status--error { color: #FF122E; }

/* Подпись «Распознано за …» */
.lk-file-card__archive-caption {
    margin: 0;
    padding-left: 24px;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.2;
    color: var(--lk-grey-light);
}

.lk-file-card--archive.is-collapsed .lk-file-card__archive-caption {
    display: none;
}

/* Блок скачивания справа в верхней строке */
.lk-file-card__archive-download {
    flex-shrink: 0;
}

/* Нижняя строка архива — действия справа */
.lk-file-card__bottom--archive {
    justify-content: flex-end;
}

.lk-file-card__bottom--archive .lk-icon-btn {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background-color: var(--lk-bg);
}

.lk-file-card__bottom--archive .lk-file-card__share {
    border-radius: 8px;
    background-color: var(--lk-bg);
}

/* «Обработка архива…» — пока архив распаковывается и дочерних файлов ещё нет
   (file-list.js рисует этот блок в слот children только для live-статуса). */
.lk-file-card__archive-processing {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 2px 0;
}

.lk-file-card__archive-processing-msg {
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey-light);
}

/* Для одиночной строки «Обработка архива…» (дочерних файлов ещё нет) вертикальную
   линию-дерево не рисуем — она сжалась бы в короткий обрубок. */
.lk-file-card__archive-children:has(.lk-file-card__archive-processing)::before {
    display: none;
}

/* ============================================================
   Стадии обработки (downloading | converting | transcript | recording, нода Figma 1024:16126).
   Блок процесса и нижняя полоса всегда в DOM; видимость переключается по data-status карточки.
   ============================================================ */

/* Блок «спиннер + текст» — прижат к началу правой части (фикс. позиция для всех строк) */
.lk-file-card__processing {
    display: none;
    align-items: center;
    gap: 10px;
    margin-right: auto;
    flex-shrink: 0;
}

.lk-file-card__processing-msg {
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey-light);
}

/* Число минут внутри сообщения приходит уже завёрстанным в <b> из перевода */
.lk-file-card__processing-msg b {
    font-weight: 600;
    color: var(--lk-text);
}

/* Кнопка «Остановить запись» на карточке встречи. Своя (не .lk-btn-text) — та в actions-top
   скрывается в статусе recording (см. правило ниже). Данжер-стиль красным. file-list.js рисует
   её только когда бот запущен и запись идёт (meet.can_stop). */
.lk-file-card__stop {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 4px;
    height: 32px;
    padding: 6px 14px;
    background: transparent;
    border: 1px solid rgba(255, 18, 46, 0.35);
    border-radius: 8px;
    cursor: pointer;
    font-size: 13px;
    font-weight: 500;
    color: #FF122E;
    white-space: nowrap;
    transition: background-color .15s;
}

.lk-file-card__stop:hover { background: rgba(255, 18, 46, 0.08); }

.lk-file-card__stop:disabled { opacity: .5; cursor: default; }

/* Круглый фиолетовый спиннер ~32px (Progress bar/Stroke/Violet на дорожке #CFD5DC) */
.lk-file-card__spinner {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    border: 3px solid #cfd5dc;
    border-top-color: var(--lk-violet);
    animation: lk-file-card-spin 0.8s linear infinite;
    flex-shrink: 0;
}

@keyframes lk-file-card-spin {
    to { transform: rotate(360deg); }
}

/* Индикатор генерации AI-отчёта рядом с кнопкой «Создать AI-отчет» */
.lk-ai-report-status {
    display: none;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.lk-ai-report-status[data-generating="1"],
.lk-ai-report-status[data-failed="1"] {
    display: inline-flex;
}

.lk-ai-report-status__spinner {
    display: none;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    border: 2px solid #cfd5dc;
    border-top-color: var(--lk-violet);
    animation: lk-file-card-spin 0.8s linear infinite;
    flex-shrink: 0;
}

.lk-ai-report-status[data-generating="1"] .lk-ai-report-status__spinner {
    display: inline-block;
}

/* Ошибка генерации ИИ-отчёта: красный маркер «!», виден когда у файла есть упавшие отчёты. */
.lk-ai-report-status__failed {
    display: none;
    width: 16px;
    height: 16px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: #fdecec;
    color: #d92d20;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    flex-shrink: 0;
}

.lk-ai-report-status[data-failed="1"] .lk-ai-report-status__failed {
    display: inline-flex;
}

/* Строки шаблонов и вкладки тематик в модалке AI-отчёта: у Tailwind-класса leading-[0.9]
   строчный бокс (0.9em) ниже глифов, а truncate (overflow:hidden) на названии обрезает верх/низ
   высоких кириллических букв (й, р, у) в длинных названиях. Даём читаемый интервал. Правило
   грузится после Tailwind (LkAsset depends on TailwindAsset), одинаковая специфичность → выигрывает. */
.lk-ai-tpl,
.lk-ai-cat {
    line-height: 1.3;
}

/* Шаблон в модалке AI-отчёта, у которого последняя генерация упала: красный акцент, но выбираемый. */
.lk-ai-tpl--failed {
    color: #d92d20;
}

/* Сердечко «Избранное» на промпте в модалке AI-отчёта (у сценариев и саммари сердечка нет).
   Контур — по умолчанию, заливка — когда промпт в избранном (data-fav="1" на строке шаблона). */
.lk-ai-fav {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    margin-left: auto;
    flex-shrink: 0;
    color: #cfd5dc;
    transition: color 0.15s ease;
}

.lk-ai-fav svg {
    width: 16px;
    height: 16px;
    fill: none;
    stroke: currentColor;
}

.lk-ai-fav:hover {
    color: var(--lk-violet);
}

.lk-ai-tpl[data-fav="1"] .lk-ai-fav {
    color: var(--lk-violet);
}

.lk-ai-tpl[data-fav="1"] .lk-ai-fav svg {
    fill: currentColor;
}

.lk-ai-report-status__label {
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    color: var(--lk-grey);
    white-space: nowrap;
}

/* Кнопка «Сгенерировать» в модалке AI-отчёта, пока POST в полёте: спиннер + курсор ожидания
   (кнопка при этом disabled — двойной сабмит невозможен; класс ставит ai-report-modal.js). */
.lk-ai-generate--busy {
    cursor: progress;
    pointer-events: none;
}

.lk-ai-generate--busy::before {
    content: '';
    width: 14px;
    height: 14px;
    margin-right: 8px;
    border-radius: 50%;
    border: 2px solid rgba(255, 255, 255, 0.4);
    border-top-color: #fff;
    animation: lk-file-card-spin 0.8s linear infinite;
    flex-shrink: 0;
}

/* Кнопка «Саммари» (только для встреч): pending — спиннер генерации, error — иконка ошибки */
.lk-summary-status {
    display: none;
    align-self: center;
    align-items: center;
    height: 16px;
    line-height: 0;
    flex-shrink: 0;
    margin-left: 2px;
}

.lk-summary[data-summary-state="pending"] .lk-summary-status,
.lk-summary[data-summary-state="error"] .lk-summary-status {
    display: inline-flex;
}

.lk-summary-status__spinner,
.lk-summary-status__error {
    display: none;
    align-self: center;
    width: 16px;
    height: 16px;
    flex-shrink: 0;
}

.lk-summary[data-summary-state="pending"] .lk-summary-status__spinner {
    display: inline-block;
    box-sizing: border-box;
    border-radius: 50%;
    border: 2px solid #cfd5dc;
    border-top-color: var(--lk-violet);
    animation: lk-file-card-spin 0.8s linear infinite;
}

.lk-summary[data-summary-state="error"] .lk-summary-status__error {
    display: inline-flex;
    color: #FF122E;
}

.lk-summary-status__error svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* В состоянии ready — кнопка-ссылка в виде фиолетовой outline-кнопки (как «Скачать», но контурная) */
.lk-summary[data-summary-state="ready"] {
    gap: 8px;
    height: 36px;
    padding: 8px 14px;
    border: 1.5px solid var(--lk-violet);
    border-radius: 12px;
    color: var(--lk-violet);
    background: var(--lk-white);
    transition: background-color 0.15s ease;
}

.lk-summary[data-summary-state="ready"]:hover {
    color: var(--lk-violet);
    background: var(--lk-violet-bg);
}

/* Кнопка «Готовые AI-отчёты» — текстовая (как «Создать AI-отчёт»): без контура, серый текст,
   иконка в светло-фиолетовом бейдже-квадрате. Базовый вид берётся от .lk-btn-text. */
.lk-ready-reports {
    gap: 8px;
    color: var(--lk-violet);
    transition: color 0.15s ease;
}

.lk-ready-reports .lk-btn-text__icon {
    width: 26px;
    height: 26px;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: var(--lk-violet-bg);
    color: var(--lk-violet);
}

.lk-ready-reports .lk-btn-text__icon svg,
.lk-ready-reports .lk-btn-text__icon img {
    width: 16px;
    height: 16px;
}

.lk-ready-reports:hover {
    color: var(--lk-violet);
}

/* В состояниях pending/error ведущую иконку скачивания скрываем —
   остаётся «Саммари» + спиннер (генерация) либо + иконка ошибки. Иконка есть только в ready. */
.lk-summary[data-summary-state="pending"] .lk-btn-text__icon,
.lk-summary[data-summary-state="error"] .lk-btn-text__icon {
    display: none;
}

/* В pending/error после «Саммари» добавляем двоеточие (в ready — без него) */
.lk-summary[data-summary-state="pending"] .lk-summary__label::after,
.lk-summary[data-summary-state="error"] .lk-summary__label::after {
    content: ":";
}

/* В состоянии pending ссылка не ведёт никуда — обычный курсор */
.lk-summary[data-summary-state="pending"] {
    cursor: default;
}

/* В состоянии error — курсор-подсказка; причину показываем стилизованной подсказкой (см. ниже) */
.lk-summary[data-summary-state="error"] {
    position: relative;
    cursor: help;
}

/* Стилизованная подсказка причины ошибки саммари (без нативного title, без задержки) */
.lk-summary[data-summary-state="error"][data-tooltip]:not([data-tooltip=""])::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 9px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 40;
    width: max-content;
    max-width: 260px;
    padding: 8px 11px;
    border-radius: 8px;
    background-color: var(--lk-text);
    color: var(--lk-white);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
    white-space: normal;
    box-shadow: 0 6px 20px rgba(21, 21, 21, 0.18);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

/* Стрелка подсказки */
.lk-summary[data-summary-state="error"][data-tooltip]:not([data-tooltip=""])::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    z-index: 40;
    border: 5px solid transparent;
    border-top-color: var(--lk-text);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.lk-summary[data-summary-state="error"][data-tooltip]:not([data-tooltip=""]):hover::after,
.lk-summary[data-summary-state="error"][data-tooltip]:not([data-tooltip=""]):hover::before {
    opacity: 1;
    visibility: visible;
}

/* ⚠️ «файл обрезан до 15 мин» (аноним). Скрыт по умолчанию, показывается классом .is-visible из
   file-list.js только для реально обрезанных распознанных файлов. НЕ используем атрибут [hidden] +
   Tailwind-класс display: любой .inline-flex перебивает [hidden] (авторский стиль > UA), и иконка
   висела бы на всех карточках. */
.lk-file-card__trimmed {
    display: none;
    position: relative;
    align-items: center;
    color: #FF122E;
    cursor: help;
}

.lk-file-card__trimmed.is-visible {
    display: inline-flex;
}

/* Подсказка — тот же стиль, что у ошибки саммари (мгновенная, без нативного title). Прижата к
   правому краю иконки (::after right), т.к. иконка стоит у правого края таблицы и центрированная
   подсказка уезжала бы за экран. */
.lk-file-card__trimmed[data-tooltip]:not([data-tooltip=""])::after {
    content: attr(data-tooltip);
    position: absolute;
    bottom: calc(100% + 9px);
    right: -6px;
    z-index: 40;
    width: max-content;
    max-width: 185px;
    padding: 8px 11px;
    border-radius: 8px;
    background-color: #424242;
    color: var(--lk-white);
    font-size: 12px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
    white-space: normal;
    box-shadow: 0 6px 20px rgba(21, 21, 21, 0.18);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.lk-file-card__trimmed[data-tooltip]:not([data-tooltip=""])::before {
    content: "";
    position: absolute;
    bottom: calc(100% + 4px);
    right: 3px;
    z-index: 40;
    border: 5px solid transparent;
    border-top-color: #424242;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity 0.12s ease;
}

.lk-file-card__trimmed[data-tooltip]:not([data-tooltip=""]):hover::after,
.lk-file-card__trimmed[data-tooltip]:not([data-tooltip=""]):hover::before {
    opacity: 1;
    visibility: visible;
}

/* Нижняя индетерминированная полоса прогресса (скрыта по умолчанию) */
.lk-file-card__progress {
    display: none;
    height: 3px;
    border-radius: 100px;
    background-color: #f9f5ff;
    overflow: hidden;
}

.lk-file-card__progress-fill {
    display: block;
    height: 100%;
    width: 40%;
    border-radius: 100px;
    background: linear-gradient(90deg, rgba(135, 82, 250, 0) 0%, var(--lk-violet) 50%, rgba(135, 82, 250, 0) 100%);
    animation: lk-file-card-progress 1.4s ease-in-out infinite;
}

@keyframes lk-file-card-progress {
    0% { transform: translateX(-100%); }
    100% { transform: translateX(350%); }
}

/* Когда карточка в одной из стадий обработки — показываем индикатор процесса и прячем кнопку
   скачивания. Кнопка удаления при этом остаётся доступной, чтобы файл можно было удалить
   прямо во время обработки (как у архивной карточки, см. ниже).
   Архивная карточка (--archive) исключена: у неё свой дизайн (список дочерних + «Распознано за»). */
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__processing {
    display: inline-flex;
}

.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__progress,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__progress,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__progress,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__progress {
    display: block;
}

/* Прячем только кнопку скачивания (результатов ещё нет). Нижнюю строку с кнопкой удаления
   НЕ трогаем — она должна оставаться видимой во время обработки. */
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__download-wrap,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__download-wrap,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__download-wrap,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__download-wrap {
    display: none;
}

/* AI-отчёт и плеер недоступны до завершения обработки */
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__actions-top .lk-btn-text,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__actions-top .lk-btn-text,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__actions-top .lk-btn-text,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__actions-top .lk-btn-text {
    display: none;
}

/* Колонки «Плеер» и «AI-отчёт» во время обработки пустуют (кнопки внутри скрыты правилом выше),
   но сами колонки — flex-элементы с фиксированной шириной (270px/160px, см. .lk-file-card__player-group
   и .lk-file-card__ai-group) и продолжают её занимать, даже будучи пустыми. Из-за этого
   .lk-file-card__processing не помещается на одну строку с оставшейся .lk-file-card__result-group
   (кнопка удаления) и переносится на вторую — прямо на .lk-file-card__row-divider. Прячем
   колонки целиком, чтобы освободить место. */
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__player-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__player-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__player-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__player-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__ai-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__ai-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__ai-group,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__ai-group {
    display: none;
}

/* .lk-file-card__processing в разметке идёт ПОСЛЕ .lk-file-card__result-group — пока колонки
   «Плеер»/«AI-отчёт» видимы, это не важно (space-between расставляет всех четверых по местам).
   Но когда они спрятаны (правило выше), из видимых flex-элементов первым в DOM остаётся
   .lk-file-card__result-group — и justify-content:space-between сажает его СЛЕВА, а не справа
   (мусорка уезжает под «Плеер» вместо «Результата»). order:-1 возвращает индикатор визуально
   на первое место, не трогая разметку. */
.lk-file-card:not(.lk-file-card--archive)[data-status="downloading"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="converting"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="transcript"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-status="recording"] .lk-file-card__processing {
    order: -1;
}

/* Ошибка: вместо действий показываем сообщение, но нижнюю строку с кнопкой удаления
   оставляем — файл с ошибкой должно быть можно удалить (как и битый архив).
   margin-top: 16px — без него текст стартует раньше .lk-file-card__row-divider (52px) и
   наезжает на неё; 16px ставит его на ту же базовую линию (62px), что и остальной контент
   второй строки (Audio/Video, мета, саммари). */
.lk-file-card__error-top {
    display: none;
    margin: 0;
    margin-top: 16px;
    font-size: 14px;
    line-height: 1.3;
    color: #FF122E;
}

.lk-file-card:not(.lk-file-card--archive)[data-status="error"] .lk-file-card__error-top {
    display: block;
}

.lk-file-card:not(.lk-file-card--archive)[data-status="error"] .lk-file-card__download-wrap,
.lk-file-card:not(.lk-file-card--archive)[data-status="error"] .lk-file-card__actions-top .lk-btn-text {
    display: none;
}

/* Нижнюю строку оставляем ради кнопки удаления; прячем только мету и блок саммари —
   при ошибке от них толку нет, а share и так скрыт (JS отдаёт его только готовым файлам). */
.lk-file-card:not(.lk-file-card--archive)[data-status="error"] .lk-file-card__meta,
.lk-file-card:not(.lk-file-card--archive)[data-status="error"] .lk-file-card__bottom-actions {
    display: none;
}

/* Ошибка на уровне архива (например, внутри нет аудио/видео — status 510): показываем
   сообщение под именем вместо подписи «Распознано за …». Нижнюю строку (кнопку удаления)
   оставляем, чтобы пользователь мог удалить битый архив. */
.lk-file-card--archive[data-status="error"] .lk-file-card__error-top {
    display: block;
    margin-top: 4px;
}

.lk-file-card--archive[data-status="error"] .lk-file-card__archive-caption {
    display: none;
}

/* ============================================================
   Блок оплаты файла (нода Figma 1012:14091)
   ============================================================ */
.lk-file-card__payment {
    display: flex;
    flex-direction: column;
    gap: 12px;
    align-items: flex-start;
    width: 100%;
    max-width: 420px;
}

.lk-file-card__payment-count {
    margin: 0;
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-text);
}

.lk-file-card__payment-msg {
    margin: 0;
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey);
}

/* Кнопка/ссылка действия — фиолетовая обводка */
.lk-file-card__pay {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 32px;
    padding: 0 24px;
    border: 1px solid var(--lk-violet);
    border-radius: 8px;
    background: transparent;
    color: var(--lk-violet);
    font-size: 14px;
    font-weight: 500;
    line-height: 1;
    white-space: nowrap;
    cursor: pointer;
    text-decoration: none;
    transition: background-color 120ms, color 120ms;
}

.lk-file-card__pay:hover {
    background-color: var(--lk-violet);
    color: var(--lk-white);
}

.lk-file-card__pay[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
}

.lk-file-card__payment-tariff {
    margin: 0;
    font-size: 14px;
    line-height: 1.3;
    color: var(--lk-grey);
}

.lk-file-card__payment-tariff-link {
    color: var(--lk-violet);
    font-weight: 500;
    text-decoration: none;
}

.lk-file-card__payment-tariff-link:hover {
    text-decoration: underline;
}

/* Строка «Распознать без ограничений»: файл обрезан до бесплатного лимита в анонимной сессии.
   Полноширинная строка между верхом карточки и метой (как в легаси-списке); кнопка встроена
   внутрь предложения и течёт вместе с текстом, на узких экранах переносится. Кнопка
   переиспользует .lk-file-card__pay (фиолетовая обводка, как у блока оплаты). */
.lk-file-card__reconvert {
    width: 100%;
}

.lk-file-card__reconvert-msg {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--lk-grey);
}

/* Кнопка заметно компактнее, чем в блоке оплаты (32px): она встроена в предложение,
   и вся фраза вместе с кнопкой должна помещаться в одну строку на десктопе. */
.lk-file-card__reconvert .lk-file-card__pay {
    height: 22px;
    padding: 0 10px;
    font-size: 12px;
    vertical-align: middle;
    margin: 0 2px;
}

.lk-file-card__reconvert-icon {
    display: inline-flex;
    width: 16px;
    height: 16px;
    margin-right: 4px;
    vertical-align: -3px;
    color: #d92d20;
}

.lk-file-card__reconvert-icon svg {
    width: 100%;
    height: 100%;
}

/* Файл требует оплаты/регистрации — вместо действий показываем блок оплаты. Нижнюю строку целиком
   НЕ прячем: оставляем кнопку удаления (неоплаченный/незарегистрированный файл всё равно можно
   удалить). Скрываем только мету (язык/спикеры) и нижние действия (саммари/AI-отчёты). */
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__download-wrap,
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__actions-top .lk-btn-text,
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__processing,
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__progress,
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__meta,
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__bottom-actions {
    display: none;
}

/* В режиме оплаты выравниваем правый блок по верху (текст многострочный) */
.lk-file-card:not(.lk-file-card--archive)[data-need-pay="1"] .lk-file-card__actions-top {
    align-items: flex-start;
}

/* Архив требует оплаты: блок оплаты справа, дерево детей/подпись/скачивание скрыты */
.lk-file-card__archive-payment {
    flex: 1 1 0;
    min-width: 0;
}

/* Левый столбец архива при оплате ~ 512px (как __main одиночного файла),
   чтобы блок оплаты начинался на той же вертикали справа. */
.lk-file-card--archive[data-need-pay="1"] .lk-file-card__archive-file {
    flex: 0 0 366px;
    min-width: 0;
}

.lk-file-card--archive[data-need-pay="1"] .lk-file-card__archive-toggle,
.lk-file-card--archive[data-need-pay="1"] .lk-file-card__archive-download,
.lk-file-card--archive[data-need-pay="1"] .lk-file-card__archive-children,
.lk-file-card--archive[data-need-pay="1"] .lk-file-card__archive-caption,
.lk-file-card--archive[data-need-pay="1"] .lk-file-card__bottom {
    display: none;
}

/* ============================================================
   Пустое состояние списка — стильный баннер вместо голого текста.
   Мотив «звук → текст»: мягкий сиреневый фон в светлой палитре лк,
   живой эквалайзер и водяной знак.
   ============================================================ */
.lk-empty-banner {
    position: relative;
    overflow: hidden;
    border-radius: 18px;
    background: linear-gradient(122deg, #f5f0ff 0%, #ede7ff 52%, #e8eaff 100%);
    border: 1px solid rgba(var(--lk-violet-rgb), .12);
    color: var(--lk-text);
    padding: 30px 30px 32px;
    display: flex;
    align-items: center;
    gap: 26px;
}

.lk-empty-banner__blob {
    position: absolute;
    border-radius: 50%;
    filter: blur(28px);
    opacity: .5;
    pointer-events: none;
}

.lk-empty-banner__blob--1 { width: 210px; height: 210px; background: #dcccff; right: -50px; top: -80px; }
.lk-empty-banner__blob--2 { width: 160px; height: 160px; background: #cdd6ff; left: 40%; bottom: -90px; opacity: .5; }

.lk-empty-banner__watermark {
    position: absolute;
    right: 20px;
    bottom: -14px;
    margin: 0;
    font-size: 84px;
    font-weight: 800;
    letter-spacing: -.04em;
    line-height: 1;
    color: rgba(var(--lk-violet-rgb), .09);
    pointer-events: none;
    user-select: none;
}

.lk-empty-banner__eq {
    position: relative;
    flex-shrink: 0;
    display: flex;
    align-items: flex-end;
    gap: 5px;
    height: 60px;
    width: 78px;
}

.lk-empty-banner__eq span {
    width: 7px;
    border-radius: 6px;
    background: linear-gradient(180deg, var(--lk-violet-light), var(--lk-violet));
    transform-origin: bottom;
    animation: lk-empty-eq 1.15s ease-in-out infinite;
}

.lk-empty-banner__eq span:nth-child(1) { height: 24px; animation-delay: 0s; }
.lk-empty-banner__eq span:nth-child(2) { height: 46px; animation-delay: .16s; }
.lk-empty-banner__eq span:nth-child(3) { height: 60px; animation-delay: .32s; }
.lk-empty-banner__eq span:nth-child(4) { height: 38px; animation-delay: .1s; }
.lk-empty-banner__eq span:nth-child(5) { height: 52px; animation-delay: .24s; }

@keyframes lk-empty-eq {
    0%, 100% { transform: scaleY(.35); }
    50%      { transform: scaleY(1); }
}

@media (prefers-reduced-motion: reduce) {
    .lk-empty-banner__eq span { animation: none; }
}

.lk-empty-banner__body {
    position: relative;
    z-index: 1;
    min-width: 0;
}

.lk-empty-banner__title {
    margin: 0;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -.015em;
    color: var(--lk-text);
}

.lk-empty-banner__subtitle {
    margin: 4px 0 0;
    font-size: 14.5px;
    line-height: 1.45;
    color: var(--lk-grey);
    max-width: 44ch;
}

.lk-empty-banner__cta {
    margin-top: 14px;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: linear-gradient(120deg, #9160fb, #7b41f6);
    color: var(--lk-white);
    font-family: inherit;
    font-weight: 600;
    font-size: 14px;
    line-height: 1;
    padding: 10px 16px;
    border: 0;
    border-radius: 10px;
    cursor: pointer;
    transition: filter .15s ease;
}

.lk-empty-banner__cta:hover { filter: brightness(1.06); }
.lk-empty-banner__cta:focus-visible { outline: 2px solid var(--lk-violet); outline-offset: 2px; }
.lk-empty-banner__cta:disabled { opacity: .6; cursor: default; }
.lk-empty-banner__cta:disabled:hover { filter: none; }
.lk-empty-banner__cta-icon { display: inline-flex; }
.lk-empty-banner__cta-icon svg { display: block; width: 15px; height: 15px; }

@media (max-width: 560px) {
    .lk-empty-banner { flex-direction: column; align-items: flex-start; gap: 18px; padding: 24px 22px 26px; }
    .lk-empty-banner__watermark { font-size: 58px; }
    .lk-empty-banner__eq { height: 48px; }
}

/* ============================================================
   Модалка пароля встречи: состояние ошибки поля ввода.
   Красная рамка при неверном пароле (класс вешает/снимает
   setZoomModalError в file-list.js), текст ошибки — под полем.
   ============================================================ */
[data-lk-zoom-password-input].lk-input-error {
    border-color: #dc2626; /* = text-red-600 текста ошибки */
}

/* ============================================================
   Скачивание саммари: иконка рядом с кнопкой «Саммари» + мини-поповер docx/pdf.
   Кнопка «Саммари» только ОТКРЫВАЕТ саммари (страница интерактива), файл отдают
   отдельные маршруты — поэтому это два разных контрола.
   ============================================================ */
.lk-summary-wrap {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

/* Скачивать нечего, пока саммари не готово: показываем иконку только рядом с ready-кнопкой.
   Соседний селектор — .lk-summary-dl идёт сразу за .lk-summary, состояние ставит JS. */
.lk-summary-dl {
    position: relative;
    display: none;
    flex-shrink: 0;
}

.lk-summary[data-summary-state="ready"] + .lk-summary-dl {
    display: inline-flex;
}

.lk-summary-dl__toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 1.5px solid var(--lk-violet);
    border-radius: 12px;
    background: var(--lk-white);
    color: var(--lk-violet);
    cursor: pointer;
    transition: background-color 0.15s ease;
}

.lk-summary-dl__toggle:hover {
    background: var(--lk-violet-bg);
}

.lk-summary-dl__toggle svg {
    width: 16px;
    height: 16px;
}

.lk-summary-dl__pop {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 40;
    display: none;
    flex-direction: column;
    min-width: 132px;
    padding: 8px;
    background-color: var(--lk-white);
    border-radius: 14px;
    box-shadow: 0 12px 40px rgba(55, 54, 56, 0.18);
    box-sizing: border-box;
    cursor: default;
}

.lk-summary-dl.is-open .lk-summary-dl__pop {
    display: flex;
}

/* стрелка вверх к иконке — как у поп-апа скачивания файла */
.lk-summary-dl__pop::before {
    content: "";
    position: absolute;
    top: -6px;
    right: 13px;
    width: 14px;
    height: 14px;
    background-color: var(--lk-white);
    transform: rotate(45deg);
    border-radius: 3px;
}

.lk-summary-dl__item {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 10px;
    border: 0;
    border-radius: 10px;
    background: transparent;
    color: var(--lk-text);
    font-size: 14px;
    text-align: left;
    cursor: pointer;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.lk-summary-dl__item:hover {
    background: var(--lk-violet-bg);
    color: var(--lk-violet);
}

.lk-summary-dl__item-icon {
    display: inline-flex;
    flex-shrink: 0;
    width: 18px;
    height: 18px;
}

.lk-summary-dl__item-icon svg {
    width: 100%;
    height: 100%;
}
