:root {
    --state-0-color: black;
    --state-1-color: white;
    --state-2-color: red;
    --canvas-width: 600px;
}

main-app {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    place-content: center;
    gap: 1em;
}


h1 { text-align: center; }

canvas {
    image-rendering: pixelated;
    border: 1px solid black;
}

ui-grid {
    display: grid;
    grid-template-columns: 200px fit-content(0);
    align-items: center;
    gap: 0.5em;
    height: max-content;

    label { text-align: right; }
    label:not(checkbox-caption label)::after { content: ":"; }
    checkbox-caption {
        display: flex;
        flex-direction: column;
        width: fit-content;
        align-items: center;
    }


    input { justify-self: start; }
    h3 {
        grid-column: 1 / -1;
        margin-bottom: 0;
    }
    ui-row { grid-column: 1 / -1; }
    button {
        grid-column: 1 / -1;
        width: fit-content;
    }

    textarea {
        grid-column: 1 / -1;
    }
    .narrow-input { width: 8ch; }
}

rule-diagrams {
    grid-column: 1 / -1;

    display: grid;
    row-gap: 1.5em;
    justify-items: center;

    border: 1px solid black;
    padding-top: 1.5em;
    padding-bottom: 1em;
    margin: 0.5em;

    &[data-columns="3"] { grid-template-columns: repeat(3, 1fr) }
    &[data-columns="8"] { grid-template-columns: repeat(8, 1fr) }
}

rule-diagram {
    display: inline-grid;
    grid-template-columns: auto auto auto;
    vertical-align: middle;

    gap: 0.2em;
    width: fit-content;
    
    rule-input {
        grid-column: 2 / 2;
    }
}


rule-box, rule-input {
    display: inline-block;
    vertical-align: middle;
    
    border: black 1px solid;
    width: 1em;
    height: 1em;
    &[data-state="0"] { background-color: var(--state-0-color); }
    &[data-state="1"] { background-color: var(--state-1-color); }
    &[data-state="2"] { background-color: var(--state-2-color); }
}


#copied-to-clipboard-message {
    color: black;
    background-color: rgb(229, 255, 229);
    width: fit-content;
    padding: 10px;
    border: 2px green solid;
    border-radius: 50px;
    text-align: center;
    opacity: 0;
    margin: 0;
}

.animate-fade {
    animation: fade 0.75s linear(0, 0.2, 0.2, 1) forwards;
}
@keyframes fade {
    0% { opacity: 1; }
    100% { opacity: 0; }
}

