:root {
    --sidebar-width: 280px;
    --sidebar-icon-width: 72px;
    --content-min: 480px;
    --layout-max: 1400px;
}

/* Sidebars */
.left-sidebar,
.right-sidebar {
    background-color: var(--night-sky);
    color: white;
    scrollbar-color: auto transparent;
    width: var(--sidebar-width) !important;
}

/* Layout wrapper */
#layoutWrapper {
    max-width: var(--layout-max);
    margin: 0 auto;
    min-height: 100vh;
}

/* Nav sidebar links */
.sidebar-link {
    color: white;
}
.sidebar-link:hover {
    background-color: rgba(255, 255, 255, 0.1);
    color: white;
}

/* Top bar: visible below 832px where both sidebars are offcanvas */
.top-bar-narrow {
    display: flex;
}

/*
 * 832px+: both sidebars become sticky flex columns.
 * Left nav starts in icon-only mode at this breakpoint (832px = 72 + 480 + 280).
 * Full left nav text is restored at 1040px (= 280 + 480 + 280).
 */
@media (min-width: 832px) {
    #layoutWrapper {
        display: flex;
        align-items: flex-start;
    }

    .left-sidebar  { order: 1; }
    #mainContent   { order: 2; }
    .right-sidebar { order: 3; }

    .left-sidebar {
        position: sticky !important;
        top: 0;
        height: 100vh;
        overflow-y: auto;
        flex-shrink: 0;
        transform: none !important;
        visibility: visible !important;
        border-right: var(--border-grid);
        width: var(--sidebar-icon-width) !important;
    }

    .right-sidebar {
        position: sticky !important;
        top: 0;
        height: 100vh;
        overflow-y: auto;
        flex-shrink: 0;
        transform: none !important;
        visibility: visible !important;
        border-left: var(--border-grid);
    }

    #mainContent {
        flex: 1;
        min-width: var(--content-min);
        max-width: 760px;
    }

    /* Hide offcanvas dismiss buttons and the mobile top bar */
    .offcanvas-dismiss,
    .top-bar-narrow {
        display: none !important;
    }
}

/* Icon-only left nav: 832px–1039px */
@media (min-width: 832px) and (max-width: 1039px) {
    /* Center icons; Bootstrap's gap-3/px-3 classes are overridden to remove text spacing */
    .sidebar-link {
        justify-content: center;
        padding-left: 0 !important;
        padding-right: 0 !important;
        gap: 0 !important;
    }

    /* Hide text labels, logo, footer, auth buttons */
    .sidebar-link span,
    .left-sidebar .navbar-brand,
    .left-sidebar footer,
    .left-sidebar form,
    .left-sidebar .btn {
        display: none !important;
    }
}

/* 1040px+: restore full-width left nav with text */
@media (min-width: 1040px) {
    .left-sidebar {
        width: var(--sidebar-width) !important;
    }
}
