/* ═══════════════════════════════════════════════════════════════════════════
   Видимый фокус с клавиатуры. v1.38.94.

   ЗАЧЕМ ОТДЕЛЬНЫЙ ФАЙЛ И ПОЧЕМУ !important.
   В проекте 61 объявление «outline: none». Из них 26 висят на :focus вместе с
   заменой border-color — визуально это «подсветка рамкой», и для мыши всё в
   порядке. Но специфичность таких правил (например `#message-input:focus`,
   `[data-skin="cyberpunk"] input:focus`) выше, чем у общего `*:focus-visible`
   в theme-extra.css, поэтому у клавиатурного пользователя кольцо фокуса
   пропадало. Измерено в браузере: на #message-input при клавиатурном фокусе
   outline-width = 0px, box-shadow = none — то есть индикатора не было вообще.

   Поднять специфичность обычными средствами нельзя: часть правил использует id
   и атрибутные селекторы, перебить их «честно» можно только ещё более длинными
   селекторами, которые сами станут проблемой. Поэтому — единственное место в
   проекте, где !important оправдан: правило действует ТОЛЬКО в состоянии
   :focus-visible, то есть при навигации с клавиатуры и у экранного диктора, и
   не влияет ни на один сценарий с мышью.

   Файл подключается ПОСЛЕДНИМ (после skins.css), чтобы скины его не перекрыли.
   ══════════════════════════════════════════════════════════════════════════ */

:focus-visible {
    outline: 2px solid var(--accent, #58a6ff) !important;
    /* offset 1px, а не 2px: у полей внутри контейнеров с overflow:hidden
       кольцо с большим отступом обрезается краем контейнера. */
    outline-offset: 1px !important;
}

/* Кнопки и ссылки: у них в theme-extra.css уже нарисовано «двойное кольцо»
   через box-shadow (оно лучше читается на плотных панелях). Оставляем его,
   а outline гасим, чтобы не было двух колец сразу. */
button:focus-visible,
a:focus-visible,
.btn:focus-visible {
    outline: none !important;
    box-shadow: 0 0 0 2px var(--bg-base), 0 0 0 4px var(--accent);
}

/* Строки списка чатов и ленты сообщений — новые клавиатурные цели v1.38.94.
   Кольцо рисуем ВНУТРЬ (отрицательный offset): строка занимает всю ширину
   колонки, и внешнее кольцо срезалось бы краем сайдбара. */
.chat-item:focus-visible,
.msg-row:focus-visible {
    outline: 2px solid var(--accent, #58a6ff) !important;
    outline-offset: -2px !important;
}

/* Пункт контекстного меню при навигации стрелками. Меню маленькое и плотное,
   кольцо снаружи вылезло бы за его границу (у меню overflow: hidden). */
.context-item:focus,
.context-item:focus-visible {
    outline: 2px solid var(--accent, #58a6ff) !important;
    outline-offset: -2px !important;
    background: var(--bg-hover);
}

/* Windows High Contrast / forced-colors: системная тема заменяет цвета своими,
   и var(--accent) там не существует. Просим систему нарисовать свой фокус. */
@media (forced-colors: active) {
    :focus-visible {
        outline: 2px solid Highlight !important;
    }
}

/* ═══════════════════════════════════════════════════════════════════════════
   ДИАЛОГ ПОДТВЕРЖДЕНИЯ — ВСЕГДА СВЕРХУ. v1.38.94.

   Диалоги приложения (UI.confirm / UI.alert / UI.prompt) наследуют z-index
   2000 от .modal-overlay. Этого хватало, пока их вызывали из обычных окон.
   С заменой системных alert/confirm их стали вызывать в том числе с экрана
   PIN-блокировки (z-index 99999) и из полноэкранных просмотрщиков (100080) —
   там диалог оказывался ПОД ними: пользователь нажимал «Выйти», ничего не
   появлялось, и выйти было нельзя.

   Системное окно браузера всегда было поверх страницы; замена обязана вести
   себя так же. Значение выбрано выше максимума по проекту (100080).
   ══════════════════════════════════════════════════════════════════════════ */
.modal-overlay.nx-dlg-overlay {
    z-index: 2147480000;
}
