:root {
    color-scheme: light dark;

    --page-bg: #ffffff;
    --page-text: #000000;
    --link-color: #0066cc;

    --form-bg-from: #d0eeff;
    --form-bg-to: #b0d4ff;
    --form-shadow: lightpink;
    --form-heading: #1a3a5c;
    --form-text: #2c4a6a;

    --input-bg: #ffffff;
    --input-border: #8fb8da;
    --input-focus-border: #4a90c4;
    --input-focus-shadow: rgba(74, 144, 196, 0.25);

    --accent: #4a90c4;
    --accent-hover: #3a7ab0;
    --spinner-border: #8fb8da;
    --marker: navy;

    --success: #1a5c2a;
    --error: #8b1a1a;
}

@media (prefers-color-scheme: dark) {
    :root {
        --page-bg: #121620;
        --page-text: #e0e4ea;
        --link-color: #6ab0e8;

        --form-bg-from: #1a2538;
        --form-bg-to: #162030;
        --form-shadow: rgba(0, 0, 0, 0.4);
        --form-heading: #8ec4e8;
        --form-text: #a0c0da;

        --input-bg: #1e2a3e;
        --input-border: #3a5570;
        --input-focus-border: #5a9fd4;
        --input-focus-shadow: rgba(90, 159, 212, 0.3);

        --accent: #5a9fd4;
        --accent-hover: #6ab0e8;
        --spinner-border: #3a5570;
        --marker: #6ab0e8;

        --success: #5cb870;
        --error: #e05555;
    }
}

html, body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu,
                 Cantarell, "Helvetica Neue", sans-serif;
    font-size: 14pt;
    background: var(--page-bg);
    color: var(--page-text);
}

body {
    max-width: 600pt;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
    margin-left: auto;
    margin-right: auto;
    padding: 0 10pt;
}

body#home {
    font-size: 16pt;
    text-align: center;
}

no-br {
    white-space: nowrap;
}

a {
    color: var(--link-color);
}

header nav ul {
    list-style: none;
    display: flex;
    padding: 0;
    margin: 10pt 0;
    font-size: smaller;

    a {
        text-decoration: none;
    }
    
    li + li::before {
        content: "»";
        margin: 0.3rem;
    }
}

img {
    max-width: 100%;
    height: auto;
}

body#home > main > img {
    border-radius: 36px;
}

h1, h2, h3 {
    margin-top: 0;
    padding-top: 0;
    font-weight: 600;
}

main > ul > li {
    margin-top: 1.25rem;
}

section#join-form {
    background: linear-gradient(135deg, var(--form-bg-from), var(--form-bg-to));
    box-shadow: 0 4px 12px var(--form-shadow);
    font-size: 13pt;
    border-radius: 18px;
    padding: 2em 2.5em;
    max-width: 28em;
    margin: 2.5em auto;
    text-align: left;

    h1 {
        text-align: center;
        color: var(--form-heading);
        font-size: 1.6em;
        margin-bottom: 0.3em;
    }

    p {
        text-align: center;
        color: var(--form-text);
        margin-bottom: 1.5em;
    }

    form {
        display: flex;
        flex-direction: column;
        gap: 1.5em;
    }

    form:has(> p.success:first-child),
    form:has(> p.error:first-child) {
        gap: 0;
    }
    
    form:has(:user-invalid) button[type="submit"] {
      pointer-events: none;
      opacity: 0.5;
      cursor: not-allowed;
    }

    .field {
        display: flex;
        flex-direction: column;
        gap: 0.3em;

        span {
            font-weight: 600;
            color: var(--form-text);
        }

        input {
            padding: 0.5em 0.7em;
            border: 1px solid var(--input-border);
            border-radius: 8px;
            font-size: 1em;
            background: var(--input-bg);
            color: var(--page-text);
        }

        input:focus {
            outline: none;
            border-color: var(--input-focus-border);
            box-shadow: 0 0 0 2px var(--input-focus-shadow);
        }

        .radio-group {
            display: flex;
            gap: 2em;

            label {
                display: flex;
                align-items: center;
                gap: 0.4em;
            }

            input[type="radio"] {
                width: 1.1em;
                height: 1.1em;
                accent-color: var(--accent);
                padding: 0;
                border: none;
                border-radius: 0;
                background: none;
            }
        }
    }

    label {
        color: var(--form-text);
        font-weight: 600;
    }
    
    label.checkbox {
        display: flex;
        align-items: center;
        gap: 0.5em;
        cursor: pointer;

        input[type="checkbox"] {
            width: 1.1em;
            height: 1.1em;
            accent-color: var(--accent);
        }
    }

    button[type="submit"] {
        padding: 0.6em 1.2em;
        background: var(--accent);
        color: white;
        border: none;
        border-radius: 8px;
        font-size: 1em;
        font-weight: 600;
        cursor: pointer;
        transition: background 0.15s;
    }

    button[type="submit"]:hover {
        background: var(--accent-hover);
    }

    p.success, p.error {
        margin: 0.5em 0;
        text-align: center;
        font-weight: 600;
    }
    
    p.success { color: var(--success); }

    p.error { color: var(--error); }

    .spinner {
        display: none;
    }

    form.htmx-request button[type="submit"] {
        display: none;
    }

    form.htmx-request .spinner {
        display: block;
        width: 1.5em;
        height: 1.5em;
        border: 3px solid var(--spinner-border);
        border-top-color: var(--accent);
        border-radius: 50%;
        animation: spin 0.6s linear infinite;
        margin: 0 auto;
    }
}

section#q-and-a {
    text-align: left;
    font-size: 14pt;
    
    details {
        margin-bottom: 1em;
        padding-left: clamp(0.5em, 3vw, 1.5em);

        summary {
            h1, h2 {
                display: inline-block;
                margin-bottom: 0.5em;
            }
            
            &::marker {
                color: var(--marker);
                font-size: xx-large;
            }
            
            &:has(> h1) {
                &::marker {
                    font-size: xxx-large;
                }
            }
        }
        
        &> *:not(summary) { padding-left: clamp(0.5em, 3vw, 1.5em); }
        p { margin: 0 0 0.75em 0; }
        
        &> ul {
            padding-left: 2.5em;
            margin-top: 0.5em;
        }
        
        li { margin: 0.5em 0; }
        li > ul { margin-bottom: 1.25em; }
    }
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

footer {
    margin-top: auto;
    margin-bottom: 5pt;
    text-align: center;
    font-size: 12pt;
}
