@use "../../dev" as *;

// -----------------------------------------------------------------------------
// Mixins
// -----------------------------------------------------------------------------

@mixin sidebar__search-input {
    font-size: basepoint(3); // or a fixed value like q(16)
    line-height: baseline(3); // consistent vertical rhythm

    width: 100%;
    padding: q(3) q(4);
    margin: q(2) 0 q(4);
    // font-size: q(3.5);
    border: q(1) solid var(--color_border);
    border-radius: q(1);
    background: var(--color_fill_primary);
    color: var(--color_text_primary);
}

@mixin sidebar__content {
    padding: q(10);
    font-size: q(12);
    overflow-y: auto;
    max-height: 100%;

    h1,
    h2,
    h3,
    h4 {
        font-weight: bold;
        margin: q(3) 0 q(2);
        line-height: 1.2;
        color: var(--color_text_primary);
    }

    h1 {
        font-size: q(16);
    }
    h2 {
        font-size: q(14);
        color: var(--color_primary);
    }
    h3 {
        font-size: q(12);
        color: var(--color_primary_dark);
    }
    h4 {
        font-size: q(11);
        font-weight: 900;
        color: var(--color_primary_light);
    }
}

@mixin sidebar__section {
    margin-bottom: q(10);
}

@mixin sidebar__section-header {
    font-size: q(12);
    font-weight: bold;
    color: var(--color_primary);
}

@mixin sidebar__subsection-header {
    font-size: q(12);
    font-weight: 600;
    color: var(--color_primary_dark);
}

@mixin sidebar__list {
    list-style: none;
    margin: 0;
    padding: 0;
}

@mixin sidebar__list-link {
    display: block;
    color: var(--color_text_primary);

    &:hover {
        text-decoration: underline;
        color: var(--color_primary);
    }
}

@mixin sidebar__list-meta {
    display: block;
    font-size: q(8);
    color: var(--color_text_secondary);
}

// ============================================================================
// Sidebar Accordion Styles
// ============================================================================

@mixin sidebar__accordion {
    border: none;
    margin: 0;

    // Reset details marker
    &::-webkit-details-marker,
    &::marker {
        display: none;
    }

    // When open, show content
    &[open] > .sidebar__accordion__content {
        display: block;
    }

    &[open] > .sidebar__accordion__header .sidebar__accordion__icon {
        transform: rotate(90deg);
    }
}

@mixin sidebar__accordion__header {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: q(4);
    cursor: pointer;
    padding: q(4) q(2);
    user-select: none;
    list-style: none;

    &::-webkit-details-marker {
        display: none;
    }

    h2,
    h3,
    h4 {
        margin: 0;
        font-size: inherit;
        font-weight: 600;
        flex: 1;
    }

    h2 {
        font-size: q(12);
        text-transform: uppercase;
        letter-spacing: 0.05;
    }

    h3 {
        font-size: q(11);
    }

    &:hover {
        background-color: var(--color_state_hover);
    }
}

@mixin sidebar__accordion__header--nested {
    padding: q(3) q(2) q(3) q(12);
    gap: q(3);

    h3 {
        font-size: q(10);
        font-weight: 500;
    }
}

@mixin sidebar__accordion__icon {
    display: inline-block;
    width: q(16);
    height: q(16);
    flex-shrink: 0;
    font-size: q(10);
    line-height: q(16);
    transition: transform 0.2s ease;
    text-align: center;
    color: var(--color_text_primary);
}

@mixin sidebar__accordion__content {
    padding: 0;
}

@mixin sidebar__accordion--nested {
    margin-left: q(4);
    border-left: q(1) solid var(--color_line_primary);
}

@mixin sidebar__subsection__list {
    list-style: none;
    margin: 0;
    padding: q(2) 0 q(4) q(12);

    li {
        margin: 0;
        padding: 0;
    }

    a {
        display: block;
        padding: q(2) q(4);
        font-size: q(10);
        color: var(--color_text_primary);
        text-decoration: none;
        border-radius: q(2);

        &:hover {
            background-color: var(--color_state_hover);
            color: var(--color_accent_primary);
        }

        &.active {
            background-color: var(--color_accent_primary);
            color: var(--color_fill_primary);
        }
    }
}

@mixin sidebar__subsection__description {
    padding: q(2) q(4) q(2) q(12);
    margin: 0;
    color: var(--color_text_secondary);
}
