:root {
    --border: rgb(11, 71, 53);
    --color-aged-plastic-yellow: #fffbe8;
}

body {
    font-family: system-ui, sans-serif;

    &:has(svg#lucy) {
        background-color: var(--color-aged-plastic-yellow);
    }

    &:has(svg#penelopea) {
        background-color: #cceeff;
    }

    &:has(svg#cool_s) {
        background-color: #efece6;
    }
}

#app {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 0.5rem 1.5rem;
    max-width: 30rem;
    margin: 0 auto;

    svg {
        grid-column: 1 / -1;
    }

    label {
        display: flex;
        align-items: center;
        gap: 0.5rem;
        font-size: 0.85rem;
        color: #444;

        span {
            flex: 0 0 5rem;
        }

        input {
            flex: 1;
        }
    }

    .tabs {
        grid-column: 1 / -1;
        display: flex;
        gap: 0.5rem;

        button {
            flex: 1;
            padding: 0.5rem 0;
            border: 1px solid #ccc;
            border-radius: 0.4rem;
            background: white;
            cursor: pointer;
            font-weight: 600;

            &[aria-selected="true"] {
                border-color: var(--border);
                background: color-mix(in srgb, var(--border) 12%, white);
            }
        }
    }

    #cool_s {
        width: 100%;
        height: 26rem;
    }

    .cool-s-rotation {
        transform-box: view-box;
        transition: transform 400ms ease-in-out;

        @media (prefers-reduced-motion: reduce) {
            transition: none;
        }
    }

    .pride-presets,
    .ribbon-controls {
        grid-column: 1 / -1;
        min-width: 0;
        margin: 0;
        padding: 0.75rem;
        border: 1px solid #ccc;
        border-radius: 0.5rem;

        legend {
            padding: 0 0.3rem;
            font-size: 0.85rem;
            font-weight: 600;
            color: #444;
        }

        button {
            padding: 0.4rem 0.65rem;
            border: 1px solid #bbb;
            border-radius: 0.4rem;
            background: white;
            color: #333;
            font: inherit;
            font-size: 0.85rem;
            cursor: pointer;

            &:disabled {
                opacity: 0.45;
                cursor: not-allowed;
            }

            &[aria-pressed="true"] {
                border-color: var(--border);
                background: color-mix(in srgb, var(--border) 12%, white);
                box-shadow: 0 0 0 1px var(--border);
            }
        }
    }

    .pride-presets > div {
        display: flex;
        flex-wrap: wrap;
        gap: 0.5rem;

        button {
            display: flex;
            align-items: center;
            gap: 0.4rem;
        }
    }

    .flag-swatch {
        display: flex;
        flex-direction: column;
        width: 1.75rem;
        height: 1.1rem;
        overflow: hidden;
        border: 1px solid #bbb;
        border-radius: 0.1rem;

        span {
            flex: 1;
        }
    }

    .ribbon-actions {
        display: flex;
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    .ribbon-row {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto auto;
        gap: 0.75rem;
        margin-bottom: 0.5rem;

        input {
            min-width: 0;
            height: 2rem;
            cursor: pointer;
        }
    }

    .eyes {
        grid-column: 1 / -1;
        display: flex;
        gap: 0.5rem;

        button {
            flex: 1;
            font-family: ui-monospace, monospace;
            padding: 0.35rem 0;
            border: 1px solid #ccc;
            border-radius: 0.4rem;
            background: white;
            cursor: pointer;

            &[aria-pressed="true"] {
                border-color: var(--border);
                background: color-mix(in srgb, var(--border) 12%, white);
            }
        }
    }
}
