body {
    background-color: #c0ffee;
    margin: 0;
    padding: 0;
}

main {
    display: flex;
}
h1 {
    position: absolute;
    top: 0;
    left: 2em;
    z-index: 2;
}

input[type="checkbox"],
fieldset > label:nth-child(n + 3)::before {
    white-space: pre;
    content: '\A';
}

input[type="checkbox"] + label {
    display: inline-block;
}

input[type="number"] {
    text-align: right;
}

summary > label {
    display: inline-block;
}

.visuals {
    width: 80%;
    height: 100vh;
}

.source > .map-container {
    width: 100%;
    height: 100vh;
}

.form {
    width: 20%;
    height: 100vh;
}

.lines-path,
.spirograph-path,
.hilbert-path,
.spiral-path,
.spirangle-path,
.circles-path,
.superellipse-path,
.spacefilling-path {
    fill: none;
    stroke: black;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.custom-path {
    &.no-fill {
        fill: none;
    }

    &.no-stroke {
        stroke: none;
    }
}

.theodorus-triangle,
.squaresequence-square {
    stroke: yellow;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
    fill: red;
    opacity: 0.1;

    &:hover {
        opacity: .8;
    }
}

.squaresequence-number {
    pointer-events: none;
}

.sample-point {
    vector-effect: non-scaling-stroke;
    stroke-linecap: round;
    fill: none;
    stroke: black;
    stroke-width: 4;

    &:first-child {
        stroke: white;
    }
    &:last-child {
        stroke: blue;
    }
}

.debug {
    stroke: blue;
}

.unit-circle {
     stroke: orange;
     stroke-width: 0.01;
     fill: none;
}

svg {
    box-sizing: content-box;
    overflow: visible;
}

.spirograph .filled {
    fill: orange;
    fill-rule: evenodd;
}

.spirograph .no-stroke {
    stroke: none;
}

.squaresequence-sequence-output {
    display: inline-block;
    max-height: 4rem;
    overflow-y: auto;
    max-width: 20rem;
}

.sequence-table {
    border-collapse: collapse;
    th {
        background-color: #bada557f;
        text-align: right;

        &[scope='rowgroup'] {
            text-align: left;
            vertical-align: top;
        }

        &[scope='colgroup'] {
            text-align: center;
        }

        &[scope='col'] {
            text-align: center;
        }
    }

    td {
        text-align: center;
    }
}

.marker > path {
    fill: none;
    stroke-linejoin: round;
}
.marker.start > path {
    stroke: #f008;
}
.marker.end > path {
    stroke: #00f8;
}
.gradient-path {
    stroke-width: 0.002;
    stroke-linecap: square;
}
.svg-layer > svg,
.flip-container > svg {
    height: 100%;
    width: 100%;
}

.marker-definitions {
    width: 0;
    height: 0;
    position: absolute;
}
.sample-positions > .sample-path {
    marker-mid: url('#sample-point');
    marker-start: url('#sample-point-start');
    marker-end: url('#sample-point-end');
    fill: none;
    stroke: transparent;
    stroke-width: 1;
    vector-effect: non-scaling-stroke;
}

.sample-positions > .sample-path.selected {
    marker-mid: url('#sample-point-selected');
    marker-start: url('#sample-point-selected-start');
    marker-end: url('#sample-point-selected-end');
}

.marker {
    fill: #ccc;
    stroke: black;
    stroke-width: 1;
}

.selected-marker {
    fill: white;
    stroke: black;
    stroke-width: 1;
}
