/* ==========================================================================
   INTRO SMS — оформление кабинета (шаблон dashboard)

   Подключается <link>-ом в templates/dashboard/header.tpl. Публичный
   лендинг сюда не входит: у него собственный файл rentos-landing.css с
   тёмной темой, а общего между ними осталось только семейство Inter из
   fonts.css.

   Акцент кабинета (#802BE3) живёт в настройках темы и компилируется в
   templates/dashboard/assets/css/style.min.css из templates/_scss/. Здесь
   только то, что переменной $theme не выражается.

   Апдейтер Zender копирует поверх лишь файлы из пакета обновления, а этого
   имени он не знает — файл переживает апдейт. Восстанавливать после
   обновления нужно только строку <link> в шапке.
   ========================================================================== */

/* Сайдбар: сплошной фиолетовый во всю высоту экрана слишком тяжёлый,
   поэтому тёмные поверхности здесь индиговые, как на rentos365.app. */
.navbar-vertical.navbar-dark.navbar-vibrant {
    background-image: linear-gradient(to bottom right, rgba(7, 0, 80, 0.94), rgba(7, 0, 80, 0.99)) !important;
    background-color: #070050 !important;
}

/* Шрифт кабинета.

   Dashkit набран Cerebri Sans, а в нём НЕТ кириллицы — русский текст
   проваливался в системный шрифт и выглядел чужеродно. Переводим интерфейс
   на Inter, он подключается из fonts.css вместе с кириллическими
   подмножествами.

   Правило намеренно не трогает псевдоэлементы: иконки Dashkit нарисованы
   шрифтом Feather через ::before и ::after, и у их селекторов собственное
   font-family с большей специфичностью — оно уцелеет. */
body,
body h1, body h2, body h3, body h4, body h5, body h6,
body .btn, body .form-control, body .form-select,
body .navbar, body .card, body .dropdown-item,
body .nav-link, body table, body input, body select, body textarea {
    font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
}

/* Цифры в таблицах и сводках — моноширинные, чтобы столбцы не плясали. */
body .table td,
body .table th {
    font-variant-numeric: tabular-nums;
}

.navbar-vertical .navbar-brand {
    font-family: "Inter", sans-serif;
}

/* Боковое меню на телефоне.

   .navbar-vertical.navbar-expand-md становится position: fixed только с
   768px. Ниже это обычный навбар в потоке, и раскрытие #sidebarCollapse
   увеличивает его высоту — вся страница уезжает вниз, а при закрытии
   возвращается. Поведение штатное для Dashkit, но выглядит как рывок.

   Раскрываем меню НАД содержимым: тогда страница остаётся на месте.

   Важно: style.min.css темы вешает на .navbar-vertical
   overflow-y: hidden !important — это ради прокрутки сайдбара на десктопе.
   Абсолютно спозиционированное меню лежит НИЖЕ границы #sidebar, и это
   правило обрезает его целиком: под шапкой остаётся пустой прямоугольник.
   Меню оставляем в обычном потоке внутри шапки, а на время, пока оно
   открыто, прибиваем к экрану саму шапку целиком. Так не нужно ниоткуда
   вычитать её высоту — панель просто занимает экран сверху и прокручивается
   внутри себя.

   Это же лечит два сбоя, которые были при абсолютном позиционировании:
   меню уезжало вместе со страницей, а когда его собственная прокрутка
   упиралась в конец, браузер продолжал её на странице (scroll chaining) —
   со стороны выглядело так, будто страница заезжает под меню. Теперь body
   на это время не прокручивается вовсе, а overscroll-behavior обрывает
   цепочку прокрутки на панели.

   overflow-y: auto идёт с !important, потому что тема ставит на
   .navbar-vertical overflow-y: hidden !important — без перебивки панель
   обрезала бы собственное меню.

   Условие на родителе — :has(). Он есть во всех браузерах с конца 2023
   года; там, где его нет, меню просто раскроется в потоке, как задумано
   самим Dashkit. */
@media (max-width: 767.98px) {
    body:has(#sidebarCollapse.show),
    body:has(#sidebarCollapse.collapsing) {
        overflow: hidden;
    }

    #sidebar:has(#sidebarCollapse.show),
    #sidebar:has(#sidebarCollapse.collapsing) {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        z-index: 1045;
        max-height: 100vh;
        max-height: 100dvh;
        overflow-y: auto !important;
        overscroll-behavior: contain;
        box-shadow: 0 24px 48px -24px rgba(0, 0, 0, 0.65);
    }

    #sidebar #sidebarCollapse.show,
    #sidebar #sidebarCollapse.collapsing {
        padding-bottom: 1.25rem;
    }
}
