@import url("https://fonts.googleapis.com/css2?family=Cascadia+Mono:ital,wght@0,200..700;1,200..700&display=swap");

body {
    background-color: rgb(0, 0, 0);
    color: rgb(255, 255, 255);
    margin: 0;
    overflow: hidden;
}

* {
    font-family: "Cascadia Mono", monospace;
    transition: all 0.25s ease;
}

.Canvas {
    position: absolute;
    width: 100%;
    height: 100%;
}

.Hud {
    pointer-events: none;
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    z-index: 4;
}

.Hud > div {
    display: flex;
    flex-direction: row;
    align-items: center;
    pointer-events: none;
}

.Hud > .SimulationStats {
    margin: 8px;
    gap: 1vw;
}

.Hud > .CursorStats {
    position: absolute;
    bottom: 0;

    margin: 8px;
    gap: 1vw;
}

.Elements > .TypeList {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;

    z-index: 3;

    position: absolute;
    right: 8px;
    margin-top: 3vh;
    height: 92vh;
    width: 32px;
}

.Elements > .TypeList > div {
    position: relative;

    background-color: black;
    border: 2px solid white;
    width: 100%;
    height: 32px;

    box-sizing: border-box;

    text-align: center;
    align-content: center;
    justify-content: center;

    cursor: pointer;
}

.Elements > .TypeList > div:hover {
    background-color: white;
}

.Elements > .TypeList > div:hover span {
    opacity: 1;
}

.Elements > .TypeList > div:hover img {
    filter: invert(100%) brightness(0%);
}

.Elements > .TypeList > div img {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}

.Elements > .TypeList > div > span {
    position: absolute;
    left: -500%;
    text-align: right;

    opacity: 0;

    pointer-events: none;
}

.Elements > .TypeList > div > img {
    height: 75%;
}

.Elements > .Selector {
    display: flex;
    flex-direction: row-reverse;

    z-index: 3;

    position: absolute;
    left: 50%;
    bottom: 8px;
    width: 90%;
    height: 4vh;
    transform: translateX(-50%);
}

.Elements > .Selector > div {
    position: absolute;
    height: 100%;
    width: 100%;

    display: none;
    flex-direction: row-reverse;
    gap: 4px;
    
    opacity: 0;
}

.Elements > .Selector > div > div {
    display: flex;
    justify-content: center;
    align-items: center;
    flex-shrink: 0;

    width: 72px;
    height: 100%;
    font-size: 14px;

    background-color: white;
    color: black;

    box-sizing: border-box;
    border: 1px solid rgb(255, 255, 255);

    text-align: center;
    align-content: center;

    cursor: pointer;
}

.Elements > .Selector > div > div:hover,
.Elements > .Selector > div > div[Active] {
    width: 96px;
}

.Cursor {
    position: absolute;
    background-color: rgba(255, 255, 255, 0.125);
    pointer-events: none;
    aspect-ratio: 1 / 1;
    transition: none;
}

.SimulationSettingsList > div:has(div) > div {
    position: absolute;
    left: -100%;
    transform: translateX(-97.5%);

    opacity: 0;
    pointer-events: none;

    display: flex;
    flex-direction: row;
    gap: 4px;
}

.SimulationSettingsList > div:has(div) span {
    display: none;
}

.SimulationSettingsList > div:has(div) input:not(:first-child) {
    width: 32px;
    text-align: center;
}

.Band {
    z-index: -2;

    position: fixed;
    top: 8px;
    left: 50%;
    transform: translateX(50%);
    width: 100%;
    height: 4vh;

    text-wrap: nowrap;

    animation: Slide 16s linear infinite;
}

.PartStats {
    position: absolute;
    top: 1%;
    right: 5%;

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

.PartStats > * {
    margin-left: 8px;
}

.PartStats > .Color {
    padding-left: 20px;
    padding-right: 20px;
    padding-top: 10px;
    padding-bottom: 10px;
    
    box-sizing: border-box;
    border: 2px solid rgb(255, 255, 255);
}

.DisplayLabel {
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);

    pointer-events: none;
    z-index: 8;

    font-size: 24px;
    opacity: 0;
}

@media screen and (max-width: 768px) {
    .Cursor {
        display: none;
    }
}

@keyframes Slide {
    0% {
        transform: translateX(-150%);
    }
    100% {
        transform: translateX(50%);
    }
}