@font-face {
    font-family: "Jost";
    src: url("/res/fonts/Jost/Jost-VariableFont_wght.ttf");
}

@font-face {
    font-family: "Lexend";
    src: url("/res/fonts/Lexend/Lexend-VariableFont_wght.ttf");
}

@font-face {
    font-family: "Jetbrains Mono";
    src: url("/res/fonts/JetBrains_Mono/JetBrainsMono-VariableFont_wght.ttf");
}

:root {
    font-family: "Lexend", sans-serif;
    font-size: 16px;

    --red: #cc0017;
    --purple: #8700bf;

    --accent-shadow: -4px 4px 0px 0px var(--red), 4px -4px 0px 0px var(--purple);
}

*,
*::before,
*::after {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
}

body {
    background: black;
    color: white;
}

html,
body {
    min-height: 100vh;
    max-height: 100vh;
}
body {
    display: flex;
    flex-direction: column;
}

a {
    color: inherit;
}
a:visited {
    color: inherit;
}

main {
    position: relative;

    overflow-y: scroll;

    display: flex;
    flex-direction: column;
    flex-grow: 1;

    align-items: center;
}

header {
    height: 160px;
    margin-bottom: 40px;

    display: flex;
    justify-content: center;
    flex-direction: column;
    align-items: center;
}

.header-textbox {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: flex-start;
}

.header-title {
    margin: 0;
    font-size: 10vh;
    /* text-decoration: underline; */

    color: white;
    text-shadow: 4px -4px var(--purple), -4px 4px var(--red);
}

.header-subtitle {
    margin: 0;
    color: rgb(200, 200, 200);
    text-shadow: 1px 0px 1px rgba(0, 0, 0, 0.2), 1px 1px 1px rgba(0, 0, 0, 0.2), 1px -1px 1px rgba(0, 0, 0, 0.2),
        -1px 0px 1px rgba(0, 0, 0, 0.2), -1px 1px 1px rgba(0, 0, 0, 0.2), -1px -1px 1px rgba(0, 0, 0, 0.2),
        0px 1px 1px rgba(0, 0, 0, 0.2), 0px -1px 1px rgba(0, 0, 0, 0.2);
}

@keyframes navbar-section-left-in {
    0% {
        opacity: 0;
        transform: translate(calc(var(--item) * 50%), 50%);
    }
    10% {
        opacity: 0;
    }
    100% {
        opacity: 1;
        transform: none;
    }
}

@keyframes navbar-section-right-in {
    0% {
        opacity: 0;
        transform: translate(calc(var(--item) * -50%), 50%);
    }
    10% {
        opacity: 0;
    }
    100% {
        opacity: 1;
        transform: none;
    }
}

@keyframes navbar-section-active-in {
    0% {
        box-shadow: none;
    }
    100% {
        box-shadow: 0 2px 0px 0px white;
    }
}

@keyframes fade-in-up {
    0% {
        opacity: 0;
        transform: translateY(50%);
    }
    10% {
        opacity: 0;
    }
    100% {
        opacity: 1;
        transform: none;
    }
}

nav.navbar {
    display: flex;
    flex-direction: row;
    justify-content: center;
    padding: 8px 32px;
    gap: 16px;
}

.navbar-logo {
    height: 64px;
    width: 64px;

    animation: fade-in-up 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) forwards;
}

.navbar-section {
    display: flex;
    flex-direction: row-reverse;
    justify-content: flex-start;
    align-items: center;
    height: 64px;
    gap: 16px;
    width: 33%;
}

.navbar-section-right {
    flex-direction: row;
}

.navbar-link {
    text-decoration: none;
    background: none;
    color: white;
    font-weight: 700;
    font-size: 20px;
}

.navbar-link:visited {
    color: white;
}

.navbar-section .navbar-link:nth-child(1) {
    --item: 1;
}
.navbar-section .navbar-link:nth-child(2) {
    --item: 2;
}
.navbar-section .navbar-link:nth-child(3) {
    --item: 3;
}
.navbar-section .navbar-link:nth-child(4) {
    --item: 4;
}
.navbar-section .navbar-link:nth-child(5) {
    --item: 5;
}
.navbar-section .navbar-link:nth-child(6) {
    --item: 6;
}
.navbar-section .navbar-link:nth-child(7) {
    --item: 7;
}

.navbar-section-left .navbar-link {
    opacity: 0;
    animation: navbar-section-left-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(var(--item) * 50ms) forwards;
}
.navbar-section-left .navbar-link.active {
    opacity: 0;
    animation: navbar-section-left-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(var(--item) * 50ms) forwards,
        navbar-section-active-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(300ms + var(--item) * 50ms) forwards;
}
.navbar-section-right .navbar-link {
    opacity: 0;
    animation: navbar-section-right-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(var(--item) * 50ms) forwards;
}
.navbar-section-right .navbar-link.active {
    opacity: 0;
    animation: navbar-section-right-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(var(--item) * 50ms) forwards,
        navbar-section-active-in 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) calc(300ms + var(--item) * 50ms) forwards;
}

.btn {
    outline: none;

    padding: 8px 12px;
    margin: 8px;

    font-size: 1rem;
    font-family: "Lexend";
    font-weight: 700;

    border: solid 4px white;
    border-radius: 0;

    background: none;
    color: white;

    transition: background 0.3s cubic-bezier(0.165, 0.84, 0.44, 1), color 0.3s cubic-bezier(0.165, 0.84, 0.44, 1),
        box-shadow 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);
}

.btn:hover {
    background: white;
    color: black;

    cursor: pointer;
}

.btn-primary {
    color: black;
    background: white;
}

.btn:hover {
    box-shadow: var(--accent-shadow);
}

.content-sheet {
    padding: 16px 32px;

    width: 100%;
    max-width: 800px;
}

.content-sheet.filled {
    background: white;
    color: black;
}

.sentence-link-accent {
    font-family: "Jetbrains Mono", monospace;
    font-weight: 400;
}

.sentence-link-accent.black {
    box-shadow: inset 0px -2px 0px 0px white, inset 0px -4px 0px 0px black;
}

.sentence-link-accent.white {
    box-shadow: inset 0px -2px 0px 0px black, inset 0px -4px 0px 0px white;
}

.mono {
    font-family: "Jetbrains Mono", monospace;
}
.regular {
    font-weight: 400;
}
.bold {
    font-weight: 700;
}
.text-shadow {
    text-shadow: 3px -3px 0px var(--purple), -3px 3px 0px var(--red);
}
.reset-margin {
    margin: 0;
}
.reset-padding-y {
    padding-top: 0;
    padding-bottom: 0;
}

.vertical {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 16px;
}

.home-introduce {
    display: flex;
    gap: 32px;

    margin: 16px 0;
}

.home-introduce-text {
    flex-grow: 1;
}

.home-introduce-text > p {
    margin-bottom: 0;
}

.home-introduce-image {
    width: 100%;
    max-width: 150px;
    height: 150px;
    object-fit: contain;
    border-radius: 50%;
    flex: 0 0 150;
}

@media only screen and (max-width: 727px) {
    .home-introduce {
        flex-direction: column-reverse;
        align-items: center;
        gap: 0;
    }

    .home-introduce-text {
        text-align: center;
    }
}

@media only screen and (min-width: 545px) {
    .home-introduce-break {
        display: none;
    }

    .home-introduce {
        margin: 0;
    }
}

@media only screen and (max-width: 311px) {
    .home-introduce-text > h1 {
        font-size: 1.5rem;
    }
}
