/* Общие поправки интерфейса кабинета для Bootstrap 5 и AdminLTE 4. */
:root {
    color-scheme: light;
}

[data-bs-theme="dark"] {
    color-scheme: dark;
}

body,
.app-wrapper,
.app-main,
.app-content,
.app-content-header {
    background-color: var(--bs-body-bg) !important;
    color: var(--bs-body-color);
}

.app-header,
.app-sidebar,
.app-footer,
.card,
.info-box,
.dropdown-menu,
.modal-content {
    color: var(--bs-body-color);
    background-color: var(--bs-body-bg);
    border-color: var(--bs-border-color);
}

.app-sidebar {
    border-right: 1px solid var(--bs-border-color);
}

.app-sidebar .nav-link,
.app-sidebar .brand-link,
.app-sidebar .nav-header {
    color: var(--bs-body-color);
}

.app-sidebar .nav-link:hover,
.app-sidebar .nav-link:focus,
.app-sidebar .nav-link.active {
    color: var(--bs-emphasis-color);
    background-color: var(--bs-secondary-bg);
}

/* Визуальная иерархия служебных блоков бокового меню. */
.app-sidebar .sidebar-section-title {
    padding: .8rem 1rem .4rem;
    margin-top: .35rem;
    color: var(--bs-info) !important;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    border-bottom: 1px solid color-mix(in srgb, var(--bs-info) 35%, transparent);
}

.app-sidebar .sidebar-user-card,
.app-sidebar .sidebar-version-card {
    /* margin: .5rem .75rem; */
    padding: .75rem;
    background-color: var(--bs-tertiary-bg);
    border: 1px solid var(--bs-border-color);
    border-radius: var(--bs-border-radius);
}

.app-sidebar .sidebar-user-card {
    display: flex;
    gap: .65rem;
    align-items: center;
    color: var(--bs-body-color);
}

.app-sidebar .sidebar-user-card > i {
    color: var(--bs-info);
    font-size: 1.35rem;
}

.app-sidebar .sidebar-user-email {
    min-width: 0;
    overflow: hidden;
    font-size: .875rem;
    font-weight: 600;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-sidebar .sidebar-license-badge {
    padding: .35rem .75rem 0;
    line-height: 1;
}

.app-sidebar .sidebar-license-badge .badge {
    display: inline-block;
    max-width: 100%;
    padding: .3rem .5rem;
    overflow: hidden;
    font-size: .68rem;
    font-weight: 600;
    line-height: 1.2;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.app-sidebar .sidebar-license-badge br {
    display: none;
}

.app-sidebar .sidebar-license-icon {
    display: none;
}

.app-sidebar .sidebar-version-card {
    margin-top: 1rem;
    color: var(--bs-secondary-color);
    font-size: .75rem;
}

.app-sidebar .sidebar-version-row {
    display: flex;
    gap: .5rem;
    justify-content: space-between;
}

.app-sidebar .sidebar-version-row + .sidebar-version-row {
    padding-top: .4rem;
    margin-top: .4rem;
    border-top: 1px solid var(--bs-border-color);
}

.app-sidebar .sidebar-version-row strong {
    color: var(--bs-success);
    font-weight: 700;
}

/* В мини-режиме оставляем в карточке только номера версий. */
@media (min-width: 992px) {
    /* Не даём пунктам меню прыгать при появлении заголовка после наведения. */
    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-section-title {
        display: block;
        color: transparent !important;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-license-badge {
        padding-right: 0;
        padding-left: 0;
        text-align: center;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-license-badge .badge {
        display: none;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-license-icon {
        display: inline-block;
        font-size: 1.25rem;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-version-card {
        padding-right: .25rem;
        padding-left: .25rem;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-version-row {
        gap: 0;
        justify-content: center;
    }

    body.sidebar-mini.sidebar-collapse .app-sidebar:not(:hover):not(.sidebar-focused) .sidebar-version-row > span {
        display: none;
    }
}

/* AdminLTE 4 не задаёт внешний вертикальный интервал обычным карточкам. */
.app-content .card,
.app-content .info-box,
.admin-content .card {
    margin-bottom: 1rem;
}

/* В AdminLTE 4 отсутствуют некоторые цветовые утилиты AdminLTE 3. */
.bg-indigo {
    color: #fff !important;
    background-color: #6610f2 !important;
}

.bg-purple {
    color: #fff !important;
    background-color: #6f42c1 !important;
}

/* Ссылка остаётся внутри карточки, но вся карточка работает как ссылка. */
.dashboard-link-card {
    cursor: pointer;
    transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.dashboard-link-card:hover,
.dashboard-link-card:focus-visible {
    z-index: 1;
    border-color: color-mix(in srgb, var(--bs-primary) 45%, var(--bs-border-color));
    box-shadow: 0 .65rem 1.25rem rgba(0, 0, 0, .18);
    transform: translateY(-2px);
}

.dashboard-link-card:focus-visible {
    outline: 2px solid var(--bs-primary);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .dashboard-link-card {
        transition: none;
    }
}

/* card-secondary используется как базовая карточка, а не как тёмный акцент. */
[data-bs-theme="light"] .card-secondary > .card-header {
    color: var(--bs-body-color);
    background-color: var(--bs-secondary-bg);
    border-bottom-color: var(--bs-border-color);
}

[data-bs-theme="dark"] .card-secondary > .card-header {
    color: var(--bs-body-color);
    background-color: var(--bs-tertiary-bg);
    border-bottom-color: var(--bs-border-color);
}

.theme-toggle {
    width: 2.25rem;
    height: 2.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border-radius: 50%;
}

/* Все интерактивные элементы шапки стоят на одной горизонтальной оси. */
.app-header .header-controls {
    align-items: center;
    gap: .5rem;
}

.app-header .header-control {
    display: flex;
    align-items: center;
    margin: 0;
}

.app-header .header-control .nav-link,
.app-header .header-control form,
.app-header .header-control .form-select,
.app-header .header-control .theme-toggle {
    margin-top: 0;
    margin-bottom: 0;
}

.app-header .header-control .nav-link {
    min-height: 2.25rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.app-header .header-language .form-select-sm {
    height: 2.25rem;
    padding-top: 0;
    padding-bottom: 0;
}

.app-header .header-profile .nav-link {
    gap: .3rem;
}

[data-bs-theme="dark"] .table,
[data-bs-theme="dark"] .dropdown-item,
[data-bs-theme="dark"] .form-control,
[data-bs-theme="dark"] .form-select {
    color: var(--bs-body-color);
}

[data-bs-theme="dark"] .dropdown-item:hover,
[data-bs-theme="dark"] .dropdown-item:focus {
    color: var(--bs-emphasis-color);
    background-color: var(--bs-secondary-bg);
}

/*
 * Совместимость с компонентами AdminLTE 3.
 *
 * В AdminLTE 4 были удалены quote-* и цветные badge-* классы, однако они
 * остаются частью разметки кабинета (в том числе формируемой на сервере).
 * Оставляем старый API классов до постепенного перевода шаблонов на утилиты
 * Bootstrap 5 и используем переменные темы, чтобы блоки корректно выглядели
 * как в светлом, так и в тёмном режиме.
 */
.text-sm {
    font-size: .875rem !important;
}

blockquote[class*="quote-"] {
    --lte-quote-color: var(--bs-primary);
    padding: .75rem 1rem;
    margin: 0 0 1rem;
    color: var(--bs-body-color);
    background-color: var(--bs-tertiary-bg);
    border-left: .35rem solid var(--lte-quote-color);
    border-radius: 0 var(--bs-border-radius) var(--bs-border-radius) 0;
}

blockquote[class*="quote-"] > :last-child {
    margin-bottom: 0;
}

blockquote[class*="quote-"] h1,
blockquote[class*="quote-"] h2,
blockquote[class*="quote-"] h3,
blockquote[class*="quote-"] h4,
blockquote[class*="quote-"] h5,
blockquote[class*="quote-"] h6 {
    color: var(--lte-quote-color);
}

blockquote.quote-primary { --lte-quote-color: var(--bs-primary); }
blockquote.quote-secondary { --lte-quote-color: var(--bs-secondary); }
blockquote.quote-success { --lte-quote-color: var(--bs-success); }
blockquote.quote-info { --lte-quote-color: var(--bs-info); }
blockquote.quote-warning { --lte-quote-color: var(--bs-warning); }
blockquote.quote-danger { --lte-quote-color: var(--bs-danger); }
blockquote.quote-light { --lte-quote-color: var(--bs-light); }
blockquote.quote-dark { --lte-quote-color: var(--bs-dark); }

.badge-primary { color: #fff; background-color: var(--bs-primary); }
.badge-secondary { color: #fff; background-color: var(--bs-secondary); }
.badge-success { color: #fff; background-color: var(--bs-success); }
.badge-info { color: #000; background-color: var(--bs-info); }
.badge-warning { color: #000; background-color: var(--bs-warning); }
.badge-danger { color: #fff; background-color: var(--bs-danger); }
.badge-light { color: #000; background-color: var(--bs-light); }
.badge-dark { color: #fff; background-color: var(--bs-dark); }

@media (max-width: 575.98px) {
    .app-header .form-select-sm {
        max-width: 9.5rem;
    }
}
