:root {
    --sidebar-width: min(280px, calc(100vw - 5em));
    --sidebar-collapsed-width: min(60px, calc(100vw - 5em));
    --header-height: 50px;
    --sidebar-transition: 0.2s ease;
}

html {
    font-size: 14px;
}

body {
    background: linear-gradient(135deg, #1f1f1f 0%, #0a0a0a 50%, var(--bs-body-bg) 100%);
    color: var(--text-primary);
}

header {
    height: var(--header-height);
}

#spinner {
    position: fixed;
    display: none;
    inset: 0;
    z-index: 999999;
}

/* SIDEBAR */
.sidebar {
    width: var(--sidebar-width);
    z-index: 100;
}

    .sidebar > *:not(.collapse) {
        flex-shrink: 0;
    }

    .sidebar .sidebar-header {
        height: calc(var(--header-height) - 1px);
    }

    .sidebar:not(.collapsed) .sidebar-header {
        width: var(--sidebar-width);
    }

    .sidebar:not(.collapsed) #sidebar-logo {
        display: block;
    }

    .sidebar .menu-link:not(.active):hover,
    .sidebar .submenu-link:not(.active):hover {
        background: var(--bs-primary-bg-subtle);
    }

    .sidebar .menu .dropdown-toggle:after {
        display: none;
    }

    .sidebar .submenu .submenu-link {
        padding-left: var(--sidebar-collapsed-width);
    }

        .sidebar .submenu .submenu-link::before {
            content: '';
            display: inline-block;
            width: 5px;
            height: 5px;
            border-radius: 50%;
            background: rgba(var(--bs-white-rgb), 0.7);
            margin-right: 7px;
        }

#chat-submenu {
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-width: thin;
    -ms-overflow-style: auto;
}

    #chat-submenu::-webkit-scrollbar {
        width: 4px;
    }

    #chat-submenu::-webkit-scrollbar-track {
        background: rgba(255, 255, 255, 0.1);
        border-radius: 3px;
    }

    #chat-submenu::-webkit-scrollbar-thumb {
        background: rgba(255, 255, 255, 0.3);
        border-radius: 3px;
    }

        #chat-submenu::-webkit-scrollbar-thumb:hover {
            background: rgba(255, 255, 255, 0.5);
        }

    #chat-submenu .submenu-link .chat-title {
        padding-right: 12px;
    }

.menu-link-icon {
    width: var(--sidebar-collapsed-width);
}

.sidebar .badge {
    font-size: 0.75rem;
}

#sidebar .badge-circle:after {
    border: 2px solid var(--bs-dark);
}

/* SIDEBAR MOBILE */
@media (max-width: 767px) {
    #sidebar-mobile-toggle {
        display: block;
    }

    #sidebar-toggle {
        display: none;
    }

    .sidebar.sidebar-mobile-open {
        animation: sidebarSlideIn 0.2s forwards;
        left: 0 !important;
    }

    .sidebar:not(.sidebar-mobile-open) {
        animation: sidebarSlideOut 0.2s forwards;
        left: calc(-1 * var(--sidebar-width)) !important;
    }

    .sidebar-mobile-overlay {
        position: fixed;
        top: 0;
        left: var(--sidebar-width);
        width: 100%;
        height: 100%;
        background: rgba(var(--bs-black-rgb), 0.5);
        z-index: 99;
    }
}

/* SIDEBAR DESKTOP */
@media (min-width: 768px) {
    #sidebar-mobile-toggle {
        display: none;
    }

    #sidebar-toggle {
        display: block;
        transition: transform var(--sidebar-transition);
        cursor: pointer;
    }

    .sidebar.collapsed #sidebar-toggle {
        transform: rotate(180deg);
    }

    .sidebar.collapsed:not(:hover) {
        width: var(--sidebar-collapsed-width);
        overflow-y: hidden;
    }

        .sidebar.collapsed:not(:hover) #sidebar-logo {
            display: none;
        }

        .sidebar.collapsed:not(:hover) #sidebar-toggle {
            width: 100%;
        }

    .sidebar.collapsed ~ main {
        margin-left: var(--sidebar-collapsed-width);
        transition: margin-left var(--sidebar-transition);
    }

    .sidebar:not(.collapsed) ~ main {
        margin-left: var(--sidebar-width);
        transition: margin-left var(--sidebar-transition);
    }

    .sidebar.collapsed ~ header {
        width: calc(100% - var(--sidebar-collapsed-width));
        margin-left: var(--sidebar-collapsed-width);
        transition: width var(--sidebar-transition), margin-left var(--sidebar-transition);
    }

    .sidebar:not(.collapsed) ~ header {
        width: calc(100% - var(--sidebar-width));
        margin-left: var(--sidebar-width);
        transition: width var(--sidebar-transition), margin-left var(--sidebar-transition);
    }

    .sidebar.collapsed ~ footer {
        width: calc(100% - var(--sidebar-collapsed-width));
        margin-left: var(--sidebar-collapsed-width);
        transition: width var(--sidebar-transition), margin-left var(--sidebar-transition);
    }

    .sidebar:not(.collapsed) ~ footer {
        width: calc(100% - var(--sidebar-width));
        margin-left: var(--sidebar-width);
        transition: width var(--sidebar-transition), margin-left var(--sidebar-transition);
    }

    .sidebar.collapsed:not(:hover) .menu-text,
    .sidebar.collapsed:not(:hover) .submenu {
        display: none !important;
    }
}