[hidden],
[set-cloak],
[v-cloak],
[\:hidden],
[set-hidden] {
    display: none !important;
}

:root {
    --color: #242526;
    --white: ghostwhite;
    --translucent-1: #24252655;
}

* {
    font-family: monospace, monospace !important;
    color: var(--color);
}

.pattern {
    background-image: radial-gradient(#fff4 1em, transparent 0);
    background-size: 2em 2em;
    background-position: -1em -1em;

    &.animate:hover {
        animation: pattern-move 500ms linear infinite;
    }
}

@keyframes pattern-move {
    from {
        background-position: -1em -1em;
    }

    to {
        background-position: -3em -3em;
    }
}

html {
    overflow: hidden;
    height: 100lvh;
    background-color: lightpink;
}

body {
    height: 100%;
    display: flex;
    flex-direction: column;
    line-height: unset;
}

header {
    backdrop-filter: blur(0.2em) saturate(2);
    padding: 8px;
    border-bottom: 2px solid var(--color);
    box-shadow: 0px 2px var(--translucent-1);
    z-index: 1;

    nav {
        align-items: baseline;
    }
}

sub,
sup {
    font-size: small;
}

main {
    flex: 1;
    padding: 8px;
    overflow: auto;
}

label {
    display: block;
}

meter {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    border-radius: 16px;
    background: none;
    background-color: var(--white);
    color: var(--white);
    border: 2px solid var(--translucent-1);

    &::-moz-meter-bar,
    &::-webkit-meter-bar {
        background: var(--translucent-1);
        background-color: var(--translucent-1);
        background-image: none;
        border-radius: 16px;
        border: 2px solid ghostwhite;
        color: transparent;
        height: 12px;
    }

    /* &::-webkit-meter-optimum-value,
    &::-webkit-meter-suboptimum-value,
    &::-webkit-meter-even-less-good-value {} */
}

progress {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    border-radius: 16px;
    background: none;
    background-color: var(--white);
    color: var(--white);
    border: 2px solid var(--translucent-1);

    &::-moz-progress-bar,
    &::-webkit-progress-value,
    &::-webkit-progress-bar {
        background: none;
        background-color: var(--translucent-1);
        color: var(--translucent-1);
        border-radius: 16px;
        background-size: 35px 20px, 100% 100%, 100% 100%;
        border: 2px solid ghostwhite;
        box-shadow: unset !important;
    }
}

input {
    &[type="file"] {
        &::file-selector-button {
            display: none;
        }

        &::-webkit-file-upload-button {
            display: block;
            width: 0;
            height: 0;
            margin-left: -100%;
        }
    }

    &[type="color"] {
        padding: unset;
        appearance: none;
        -webkit-appearance: none;

        &::-webkit-color-swatch-wrapper {
            padding: 0;
        }

        &::-webkit-color-swatch {
            border: none;
        }
    }

    &[type="color" i] {
        inline-size: 30px;
        block-size: 30px;
        border-radius: 100%;
        border: 2px solid var(--translucent-1);
    }

    &[type="radio"] {
        cursor: pointer;
        accent-color: var(--color);
        border: 2px solid var(--translucent-1);
        outline: none;
        appearance: none;
        block-size: 16px;
        width: 20px;
        height: 20px;
        border-radius: 16px;
        padding: 0px;

        &:checked {
            border: 2px solid var(--color);
        }
    }

    &[type="range"] {
        cursor: pointer;
        appearance: none;
        height: 8px;
        margin: 8px 0px 8px 0px;
        border-radius: 8px;
        padding: 0px 2px 0px 2px;

        &:focus {
            outline: none;
        }

        &::-moz-range-thumb,
        &::-webkit-slider-thumb {
            background: var(--white);
            border: 2px solid var(--translucent-1);
            width: 16px;
            height: 16px;
            border-radius: 16px;
            cursor: pointer;
        }
    }
}

input,
textarea,
[contenteditable] {
    cursor: text;
    display: block;

    &[readonly] {
        pointer-events: none;
    }
}

button,
[type="button"],
[data-button] {
    cursor: pointer;
}

button,
input,
textarea,
[contenteditable],
[type="button"] {
    transition: 128ms background-color, 128ms border;
    border: 2px solid var(--translucent-1);
    padding: 4px 16px;
    outline: none;
    font: inherit;
    backdrop-filter: blur(0.2em) saturate(2);
    background: transparent;
    border-radius: 4px;

    &:hover,
    &:focus {
        border: 2px solid var(--color);
    }

    &:active {
        border: 2px solid var(--translucent-1);
    }
}

.row-gap-8 {
    display: flex;
    flex-direction: row;
    gap: 8px;
}

details {
    summary {
        cursor: pointer;
    }
}

hr {
    background-color: var(--translucent-1);
    height: 2px;
    border: 0;
}

a {
    user-select: none;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    position: relative;
    transition: 128ms background-color, 128ms border;
    border: 2px solid transparent;
    border-radius: 4px;

    &::before,
    &::after {
        color: var(--translucent-1);
    }

    &::before {
        content: "[";
    }

    &::after {
        content: "]";
    }

    /* &[href]::after {
        content: "](*)";
    }

    &[href]:hover::after {
        content: "](" attr(href) ")";
    } */

    &:hover,
    &:focus {
        background-color: rgba(255, 255, 255, 0.5);
        border: 2px solid var(--color);
    }

    &:active {
        border: 2px solid var(--translucent-1);
    }
}

pre {
    white-space: pre-line;
}

dialog {
    position: fixed;
    top: 50%;
    z-index: 999;
    left: 50%;
    transform: translate(-50%, -50%);
    margin: 0;
    padding: 8px;
    backdrop-filter: blur(0.2em) saturate(2);
    background: transparent;
    border-radius: 4px;
}

:is(h1, h2, h3, h4, h5, h6) {
    margin-bottom: 8px;
    padding-bottom: 4px;
    border-bottom: 2px solid var(--translucent-1);
    user-select: none;
    transition: 128ms border, 128ms color;

    &::before {
        color: var(--translucent-1);
        transition: 128ms border, 128ms color;
    }

    &:hover {
        border-bottom: 2px solid var(--color);

        &::before {
            color: inherit;
        }
    }

    &:not(:first-child) {
        margin-top: 32px;
    }
}

h1::before {
    content: "# ";
}

h2::before {
    content: "## ";
}

h3::before {
    content: "### ";
}

h4::before {
    content: "#### ";
}

h5::before {
    content: "##### ";
}

h6::before {
    content: "###### ";
}
