:root {
    --nav-h: 60px;
}

nav {
    position: fixed;
    top: 0;
    left: 50%;
    z-index: 2;

    width: 100%;
    max-width: var(--whole-w);
    height: var(--nav-h);
    transform: translateX(-50%);

    color: var(--txt);
    background-color: transparent;

    font-family: var(--body);
    border-bottom: 1px transparent solid;

    display: flex;
    align-items: center;
    justify-content: center;
}

.nav-bg {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    transform: translateY(-100%);
    background: linear-gradient(180deg, #000c 0%, #0005 100%);
    transition: .7s cubic-bezier(1, .5, 0, 1);
    backdrop-filter: blur(.4vw);
}

nav.opaque .nav-bg {
    transform: translateY(0);
}

.nav-content {
    width: var(--whole-w);
    height: 100%;
    display: flex;
    gap: 10px;
    padding: 0 50px;
    position: relative;
}

#title-hold {
    display: flex;
    width: 100%;
    height: 100%;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
}

#title-logo {
    height: 100%;
}

#title-logo svg, #title-logo path, #title-logo img {
    height: 100%;
}

#title-text {
    font-family: var(--brand-font);
    font-size: var(--h7);
    font-weight: normal;
    color: var(--txt);
    height: 100%;
    display: flex;
    justify-content: center;
    flex-direction: column;
}
#title-text svg {
    height: 100%;
}

:root {
    --slide-bar: -95%;
    --slide-bar-spd: .7s
}

#slide-bar {
    transform: translateX(var(--slide-bar));
    animation: slide-left calc(var(--slide-bar-spd) * 2) cubic-bezier(1, 0, 0, 1) forwards;
    transform-origin: center;
}
.show-text #slide-bar {
    transform: translateX(0%);
    animation: slide-right calc(var(--slide-bar-spd) * 2) cubic-bezier(1, .5, 0, 1) forwards;
}

@keyframes slide-left {
    0% {
        transform: translateX(0%);
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    50% {
        transform: translateX(var(--slide-bar)) scaleY(1);
    }
    65% {
        opacity: 1;
    }
    100% {
        transform: translateX(var(--slide-bar)) scaleY(0);
        opacity: 0;
    }
}
@keyframes slide-right {
    0% {
        transform: translateX(var(--slide-bar));
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    50% {
        transform: translateX(0%) scaleY(1);
    }
    65% {
        opacity: 1;
    }
    100% {
        transform: translateX(0%) scaleY(0);
        opacity: 0;
    }
}

#slide-bar-ghost {
    transform: translateX(var(--slide-bar));
    animation: ghost-left calc(var(--slide-bar-spd) * 1) cubic-bezier(1, 0, 0, 1) forwards;
}
.show-text #slide-bar-ghost {
    transform: translateX(0%);
    animation: ghost-right calc(var(--slide-bar-spd) * 1) cubic-bezier(1, 0, 0, 1) forwards;
}

#streak {
    transform: translateX(var(--slide-bar));
    animation: ghost-left calc(var(--slide-bar-spd) * 1) cubic-bezier(1, 0, 0, 1) forwards;
}
.show-text #streak {
    transform: translateX(0%);
    animation: ghost-right calc(var(--slide-bar-spd) * 1) cubic-bezier(1, 0, 0, 1) forwards;
}

@keyframes ghost-left {
    0% {
        transform: translateX(0%);
    }
    100% {
        transform: translateX(var(--slide-bar));
    }
}
@keyframes ghost-right {
    0% {
        transform: translateX(var(--slide-bar));
    }
    100% {
        transform: translateX(0%);
    }
}


#slide-streak {
    animation: streak-left calc(var(--slide-bar-spd) * 1.5) cubic-bezier(1, .2, 0, 1) forwards;
}
.show-text #slide-streak {
    animation: streak-right calc(var(--slide-bar-spd) * 1.5) cubic-bezier(1, .5, 0, 1) forwards;
}
@keyframes streak-left {
    0% {
        width: calc(var(--slide-bar) * -1)
    }
    100% {
        width: 0%;
    }
}
@keyframes streak-right {
    0% {
        width: 0%;
        opacity: 0;
    }
    100% {
        width: calc(var(--slide-bar) * -1);
        opacity: 0;
    }
}

#bars-hold {
    display: none;
}

.nav-links {
    height: 100%;
    margin-left: auto;
    margin-right: 0;
}

.nav-buttons {
    width: 100%;
    height: 100%;
    justify-content: center;
    align-items: center;
    display: flex;
}

.nav-button-hold {
    position: relative;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    border: none;
    background-color: transparent;
    cursor: pointer;
}

.more-hold {
    height: 8px;
    display: flex;
    position: relative;
}

#open-sidenav .nav-button {
    transition: .1s cubic-bezier(.5, .5, 0, 1);
    transform: scale(1);
}
#open-sidenav:active .nav-button {
    transform: scale(.8);
}

.more-hold svg, .more-hold path {
    height: 100%;
    fill: var(--txt)
}

.nav-button-text {
    font-family: var(--brand-font);
    text-transform: lowercase;
    font-size: var(--h7);
    font-weight: 600;
    position: relative;
    z-index: 1;
    transition: .3s cubic-bezier(.5,.5,0,1);
    transform: scale(1);
}
.nav-button-hold:hover .nav-button-text {
    transform: scale(.95);
}

.nav-button {
    position: relative;
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 20px;
}

.active .nav-button .nav-button-text {
    color: hsl(220, 100%, 85%);
}

:root {
    --nav-hover-spd: .3s;
}

.nav-button::before {
    content: '';
    position: absolute;
    top: 0;
    left: 50%;
    width: 100%;
    height: 100%;
    background-color: hsla(220, 70%, 40%, .7);
    transform: translateX(-50%) scale(0);
    transition: calc(var(--nav-hover-spd) * 1.5) cubic-bezier(.5, .5, 0, 1);
    opacity: 0;
    border-radius: 100px;
}

.nav-button:hover::before {
    transform: translateX(-50%) scale(1);
    transition: var(--nav-hover-spd) cubic-bezier(.5, .5, 0, 1);
    opacity: 1;
}

.active .nav-button::after {
    content: '';
    position: absolute;
    top: 70%;
    left: 50%;
    width: 50%;
    height: 3px;
    background-color: hsla(220, 70%, 70%);
    transform: translateX(-50%);
    transition: calc(var(--nav-hover-spd) * 1) cubic-bezier(.5, 0, 0, 1);
    border-radius: 10px;
}

.active .nav-button:hover::after {
    width: 0%;
}

.dub {
    display: none;
}

.sidenav {
    position: fixed;
    width: 100%;
    height: 100%;
    top: 0;
    left: 100%;
    background-color: var(--bg);
    z-index: 2;
    transition: .5s cubic-bezier(.5, .5, 0, 1);
}
.sidenav.open {
    left: 0;
}

:root {
    --side-nav-close-h: 70px;
}

#close-sidenav {
    width: 100%;
    height: var(--side-nav-close-h);
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: transparent;
    border: none;
    cursor: pointer;
    box-shadow: 0 0 50px #0008;
}

.close-sidenav-main {
    position: relative;
    width: 40px;
    height: 100%;
    transform: translate(-50%);
}

.close-sidenav-main div {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 100%;
    height: 7px;
    background-color: #fff;
    border-radius: 3px;
    transition: .3s cubic-bezier(.5, .5, 0, 1);
}

#close-sidenav:not(.x) .close-sidenav-main div.top-bar {
    transform: translateY(calc(-50% - 15px));
}
#close-sidenav:not(.x) .close-sidenav-main div.mid-bar {
    transform: translateY(-50%);
    width: 100%;
}
#close-sidenav:not(.x) .close-sidenav-main div.bot-bar {
    transform: translateY(calc(-50% + 15px));
}

#close-sidenav.x .close-sidenav-main div.top-bar {
    transform: translateY(-50%) rotate(-45deg);
}
#close-sidenav.x .close-sidenav-main div.mid-bar {
    transform:  translateY(-50%);
    width: 0;
}
#close-sidenav.x .close-sidenav-main div.bot-bar {
    transform:  translateY(-50%) rotate(45deg);
}

.sidenav-main {
    height: calc(100% - var(--side-nav-close-h));
}

.sidenav-links {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: scroll;
    padding: 20px 0;
}
.sidenav-links a {
    padding: 30px 0;
}

.sidenav-links .nav-button::before {
    transform: translateX(-50%) scale(.8);
}
.sidenav-links .nav-button:hover::before {
    transform: translateX(-50%) scale(1);
}

.sidenav-logo {
    padding: 50px 0;
    height: 250px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.sidenav-logo img {
    height: 100%;
}