: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;
            }

    .submenu.scrollable {
        max-height: 100px;
        overflow-y: auto;
        overflow-x: hidden;
    }

    .submenu.scrollable::-webkit-scrollbar {
        width: 6px;
    }

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

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

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

    .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;
        }
}