:root {
    --color1: #000000;
    --color2: #4D4855;
    --angle: 147deg;

    color-scheme: dark;
    --color-primary: #1e3799;

    --font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI Variable Text', "Segoe UI", Roboto, Helvetica, 'Helvetica Neue', "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", Arial, sans-serif, "Apple Color Emoji", "Twemoji Mozilla", "Segoe UI Emoji", "Android Emoji";
    --font-family: "DM Sans", sans-serif, "Apple Color Emoji", "Twemoji Mozilla", "Segoe UI Emoji", "Android Emoji";
    --font-heading: -apple-system, BlinkMacSystemFont, 'Segoe UI Variable Heading', "Segoe UI", Roboto, Helvetica, 'Helvetica Neue', "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", Arial, sans-serif, "Apple Color Emoji", "Twemoji Mozilla", "Segoe UI Emoji", "Android Emoji";
    --font-monospace: ui-monospace, "SFMono-Regular", "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

    --ui--border-radius: 3px;
    --ui--border-radius-large: 48px;

    --cube-size: 200px;
    --cube-translate: calc(var(--cube-size) / 2);
}

* {
    box-sizing: border-box;
}

body {
    width: 100vw;
    height: 100vh;

    margin: 0;
    padding: 0;

    background-color: #222222;
    color: beige;

    font-family: var(--font-family);
    font-size: 12px;
    font-weight: 300;

    text-rendering: geometricPrecision;
}

button {
    font-family: inherit;
    font-size: 12px;
}

input,
select,
textarea {
    font-family: var(--font-monospace);
    font-size: inherit;
}

input[type="number"] {
    background-color: #222;
    border: 0;
    border-radius: var(--ui--border-radius);
    padding: 4px;
    min-width: 54px;
}
input[type="url"] {
    font-size: 14px;
    font-family: inherit;
    background-color: #222;
    border: 0;
    border-radius: var(--ui--border-radius-large);
    padding: 8px;
    width: 100%;
}

.box {
    width: 400px;
    height: 400px;
}
.box.box-has-transition {
    transition: all 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.grid-container {
    display: grid;
    grid-template-columns: 400px 1fr 400px;
    grid-gap: 0;
}

#left-side,
#code-side {
    position: relative;
    height: 100vh;
    overflow-y: scroll;
    padding: 2em;
}

#right-side {
    position: relative;
    background: linear-gradient(var(--angle), var(--color1), var(--color2));
    text-align: center;
    display: flex;
    justify-content: center;
    align-items: center;

    overflow: hidden;
}

#box-2d {
    -ms-user-select: none;
    user-select: none;
    cursor: default;

    display: flex;
    align-items: center;
    justify-content: center;

    transform-style: preserve-3d;
}


.control--element {
    padding: 0 0 0.5em 0;
    margin: 0 0 0.5em 0;
    border-bottom: 2px groove rgba(0, 0, 0, .5);
}
.control--element:last-child {
    border-bottom: 0;
}

.control--label {
    display: flex;
    width: 100%;
    justify-content: space-between;
}


[data-tabs-list] {
    list-style-type: none;
    display: flex;
    gap: 1px;
    margin: 2em 0 1px 0;
    padding: 0;
}
[data-tabs] [data-tabs-container] [aria-selected="false"] {
    display: none;
}
[data-tabs-btn] {
    border: none;
    padding: 4px 8px;
    background-color: #333333;

    border: 2px groove rgba(0, 0, 0, .5);
    border-radius: var(--ui--border-radius);

    border-right-width: 0px;
    border-bottom-width: 0px;
}
[data-tabs-btn]:hover {
    background-color: #444444;
}

[data-tabs] [data-tabs-list] [aria-selected="true"] {
    background-color: #1e3799;
    color: azure;
}

[data-tabs-container] {
    background-color: #333333;
    border: 2px groove rgba(0, 0, 0, .5);
    border-right-width: 0px;
    border-bottom-width: 0px;
    padding: 1rem;
    border-radius: var(--ui--border-radius);
}

hr {
    border: 0;
    border-bottom: 2px groove rgba(0, 0, 0, .5);
}



input[type="range"] {
    /* removing default appearance */
    -webkit-appearance: none;
    appearance: none; 
    /* creating a custom design */
    width: 100%;
    cursor: pointer;
    outline: none;
    /*  slider progress trick  */
    overflow: hidden;
    border-radius: 16px;

    height: max-content;
}

/* Track: webkit browsers */
input[type="range"]::-webkit-slider-runnable-track {
    height: 12px;
    background: #444444;
    border-radius: 16px;
}

input[type="range"]::-moz-range-track {
    height: 12px;
    background: #ccc;
    border-radius: 16px;
}

/* Thumb: webkit */
input[type="range"]::-webkit-slider-thumb {
    /* removing default appearance */
    -webkit-appearance: none;
    appearance: none; 
    /* creating a custom design */
    height: 12px;
    width: 12px;
    background-color: #fff;
    border-radius: 50%;
    border: 2px solid #222;
    /*  slider progress trick  */
    box-shadow: -407px 0 0 400px #222;
}

/* Thumb: Firefox */
input[type="range"]::-moz-range-thumb {
    height: 15px;
    width: 15px;
    background-color: #fff;
    border-radius: 50%;
    border: 1px solid #f50;
    /*  slider progress trick  */
    box-shadow: -407px 0 0 400px #f50;
}


.control--value {
    margin-left: auto;
}
.control--reset {
    order: 0;
    margin-left: .5em;
    padding: 0;
    align-self: center;
    color: inherit;
    background: none;
    border: 0;
    cursor: pointer;
    opacity: .33;
    outline: none;
    border-radius: 50%;
    width: 2ch;
    height: 2ch;
    user-select: none;
    transition: .15s ease-out;
    font: 12px sans-serif;
}
.control--reset:hover {
    opacity: 1;
}



select {
    width: 100%;
    padding: 8px;
    margin: 4px 0;
    border-radius: var(--ui--border-radius-large);
    font-size: 14px;
    font-family: inherit;
    border: 0;
    background: #222;

    background: #222 url("data:image/svg+xml,<svg height='10px' width='10px' viewBox='0 0 16 16' fill='%23ffffff' xmlns='http://www.w3.org/2000/svg'><path d='M7.247 11.14 2.451 5.658C1.885 5.013 2.345 4 3.204 4h9.592a1 1 0 0 1 .753 1.659l-4.796 5.48a1 1 0 0 1-1.506 0z'/></svg>") no-repeat;
    background-position: calc(100% - 0.75rem) center !important;
    -moz-appearance: none !important;
    -webkit-appearance: none !important; 
    appearance: none !important;
    padding-right: 2rem !important;
}


pre.prettyprint {
    background: linear-gradient(45deg, #1d1f20, #2f3031);
    overflow: auto;
}

.ui-button {
    border: none;
    padding: 4px 8px;
    background-color: #353b48;
    border: 2px groove rgba(0, 0, 0, .5);
    border-radius: var(--ui--border-radius);

    cursor: pointer;
    user-select: none;
}
.ui-button:hover {
    background-color: #273c75;
}
.ui-button--small {
    font-size: 12px;
}

.ui-flex-horizontal {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}

.ui-flex-panel {
    background-color: rgba(0, 0, 0, 0.25);
    padding: .5em .675em;
    border-radius: 48px;
    border: 2px groove rgba(0, 0, 0, .5);
    border-right-width: 0px;
    border-bottom-width: 0px;
}



#box-2d:not(.box-no-filters) .cube {
    display: none;
}
            #box-2d.box-no-filters {
                backdrop-filter: none !important;
                filter: none !important;
                background: none !important;
                border: 0 !important;
            }
            .cube {
                width: 100%;
                height: 100%;
                position: relative;
                transform-style: preserve-3d;
                transform: rotateX(0deg) rotateY(0deg);

                display: contents; /* vertically align center */
            }
            .face {
                position: absolute;
                width: var(--cube-size);
                height: var(--cube-size);
                background: rgba(255, 255, 255, 0.9);
                border: 2px solid #ccc;
                line-height: var(--cube-size);
                font-size: 24px;
                font-weight: bold;
                color: #333;
                display: flex;
                justify-content: center;
                align-items: center;
            }
            .front  { transform: rotateY(  0deg) translateZ(var(--cube-translate)); }
            .back   { transform: rotateY(180deg) translateZ(var(--cube-translate)); }
            .left   { transform: rotateY(-90deg) translateZ(var(--cube-translate)); }
            .right  { transform: rotateY( 90deg) translateZ(var(--cube-translate)); }
            .top    { transform: rotateX( 90deg) translateZ(var(--cube-translate)); }
            .bottom { transform: rotateX(-90deg) translateZ(var(--cube-translate)); }



/**
 * Checkbox Toggle UI
 */
input[type="checkbox"] {
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;

    -webkit-tap-highlight-color: transparent;

    width: auto;
    height: auto;
    vertical-align: middle;
    position: relative;
    border: 0;
    outline: 0;
    cursor: pointer;
    margin: 0 4px;
    background: none;
    box-shadow: none;
}
input[type="checkbox"]:focus {
    box-shadow: none;
}
input[type="checkbox"]:after {
    content: '';
    font-size: 8px;
    font-weight: 400;
    line-height: 18px;
    width: 36px;
    height: 18px;
    display: inline-block;
    background-color: #a7aaad;
    border-radius: 72px;
    box-shadow: 0 0 12px rgb(0 0 0 / 15%) inset;
}
input[type="checkbox"]:before {
    content: '';
    width: 14px;
    height: 14px;
    display: block;
    position: absolute;
    top: 2px;
    left: 2px;
    margin: 0;
    border-radius: 50%;
    background-color: #ffffff;
}
input[type="checkbox"]:checked:before {
    left: 20px;
    margin: 0;
    background-color: #ffffff;
}
input[type="checkbox"],
input[type="checkbox"]:before,
input[type="checkbox"]:after,
input[type="checkbox"]:checked:before,
input[type="checkbox"]:checked:after {
    transition: ease .15s;
}
input[type="checkbox"]:checked:after {
    background-color: var(--color-primary);
}






.has-cube-spin-animation {
    animation: spin 10s infinite linear;
    display: block;
}

@keyframes spin {
    from { transform: rotateX(0deg) rotateY(-45deg); }
    to   { transform: rotateX(0deg) rotateY(-405deg); }
}
