*,
*::after,
*::before {
    box-sizing: border-box;
}

@font-face {
    font-family: 'Raleway';
    font-style: normal;
    font-weight: 100 900;
    src: url('raleway.woff2') format('woff2');
    font-display: swap;
}

html {
    --color1: rgb(81, 112, 255);
    --color2: rgba(255, 97, 97, 0.8);
    --color3: #ff1fa9;
    --color4: #ffbd59;
    --off-white: #f0ede4;
}

body {
    --body-margin: 2vw;

    background: ivory;
    margin: var( --body-margin );
    margin-bottom: 6vw;

    color: var( --color1 );
    text-align: center;

    /*
    --size-faden: calc(100vw / var(--faeden, 14) * 0.33);
    --size-muster: calc(100vw / var(--faeden, 14) * 0.45);
       */

    --size-faden: 1rem;
    --size-muster: 1.4rem;

    font-family: 'Raleway', sans-serif;
    font-weight: 450;
    font-style: normal;
    line-height: 1.5;
    font-optical-sizing: auto;

    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;

    @media (max-width: 600px){
        --body-margin: 4vw;
    }
}

button,
input,
select,
textarea {
    font-family: inherit;
    font-size: inherit;
}

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

    gap: 0.5em;
    margin-bottom: 0.5rem;
    padding: 0.5em;
    border: none;
}

h2{
    text-transform: uppercase;
    letter-spacing: 0.1em;
}

.anzahl-wrapper{
    display: flex;
    align-items: center;
    gap: 0.5em;
    font-size: 1.2rem;

    button{
        display: grid;
        height: 1.5em;
        aspect-ratio: 1;
        padding: 0;
        border-radius: 50%;
        box-sizing: content-box;
        place-content: center;
    }

    input{
        background: none;
        text-align: center;
        appearance: textfield;
        border: 2px solid var( --color1 );
        color: var( --color1 );
        border-radius: 1em;
        padding: 0.1em 0.3em;
    }
}

.minus, .plus{
    display: block;
    height: 0.2em;
    width: 1em;
    scale: 1;

    position: relative;

    &::before,
    &::after{
        position: absolute;
        content: "";
        display: block;
        width: 100%;
        height: 100%;
        background: currentColor;
    }
}

.plus{
    &::after{
        rotate: 90deg;
    }
}

.vorschau-wrapper{
    max-width: 100vw;
    overflow-x: auto;
    margin-inline: calc( var( --body-margin ) * -1 );
    padding-inline: var( --body-margin );

    display: grid;
    grid-template-columns: 1fr auto 1fr;

    align-items: flex-start;
    justify-content: safe center;
    gap: 2rem;

    /*
    @media (max-width: 700px){
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
    }

     */
}

.vorschau-preview{
    flex: 0 0 auto;

    grid-column-start: 2;
}

.legend{
    flex: 0 0 auto;
    margin-top: 1rem;
    text-align: left;
    white-space: nowrap;
}

.farb-felder,
.muster {
    --size: var(--size-faden );
    display: grid;
    grid-template-columns: repeat( calc( round( up, var(--faeden) / 2 ) * 4), calc( var( --size-faden ) / 2.95 ) );

    row-gap: 1.2rem;
    column-gap: 0.02em;
    width: max-content;
    margin-inline: auto;

    .erste-reihe,
    .zweite-reihe {
        grid-column: 1 / -1;
        display: grid;
        grid-template-columns: subgrid;
        margin-bottom: calc( var( --size) * -0.46 );

        & > div {
            grid-column: span 4;
        }
    }

    .erste-reihe{
        .faden{
            border-radius: 50%;
        }
    }

    .zweite-reihe {
        grid-column: 3 / -3;

    }

    .faden,
    .farbfeld {
        grid-column-end: span 4;

        width: var(--size);
        padding: 0;
        background: none;
        /* rotate: 45deg; */
        display: block;
    }

    .faden {
        outline: 0.5px solid darkgray;
        background: var(--bg, white);
        height: calc(var(--size) * 1.0);
    }

    .farbfeld {
        height: calc(var(--size) * 1.9);
    }
}

/* When erste-reihe is the shorter row, it becomes the inset (offset) row and
   zweite-reihe spans full width. */
body.erste-kurz :is(.farb-felder, .muster) .erste-reihe {
    grid-column: 3 / -3;
}

body.erste-kurz :is(.farb-felder, .muster) .zweite-reihe {
    grid-column: 1 / -1;
}

.farb-felder{
    margin-top: 1rem;

    div{
        cursor: pointer;
    }
}

.muster {
    margin-block: 2rem;
    row-gap: 0.1em;

    --size: var(--size-muster );

    > div {
        position: relative;

        &:nth-child(1) {
            z-index: 1;
        }

        &:nth-child(2) {
            z-index: 2;
        }

        &:nth-child(3) {
            z-index: 3;
        }

        &:nth-child(4) {
            z-index: 4;
        }

        &:nth-child(5) {
            z-index: 5;
        }

        &:nth-child(6) {
            z-index: 6;
        }

        &:nth-child(7) {
            z-index: 7;
        }

        &:nth-child(8) {
            z-index: 8;
        }

        &:nth-child(9) {
            z-index: 9;
        }

        &:nth-child(10) {
            z-index: 10;
        }

        &:nth-child(11) {
            z-index: 11;
        }

        &:nth-child(12) {
            z-index: 12;
        }

        &:nth-child(13) {
            z-index: 13;
        }

        &:nth-child(14) {
            z-index: 14;
        }

        &:nth-child(15) {
            z-index: 15;
        }
    }

    .farbfeld {
        position: relative;
        cursor: pointer;

        polygon{
            fill: var( --bg );
        }
    }
}

.inventur{
    ul{
        list-style-type: "";
        padding: 0;
        display: flex;
        flex-wrap: wrap;
        max-width: 30rem;
        justify-content: center;
        margin-inline: auto;

        gap: .5rem 1.5rem;

        li{
            display: flex;
            align-items: center;
            gap: 0.5rem;

            .farbe{
                display: block;
                width: 1.5rem;
                aspect-ratio: 1;
                border-radius: 50%;
                cursor: pointer;

                border: 0.5px solid darkgray;
            }

            &.active{
                .farbe{
                    outline: 2px solid black;
                    outline-offset: 2px;
                }
            }

            .anzahl{
                font-size: 1.2em;

                &:after{
                    content: "×";
                }
            }
        }
    }
}

.erste-reihe {
    .farbfeld, .faden {
        &:nth-child(1) {
            --bg: var(--faden-1-1, darkgrey);
        }

        &:nth-child(2) {
            --bg: var(--faden-1-2, darkgrey);
        }

        &:nth-child(3) {
            --bg: var(--faden-1-3, darkgrey);
        }

        &:nth-child(4) {
            --bg: var(--faden-1-4, darkgrey);
        }

        &:nth-child(5) {
            --bg: var(--faden-1-5, darkgrey);
        }

        &:nth-child(6) {
            --bg: var(--faden-1-6, darkgrey);
        }

        &:nth-child(7) {
            --bg: var(--faden-1-7, darkgrey);
        }

        &:nth-child(8) {
            --bg: var(--faden-1-8, darkgrey);
        }

        &:nth-child(9) {
            --bg: var(--faden-1-9, darkgrey);
        }

        &:nth-child(10) {
            --bg: var(--faden-1-10, darkgrey);
        }

        &:nth-child(11) {
            --bg: var(--faden-1-11, darkgrey);
        }

        &:nth-child(12) {
            --bg: var(--faden-1-12, darkgrey);
        }

        &:nth-child(13) {
            --bg: var(--faden-1-13, darkgrey);
        }

        &:nth-child(14) {
            --bg: var(--faden-1-14, darkgrey);
        }

        &:nth-child(15) {
            --bg: var(--faden-1-15, darkgrey);
        }

        &:nth-child(16) {
            --bg: var(--faden-1-16, darkgrey);
        }
        &:nth-child(17) {
            --bg: var(--faden-1-17, darkgrey);
        }
        &:nth-child(18) {
            --bg: var(--faden-1-18, darkgrey);
        }
        &:nth-child(19) {
            --bg: var(--faden-1-19, darkgrey);
        }
        &:nth-child(20) {
            --bg: var(--faden-1-20, darkgrey);
        }
        &:nth-child(21) {
            --bg: var(--faden-1-21, darkgrey);
        }
        &:nth-child(22) {
            --bg: var(--faden-1-22, darkgrey);
        }
        &:nth-child(23) {
            --bg: var(--faden-1-23, darkgrey);
        }
        &:nth-child(24) {
            --bg: var(--faden-1-24, darkgrey);
        }
        &:nth-child(25) {
            --bg: var(--faden-1-25, darkgrey);
        }
        &:nth-child(26) {
            --bg: var(--faden-1-26, darkgrey);
        }
        &:nth-child(27) {
            --bg: var(--faden-1-27, darkgrey);
        }
        &:nth-child(28) {
            --bg: var(--faden-1-28, darkgrey);
        }
        &:nth-child(29) {
            --bg: var(--faden-1-29, darkgrey);
        }
        &:nth-child(30) {
            --bg: var(--faden-1-30, darkgrey);
        }
        &:nth-child(31) {
            --bg: var(--faden-1-31, darkgrey);
        }
        &:nth-child(32) {
            --bg: var(--faden-1-32, darkgrey);
        }
        &:nth-child(33) {
            --bg: var(--faden-1-33, darkgrey);
        }
        &:nth-child(34) {
            --bg: var(--faden-1-34, darkgrey);
        }
        &:nth-child(35) {
            --bg: var(--faden-1-35, darkgrey);
        }
        &:nth-child(36) {
            --bg: var(--faden-1-36, darkgrey);
        }
        &:nth-child(37) {
            --bg: var(--faden-1-37, darkgrey);
        }
        &:nth-child(38) {
            --bg: var(--faden-1-38, darkgrey);
        }
        &:nth-child(39) {
            --bg: var(--faden-1-39, darkgrey);
        }
        &:nth-child(40) {
            --bg: var(--faden-1-40, darkgrey);
        }
        &:nth-child(41) {
            --bg: var(--faden-1-41, darkgrey);
        }
        &:nth-child(42) {
            --bg: var(--faden-1-42, darkgrey);
        }
        &:nth-child(43) {
            --bg: var(--faden-1-43, darkgrey);
        }
        &:nth-child(44) {
            --bg: var(--faden-1-44, darkgrey);
        }
        &:nth-child(45) {
            --bg: var(--faden-1-45, darkgrey);
        }
        &:nth-child(46) {
            --bg: var(--faden-1-46, darkgrey);
        }
        &:nth-child(47) {
            --bg: var(--faden-1-47, darkgrey);
        }
        &:nth-child(48) {
            --bg: var(--faden-1-48, darkgrey);
        }
        &:nth-child(49) {
            --bg: var(--faden-1-49, darkgrey);
        }
        &:nth-child(50) {
            --bg: var(--faden-1-50, darkgrey);
        }
        &:nth-child(51) {
            --bg: var(--faden-1-51, darkgrey);
        }
        &:nth-child(52) {
            --bg: var(--faden-1-52, darkgrey);
        }
        &:nth-child(53) {
            --bg: var(--faden-1-53, darkgrey);
        }
        &:nth-child(54) {
            --bg: var(--faden-1-54, darkgrey);
        }
        &:nth-child(55) {
            --bg: var(--faden-1-55, darkgrey);
        }
        &:nth-child(56) {
            --bg: var(--faden-1-56, darkgrey);
        }
        &:nth-child(57) {
            --bg: var(--faden-1-57, darkgrey);
        }
        &:nth-child(58) {
            --bg: var(--faden-1-58, darkgrey);
        }
        &:nth-child(59) {
            --bg: var(--faden-1-59, darkgrey);
        }
        &:nth-child(60) {
            --bg: var(--faden-1-60, darkgrey);
        }
        &:nth-child(61) {
            --bg: var(--faden-1-61, darkgrey);
        }
    }
}

.zweite-reihe {

    .farbfeld, .faden {
        &:nth-child(1) {
            --bg: var(--faden-2-1, darkgrey);
        }

        &:nth-child(2) {
            --bg: var(--faden-2-2, darkgrey);
        }

        &:nth-child(3) {
            --bg: var(--faden-2-3, darkgrey);
        }

        &:nth-child(4) {
            --bg: var(--faden-2-4, darkgrey);
        }

        &:nth-child(5) {
            --bg: var(--faden-2-5, darkgrey);
        }

        &:nth-child(6) {
            --bg: var(--faden-2-6, darkgrey);
        }

        &:nth-child(7) {
            --bg: var(--faden-2-7, darkgrey);
        }

        &:nth-child(8) {
            --bg: var(--faden-2-8, darkgrey);
        }

        &:nth-child(9) {
            --bg: var(--faden-2-9, darkgrey);
        }

        &:nth-child(10) {
            --bg: var(--faden-2-10, darkgrey);
        }

        &:nth-child(11) {
            --bg: var(--faden-2-11, darkgrey);
        }

        &:nth-child(12) {
            --bg: var(--faden-2-12, darkgrey);
        }

        &:nth-child(13) {
            --bg: var(--faden-2-13, darkgrey);
        }

        &:nth-child(14) {
            --bg: var(--faden-2-14, darkgrey);
        }

        &:nth-child(15) {
            --bg: var(--faden-2-15, darkgrey);
        }
        &:nth-child(16) {
            --bg: var(--faden-2-16, darkgrey);
        }
        &:nth-child(17) {
            --bg: var(--faden-2-17, darkgrey);
        }
        &:nth-child(18) {
            --bg: var(--faden-2-18, darkgrey);
        }
        &:nth-child(19) {
            --bg: var(--faden-2-19, darkgrey);
        }
        &:nth-child(20) {
            --bg: var(--faden-2-20, darkgrey);
        }
        &:nth-child(21) {
            --bg: var(--faden-2-21, darkgrey);
        }
        &:nth-child(22) {
            --bg: var(--faden-2-22, darkgrey);
        }
        &:nth-child(23) {
            --bg: var(--faden-2-23, darkgrey);
        }
        &:nth-child(24) {
            --bg: var(--faden-2-24, darkgrey);
        }
        &:nth-child(25) {
            --bg: var(--faden-2-25, darkgrey);
        }
        &:nth-child(26) {
            --bg: var(--faden-2-26, darkgrey);
        }
        &:nth-child(27) {
            --bg: var(--faden-2-27, darkgrey);
        }
        &:nth-child(28) {
            --bg: var(--faden-2-28, darkgrey);
        }
        &:nth-child(29) {
            --bg: var(--faden-2-29, darkgrey);
        }
        &:nth-child(30) {
            --bg: var(--faden-2-30, darkgrey);
        }
        &:nth-child(31) {
            --bg: var(--faden-2-31, darkgrey);
        }
        &:nth-child(32) {
            --bg: var(--faden-2-32, darkgrey);
        }
        &:nth-child(33) {
            --bg: var(--faden-2-33, darkgrey);
        }
        &:nth-child(34) {
            --bg: var(--faden-2-34, darkgrey);
        }
        &:nth-child(35) {
            --bg: var(--faden-2-35, darkgrey);
        }
        &:nth-child(36) {
            --bg: var(--faden-2-36, darkgrey);
        }
        &:nth-child(37) {
            --bg: var(--faden-2-37, darkgrey);
        }
        &:nth-child(38) {
            --bg: var(--faden-2-38, darkgrey);
        }
        &:nth-child(39) {
            --bg: var(--faden-2-39, darkgrey);
        }
        &:nth-child(40) {
            --bg: var(--faden-2-40, darkgrey);
        }
        &:nth-child(41) {
            --bg: var(--faden-2-41, darkgrey);
        }
        &:nth-child(42) {
            --bg: var(--faden-2-42, darkgrey);
        }
        &:nth-child(43) {
            --bg: var(--faden-2-43, darkgrey);
        }
        &:nth-child(44) {
            --bg: var(--faden-2-44, darkgrey);
        }
        &:nth-child(45) {
            --bg: var(--faden-2-45, darkgrey);
        }
        &:nth-child(46) {
            --bg: var(--faden-2-46, darkgrey);
        }
        &:nth-child(47) {
            --bg: var(--faden-2-47, darkgrey);
        }
        &:nth-child(48) {
            --bg: var(--faden-2-48, darkgrey);
        }
        &:nth-child(49) {
            --bg: var(--faden-2-49, darkgrey);
        }
        &:nth-child(50) {
            --bg: var(--faden-2-50, darkgrey);
        }
        &:nth-child(51) {
            --bg: var(--faden-2-51, darkgrey);
        }
        &:nth-child(52) {
            --bg: var(--faden-2-52, darkgrey);
        }
        &:nth-child(53) {
            --bg: var(--faden-2-53, darkgrey);
        }
        &:nth-child(54) {
            --bg: var(--faden-2-54, darkgrey);
        }
        &:nth-child(55) {
            --bg: var(--faden-2-55, darkgrey);
        }
        &:nth-child(56) {
            --bg: var(--faden-2-56, darkgrey);
        }
        &:nth-child(57) {
            --bg: var(--faden-2-57, darkgrey);
        }
        &:nth-child(58) {
            --bg: var(--faden-2-58, darkgrey);
        }
        &:nth-child(59) {
            --bg: var(--faden-2-59, darkgrey);
        }
        &:nth-child(60) {
            --bg: var(--faden-2-60, darkgrey);
        }
        &:nth-child(61) {
            --bg: var(--faden-2-61, darkgrey);
        }
    }
}

.farb-palette {
    margin-block: 3rem;
}

.anzahl-wrapper{
    flex-wrap: wrap;
}

.grid-container {
    display: inline-grid;
    grid-template-columns: 20rem 1fr;
    column-gap: 4rem;
    row-gap: 0rem;

    #anlegen{
        grid-row-end: span 2;
    }

    .vorschau{
        grid-column-start: 2;
    }

    @media (width <= 700px){
        grid-template-columns: 1fr;

        #anlegen{
            grid-row-end: span 1;
        }

        .vorschau{
            grid-column-start: 1;
        }
    }
}

button{
    cursor: pointer;
    color: var( --color1 );
    background-color: transparent;
    border: 2px solid var( --color1 );
    padding: 0.4em 0.8em;
    border-radius: 1em;
    letter-spacing: 0.05em;

    outline: 2px solid transparent;
    transition-duration: 0.2s;
    transition-property: background, color, outline;
    transition-timing-function: ease-out;

    &:hover,
    &.active{
        background-color: var( --color1 );
        color: white;
    }

    &:focus-visible{
        outline-color: var( --color1 );
        outline-offset: 0.1em;
    }

    display: flex;
    gap: 1ch;
    align-items: center;

    span{
        font-weight: 600;
        scale: 2;
    }
}

.kreis, .quadrat{
    display: inline-block;
    height: 1.4cap;
    aspect-ratio: 1;
    margin-right: 0.2em;
    border: 2.5px solid var( --border-color );
    translate: 0 15%;
}

.kreis{
    border-radius: 50%;
    --border-color: var( --color1 );
}

.quadrat{
    --border-color: var( --color1 );
}

.vorlage{
    .buttons{
        margin-top: 0.2rem;
        display: flex;
        flex-wrap: wrap;
        justify-content: center;
        gap: 0.4em 0.5em;
    }
}

.pdf-download{
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 2rem;

    button[disabled]{
        opacity: 0.5;
        cursor: not-allowed;
    }

    #download-pdf[disabled]{
        cursor: progress;
    }
}

@media print{
    .print-hidden{
        display: none;
    }
}

.pickr{
    visibility: hidden;
    position: absolute;
    z-index: -1;
}

.pcr-app[data-theme="nano"]{
    position: static;
    width: 100%;

    .pcr-selection .pcr-color-chooser{
        grid-row-end: 4;
    }
}

#warning{
    color: red;
}

h1{
    text-transform: uppercase;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1ch;

    span{
        display: inline-block;
        aspect-ratio: 1;
        background-color: var( --color1 );
        border-radius: 50%;
        padding: 0.75rem;

        img{
            display: block;
            height: 1.5cap;
            width: auto;
            translate: 0 4%;
        }
    }
}