@font-face {
    font-family: 'Roboto';
    src: local("../fonts/Roboto"), url("../fonts/Roboto-VariableFont_wdth,wght.ttf") format('truetype');
}

@font-face {
    font-family: 'Butterfly Kids';
    src: local("../fonts/ButterflyKids"), url("../fonts/ButterflyKids-Regular.ttf") format('truetype');
}

@keyframes l5 {
    0% {
        box-shadow: 20px 0 #000, -20px 0 #0002;
        background: #000
    }
    33% {
        box-shadow: 20px 0 #000, -20px 0 #0002;
        background: #0002
    }
    66% {
        box-shadow: 20px 0 #0002, -20px 0 #000;
        background: #0002
    }
    100% {
        box-shadow: 20px 0 #0002, -20px 0 #000;
        background: #000
    }
}

:root {
    --background-color: var(--color_white);
    --color_white: #FFFFFF;
    --color_orange: #FF8080;
    --color_pink: #FF80DF;
    --color_violet: #BF80FF;
    --color_blue: #809FFF;
    --color_light-blue: #80FFFF;
    --color_green: #80FF9F;
    --color_light-green: #BFFF80;
    --color_yellow: #FFDF80;
    --color_red: #FF8A80;
    --color_crimson: #DC143C;
    --color_grey: #DDD;
    --color_grey-light: #F3F3F3;
    --linear-background-color: linear-gradient(90deg, var(--color_orange) 0%, var(--color_pink) 12%, var(--color_violet) 25%, var(--color_blue) 37%, var(--color_light-blue) 50%, var(--color_green) 62%, var(--color_light-green) 75%, var(--color_yellow) 88%, var(--color_red) 100%);
}

* {
    box-sizing: border-box;
}

body {
    font-family: "Roboto", serif;
    scroll-behavior: smooth;
    margin: 0;
    font-size: 18px;
    background-color: #FFDEE9;
    background-image: linear-gradient(0deg, #FFDEE9 0%, #B5FFFC 100%);
    overflow-x: hidden;
}

h1, h2, h3 {
    font-family: "Butterfly Kids", serif;
    font-weight: 300;
    margin: 1rem 0;
    text-align: center;
}

h1 {
    font-size: 9rem;
}

h2 {
    font-size: 5rem;
}

h3 {
    font-size: 4rem;
}

input {
    padding: .6rem;
    border-radius: .4rem;
    border: none;
    color: #222;
}

.container {
    width: 100%;
    height: 100vh;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    flex-direction: column;
    padding: 1rem 5rem 0;
    margin-bottom: 10rem;
    position: relative;

    .inner {
        width: 75%;
        margin: 0 auto;

        &.large {
            width: 100%;
        }
    }

    .options {
        display: grid;
        grid-template-columns: 1fr auto;
        gap: 2rem;

        .col {
            margin: 1rem 0;
        }

        .button-container {
            width: auto;

            &.left {
                float: left;
            }

            &.right {
                float: right;
            }
        }
    }

    &.center {
        max-width: 75%;
        margin: 0 auto 10rem;
        justify-content: center;
        gap: 2rem;
    }

    &.large {
        max-width: 100%;
    }
}

.wheels-of-fortune {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    align-items: center;
    justify-content: center;
    gap: 6rem;
    width: 100%;

    .wheel {
        width: 100%;
        display: grid;
        grid-template-rows: auto 1fr 1fr;
        gap: 2rem;
    }
}

.ui-wheel-of-fortune {
    all: unset;
    aspect-ratio: 1 / 1;
    container-type: inline-size;
    direction: ltr;
    display: grid;
    position: relative;
    width: 100%;

    &::after {
        aspect-ratio: 1/cos(30deg);
        background-color: var(--color_crimson);
        clip-path: polygon(50% 100%, 100% 0, 0 0);
        content: "";
        height: 4cqi;
        position: absolute;
        place-self: start center;
        scale: 1.4;
    }

    & > * {
        position: absolute;
    }

    ul {
        all: unset;
        clip-path: inset(0 0 0 0 round 50%);
        display: grid;
        inset: 0;
        place-content: center start;

        li {
            align-content: center;
            aspect-ratio: 1 / calc(2 * tan(180deg / var(--_items)));
            background: hsl(calc(360deg / var(--_items) * calc(var(--_idx))), 100%, 75%);
            clip-path: polygon(0% 0%, 100% 50%, 0% 100%);
            color: #222;
            display: grid;
            font-size: 5cqi;
            font-weight: 600;
            grid-area: 1 / -1;
            padding-left: 1ch;
            rotate: calc(360deg / var(--_items) * calc(var(--_idx) - 1));
            transform-origin: center right;
            user-select: none;
            width: 50cqi;

            &:nth-of-type(1) {
                --_idx: 1;
            }

            &:nth-of-type(2) {
                --_idx: 2;
            }

            &:nth-of-type(3) {
                --_idx: 3;
            }

            &:nth-of-type(4) {
                --_idx: 4;
            }

            &:nth-of-type(5) {
                --_idx: 5;
            }

            &:nth-of-type(6) {
                --_idx: 6;
            }

            &:nth-of-type(7) {
                --_idx: 7;
            }

            &:nth-of-type(8) {
                --_idx: 8;
            }

            &:nth-of-type(9) {
                --_idx: 9;
            }

            &:nth-of-type(10) {
                --_idx: 10;
            }

            &:nth-of-type(11) {
                --_idx: 11;
            }

            &:nth-of-type(12) {
                --_idx: 12;
            }
        }

        &[data-itemCount='1'] {
            li {
                aspect-ratio: 1/1;
                display: block;
                rotate: 0;
                clip-path: none;
                width: 100cqi;
            }
        }

        &[data-itemCount='2'] {
            li {
                height: 100cqi;
                clip-path: none;
            }
        }

        &[data-itemCount='3'] {
            li {
                aspect-ratio: 1 / 2;
                clip-path: polygon(-35% -100%, 100% 50%, 0% 145%);
            }
        }

    }
}

#loading-bar-container {
    background: var(--linear-background-color);
    height: 3rem;
    display: none;
    position: absolute;
    width: 100%;
    left: 0;
    bottom: 0;

    #loading-bar {
        width: 100%;
        height: 100%;
        background: var(--color_grey);
        float: right;
        transition: all .2s ease;
    }
}

.result {
    text-transform: uppercase;
    text-align: center;
    display: inline-block;
    font-size: 2.5rem;
    font-family: "Roboto", serif;
    margin-left: 1rem;

    .value {
        font-size: 1.6rem;
    }
}

.loader {
    width: 15px;
    aspect-ratio: 1;
    border-radius: 50%;
    animation: l5 1s infinite linear alternate;
    display: inline-block;
    position: relative;
    right: -2rem;
    margin: 0 auto;

    &.hidden {
        display: none;
    }
}

.inputs {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    align-items: center;
    gap: 1rem;
    margin-bottom: 2rem;

    > * {
        display: block;
    }

    input {
        width: 100%;
    }
}

.field {
    position: relative;
    display: inline-block;
    background-image: linear-gradient(white, white), linear-gradient(to right, var(--color_crimson) 0%, var(--color_orange) 100%);
    border: double 2px transparent;
    border-radius: .4rem;
    background-origin: border-box;
    background-clip: content-box, border-box;
}

.input {
    margin-bottom: 2rem;
}

.checkboxes {
    &, > span {
        margin-bottom: 1rem;
        display: block;
    }

    .label {
        display: block;
        position: relative;
        padding-left: 35px;
        margin-bottom: 12px;
        cursor: pointer;
        font-size: 22px;
        user-select: none;

        input {
            position: absolute;
            opacity: 0;
            cursor: pointer;
            height: 0;
            width: 0;

            &:checked ~ .checkmark {
                background: linear-gradient(to right, var(--color_crimson) 0%, var(--color_orange) 100%);

                &:after {
                    display: block;
                }
            }
        }

        .checkmark {
            position: absolute;
            top: 0;
            left: 0;
            height: 25px;
            width: 25px;
            background-color: var(--color_white);
            border: 1px solid var(--color_grey);

            &:after {
                content: "";
                position: absolute;
                display: none;
                left: 9px;
                top: 5px;
                width: 5px;
                height: 10px;
                border: solid var(--color_white);
                border-width: 0 3px 3px 0;
                transform: rotate(45deg);
            }
        }

        &:hover input ~ .checkmark {
            background-color: var(--color_white);
        }
    }
}

.button-container {
    width: 100%;

    &:not(.left) {
        text-align: center;
    }
}

.custom-pronoun-row {
    display: flex;
    align-items: center;
    gap: 1rem;

    .field {
        flex: 1;

        input {
            width: 100%;
        }
    }

    .button {
        margin: 0;
        padding: .6rem 1.2rem;
    }
}

.custom-pronouns-list {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;

    li {
        display: flex;
        align-items: center;
        gap: .4rem;
        background-color: var(--color_grey-light);
        border-radius: .4rem;
        padding: .3rem .6rem;
        font-size: .9rem;
        color: #222;
    }

    .remove-pronoun {
        all: unset;
        cursor: pointer;
        font-weight: 700;
        color: var(--color_crimson);
        line-height: 1;

        &:hover {
            color: #ff7898;
        }
    }
}

.button {
    padding: 1rem 2rem;
    border-radius: .4rem;
    border: 1px solid var(--color_crimson);
    margin: 1rem 0;
    background-color: var(--color_crimson);
    color: var(--color_white);
    text-transform: uppercase;
    transition: all .5s ease;
    font-size: 1rem;
    font-weight: 600;

    &:hover {
        background-color: #ff7898;
        border-color: #ff7898;
        cursor: pointer;
    }

    &:disabled {
        opacity: .5;
        cursor: not-allowed;
    }
}

#results-table {
    width: 100%;
    table-layout: auto;
    text-align: left;
    border-collapse: collapse;
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.15);
    color: #222;

    thead {
        > tr {
            background-color: var(--color_orange);
            color: var(--color_white);

            > th {
                font-size: 2rem;
                text-transform: uppercase;
                padding: 12px 15px;
            }
        }
    }

    tbody {
        > tr {
            background-color: var(--color_white);
            border-bottom: 1px solid var(--color_grey);

            > td {
                padding: 12px 15px;
            }

            &:nth-of-type(even) {
                background-color: var(--color_grey-light);
            }

            &:last-of-type {
                border-bottom: 2px solid var(--color_orange);
            }
        }
    }
}

.hidden {
    display: none;
}

.error {
    margin-top: .1rem;
    color: var(--color_crimson);
    font-size: .9rem;
}

/* ============================================================
   Seasonal themes, auto-applied by date (see ThemeManager in js/index.js)
   ============================================================ */

body.theme-halloween {
    --color_crimson: #FF7518;
    --color_orange: #9D4EDD;
    color: #F4E8FF;
    background-color: #1A1025;
    background-image:
        url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiB2aWV3Qm94PSIwIDAgMjIwIDIyMCI+CiAgPHRleHQgeD0iMTUiIHk9IjQ1IiBmb250LXNpemU9IjM0IiBvcGFjaXR5PSIwLjIwIj7wn46DPC90ZXh0PgogIDx0ZXh0IHg9IjEzMCIgeT0iMzUiIGZvbnQtc2l6ZT0iMjQiIG9wYWNpdHk9IjAuMTYiIHRyYW5zZm9ybT0icm90YXRlKC0xMiAxMzAgMzUpIj7wn6aHPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMTUiIGZvbnQtc2l6ZT0iMzAiIG9wYWNpdHk9IjAuMTYiPvCfkbs8L3RleHQ+CiAgPHRleHQgeD0iMTY1IiB5PSIxNTAiIGZvbnQtc2l6ZT0iMjYiIG9wYWNpdHk9IjAuMTQiIHRyYW5zZm9ybT0icm90YXRlKDEwIDE2NSAxNTApIj7wn5W477iPPC90ZXh0PgogIDx0ZXh0IHg9IjIwIiB5PSIxOTUiIGZvbnQtc2l6ZT0iMjIiIG9wYWNpdHk9IjAuMTQiIHRyYW5zZm9ybT0icm90YXRlKC04IDIwIDE5NSkiPvCfpoc8L3RleHQ+Cjwvc3ZnPgo="),
        linear-gradient(0deg, #1A1025 0%, #3D1E5C 100%);
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, fixed;
    background-size: 220px 220px, cover;
}

body.theme-halloween .button:hover {
    background-color: #FFA94D;
    border-color: #FFA94D;
}

body.theme-halloween h1::after {
    content: " 🎃";
}

body.theme-halloween h2::before {
    content: "🦇 ";
}

body.theme-nouvelan {
    --color_crimson: #FFD166;
    --color_orange: #2E1F66;
    color: #FFF3D6;
    background-color: #0B1130;
    background-image:
        url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiB2aWV3Qm94PSIwIDAgMjIwIDIyMCI+CiAgPHRleHQgeD0iMTgiIHk9IjQyIiBmb250LXNpemU9IjMwIiBvcGFjaXR5PSIwLjIwIj7wn46GPC90ZXh0PgogIDx0ZXh0IHg9IjEyOCIgeT0iMzIiIGZvbnQtc2l6ZT0iMjYiIG9wYWNpdHk9IjAuMTgiIHRyYW5zZm9ybT0icm90YXRlKDEwIDEyOCAzMikiPuKcqDwvdGV4dD4KICA8dGV4dCB4PSI3MCIgeT0iMTE4IiBmb250LXNpemU9IjI4IiBvcGFjaXR5PSIwLjE4Ij7wn46JPC90ZXh0PgogIDx0ZXh0IHg9IjE2MCIgeT0iMTUwIiBmb250LXNpemU9IjI0IiBvcGFjaXR5PSIwLjE2IiB0cmFuc2Zvcm09InJvdGF0ZSgtMTAgMTYwIDE1MCkiPvCfjb48L3RleHQ+CiAgPHRleHQgeD0iMjUiIHk9IjE5NSIgZm9udC1zaXplPSIyMCIgb3BhY2l0eT0iMC4xNiI+4pyoPC90ZXh0Pgo8L3N2Zz4K"),
        linear-gradient(0deg, #0B1130 0%, #241B4E 100%);
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, fixed;
    background-size: 220px 220px, cover;
}

body.theme-nouvelan .button:hover {
    background-color: #FFE28A;
    border-color: #FFE28A;
}

body.theme-nouvelan h1::after {
    content: " 🎉";
}

body.theme-nouvelan h2::before {
    content: "🎆 ";
}

body.theme-noel {
    --color_crimson: #C8102E;
    --color_orange: #1C6B32;
    color: #7A2323;
    background-color: #F3FFF6;
    background-image:
        url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiB2aWV3Qm94PSIwIDAgMjIwIDIyMCI+CiAgPHRleHQgeD0iMTgiIHk9IjQyIiBmb250LXNpemU9IjMwIiBvcGFjaXR5PSIwLjIyIj7inYTvuI88L3RleHQ+CiAgPHRleHQgeD0iMTI1IiB5PSIzMCIgZm9udC1zaXplPSIzNCIgb3BhY2l0eT0iMC4xOCI+8J+OhDwvdGV4dD4KICA8dGV4dCB4PSIxNTUiIHk9IjEzMCIgZm9udC1zaXplPSIyNCIgb3BhY2l0eT0iMC4xOCIgdHJhbnNmb3JtPSJyb3RhdGUoOCAxNTUgMTMwKSI+8J+OgTwvdGV4dD4KICA8dGV4dCB4PSI1NSIgeT0iMTQwIiBmb250LXNpemU9IjIwIiBvcGFjaXR5PSIwLjE2Ij7irZA8L3RleHQ+CiAgPHRleHQgeD0iOTAiIHk9IjIwMCIgZm9udC1zaXplPSIyNiIgb3BhY2l0eT0iMC4xNiIgdHJhbnNmb3JtPSJyb3RhdGUoLTEwIDkwIDIwMCkiPuKdhO+4jzwvdGV4dD4KPC9zdmc+Cg=="),
        linear-gradient(0deg, #FFFFFF 0%, #E3F8E9 100%);
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, fixed;
    background-size: 220px 220px, cover;
}

body.theme-noel .button:hover {
    background-color: #2E8B4F;
    border-color: #2E8B4F;
}

body.theme-noel h1::after {
    content: " 🎄";
}

body.theme-noel h2::before {
    content: "❄️ ";
}

body.theme-paques {
    --color_crimson: #E07BA3;
    --color_orange: #8E7CC3;
    color: #4A3B5C;
    background-color: #FFF8ED;
    background-image:
        url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiB2aWV3Qm94PSIwIDAgMjIwIDIyMCI+CiAgPHRleHQgeD0iMjAiIHk9IjQ1IiBmb250LXNpemU9IjMwIiBvcGFjaXR5PSIwLjIwIj7wn5CwPC90ZXh0PgogIDx0ZXh0IHg9IjEzNSIgeT0iMzUiIGZvbnQtc2l6ZT0iMjYiIG9wYWNpdHk9IjAuMTgiIHRyYW5zZm9ybT0icm90YXRlKDEwIDEzNSAzNSkiPvCfjLc8L3RleHQ+CiAgPHRleHQgeD0iNzUiIHk9IjEyMCIgZm9udC1zaXplPSIyOCIgb3BhY2l0eT0iMC4xOCI+8J+QozwvdGV4dD4KICA8dGV4dCB4PSIxNjAiIHk9IjE1MCIgZm9udC1zaXplPSIyMiIgb3BhY2l0eT0iMC4xNiIgdHJhbnNmb3JtPSJyb3RhdGUoLTEwIDE2MCAxNTApIj7wn6WaPC90ZXh0PgogIDx0ZXh0IHg9IjI1IiB5PSIxOTUiIGZvbnQtc2l6ZT0iMjQiIG9wYWNpdHk9IjAuMTYiPvCfjLc8L3RleHQ+Cjwvc3ZnPgo="),
        linear-gradient(0deg, #FFF8ED 0%, #EAF6FF 100%);
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, fixed;
    background-size: 220px 220px, cover;
}

body.theme-paques .button:hover {
    background-color: #EE9EC0;
    border-color: #EE9EC0;
}

body.theme-paques h1::after {
    content: " 🐰";
}

body.theme-paques h2::before {
    content: "🐣 ";
}

body.theme-ete {
    --color_crimson: #FF7F50;
    --color_orange: #1CA9C9;
    color: #063B49;
    background-color: #FFF6DD;
    background-image:
        url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMjAiIGhlaWdodD0iMjIwIiB2aWV3Qm94PSIwIDAgMjIwIDIyMCI+CiAgPHRleHQgeD0iMjAiIHk9IjQ1IiBmb250LXNpemU9IjMyIiBvcGFjaXR5PSIwLjIwIj7imIDvuI88L3RleHQ+CiAgPHRleHQgeD0iMTMwIiB5PSIzNSIgZm9udC1zaXplPSIyNCIgb3BhY2l0eT0iMC4xNiIgdHJhbnNmb3JtPSJyb3RhdGUoOCAxMzAgMzUpIj7wn42JPC90ZXh0PgogIDx0ZXh0IHg9IjcwIiB5PSIxMjAiIGZvbnQtc2l6ZT0iMjYiIG9wYWNpdHk9IjAuMTgiPvCfjIo8L3RleHQ+CiAgPHRleHQgeD0iMTYwIiB5PSIxNTAiIGZvbnQtc2l6ZT0iMjIiIG9wYWNpdHk9IjAuMTYiIHRyYW5zZm9ybT0icm90YXRlKC0xMCAxNjAgMTUwKSI+8J+QmjwvdGV4dD4KICA8dGV4dCB4PSIyMCIgeT0iMTk1IiBmb250LXNpemU9IjI0IiBvcGFjaXR5PSIwLjE0Ij7wn4yKPC90ZXh0Pgo8L3N2Zz4K"),
        linear-gradient(0deg, #FFF6DD 0%, #CFF3EC 100%);
    background-repeat: repeat, no-repeat;
    background-attachment: fixed, fixed;
    background-size: 220px 220px, cover;
}

body.theme-ete .button:hover {
    background-color: #FFA47A;
    border-color: #FFA47A;
}

body.theme-ete h1::after {
    content: " ☀️";
}

body.theme-ete h2::before {
    content: "🏖️ ";
}