:root {
    /* --base_bg_color: 10;
    --base_bg_color_range: 10;
    --base_bg_saturation: 10%;

    --color_text_white: #fff;
    --color_text_gray: #999;
    --surface-000: #000;
    --surface-100: #222;
    --surface-200: #333;
    --surface-300: #444;

    --sans: 'Nunito';
    --serif: 'Playfair Display';
    --monospace: monospace; */
}

body {
    display: flex;
    height: 100vh;
    width: 100vw;
    overflow-y: 0;
    align-items: center;
    justify-content: center;
    background: var(--surface-000) !important;
}
* {
    margin: 0;
    padding: 0;
    color: #fff;
    /* background: #f002 !important; */
}

#background {
    transition: opacity .15s;
    --base_bg_color_tint_p: calc(var(--base_bg_color) + var(--base_bg_color_range)); 
    --base_bg_color_tint_n: calc(var(--base_bg_color) - var(--base_bg_color_range)); 

    --c-0-base: hsla(var(--base_bg_color), calc(var(--base_bg_saturation) - 9%), calc(var(--base_bg_brightness) + 2%), 1);
    --c-1-base: hsla(var(--base_bg_color_tint_p), calc(var(--base_bg_saturation) - 8%), calc(var(--base_bg_brightness) + 2%), 1);
    --c-3-base: hsla(var(--base_bg_color_tint_n), calc(var(--base_bg_saturation) - 6%), calc(var(--base_bg_brightness) + 26%), 1);

    height: 100vh;
    width: 100vw;
    opacity: 1;
}
#background.changing {
    opacity: 0;
}

/* https://www.mshr.app/mesh/1727910717365 */
@keyframes hero-gradient-animation {
    0% {
        --x-0: 85%;
        --s-start-0: 9%;
        --s-end-0: 55%;
        --y-0: 80%;
        --c-0: var(--c-0-base);
        --c-1: var(--c-1-base);
        --c-2: hsla(0,0%, 0%, 0.49);
        --c-3: var(--c-3-base);
        --s-start-1: 5%;
        --s-end-1: 72%;
        --y-1: 24%;
        --x-1: 60%;
        --s-start-2: 5%;
        --s-end-2: 52%;
        --y-2: 82%;
        --x-2: 13%;
        --s-start-3: 13%;
        --s-end-3: 68%;
        --x-3: 24%;
        --y-3: 7%;
    }

    100% {
        --x-0: 31%;
        --s-start-0: 9%;
        --s-end-0: 55%;
        --y-0: 94%;
        --c-0: var(--c-0-base);
        --c-1: var(--c-1-base);
        --c-2: hsla(0,0%, 0%, 0.49);
        --c-3: var(--c-3-base);
        --s-start-1: 5%;
        --s-end-1: 72%;
        --y-1: 25%;
        --x-1: 2%;
        --s-start-2: 5%;
        --s-end-2: 52%;
        --y-2: 20%;
        --x-2: 98%;
        --s-start-3: 13%;
        --s-end-3: 68%;
        --x-3: 95%;
        --y-3: 92%;
    }
}

@property --x-0 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 85%
}

@property --s-start-0 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 9%
}

@property --s-end-0 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 55%
}

@property --y-0 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 80%
}

@property --c-0 {
    syntax: '<color>';
    inherits: false;
    initial-value: hsla(0,0,0,0)
}

@property --c-1 {
    syntax: '<color>';
    inherits: false;
    initial-value: hsla(0,0,0,0)
}

@property --s-start-1 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 5%
}

@property --s-end-1 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 72%
}

@property --y-1 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 24%
}

@property --x-1 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 60%
}

@property --s-start-2 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 5%
}

@property --s-end-2 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 52%
}

@property --y-2 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 82%
}

@property --c-2 {
    syntax: '<color>';
    inherits: false;
    initial-value: hsla(0,0,0,0)
}

@property --x-2 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 13%
}

@property --s-start-3 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 13%
}

@property --s-end-3 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 68%
}

@property --c-3 {
    syntax: '<color>';
    inherits: false;
    initial-value: hsla(0,0,0,0)
}

@property --x-3 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 24%
}

@property --y-3 {
    syntax: '<percentage>';
    inherits: false;
    initial-value: 7%
}

#background {
    background-color: var(--surface-000);
}
#background.default {
    --x-0: 85%;
    --y-0: 80%;
    --c-0: hsla(var(--base_bg_color), calc(var(--base_bg_saturation) - 9%), 12%, 1);
    --c-1: hsla(var(--base_bg_color_tint_p), calc(var(--base_bg_saturation) - 8%), 22%, 1);
    --y-1: 24%;
    --x-1: 60%;
    --y-2: 82%;
    --c-2: hsla(0,0%, 0%, 0.49);
    --x-2: 13%;
    --c-3: hsla(var(--base_bg_color_tint_n), calc(var(--base_bg_saturation) - 6%), 36%, 1);
    --x-3: 24%;
    --y-3: 7%;
    background-color: var(--surface-000);
    background-image: 
        radial-gradient(
            circle at var(--x-0) var(--y-0), var(--c-0) var(--s-start-0), 
            transparent var(--s-end-0)
        ),     
        radial-gradient(
            circle at var(--x-1) var(--y-1), var(--c-1) var(--s-start-1), 
            transparent var(--s-end-1)
        ), 
        radial-gradient(
            circle at var(--x-2) var(--y-2), var(--c-2) var(--s-start-2), 
            transparent var(--s-end-2)
        ), 
        radial-gradient(
            circle at var(--x-3) var(--y-3), var(--c-3) var(--s-start-3), 
            transparent var(--s-end-3)
        )
    ;
    animation: hero-gradient-animation 10s linear infinite alternate;
    background-blend-mode: normal, normal, normal, normal;
}