:root {
    --pt-nav-touch-size: 48px;
    --pt-nav-min-column: 240px;
    --pt-nav-header-offset: 5rem;
    --pt-nav-z-index: 1030;
    --pt-nav-panel-z-index: 1035;
    --pt-nav-backdrop-z-index: 1034;
    --pt-nav-focus-width: 3px;
    --pt-nav-focus-offset: 2px;
    --pt-nav-brand-min: 110px;
    --pt-nav-brand-max: 190px;
}

.partrack-navbar {
    position: sticky;
    top: 0;
    z-index: var(--pt-nav-z-index);
    width: 100%;
}

.partrack-navbar .navbar-nav {
    min-width: 0;
}

.partrack-navbar-brand {
    display: inline-flex;
    align-items: center;
    min-height: var(--pt-nav-touch-size);
    min-width: var(--pt-nav-brand-min);
    width: clamp(var(--pt-nav-brand-min), 12vw, var(--pt-nav-brand-max));
}

.partrack-navbar-brand img,
.partrack-navbar-brand .logo-area {
    width: 100%;
    max-width: 100%;
    background-size: contain;
    background-position: left center;
    background-repeat: no-repeat;
}

.partrack-navbar-actions {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-left: auto;
    flex: 0 0 auto;
    min-width: max-content;
}

.partrack-navbar .nav-link,
.partrack-navbar .dropdown-item,
.partrack-navbar .accordion-button,
.partrack-navbar .list-group-item-action,
.partrack-navbar .btn {
    min-height: var(--pt-nav-touch-size);
    display: flex;
    align-items: center;
}

.partrack-navbar .navbar-nav > .nav-item > .nav-link,
.partrack-navbar .navbar-nav > .nav-item > .btn,
.partrack-navbar .navbar-nav > .nav-item > button {
    white-space: nowrap;
}

.partrack-desktop-navigation [data-nav-module] {
    transition: background-color .2s ease, color .2s ease;
}

.partrack-desktop-navigation [data-nav-module] .partrack-nav-label {
    display: inline-block;
    margin-left: .15rem;
    max-width: 9ch;
    overflow: hidden;
    white-space: nowrap;
    text-overflow: clip;
    vertical-align: middle;
    transition: max-width .28s ease, opacity .2s ease;
}

.partrack-desktop-navigation .nav-item.dropdown:hover > [data-nav-module] .partrack-nav-label,
.partrack-desktop-navigation [data-nav-module]:focus-visible .partrack-nav-label,
.partrack-desktop-navigation [data-nav-module][aria-expanded="true"] .partrack-nav-label {
    max-width: 18ch;
}

.partrack-nav-icon, .partrack-nav-current > i, .partrack-navbar .list-group-item-action > i {
    flex: 0 0 1.5rem;
    width: 1.5rem;
    margin-right: 5px;
    text-align: center;
}

/* Mega menu dropdown fix: remove gap between trigger button and menu pane
 * that causes hover loss. Popper.js creates default spacing; we bridge it.
 * 
 * Note: Using position: relative on the container (not static) to ensure
 * the dropdown-menu positioned absolutely is scoped within the nav item.
 * This ensures the menu appears directly below the button without gaps.
 * 
 * The structure is: <li class="nav-item dropdown position-static">
 *   <button ...>Trigger</button>
 *   <div class="dropdown-menu partrack-mega-menu">Menu content</div>
 * </li>
 */

/* Use position: relative (not static) so absolutely positioned children
   are positioned relative to this element, not the document */
li.dropdown.position-static,
.nav-item.dropdown.position-static {
    position: relative !important;
    /* Ensure no padding on the container that would offset the menu */
    padding: 0 !important;
}

/* Position dropdown menu directly below the trigger button with 0px gap - SAME FOR HOVER AND CLICK */
li.dropdown.position-static .dropdown-menu,
.nav-item.dropdown.position-static .dropdown-menu {
    /* Position fixed to viewport for consistent full-width display */
    position: fixed !important;
    /* Remove all margins that could create gaps */
    margin: 0 !important;
    /* Position at the bottom of the navbar */
    top: var(--pt-nav-touch-size) !important;
    /* Align with left edge of the screen */
    left: 0 !important;
    /* Full screen width */
    width: 100vw !important;
    /* Ensure no border-top spacing */
    border-top: none !important;
}

/* Override Bootstrap's .show class positioning to match hover state */
li.dropdown.position-static .dropdown-menu.show,
.nav-item.dropdown.position-static .dropdown-menu.show {
    position: fixed !important;
    top: var(--pt-nav-touch-size) !important;
    left: 0px !important;
    right: unset !important;
    width: 100vw !important;
    margin: 0 !important;
    max-width: none !important;
    transform: none !important;
    inset: unset !important;
    /* Override Popper.js inline styles */
    bottom: unset !important;
}

/* Maintain menu visibility on hover to prevent collapse during mouse movement */
li.dropdown.position-static:hover .dropdown-menu,
.nav-item.dropdown.position-static:hover .dropdown-menu,
li.dropdown.position-static .dropdown-menu:hover,
.nav-item.dropdown.position-static .dropdown-menu:hover {
    margin: 0 !important;
}

.partrack-mega-menu {
    width: 100% !important;
    max-height: calc(100dvh - var(--pt-nav-header-offset));
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    -webkit-overflow-scrolling: touch;
}

.partrack-mega-menu .container,
.partrack-mega-menu .container-fluid {
    padding-left: .5rem;
    padding-right: .5rem;
}

.partrack-mega-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(var(--pt-nav-min-column), 100%), 1fr));
    gap: .5rem;
    align-items: start;
}

.partrack-mega-grid > *,
.partrack-menu-section,
.partrack-mega-grid > [class*="col-"] {
    min-width: 0;
    width: auto;
    max-width: none;
    padding: 0;
}

.partrack-mega-grid > [class*="col-"] {
    margin: 0 !important;
    float: none;
    flex: initial;
}

.partrack-mega-grid .list-group {
    width: 100%;
    margin: 0;
}

.partrack-mega-grid .list-group + .list-group {
    margin-top: .5rem;
}

.partrack-mega-menu .list-group-item {
    width: 100%;
    padding: .45rem .75rem;
    border-radius: 0;
}

.partrack-menu-heading,
.partrack-mobile-section-heading {
    margin: 0;
    padding: .5rem .75rem;
    font-size: .875rem;
    font-weight: 700;
    line-height: 1.2;
    text-transform: uppercase;
    letter-spacing: .02em;
}

.partrack-mega-menu .dropdown-item,
.partrack-mega-menu .list-group-item,
.partrack-mobile-navigation .dropdown-item,
.partrack-mobile-navigation .list-group-item,
.partrack-mobile-navigation .accordion-button,
.partrack-nav-search-result {
    white-space: normal;
    overflow-wrap: anywhere;
}

.partrack-mobile-navigation {
    height: 100dvh;
    max-height: 100dvh;
    max-width: min(100vw, 30rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.partrack-mobile-navigation .offcanvas-body {
    overflow-y: visible;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

.partrack-mobile-navigation .accordion-item {
    overflow: hidden;
}

.partrack-mobile-navigation .accordion-button.partrack-mobile-section-toggle {
    min-height: var(--pt-nav-touch-size);
    padding: .5rem .75rem;
    font-size: .875rem;
    font-weight: 700;
    align-items: center;
}

.partrack-mobile-navigation .accordion-button.partrack-mobile-section-toggle:not(.collapsed) {
    filter: brightness(.97);
}

.partrack-mobile-navigation .accordion-button.partrack-mobile-section-toggle::after {
    margin-left: auto;
}

.partrack-mobile-navigation .accordion-body .list-group-item {
    padding: .45rem .75rem;
}

.partrack-nav-search {
    position: sticky;
    top: 0;
    z-index: 1;
    background: inherit;
    padding-bottom: .75rem;
}

.partrack-nav-search-results {
    display: grid;
    gap: .5rem;
}

.partrack-nav-search-result {
    display: block;
    min-height: var(--pt-nav-touch-size);
    padding: .75rem 1rem;
    border-radius: .5rem;
    text-decoration: none;
}

.partrack-nav-search-result-context {
    display: block;
    font-size: .8125rem;
    opacity: .8;
}

.partrack-navbar a:focus-visible,
.partrack-navbar button:focus-visible,
.partrack-navbar input:focus-visible,
.partrack-navbar summary:focus-visible {
    outline: var(--pt-nav-focus-width) solid currentColor;
    outline-offset: var(--pt-nav-focus-offset);
    border-radius: .25rem;
}

.partrack-nav-active,
.partrack-nav-current {
    font-weight: 700;
}

.partrack-nav-active {
    box-shadow: inset 0 -3px 0 currentColor;
}

.partrack-nav-current {
    text-decoration: underline;
    text-underline-offset: .2em;
}

.partrack-shell-topbar {
    position: sticky;
    top: 0;
    z-index: var(--pt-nav-z-index);
    background-color: var(--bs-dark);
    padding: .25rem .5rem;
}

.partrack-shell-row {
    display: grid;
    grid-template-columns: auto minmax(220px, 1fr) auto;
    align-items: center;
    gap: .5rem;
}

.partrack-shell-search-wrap {
    min-width: 0;
}

.partrack-shell-search-wrap .form-control,
.partrack-shell-search-wrap .input-group-text {
    min-height: calc(var(--pt-nav-touch-size) - 10px);
}

.partrack-shell-module-pill {
    display: inline-flex;
    align-items: center;
    min-height: 2rem;
    padding: 0 .6rem;
    border-radius: 999px;
    background: rgba(255,255,255,.18);
    color: #fff;
    font-size: .85rem;
    white-space: nowrap;
}

.partrack-shell-actions {
    display: flex;
    align-items: center;
    gap: .25rem;
}

.partrack-shell-actions .btn,
.partrack-shell-actions .nav-link {
    min-width: 40px;
    justify-content: center;
}

.partrack-shell-context-nav {
    background: var(--bs-body-bg);
    border-bottom: 1px solid var(--bs-border-color);
}

.partrack-shell-module-list {
    display: flex;
    gap: .35rem;
    flex-wrap: wrap;
    padding: .4rem 0;
}

.partrack-shell-module-list .nav-link {
    min-height: 36px;
    padding: .35rem .65rem;
    border-radius: 999px;
    color: var(--bs-body-color);
}

.partrack-shell-module-list .nav-link.active {
    background: var(--bs-primary);
    color: #fff;
}

@media (max-width: 1199.98px) {
    .partrack-shell-row {
        grid-template-columns: auto auto;
    }

    .partrack-shell-search-wrap {
        grid-column: 1 / -1;
        order: 3;
    }
}

@media (max-width: 767.98px) {
    .partrack-shell-module-pill {
        display: none;
    }

    .partrack-shell-module-list {
        overflow-x: auto;
        flex-wrap: nowrap;
        scrollbar-width: thin;
    }
}

@media (min-width: 1400px) {
    .partrack-desktop-navigation {
        display: flex !important;
        align-items: center;
        min-width: 0;
        flex: 1 1 auto;
    }

    .partrack-mobile-navigation-toggle,
    .partrack-mobile-navigation-shell {
        display: none !important;
    }

    .partrack-navbar .navbar-nav {
        flex-wrap: wrap;
        align-items: center;
        row-gap: .15rem;
    }
}

@media (max-width: 1399.98px) {
    .partrack-desktop-navigation {
        display: none !important;
    }

    .partrack-mobile-navigation-toggle,
    .partrack-mobile-navigation-shell {
        display: block;
    }
}

@media (max-width: 767.98px) {
    .partrack-mega-grid {
        grid-template-columns: 1fr;
        gap: .75rem;
    }

    .partrack-mobile-navigation {
        max-width: 100vw;
    }
}

@media (max-height: 600px) {
    .partrack-mega-menu {
        max-height: calc(100dvh - 3.5rem);
    }

    .partrack-mobile-navigation {
        height: 100dvh;
    }
}

@media (prefers-reduced-motion: reduce) {
    .partrack-navbar *,
    .partrack-navbar *::before,
    .partrack-navbar *::after,
    .partrack-shell-topbar *,
    .partrack-shell-topbar *::before,
    .partrack-shell-topbar *::after {
        scroll-behavior: auto !important;
        transition-duration: .01ms !important;
        animation-duration: .01ms !important;
    }
}
