/* Sidebar nav */
.trax-nav {
    height: 100%;
    display: grid;
    grid-template-rows: auto 1fr auto;
    padding: 0;
}

.trax-nav-brand {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    user-select: none;
    /*border-bottom: 1px solid var(--neutral-layer-3);*/
    transition: padding 0.3s ease, flex-direction 0.3s ease, gap 0.3s ease;
}

.trax-nav-toggle {
    width: 36px;
    height: 36px;
    /*border-radius: var(--trax-radius);*/
    border: 0;
    background: transparent;
    color: var(--neutral-stroke-strong-rest);
    cursor: pointer;
    margin-left: auto;
    transition: background-color 0.1s ease, margin 0.3s ease, width 0.3s ease, height 0.3s ease;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .trax-nav-toggle:hover {
        background: none; /* var(--trax-sidebar-hover);*/
    }

.trax-nav-brand-btn {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    /*border-radius: var(--trax-radius);*/
    border: 0;
    background: transparent;
    /*color: var(--accent-base-color);*/
    cursor: pointer;
    min-width: 0;
    transition: background-color 0.1s ease, padding 0.3s ease, width 0.3s ease, height 0.3s ease;
}

    .trax-nav-brand-btn:hover {
        background: none; /* var(--trax-sidebar-hover);*/
    }

.trax-nav-logo {
    width: 20px;
    height: 20px;
    font-size: 20px;
    /*color: var(--trax-sidebar-text);*/
}

.trax-nav-title {
    /*color: var(--trax-sidebar-text);*/
    /*font-weight: 600;*/
    font-size: 20px;
    letter-spacing: 0;
    white-space: nowrap;
    transition: opacity 0.3s ease;
}

.trax-nav-list {
    padding: 0;
    overflow: auto;
    position: relative;
    z-index: 1;
}

.trax-nav-footer {
    padding: 8px 0;
    border-top: 1px solid var(--neutral-layer-2);
    flex-shrink: 0;
}

.trax-nav-lock-btn {
    border: none;
    background: transparent;
    cursor: pointer;
    text-align: left;
    width: 100%;
}

    .trax-nav-lock-btn .trax-nav-icon {
        /*color: var(--trax-sidebar-text-secondary);*/
    }

    .trax-nav-lock-btn:hover .trax-nav-icon {
        /*color: var(--trax-accent);*/
    }

.trax-nav-item,
.trax-nav-subitem {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 10px 5px;
    color: var(--neutral-stroke-strong-rest); /* var(--trax-sidebar-text);*/
    text-decoration: none;
    border-radius: 0;
    margin-bottom: 0;
    font-size: 14px;
    transition: background-color 0.1s ease, padding 0.3s ease, justify-content 0.3s ease;
    position: relative;
}

.trax-nav-subitem {
    padding: 10px 50px;
}

    .trax-nav-subitem .trax-nav-icon {
        display: none;
    }

    .trax-nav-item:hover,
    .trax-nav-subitem:hover {
        background: var(--neutral-layer-1); /* var(--trax-sidebar-hover);*/
        color: var(--neutral-fill-inverse-rest);
    }

    .trax-nav-item.active,
    .trax-nav-subitem.active {
        /*background: var(--neutral-layer-2);*/
        color: var(--neutral-fill-inverse-rest);
        /*font-weight: 600;*/
    }

        /* Active indicator using pseudo-element - positioned to the left of icon */
        .trax-nav-item.active::before,
        .trax-nav-subitem.active::before {
            content: '';
            position: absolute;
            left: 4px;
            top: 50%;
            transform: translateY(-50%);
            height: 20px;
            width: 4px;
            background: var(--accent-base-color);
        }

.trax-nav-icon {
    padding: 0 15px;
}

/*.trax-nav-subitem .trax-nav-label {
    border-left: 3px solid transparent;
    padding: 0;
}*/

.trax-nav-item.active:hover .trax-nav-icon,
.trax-nav-subitem.hover .trax-nav-icon {
    background: none;
    color: var(--fill-color-inverse); /*var(--trax-accent-contrast);*/
}
/* Accordion button styling */
.trax-nav-accordion {
    border: none;
    background: transparent;
    cursor: pointer;
    text-align: left;
}

.trax-nav-label {
    flex: 1;
    transition: opacity 0.3s ease;
}

.trax-nav-divider {
    height: 1px;
    background: var(--neutral-stroke-rest);
    margin: 8px 16px;
    display: none;
}

.trax-nav-icon {
    width: 20px;
    text-align: center;
    color: var(--trax-sidebar-text-secondary);
    transition: color 0.1s ease, font-size 0.3s ease;
    flex-shrink: 0;
    font-size: 16px;
}

.trax-nav-item:hover .trax-nav-icon {
    background: none; /* var(--trax-sidebar-hover);*/
    color: var(--neutral-fill-inverse-rest);
}

.trax-nav-chevron {
    margin-left: auto;
    color: var(--fill-color-inverse); /* var(--trax-sidebar-text-secondary);*/
    font-size: 12px;
    transition: transform 0.2s ease, opacity 0.3s ease;
}

    .trax-nav-chevron.expanded {
        transform: rotate(180deg);
    }
/* Flyout wrapper for positioning */
.trax-nav-flyout-wrapper {
    position: relative;
    z-index: 10000;
}

.trax-nav-sub {
    margin: 0;
    padding: 0;
    border-radius: 0;
    /*background: var(--neutral-layer-1);*/ /*var(--trax-hover-bg);*/

    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transform: translateY(-4px);
    transition: max-height 0.2s ease, opacity 0.2s ease, transform 0.2s ease;
    pointer-events: none;
}

    .trax-nav-sub.is-open {
        max-height: 600px;
        opacity: 1;
        transform: translateY(0);
        pointer-events: auto;
    }

    .trax-nav-sub.trax-nav-flyout {
        overflow: visible;
        max-height: none;
        opacity: 0;
        transform: translateX(-4px);
        transition: opacity 0.15s ease, transform 0.15s ease;
        pointer-events: none;
    }

        .trax-nav-sub.trax-nav-flyout.is-open {
            opacity: 1;
            transform: translateX(0);
            pointer-events: auto;
        }
/* Flyout menu styling */
.trax-nav-flyout {
    display: block;
    position: fixed;
    left: var(--trax-sidebar-width);
    min-width: 180px;
    background: var(--neutral-layer-1);
/*    border-top: 1px solid var(--neutral-layer-3);
    border-right: 1px solid var(--neutral-layer-3);
    border-bottom: 1px solid var(--neutral-layer-3);*/
    /*border-radius: var(--trax-radius);*/
    /*box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);*/
    z-index: 100000;
    margin-top: -35px;
    margin-left: 4px;
    /*padding: 0 0 4px 0;*/
}

body.b-theme-dark .trax-nav-flyout {
    /*box-shadow: 0 4px 16px rgba(0, 0, 0, 0.5);*/
}

.trax-nav-flyout-header {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 12px;
    font-weight: 600;
    background: var(--neutral-layer-1);
    border-bottom: 1px solid var(--neutral-layer-2);
    color: var(--neutral-fill-inverse-rest);
    font-size: 14px;
}

    .trax-nav-flyout-header .trax-nav-icon {
        display: none;
    }
/* Flyout submenu items */
.trax-nav-flyout .trax-nav-subitem {
    padding: 10px 12px;
    font-size: 13px;
}

    .trax-nav-flyout .trax-nav-subitem .trax-nav-icon {
    }

    .trax-nav-flyout .trax-nav-subitem:hover {
    }

        .trax-nav-flyout .trax-nav-subitem:hover .trax-nav-icon {
        }

    .trax-nav-flyout .trax-nav-subitem.active {
    }

        .trax-nav-flyout .trax-nav-subitem.active .trax-nav-icon {
        }

    .trax-nav-flyout .trax-nav-subitem .trax-nav-label {
        display: inline !important;
        opacity: 1 !important;
    }
/* Docked/collapsed sidebar - Base styles for desktop */
@media (min-width: 1025px) {
    .trax-shell.is-docked {
        --trax-sidebar-width: 40px;
        grid-template-columns: 40px 1fr !important;
    }

        .trax-shell.is-docked .trax-sidebar {
            width: 40px;
            min-width: 40px;
        }

        .trax-shell.is-docked .trax-nav-brand {
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 8px;
            padding: 12px 4px;
        }

        .trax-shell.is-docked .trax-nav-toggle {
            margin-left: 0;
            margin-right: 0;
            width: 32px;
            height: 32px;
            order: -1;
            align-self: center;
        }

        .trax-shell.is-docked .trax-nav-brand-btn {
            justify-content: center;
            align-items: center;
            width: 32px;
            height: 32px;
            padding: 0;
            order: 1;
        }

        .trax-shell.is-docked .trax-nav-title,
        .trax-shell.is-docked .trax-nav-label,
        .trax-shell.is-docked .trax-nav-chevron {
            opacity: 0;
            display: none !important;
        }
        /* Exception: Always show labels in flyout submenus */
        .trax-shell.is-docked .trax-nav-flyout .trax-nav-label {
            opacity: 1 !important;
            display: inline !important;
        }

        .trax-shell.is-docked .trax-nav-item {
            justify-content: center;
            padding: 12px 10px;
        }

        .trax-shell.is-docked .trax-nav-icon {
            font-size: 14px;
            padding: 0;
        }

        /* Show divider when docked */
        .trax-shell.is-docked .trax-nav-divider {
            display: block;
            margin: 8px 8px;
        }

        /* Hide inline sub-menus when docked (flyouts will show on hover) */
        .trax-shell.is-docked .trax-nav-sub:not(.trax-nav-flyout) {
            display: none !important;
        }

        .trax-shell.is-docked .trax-nav-sub {
            margin-left: 0;
        }

    /* Apply hover/active style to parent button when flyout is open */
    .trax-shell.is-docked .trax-nav-flyout-wrapper:has(.trax-nav-flyout.is-open) .trax-nav-accordion {
        background: var(--neutral-layer-1);
        color: var(--neutral-fill-inverse-rest);
    }

        .trax-shell.is-docked .trax-nav-flyout-wrapper:has(.trax-nav-flyout.is-open) .trax-nav-accordion .trax-nav-icon {
            color: var(--neutral-fill-inverse-rest);
        }
}
/* Responsive: Force docked at lg breakpoint and below (1024px) */
@media (max-width: 1024px) {
    /* FORCE sidebar to be docked at mobile - always apply these styles */
    .trax-shell {
        --trax-sidebar-width: 40px;
        grid-template-columns: 40px 1fr !important;
    }

        .trax-shell .trax-sidebar {
            width: 40px;
            min-width: 40px;
        }

        .trax-shell .trax-nav-brand {
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 8px;
            padding: 12px 4px;
        }

        .trax-shell .trax-nav-toggle {
            margin-left: 0;
            margin-right: 0;
            width: 32px;
            height: 32px;
            order: -1;
            align-self: center;
        }

        .trax-shell .trax-nav-brand-btn {
            justify-content: center;
            align-items: center;
            width: 32px;
            height: 32px;
            padding: 0;
            order: 1;
        }

        .trax-shell .trax-nav-title,
        .trax-shell .trax-nav-label,
        .trax-shell .trax-nav-chevron {
            opacity: 0;
            display: none !important;
        }
        /* Exception: Always show labels in flyout submenus */
        .trax-shell .trax-nav-flyout .trax-nav-label {
            opacity: 1 !important;
            display: inline !important;
        }

        .trax-shell .trax-nav-item {
            justify-content: center;
            padding: 12px 10px;
        }

        .trax-shell .trax-nav-icon {
            font-size: 14px;
            padding: 0;
        }

        /* Show divider when docked on mobile */
        .trax-shell .trax-nav-divider {
            display: block;
            margin: 8px 8px;
        }

        /* Hide inline sub-menus (flyouts will show on hover/tap) */
        .trax-shell .trax-nav-sub:not(.trax-nav-flyout) {
            display: none !important;
        }

        .trax-shell .trax-nav-sub {
            margin-left: 0;
        }
        /* Allow manual expansion only when NOT docked */
        .trax-shell:not(.is-docked) {
            --trax-sidebar-width: 240px;
            grid-template-columns: 240px 1fr !important;
        }

            .trax-shell:not(.is-docked) .trax-sidebar {
                width: 240px;
                min-width: 240px;
            }

            .trax-shell:not(.is-docked) .trax-nav-brand {
                flex-direction: row;
                align-items: center;
                justify-content: flex-start;
                gap: 10px;
                padding: 10px 12px;
            }

            .trax-shell:not(.is-docked) .trax-nav-toggle {
                margin-left: auto;
                margin-right: 0;
                width: 36px;
                height: 36px;
                order: 0;
            }

            .trax-shell:not(.is-docked) .trax-nav-brand-btn {
                justify-content: flex-start;
                align-items: center;
                width: auto;
                height: auto;
                padding: 6px 8px;
                order: 0;
            }

            .trax-shell:not(.is-docked) .trax-nav-title,
            .trax-shell:not(.is-docked) .trax-nav-label,
            .trax-shell:not(.is-docked) .trax-nav-chevron {
                opacity: 1;
                display: inline !important;
            }

            .trax-shell:not(.is-docked) .trax-nav-item {
                justify-content: flex-start;
                padding: 16px 16px;
            }

            .trax-shell:not(.is-docked) .trax-nav-icon {
                font-size: 16px;
            }

            /* Hide divider when expanded */
            .trax-shell:not(.is-docked) .trax-nav-divider {
                display: none;
            }

            /* Show inline sub-menus when expanded */
            .trax-shell:not(.is-docked) .trax-nav-sub:not(.trax-nav-flyout) {
                display: block !important;
            }
}
