/* === Reset & Base === */

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

button {
  -webkit-appearance: none;
  border-radius: 0;
  text-align: inherit;
  background: none;
  box-shadow: none;
  padding: 0;
  cursor: pointer;
  border: none;
  color: inherit;
  font: inherit;
}

ul {
    list-style: none;
    padding: 0;
    margin: 0;
}

a {
    text-decoration: none;
    color: white;
}

pre {
    font: inherit;
    margin: 0px;
}

h1 {
    margin: 0px;
    font-weight: normal;
    font-style: normal;
}


/* === Fonts === */

@font-face {
    font-family: "Dungeon";
    src: url("./Fonts/dungeon.ttf");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "DungeonMono";
    src: url("./Fonts/monogram.ttf");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: "DungeonTitle";
    src: url("./Fonts/dungeonTitle.ttf");
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}


/* === Colors & Gradients === */

.blue  { color: #0075ff; }
.green { color: #1af2f2; }
.yell  { color: yellow; }

.blue-gradient {
    background: linear-gradient(
        -4deg,
        #000080 0% 20%,
        #0000b2 50%,
        #000080 80% 100%
    );
}

.dark-gradient {
    background: linear-gradient(
        4deg,
        #081400 0%,
        #08144d 50%,
        #081400 100%
    );
}


/* === Layout === */

body {
    background-color: black;
    color: white;
    font-family: "Dungeon";
    font-size: 2rem;
    filter: contrast(100.00001%); /* hack for pixel perfect */
    display: flex;
    gap: 25px;
}

.content-area {
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 25px;
}

#primary {
    display: flex;
    gap: 50px;
}


/* === Header === */

header {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 6px;
}


/* === Nav === */

nav {
    flex: 0 0 300px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.nav-section {
    display: flex;
    flex-direction: column;
}

nav ul li {
    background: linear-gradient(
        4deg,
        #081400 0%,
        #08144d 50%,
        #081400 100%
    );
    margin-top: 2px;
    display: flex;
    flex-direction: row;

    a {
        width: 100%;
        padding-left: 20px;
    }
}


/* === Music Player === */

#music-player {
    display: flex;
    flex-direction: column;
}

#volume-slider {
    margin-left: 30px;
    margin-right: 30px;
    position: relative;
    align-items: center;
}

#volume-slider-bg {
    background-color: #00007b;
    width: 100%;
    height: 8px;
    position: absolute;
    bottom: 5px;
}

#dots {
    position: relative;
    padding-left: 10px;
    padding-right: 10px;
}

.dots-spacing {
    letter-spacing: 2px;
}

#track-switcher {
    height: 25px;
    display: flex;
    flex-direction: row;
    gap: 3px;

    button {
        width: 26px;
        background: linear-gradient(
            45deg,
            #0000ab 0%,
            #000066 50%,
            #0000ab 100%
        );
        text-align: center;
        line-height: 0px;
    }

    .song-title-container {
        position: relative;
        flex-grow: 1;
        line-height: 20px;

        .song-title {
            position: relative;
            margin-left: 15px;
        }

        .song-progress {
            position: absolute;
            width: 30%;
            height: 25px;
            background-color: #0075ff;
        }
    }
}


/* === Main Content === */

main {
    min-width: 780px;
    max-width: 780px;
    display: flex;
    flex-direction: column;
    gap: 25px;
}

.title {
    font-family: "DungeonTitle";
    font-size: 2rem;
}

article {
    width: 780px;
    line-height: 1.5rem;
}

#bio-console {
    font-family: "DungeonMono";
    line-height: 0.62;
}

#whoami {
    display: flex;
}

#why {
    text-wrap: wrap;
}


/* === Aside === */

aside {
    flex: 0 0 400px;
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.map-container {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

#worldmap {
    aspect-ratio: 1.88;
}

.bordered-card {
    border: 2px solid #4f8ad6;
    padding: 4px;
    height: 200px;
    background: linear-gradient(
        -22deg,
        #081479 0%,
        #081401 50%,
        #081479 100%
    );

    .numbered-rows {
        display: flex;
        flex-direction: row;
        padding: 8px;
        gap: 4px;

        .numbers {
            white-space: pre-line;
        }

        .rows-container {
            flex-grow: 1;
            background: linear-gradient(
                90deg,
                #4c4c80,
                #4c4ccc
            );

            .memory-block {
                white-space: pre-line;
            }

            .memory-block-red {
                background: linear-gradient(
                    90deg,
                    #cc3333ff,
                    #cc333300
                );
            }

            .memory-block-green {
                background: linear-gradient(
                    90deg,
                    #33cb34ff,
                    #33cb3400
                );
            }
        }
    }
}

.buttons {
    padding: 10px 6px;
    /* filter: invert(8%) sepia(100%) saturate(7482%) hue-rotate(245deg) brightness(100%) contrast(139%); */
    filter: url("#blue-monochrome-map");
    height: 100%;
}

.bordered-card:hover .buttons {
    filter: none;
}


/* === Shared Components === */

.header {
    height: 30px;
    text-align: center;
    line-height: 22px;
    padding: 0px 40px;
}

.content {
    border: 2px solid white;
    padding: 0px 5px 5px 5px;
    text-wrap: balance;
}

.content:has(.buttons) {
    padding: 10px 10px;
}


/* === Responsive === */

@media (max-width: 768px) {
    body {
        flex-direction: column;
    }

    header {
        flex-direction: column;
    }

    #date {
        width: auto;
    }

    #time {
        width: auto;
    }

    #ip {
        width: auto;
    }

    nav {
        order: 2;
    }

    #primary {
        flex-direction: column;
        gap: 25px;
    }

    article {
        width: auto;
    }

    #whoami {
        flex-direction: column;
    }
}

