:root {
    --navbar-font-size: 15pt;
    --navbar-margin-top: 1em;
    --navbar-margin-side: 1em;
    --navbar-row-height: 1.8em;
    --navbar-background-color: #3e2023;
    --navbar-menu-button-height: 4em;
    --navbar-menu-top: calc(var(--navbar-row-height) / 3);
    --navbar-collapse-animation-time: 1s;
    --navbar-items-container-radius: 40%;
    --navbar-items-container-padding-side: 1.6em;
    --navbar-basic-z-index: 0;
}

#navbar {
    position: relative;
    z-index: var(--navbar-basic-z-index);
    color: white;
    font-size: var(--navbar-font-size);

    min-height: calc(var(--navbar-menu-top) + var(--navbar-menu-button-height) + var(--navbar-margin-top));
    width: 100%;

    background: radial-gradient(ellipse at 50% 90%, transparent 37%, var(--navbar-background-color) 37%);
    background-position: 50% 50%;
    background-size: 390% 100%;

    display: flex;
    justify-content: flex-start;
    justify-items: center;
    align-items: flex-start;
    flex-wrap: wrap;
    align-content: flex-start;
}

#navbar #navbar-label-container {
    overflow: hidden;
    position: absolute;
    width: 100%;
    height: 100%;
}

#navbar #navbar-label {
    position: absolute;
    z-index: var(--navbar-basic-z-index);
    font-family: 'BlackCastle';
    font-size: 14pt;
    left: 50%;
    top: 33%;
    color: #3e2023;
    opacity: 0.7;
}

@media only screen and (min-width: 2161px) {
    #navbar #navbar-label {
        left: 0;
        white-space: nowrap;
        justify-self: anchor-center;
    }
}

#navbar #navbar-decoration {
    position: absolute;
    z-index: var(--navbar-basic-z-index);
    width: 100%;
    height: 100%;

    overflow: hidden;
}

#navbar #navbar-decoration > div {
    position: relative;
    left: -25%;
    top: 33%;
    width: 150%;
    height: 28%;
    overflow: hidden;
}

#navbar #navbar-decoration #ribbon {
    --diameter: 10000px;
    position: absolute;
    width: var(--diameter);
    height: var(--diameter);
    left: calc(var(--diameter) / -2 + 50%);
    border-top-right-radius: 50% 50%;
    border-top-left-radius: 50% 50%;

    mask-image: radial-gradient(ellipse 50% 50% at center, transparent 0%, transparent 99.5%, black 99.53%, black 100%);

    background: url("images/ribbon_bg.webp");
    background-repeat: repeat;
    background-position: center;
}


@media only screen and (min-width: 769px) and (max-width: 1280px) {
    #navbar #navbar-decoration #ribbon {
        --diameter: 20000px;
        mask-image: radial-gradient(ellipse 50% 50% at center, transparent 0%, transparent 99.75%, black 99.775%, black 100%)
    }
}

@media only screen and (min-width: 1281px) and (max-width: 2160px) {
    #navbar #navbar-decoration #ribbon {
        --diameter: 50000px;
        mask-image: radial-gradient(ellipse 50% 50% at center, transparent 0%, transparent 99.88%, black 99.905%, black 100%);
    }
}

@media only screen and (min-width: 2161px) {
    #navbar #navbar-decoration #ribbon {
        --diameter: 0;
        width: 10000%;
        height: 1em;
        left: 0;
        border-top-left-radius: 0%;
        border-top-right-radius: 0%;
        mask-image: linear-gradient(360deg, transparent 0%, transparent 10%, black 25%, black);
    }
}

#navbar #navbar-brand-container {
    position: relative;
    z-index: calc(var(--navbar-basic-z-index) + 2);

    height: var(--navbar-row-height);
    width: fit-content;

    margin-left: var(--navbar-margin-side);

    flex-grow: 1;

    display: flex;
    justify-content: flex-start;
    align-content: center;
    align-items: center;
}

#navbar #navbar-items-container {
    position: relative;
    z-index: calc(var(--navbar-basic-z-index) + 1);

    height: var(--navbar-row-height);
    width: fit-content;

    flex-grow: 10;

    display: flex;
    align-content: center;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: nowrap;
    flex-direction: row;
}

#navbar #navbar-items-container > #fake-grid-row {
    width: 100%;
    height: 100%;

    display: inline-flex;
    flex-wrap: nowrap;
    flex-direction: row;
    align-content: center;
    justify-content: center;
    align-items: center;
}

#navbar #navbar-items-container .navbar-item {
    position: relative;
    z-index: calc(var(--navbar-basic-z-index) + 4);

    margin-right: var(--navbar-margin-side);
}

#navbar #navbar-menu {
    position: absolute;
    z-index: calc(var(--navbar-basic-z-index) + 5);

    left: 50%;
    transform: translateX(-50%);

    top: var(--navbar-row-height);
    width: var(--navbar-menu-button-height);
    height:  var(--navbar-menu-button-height);
    pointer-events: none;
    /* display: none; */

    animation: 5s starfloating-desktop infinite ease-in-out;
    filter: drop-shadow(2px 4px 6px bisque);
}

@keyframes starfloating-desktop {
    0% {
        transform: translateX(-50%);
    }
    25% {
        transform: translateX(-48%) translateY(-2%);
    }
    50% {
        transform: translateX(-50%) translateY(2%);
    }
    75% {
        transform: translateX(-52%) translateY(-2%);
    }
    100% {
        transform: translateX(-50%);
    }
}


#navbar #navbar-menu #navbar-menu-button:focus,
#navbar #navbar-menu #navbar-menu-button {
    position: absolute;
    height: 100%;
    width: 100%;

    outline: none !important;
    border: none !important;
    background-image: url("images/menu_star_1.webp");
    background-color: transparent;
    background-size: contain;
    background-repeat: no-repeat;
    background-position: center;
}

@media only screen and (max-width: 1280px) {
    #navbar #navbar-items-container {
        position: relative;
        z-index:calc(var(--navbar-basic-z-index) + 4);

        margin: 0;
        height: fit-content;
        width: 100%;
        max-height: 100%;
        border-bottom-right-radius: var(--navbar-items-container-radius);
        border-bottom-left-radius: var(--navbar-items-container-radius);

        flex-direction: column;
        flex-wrap: nowrap;
    }

    #navbar #navbar-items-container .navbar-item:first-child {
        margin-top: calc(var(--navbar-menu-button-height) / 1.5);
    }

    #navbar #navbar-items-container .navbar-item {
        margin-top: calc(var(--navbar-margin-top) / 2);
        padding-right: var(--navbar-items-container-padding-side);
        padding-left: var(--navbar-items-container-padding-side);
        margin-right: 0;
    }

    #navbar #navbar-items-container .navbar-item:last-child {
        margin-bottom: calc(var(--navbar-margin-top) * 1.5);
    }

    #navbar #navbar-items-container > #fake-grid-row {
        overflow: hidden;
        flex-direction: column;
        justify-content: flex-start;
    }

    #navbar #navbar-items-container {
        display: grid;
        align-items: start;
        align-content: space-between;
        justify-content: center;

        width: 100%;

        background-color: var(--navbar-background-color);
    }

    #navbar #navbar-items-container.hidden {
        grid-template-rows: 0fr;
        transition: var(--navbar-collapse-animation-time) grid-template-rows ease-out;
    }

    #navbar #navbar-items-container.shown {
        grid-template-rows: 1fr;
        transition: var(--navbar-collapse-animation-time) grid-template-rows ease;
    }

    #navbar #navbar-items-container.hidden > #fake-grid-row {
        max-height: 0%;
        transition: 0.5s max-height linear;
    }

    #navbar #navbar-items-container.shown > #fake-grid-row {
        max-height: 126%;
        transition: 0.5s var(--navbar-collapse-animation-time) max-height linear;
    }

    #navbar #navbar-menu {
        pointer-events: all;
        display: block;
        left: 50%;
        transform: translateX(-50%);

        top: var(--navbar-menu-top);
        width: var(--navbar-menu-button-height);
        height:  var(--navbar-menu-button-height);

        filter: drop-shadow(2px 4px 6px bisque);
        animation: 5s navbar-starfloating infinite ease-in-out;
    }

    #navbar #navbar-menu.pressed {
        top: var(--navbar-margin-side);
        left: var(--navbar-margin-side);
        transform: translateX(0%);
        animation: var(--navbar-collapse-animation-time) starpressed ease-in-out ;
    }

    #navbar #navbar-menu.unpressed {
        animation: var(--navbar-collapse-animation-time) starpressed-reverse ease-in-out,
            5s ease-in-out var(--navbar-collapse-animation-time) navbar-starfloating infinite;
    }

    @keyframes starpressed {
        from {
            top: var(--navbar-menu-top);;
            left: 50%;
            transform: translateX(-50%);
        }
        to {
            top: var(--navbar-margin-side);
            left: var(--navbar-margin-side);
            transform: translateX(0%) rotate3d(0,1,0,360deg);
        }
    }

    @keyframes starpressed-reverse {
        from {
            top: var(--navbar-margin-side);
            left: var(--navbar-margin-side);
            transform: translateX(0%) rotate3d(0,1,0,360deg);
        }
        to {
            top: var(--navbar-menu-top);
            left: 50%;
            transform: translateX(-50%);
        }
    }

    @keyframes navbar-starfloating {
        0% {
            transform: translateX(-50%);
        }
        25% {
            transform: translateX(-48%) translateY(-2%);
        }
        50% {
            transform: translateX(-50%) translateY(2%);
        }
        75% {
            transform: translateX(-52%) translateY(-2%);
        }
        100% {
            transform: translateX(-50%);
        }
    }
}
