body.navigation-shell { margin: 0; --navigation-width: 264px; }
.navigation-content { margin-left: var(--navigation-width); min-width: 0; min-height: 100dvh; display: flex; flex-direction: column; }
.navigation-main { min-width: 0; flex: 1; padding-top: 1rem; }
.navigation-sidebar { --bs-offcanvas-width: min(264px, calc(100vw - 24px)); position: fixed; inset: 0 auto 0 0; width: var(--navigation-width); height: 100dvh; display: flex; flex-direction: column; z-index: 1045; }
.navigation-brand-row { display: flex; align-items: center; gap: .25rem; padding: .75rem .5rem; min-height: 64px; flex-shrink: 0; }
.navigation-brand { display: flex; align-items: center; gap: .65rem; padding: .5rem; color: var(--bs-emphasis-color); text-decoration: none; font-size: 1.15rem; font-weight: 650; min-width: 0; }
.navigation-brand .bi { width: 20px; flex-shrink: 0; }
.navigation-collapse { margin-left: auto; color: var(--bs-secondary-color); }
.navigation-close, .navigation-mobile-toggle { display: none; }
.navigation-scroll { min-height: 0; overflow-y: auto; overflow-x: hidden; padding: .25rem .5rem; flex: 1; }
.navigation-bottom { padding: .5rem; flex-shrink: 0; }
.navigation-sidebar .nav-link, .navigation-flyout .nav-link { display: flex; align-items: center; gap: .65rem; width: 100%; min-height: 40px; padding: .5rem .65rem; border: 0; border-radius: .5rem; color: var(--bs-body-color); text-align: left; background: transparent; text-decoration: none; line-height: 1.35; }
.navigation-sidebar .nav-link > .bi { width: 20px; flex-shrink: 0; font-size: 1.1rem; text-align: center; }
.navigation-sidebar .nav-link:hover, .navigation-flyout .nav-link:hover { background: var(--bs-secondary-bg); color: var(--bs-emphasis-color); }
.navigation-sidebar .nav-link.active, .navigation-flyout .nav-link.active { background: var(--bs-primary-bg-subtle); color: var(--bs-primary-text-emphasis); font-weight: 600; }
.navigation-sidebar :is(a, button):focus-visible, .navigation-flyout a:focus-visible { outline: 2px solid var(--bs-primary); outline-offset: -2px; }
.navigation-group { margin-top: .25rem; }
.navigation-group-toggle .navigation-chevron { margin-left: auto; width: auto; font-size: .7rem; }
.navigation-group-toggle[aria-expanded="true"] .navigation-chevron { transform: rotate(180deg); }
.navigation-submenu { padding-left: 1.5rem; }
.navigation-submenu .nav-link { font-size: .9rem; }
.navigation-sidebar [hidden], .navigation-flyout [hidden] { display: none !important; }
.navigation-topbar { min-width: 0; }
.navigation-topbar .navbar-nav { flex-direction: row; align-items: center; gap: .75rem; flex-wrap: wrap; }
.navigation-topbar .nav-link { padding-block: .5rem; }
.navigation-footer { min-width: 0; }
.navigation-footer > .mt-5.pt-5, .navigation-footer > .mt-5.pt-5 > .mt-5.pt-5 { margin-top: 0 !important; padding-top: 0 !important; }
.navigation-footer footer.footer { margin-top: 0 !important; position: static; }
.navigation-footer .nav-link { overflow-wrap: anywhere; }
.navigation-admin-page { overflow-x: auto; }
.navigation-admin-page .table tr td { max-width: 700px; min-width: 170px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.navigation-skip { position: fixed; top: .5rem; left: .5rem; transform: translateY(-200%); z-index: 1100; background: var(--bs-body-bg); padding: .5rem 1rem; border: 2px solid var(--bs-primary); }
.navigation-skip:focus { transform: none; }
.navigation-flyout.dropdown-menu { position: fixed; width: 264px; max-width: calc(100vw - 24px); overflow-y: auto; z-index: 1060; padding: .5rem; margin: 0; }
.navigation-flyout .navigation-submenu { padding-left: 0; }
.navigation-flyout-heading { font-size: .9rem; font-weight: 650; padding: .5rem .65rem; margin: 0; color: var(--bs-secondary-color); }
@media (min-width: 992px) {
    .navigation-sidebar.offcanvas-lg { position: fixed; display: flex; width: var(--navigation-width); height: 100dvh !important; visibility: visible !important; background-color: var(--bs-tertiary-bg) !important; border-right: 1px solid var(--bs-border-color) !important; }
    .navigation-collapsed { --navigation-width: 56px !important; }
    .navigation-collapsed .navigation-sidebar .navigation-label { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
    .navigation-collapsed .navigation-brand-row { flex-direction: column; padding: .25rem; }
    .navigation-collapsed .navigation-collapse { margin: 0; }
    .navigation-collapsed .navigation-scroll, .navigation-collapsed .navigation-bottom { padding-inline: .25rem; }
    .navigation-collapsed .navigation-sidebar .nav-link { justify-content: center; padding-inline: .5rem; }
    .navigation-collapsed .navigation-sidebar .navigation-chevron { display: none; }
}
@media (max-width: 991.98px) {
    .navigation-content { margin-left: 0; }
    .navigation-sidebar { width: var(--bs-offcanvas-width); }
    .navigation-close { display: block; margin-left: auto; }
    .navigation-mobile-toggle { display: inline-block; }
    .navigation-collapse { display: none; }
    /* Progressive enhancement: all links remain available when scripts cannot run. */
    body:not(.navigation-ready) .navigation-sidebar { position: static; width: 100%; height: auto; visibility: visible; transform: none; }
    body:not(.navigation-ready) .navigation-close, body:not(.navigation-ready) .navigation-mobile-toggle { display: none; }
}
body:not(.navigation-ready) .navigation-collapse { display: none; }
@media (prefers-reduced-motion: reduce) {
    .navigation-sidebar, .navigation-sidebar * { transition: none !important; }
}
