/* Non-scoped sidebar styles.
 * These rules target elements that span component-scope boundaries —
 *   - <a class="sm-nav-item"> is rendered by Blazor's <NavLink>, so SmSidebarItem.razor.css can't reach it.
 *   - .sm-sidebar--collapsed lives on the <aside> in SmSidebar's scope, but the descendants it modifies
 *     belong to SmSidebarItem and SmSidebarGroup scopes.
 * Keeping these in a global stylesheet avoids juggling ::deep selectors and keeps the cascade simple.
 */

/* ---- nav item (the <a> rendered by NavLink) ---- */

.sm-nav-item {
    display: flex;
    align-items: center;
    gap: var(--sm-space-3);
    padding: var(--sm-space-2) var(--sm-space-4);
    color: var(--sm-color-text-muted);
    text-decoration: none;
    border-radius: var(--sm-radius-sm);
    margin: 2px var(--sm-space-2);
    font-size: var(--sm-font-size-sm);
    cursor: pointer;
    transition: background-color var(--sm-transition-fast), color var(--sm-transition-fast);
}

.sm-nav-item:hover {
    background-color: var(--sm-color-surface-alt);
    color: var(--sm-color-text);
    text-decoration: none;
}

.sm-nav-item--active {
    background-color: var(--sm-color-primary);
    color: var(--sm-color-primary-text);
}

.sm-nav-item--active:hover {
    background-color: var(--sm-color-primary-hover);
    color: var(--sm-color-primary-text);
}

.sm-nav-item__icon {
    display: inline-flex;
    flex-shrink: 0;
}

.sm-nav-item__label {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Divider between related groups of items inside a single navigation section.
 * Visually breaks a sub-module out from its parent group (e.g. Bonus Engine
 * inside Promotions) without forcing a whole new collapsible section. */
.sm-nav-separator {
    border: 0;
    border-top: 1px solid var(--sm-color-border);
    margin: var(--sm-space-2) var(--sm-space-4);
}

.sm-sidebar--collapsed .sm-nav-separator {
    display: none;
}

/* Titled sub-section divider — line ┄ TITLE ┄ line. Used to group related entries
 * inside a parent navigation section, e.g. "Bonus Engine" inside Promotions. */
.sm-nav-subsection {
    display: flex;
    align-items: center;
    gap: var(--sm-space-2);
    margin: var(--sm-space-3) var(--sm-space-4) var(--sm-space-2);
}

.sm-nav-subsection__line {
    flex: 1;
    height: 1px;
    background-color: var(--sm-color-border);
}

.sm-nav-subsection__title {
    color: var(--sm-color-text-muted);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    white-space: nowrap;
}

.sm-sidebar--collapsed .sm-nav-subsection {
    display: none;
}

/* ---- nav group (collapsible header + container) ---- */

.sm-nav-group {
    display: flex;
    flex-direction: column;
}

.sm-nav-group__header {
    display: flex;
    align-items: center;
    gap: var(--sm-space-3);
    padding: var(--sm-space-2) var(--sm-space-4);
    margin: 2px var(--sm-space-2);
    background: transparent;
    border: none;
    color: var(--sm-color-text);
    font-size: var(--sm-font-size-sm);
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    border-radius: var(--sm-radius-sm);
    transition: background-color var(--sm-transition-fast);
}

.sm-nav-group__header:hover {
    background-color: var(--sm-color-surface-alt);
}

.sm-nav-group__icon {
    display: inline-flex;
    flex-shrink: 0;
}

.sm-nav-group__label {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sm-nav-group__chevron {
    transition: transform 200ms ease;
    color: var(--sm-color-text-muted);
    transform: rotate(-90deg);
}

.sm-nav-group--expanded .sm-nav-group__chevron {
    transform: rotate(0deg);
}

.sm-nav-group__items-wrapper {
    display: grid;
    grid-template-rows: 0fr;
    transition: grid-template-rows 200ms ease;
}

.sm-nav-group--expanded .sm-nav-group__items-wrapper {
    grid-template-rows: 1fr;
}

.sm-nav-group__items {
    display: flex;
    flex-direction: column;
    padding-left: var(--sm-space-4);
    min-height: 0;
    overflow: hidden;
}

/* ---- collapsed sidebar state (cross-boundary) ---- */

.sm-sidebar--collapsed .sm-nav-item__label {
    display: none;
}

.sm-sidebar--collapsed .sm-nav-item {
    justify-content: center;
    padding: var(--sm-space-2);
}

.sm-sidebar--collapsed .sm-nav-group__label,
.sm-sidebar--collapsed .sm-nav-group__chevron {
    display: none;
}

.sm-sidebar--collapsed .sm-nav-group__header {
    justify-content: center;
    padding: var(--sm-space-2);
}

.sm-sidebar--collapsed .sm-nav-group__items-wrapper {
    display: none;
}
