@media (max-width: 640px) {
    .nav-bar {
        position: absolute;
        left: 0;
        right: 0;
        background-color: var(--background0);
        box-shadow: 0px 2px 2px var(--background3);
    }

    main {
        padding-top: calc(var(--header-height) + var(--header-padding) * 2);
    }
}

.nav-bar {
    z-index: 100;
    display: flex;
    padding: var(--header-padding) 0;
}
.nav-bar > * {
    margin: auto 0;
}
.nav-bar-logo, .nav-bar-link, .nav-bar-bars {
    margin-left: 1em;
    margin-right: 1em;
}

.nav-bar-logo {
    height: var(--header-height);
}
.nav-bar-logo svg {
    width: auto;
    height: var(--header-height);
    stroke: var(--highlight-color0);
    transition: transform 0.25s, stroke 0.1s;
}
.nav-bar-logo svg:hover {
    transform: scale(1.025);
    stroke: var(--highlight-color1);
}

.nav-bar-link {
    border-bottom: 1px solid transparent;
    transition: border-bottom 0.25s;
}
.nav-bar-link:hover {
    border-bottom: 1px solid var(--foreground1);
}

.nav-bar-fill {
    flex-grow: 1;
}

.nav-bar-mobile-checkbox {
    z-index: 101;
    opacity: 0;
    position: absolute;
    right: calc(1em - var(--header-padding));
    width:  calc(var(--header-height) + var(--header-padding) * 2);
    height: calc(var(--header-height) + var(--header-padding) * 2);
}

.nav-bar-bars {
    position: relative;
    width:  var(--header-height);
    height: var(--header-height);
}

.nav-bar-bars span {
    background-color: var(--highlight-color0);
    --bar-width: 20px;
    --bar-height: 2px;
    width:  var(--bar-width);
    height: var(--bar-height);
    position: absolute;
    left: calc(50% - var(--bar-width) / 2);
}
.nav-bar-mobile-checkbox:hover ~ * .nav-bar-bars span {
    background-color: var(--highlight-color1);
}

.nav-bar-bars span:nth-child(1) {
    top: calc(50% - var(--bar-height) / 2 - 7px);
    transition: top 0.1s linear 0.1s, transform 0.25s;
}
.nav-bar-bars span:nth-child(2) {
    top: calc(50% - var(--bar-height) / 2 + 0px);
    transition: opacity 0.25s;
}
.nav-bar-bars span:nth-child(3) {
    top: calc(50% - var(--bar-height) / 2 + 7px);
    transition: top 0.1s linear 0.1s, transform 0.25s;
}

.nav-bar-mobile-checkbox:checked ~ * .nav-bar-bars span:nth-child(1) {
    top: calc(50% - var(--bar-height) / 2 + 0px);
    transform: rotate(45deg);
    transition: top 0s, transform 0.25s;
}
.nav-bar-mobile-checkbox:checked ~ * .nav-bar-bars span:nth-child(2) {
    opacity: 0;
}
.nav-bar-mobile-checkbox:checked ~ * .nav-bar-bars span:nth-child(3) {
    top: calc(50% - var(--bar-height) / 2 + 0px);
    transform: rotate(-45deg);
    transition: top 0s, transform 0.25s;
}

.nav-bar-mobile-menu {
    z-index: 99;
    position: absolute;
    top: calc(var(--header-height) + var(--header-padding) * 2);
    left: 0;
    right: 0;
    background-color: var(--background0);
    box-shadow: 0px 2px 2px var(--background3);
    transition: transform 0.5s;
    transform: translateY(-100%);
}
.nav-bar-mobile-checkbox:checked ~ .nav-bar-mobile-menu {
    transform:translateY(0);
}

.nav-bar-mobile-link {
    display: block;
    text-align: center;
    padding: 1em;
    border-top: 1px solid var(--background2);
}

.nav-bar-mobile-screen-overlay {
    z-index: 98;
    pointer-events: none;
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    right: 0;
    background-color: black;
    opacity: 0;
    transition: opacity 0.25s;
}
.nav-bar-mobile-checkbox:checked ~ .nav-bar-mobile-screen-overlay {
    opacity: 0.33;
}
