/* General Styling and Colors for all pages */
:root {
    --transition-time: 200ms;
    --background-layer-5: #1d1e2e;
    --background-layer-4: #212335;
    --background-layer-3: #282a3f;
    --background-layer-2: #2d2f47;
    --background-layer-1: #333550;
    --background-layer-0: #a1a8ff;
    --text-layer-1: #f0f0f0;
    --text-layer-2: #181818;
    --text-layer-3: #b4b4b4;
    --text-error-1: #f63232;
}

body {
    background-color: var(--background-layer-5);
    padding: 0;
    margin: 0;
}

p,
a,
pre,
tr,
td,
ul,
li,
noscript,
label,
input,
textarea,
button,
span {
    margin: 0;
    padding: 0;
    color: var(--text-layer-1);
    font-family: 'Poppins', Arial, sans-serif;
    font-weight: 400;
    font-size: 16px;
    padding: 4px 0;
}


/* Utility: Text */
.text-hero {
    font-weight: 600;
    font-size: xxx-large;
    color: var(--background-layer-0);
}

.text-headline {
    font-weight: 600;
    font-size: xx-large;
    color: var(--background-layer-0);
    line-height: 1;
    padding-top: 0;
}

.text-header {
    color: var(--background-layer-0);
    font-size: large;
    font-weight: 600;
}

.text-error {
    font-weight: bold;
    font-style: italic;
    color: var(--text-error-1);
}

.text-tip {
    font-size: small;
}

.text-muted,
s {
    color: var(--text-layer-3);
}

/* Utility: Buttons */
button.small {
    font-size: small;
    border: none;
    background-color: transparent;
    cursor: pointer;
    text-align: left;
    width: fit-content;
    color: var(--text-layer-1);
    transition: var(--transition-time) ease-in-out all;
}

button.small:focus-visible,
button.small:hover {
    color: var(--background-layer-0);
}

button.small:disabled {
    color: var(--text-layer-1) !important;
    opacity: 0.5;
    cursor: default;
}

button.default,
a.default {
    min-width: fit-content;
    width: 100px;
    text-align: center;
    text-decoration: none;
    height: fit-content;
    text-wrap: nowrap;
    border-radius: 8px;
    padding: 4px 8px;
    outline: none;
    border: none;
    cursor: pointer;
    color: var(--text-layer-1);
    background-color: var(--background-layer-3);
    border: 2px solid var(--background-layer-2);
    transition: var(--transition-time) ease-in-out all;
}

a.default:hover,
a.default:focus-visible,
button.default:hover,
button.default:focus-visible {
    color: var(--text-layer-1);
    border-color: var(--background-layer-0);
    background-color: var(--background-layer-1);
}

a.destructive:hover,
a.destructive:focus-visible,
button.destructive:hover,
button.destructive:focus-visible {
    border-color: var(--text-error-1);
}

*[disabled],
*:disabled {
    opacity: 0.75 !important;
    background-color: var(--background-layer-3) !important;
    border-color: var(--background-layer-2) !important;
    pointer-events: none !important;
}

a.wide,
button.wide {
    width: 100%;
}

a.tall,
button.tall {
    height: 100%;
}

/* Utility: Inputs */
input.text,
textarea.text {
    width: 100%;
    height: fit-content;
    text-wrap: nowrap;
    border-radius: 8px;
    box-sizing: border-box;
    padding: 8px 16px;
    color: var(--text-layer-1);
    background-color: var(--background-layer-3);
    border: 2px solid var(--background-layer-2);
    transition: var(--transition-time) ease-in-out border;
    outline: none;
}

input.text:focus-visible,
textarea.text:focus-visible {
    color: var(--text-layer-1);
    border-color: var(--background-layer-0);
    background-color: var(--background-layer-1);
}

input.text:required:focus-visible:invalid,
textarea.text:required:focus-visible:invalid {
    border: 2px solid var(--text-error-1);
}

textarea.text {
    resize: vertical;
    min-height: 45px;
    text-wrap: wrap;
}


/* Utility: Spacers */
div.divider-line {
    height: 2px;
    width: 100%;
    margin: 8px 0;
    background-color: var(--background-layer-1);
}

div.divider-dashed {
    display: none;
    width: 100%;
    margin: 8px 0;
    border: 1px dashed var(--background-layer-0);
    box-sizing: border-box;
}

div.divider-header {
    width: 100%;
    border-bottom: 2px solid var(--background-layer-1);
    padding-bottom: 8px;
    margin-bottom: 8px;
    box-sizing: border-box;
}

div.divider-spacer {
    margin: 16px 0;
}

/* Utility: Shadows & Animations */
.special-shadow {
    filter: drop-shadow(0 20px 13px rgb(0 0 0 / 0.03)) drop-shadow(0 8px 5px rgb(0 0 0 / 0.08));
}

.special-dropshadow {
    filter: drop-shadow(0 25px 25px rgb(0 0 0 / 0.15));
}

.special-pulse {
    animation: pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite;
}

@keyframes pulse {

    0%,
    100% {
        opacity: 1;
    }

    50% {
        opacity: .5;
    }
}

/* Mobile Styling */
@media (max-width: 640px) {
    div.divider-dashed {
        display: block;
    }
}