:root {
    --GSM-Container: 1320px;
    --GSM-MobileContainer: 95%;
    --GSM-Transition: all 0.7 cubic-bezier(0.075, 0.82, 0.165, 1);
}

.gsm-main {
    position: absolute;
    box-sizing: border-box;

    bottom: 0px;
    left: 0px;

    width: 100%;
    height: auto;
    max-height: calc(100vh - 100% + 1px);
    transform: translateY(calc(100% - 1px));
    transition: var(--GSM-Transition);

    overflow: hidden;
    overflow-y: auto;

    background: var(--bg-primary-main);

    & * {
        box-sizing: border-box;
    }

    &:not(.open) {
        max-height: 0%;
        overflow: hidden;
    }

    @media(min-width: 1001px) {
        &.open {
            box-shadow: 0px 15px 12px #3333;
        }
    }

    @media(max-width: 1000px) {
        & {
            height: 100vh;
        }
    }
}

.gsm-wrapper {
    position: relative;
    padding: 30px 0px;
    margin: 0 auto;
    
    width: var(--GSM-Container);
    max-width: var(--GSM-MobileContainer);

    &.desktop {
        display: flex;
        align-items: start;
        gap: 30px;
    }

    @media(max-width: 1000px) {
        &.desktop {
            display: none;
        }
    }
    @media(min-width: 1001px) {
        &.mobile {
            display: none;
        }
    }
}

.gsm-aside {
    position: relative;
    width: clamp(280px, 267.7778px + 2.7778vw, 320px);
    height: fit-content;

    & ul {
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 10px;

        & li {
            & a {
                position: relative;
                display: flex;
                align-items: center;
                gap: 5px;

                padding: 10px 20px;
                border: solid 1px #00000000;
                border-radius: 10px;

                transition: var(--GSM-Transition);

                & span {
                    position: relative;
                    display: block;
                    width: 0%;
                    flex-grow: 1;

                    color: var(--text-primary-head);
                    font-size: clamp(12px, 10.7778px + 0.2778vw, 16px);
                }

                & svg {
                    position: relative;
                    width: 10px;
                    height: 10px;

                    fill: var(--text-primary-head);
                }
            }

            &:hover,
            &.active {
                & a {
                    border-color: var(--colors-main);
                }
            }
        }
    }
}

.gsm-content {
    position: relative;
    width: 0%;
    flex-grow: 1;
}

.gsm-content--columns {
    position: relative;
    display: flex;
    align-items: start;
    column-gap: 10px;
    row-gap: 30px;
}

.gsm-content--column {
    position: relative;
    width: 0%;
    flex-grow: 1;
    height: fit-content;

    display: flex;
    flex-direction: column;
    gap: 30px;

    & > li {
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 10px;
    }

    & > li > a {
        position: relative;
        display: block;

        font-weight: 700;
        font-size: clamp(12px, 10.7778px + 0.2778vw, 16px);
        color: var(--text-primary-head);
    }

    & [gsm-more] {
        & span {
            color: var(--text-primary-head);
            font-size: clamp(12px, 10.7778px + 0.2778vw, 16px);
        }
    }

    & > li > ul {
        position: relative;
        display: flex;
        flex-direction: column;
        gap: 5px;

        & li a {
            font-size: clamp(14px, 13.3889px + 0.1389vw, 16px);
            color: var(--text-primary-second);
        }
    }

    & > li > ul:not(.open) > *:not(:nth-child(-n+5), [gsm-more]) {
        display: none;
    }
}

.gsm-content--item {
    position: relative;
    width: 100%;
    height: fit-content;

    &:not(.active) {
        display: none;
    }
}

.gsm-content--item-title {
    position: relative;
    color: var(--text-primary-head);
    margin-bottom: 30px;
    font-size: 32px;
}

[gsm-more] {
    position: relative;
    display: flex;
    align-items: center;
    gap: 7px;
    
    color: var(--bg-alt-main);

    width: fit-content;
    cursor: pointer;

    & svg {
        position: relative;
        width: 0%;
        min-width: 10px;
        height: 10px;
    }

    &.open {
        & svg {
            transform: rotate(180deg);
        }
    }
}

.gsm-content--search-form {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0px;

    margin-bottom: 40px;

    border: solid 1px var(--bg-primary-stroke);

    & .gsm-searchfield {
        position: relative;
        width: 0%;
        flex-grow: 1;

        padding: 10px 20px;

        border: none;
        outline: none;

        color: var(--text-primary-head);
        font-size: clamp(12px, 11.3889px + 0.1389vw, 14px);

        &::placeholder {
            color: var(--text-primary-second);
            font-size: clamp(12px, 11.3889px + 0.1389vw, 14px);
        }
    }

    & .gsm-searchsubmit {
        position: relative;
        width: fit-content;
        height: auto;
        width: 20px;
        height: 20px;
        margin-right: 10px;

        background: none;

        background-position: center;
        background-repeat: no-repeat;
        background-size: contain;

        border: none;
        outline: none;

        cursor: pointer;
    }
}

.gsm-content--not-found {
    color: var(--bg-alt-main);
    font-weight: 400;
    font-size: clamp(12px, 10.7778px + 0.2778vw, 16px);
}




/* mobile */
#gsm-searchform-mobile {
    margin-bottom: 20px;
}

.gsm-details {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.gsm-detail {
    position: relative;
    display: block;
    
    border: solid 1px var(--bg-primary-stroke);
    border-radius: 10px;
    
    &.is-active,
    &:hover {
        border-color: var(--colors-main);
    }

    &.is-active {
        & .gsm-detail--head {
            & svg {
                transform: rotate(180deg);
            }
        }
    }
}
.gsm-detail--head {
    position: relative;

    width: 100%;
    height: fit-content;

    display: flex;
    align-items: center;
    gap: 10px;

    padding: 10px 20px;

    & span {
        position: relative;
        width: 0%;
        flex-grow: 1;
    }

    & svg {
        position: relative;
        width: 0%;
        min-width: 10px;
        height: 10px;
    }
}

.gsm-detail--content {
    position: relative;

    width: 100%;
    height: fit-content;

    padding: 10px 20px;
    padding-top: 0px;
}

.gsm-detail--items {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 5px;
}

.ac-panel {
    overflow: hidden;
}

.gsm-detail--head {
    & > span {
        font-size: 16px;
        font-weight: 600;
        color: var(--text-primary-head);
    }
}
.gsm-detail--items {
    & a {
        font-size: 14px;
        font-weight: 400;
        color: var(--text-primary-head);
    }
}



.nav-menu-element.gsm {
    position: relative;

    &::after {
        content: '';
        position: absolute;
        bottom: 0px;
        left: 0px;

        width: 100%;
        height: 40px;
        
        transform: translateY(100%);
    }
}

.gsm-main {
    pointer-events: none;
}

.gsm-wrapper {
    pointer-events: auto;
}