:root {
    /* Color Dictionary */
    --color-text-primary: white;
    --color-text-secondary: #888;
    /* Link Colors */
    --color-link: #4CB7FF;
    --color-link-hover: #66C1FF;
    /* Discord Brand Colors */
    --color-discord: #5865F2DD;
    --color-discord-hover: #6373EDDD;
    /* Ko-fi Brand Colors */
    --color-kofi: #FF4F19DD;
    --color-kofi-hover: #FF6433DD;
    --color-kofi-open: #FF8966DD;
    /* Blue Button Variant Colors */
    --color-blue: #1E72CCDD;
    --color-blue-hover: #2B7FD4DD;
    --color-blue-active: #3A8CDDDD;
    /* Yellow Button Variant Colors */
    --color-yellow: #FFCC11AA;
    --color-yellow-hover: #FFD633BB;
    --color-yellow-active: #FFE055BB;
    /* Button Colors */
    --color-button-bg: #2228;
    --color-button-bg-hover: #333A;
    --color-button-bg-active: #333C;
    --color-button-bg-disabled: #3334;
    --color-button-border: #FFF3;
    /* Input Colors */
    --color-input-border: #333;
    --color-input-border-hover: #444;
    --color-input-bg: #1A1A1A;
    --color-input-bg-hover: #222;
    --color-input-bg-disabled: #282828;
    /* Modal Colors */
    --color-modal-bg: #111C;
    /* Object Tree Colors */
    --color-object-tree-box-bg: #222;
    /* Validation Colors */
    --color-red: #FF4C4C;
    --color-green: #42DC54;
    /* Fonts */
    --font-mono: "Chivo Mono";
}

@import url('CourierPrime-Regular.ttf');

@font-face {
    font-family: "Rubik";
    src: url('Rubik-VariableFont_wght.ttf');
}

@font-face {
    font-family: "Chivo Mono";
    src: url('ChivoMono-VariableFont_wght.ttf');
}

html, body {
    font-family: "Rubik";
    font-optical-sizing: auto;
    font-style: normal;
    margin: 0;
    padding: 0;
    font-size: 18px;
    color: var(--color-text-primary);
}

.reu-mono,
code,
pre,
kbd,
samp,
tt,
var,
textarea {
    font-family: var(--font-mono), monospace;
    font-variant-ligatures: no-common-ligatures;
}

body {
    overflow-x: hidden;
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

button, input[type=submit], input[type=button] {
    all: unset;
}

a {
    color: var(--color-link);
    text-decoration: none;
}

    a:hover {
        color: var(--color-link-hover);
        text-decoration: underline;
    }

.reu-container {
    padding: 1rem;
    width: 75%;
    margin-right: auto;
    margin-left: auto;
    transition: width 0.2s ease, padding 0.2s ease;
}

main.reu-main {
    flex: 1;
}

@media (max-width: 850px) {
    .reu-container {
        width: calc(100% - 3rem);
    }
}

.reu-discord {
    background-color: var(--color-discord) !important;
}

    .reu-discord:hover {
        background-color: var(--color-discord-hover) !important;
    }

.reu-kofi {
    background-color: var(--color-kofi) !important;
    cursor: pointer;
}

    .reu-kofi:hover {
        background-color: var(--color-kofi-hover) !important;
    }

    .reu-kofi.open {
        background-color: var(--color-kofi-open) !important;
    }



.reu-button, input[type=submit], input[type=button] {
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--color-text-primary);
    background: var(--color-button-bg);
    border-bottom: 2px solid var(--color-button-border);
    border-radius: 4px;
    text-decoration: none;
    transition: background-color 0.05s ease;
    padding: 10px 5px;
    cursor: pointer;
}

    .reu-button:hover, input[type=submit]:hover, input[type=button]:hover {
        background-color: var(--color-button-bg-hover);
        color: var(--color-text-primary);
        text-decoration: none;
    }

    .reu-button.active {
        background-color: var(--color-button-bg-active);
    }

    .reu-button.disabled, .reu-button:disabled, input[type=submit]:disabled, input[type=button]:disabled {
        background-color: var(--color-button-bg-disabled);
        color: var(--color-text-secondary);
        cursor: not-allowed;
    }

.reu-button-blue {
    background-color: var(--color-blue);
}

    .reu-button-blue:hover:enabled, .reu-button-blue:hover:not(.disabled) {
        background-color: var(--color-blue-hover);
    }

    .reu-button-blue.active {
        background-color: var(--color-blue-active);
    }

.reu-button-yellow {
    background-color: var(--color-yellow);
}

    .reu-button-yellow:hover:enabled, .reu-button-yellow:hover:not(.disabled) {
        background-color: var(--color-yellow-hover);
    }

    .reu-button-yellow.active {
        background-color: var(--color-yellow-active);
    }

.reu-button-red {
    background-color: #CC3D3D;
}

    .reu-button-red:hover:enabled, .reu-button-red:hover:not(.disabled) {
        background-color: #FF6666DD;
    }

    .reu-button-red.active {
        background-color: #FF7777DD;
    }

.reu-upload-button {
    position: relative;
}

.reu-center {
    display: flex;
    flex-direction: column;
    align-items: center;
}

.reu-overflow {
    overflow-x: auto;
}

.reu-list {
    display: flex;
}

    .reu-list .reu-list-item {
        display: flex;
        border-radius: 5px;
        justify-content: center;
    }

    .reu-list.grow .reu-list-item {
        flex: 1;
    }

        .reu-list .reu-list-item:hover {
            background-color: #333;
            cursor: pointer;
        }

        .reu-list .reu-list-item.active {
            background-color: #444;
        }

    .reu-list.panel {
        background-color: #1A1A1AAA;
        border: 1px solid #333;
        border-radius: 5px;
    }

    .reu-list.vertical {
        flex-direction: column;
        overflow: auto;
    }

    .reu-list.wrap {
        flex-flow: wrap;
    }

select {
    cursor: pointer;
}

input[type=text],
input:not([type]),
input.text,
select,
input[type=date],
input[type=color],
input[type=datetime-local],
input[type=time],
input[type=month],
input[type=password],
input[type=search],
input[type=week],
input[type=url],
input[type=tel],
input[type=email],
input[type=number] {
    border: 1px solid var(--color-input-border);
    border-radius: 5px;
    font-family: inherit;
    color: inherit;
    padding: 2px 10px;
    background-color: var(--color-input-bg);
    font-size: inherit;
    color-scheme: dark;
}

    input[type=text]:hover,
    input:not([type]):hover,
    input.text:hover,
    select:hover,
    input[type=date]:hover,
    input[type=datetime-local]:hover,
    input[type=color]:hover,
    input[type=time]:hover,
    input[type=month]:hover,
    input[type=password]:hover,
    input[type=search]:hover,
    input[type=week]:hover,
    input[type=url]:hover,
    input[type=tel]:hover,
    input[type=email]:hover,
    input[type=number]:hover {
        border-color: var(--color-input-border-hover);
        background-color: var(--color-input-bg-hover);
    }

    input[type=text].disabled,
    input[type=text]:disabled,
    input:not([type]).disabled,
    input:not([type]):disabled,
    input.text.disabled,
    input.text:disabled,
    select.disabled,
    select:disabled,
    input[type=date].disabled,
    input[type=date]:disabled,
    input[type=datetime-local].disabled,
    input[type=datetime-local]:disabled,
    input[type=color].disabled,
    input[type=color]:disabled,
    input[type=time].disabled,
    input[type=time]:disabled,
    input[type=month].disabled,
    input[type=month]:disabled,
    input[type=password].disabled,
    input[type=password]:disabled,
    input[type=search].disabled,
    input[type=search]:disabled,
    input[type=week].disabled,
    input[type=week]:disabled,
    input[type=url].disabled,
    input[type=url]:disabled,
    input[type=tel].disabled,
    input[type=tel]:disabled,
    input[type=email].disabled,
    input[type=email]:disabled,
    input[type=number].disabled,
    input[type=number]:disabled {
        background-color: var(--color-input-bg-disabled);
        border-color: var(--color-input-border);
        color: var(--color-text-secondary);
        cursor: not-allowed;
    }

progress {
    border: 1px solid var(--color-input-border);
    border-radius: 5px;
}
    progress::-webkit-progress-bar {
        border-radius: 5px;
        background-color: var(--color-input-bg);
    }

    progress::-webkit-progress-value {
        border-radius: 5px;
        background-color: var(--color-blue);
    }

    progress::-moz-progress-bar {
        border-radius: 0px !important;
        background-color: var(--color-blue);
    }

footer.reu-footer {
    background: var(--color-input-bg);
}

    footer.reu-footer small {
        color: var(--color-text-secondary);
    }

.footer-discover-more {
    margin-top: 1rem;
    display: flex;
    gap: 0.5rem 1rem;
    flex-wrap: wrap;
    font-size: 75%;
}

.invalid {
    outline: 1px solid var(--color-red);
}

.validation-message {
    font-size: 80%;
    padding: 0.5rem 0;
    color: var(--color-red);
}

.valid {
    color: var(--color-green);
}

#components-reconnect-modal {
    display: none;
    background-color: var(--color-modal-bg);
    text-align: center;
    position: fixed;
    top: 0;
    z-index: 10001;
    width: calc(100% - 4rem);
    height: calc(100vh - 4rem);
    align-items: center;
    justify-content: center;
    animation: fadeIn 0.5s;
    flex-direction: column;
    gap: 20px;
    padding: 2rem;
}

    #components-reconnect-modal.components-reconnect-show,
    #components-reconnect-modal.components-reconnect-failed,
    #components-reconnect-modal.components-reconnect-rejected {
        display: flex;
    }

    #components-reconnect-modal .reu-connection-lost {
        font-size: 200%
    }

    #components-reconnect-modal .reu-connection-lost-detail {
        font-size: 75%;
        color: var(--color-text-secondary);
    }

@keyframes fadeIn {
    from {
        opacity: 0;
    }

    to {
        opacity: 1;
    }
}

/* Scrollbar */
* {
    scrollbar-color: #555 var(--color-input-bg);
}

.reu-scrollbar-thin {
    scrollbar-color: #555 var(--color-input-bg);
}