qs-option-button {
    user-select: none;
    & :is([type="radio"], [type="checkbox"]) {
        position: absolute;
        width: 0;
        opacity: 0;
        pointer-events: none;
    }
    & label {
        --element-check-colour: transparent;
        --element-highlight-colour: var(--disabled-colour);
        --outer-padding: 2px;
        display: grid;
        background-color: white;
        border: 1px solid var(--element-highlight-colour);
        border-radius: var(--border-radius);
        padding: var(--outer-padding);
        cursor: pointer;
        font-size: var(--font-size-step--1);
        font-weight: 700;
        &.flow-vert {
            grid-template-rows: 3fr 2fr;
            place-items: center;
            width: 100%;
            height: 7.5em;
            text-align: center;
        }
        &.flow-horiz {
            --toggle-button-side-padding: .7em;
            grid-template-columns: min-content auto;
            padding: calc(0px + var(--outer-padding)) calc(var(--toggle-button-side-padding) + var(--outer-padding));
        }
        &.with-img {
            --outer-padding: 0;
            border-width: 3px;
            align-items: start;
            line-height: 1.25;
        }
        &.text-only {
            grid-template-rows: auto;
            grid-template-columns: auto;
            justify-items: center;
            height: 48px;
        }
        &.wordy {
            font-size: 14px;
        }
        &.very-wordy {
            font-size: var(--font-size-step--2);
        }
        & img {
            padding: 4px;
            align-self: center;
        }
    }
    &.full-width {
        grid-column: 1 / -1;
    }
    & [type=checkbox] + label.flow-horiz {
        --toggle-button-side-padding: .7em;
        gap: clamp(1em, 3vw, 2em);
        align-items: center;
        min-height: 100%;
    }
    & [type=radio] + label.flow-horiz {
        --toggle-button-side-padding: 1em;
        gap: clamp(1em, 4vw, 2em);
        height: 3.4em;
        align-items: center;
        justify-items: left;
        text-align: left;
        line-height: 1.25;
    }
    & :checked + label {
        color: var(--primary-accent-colour);
    }
    & [type=checkbox] + label::before {
        content: ' ';
        border: min(3px, .25em) solid var(--element-highlight-colour);
        border-radius: 4px;
        width: calc(2em - 4px);
        height: calc(2em - 4px);
        margin: calc(1em - 1px) 0;
    }
    & [type=checkbox]:checked + label::before {
        background: url(../../images/icons/checkbox-check.svg) no-repeat center/1em;
        display: grid;
        place-items: center;
    }
    & [type=radio] + label:not(.with-img):not(.text-only)::before {
        content: ' ';
        background-color: var(--element-check-colour);
        outline: .22em solid var(--element-highlight-colour);
        outline-offset: .25em;
        border-radius: 1em;
        width: 1em;
        height: 1em;
    }
    & :is([type=radio], [type=checkbox]):checked + label {
        --element-check-colour: var(--primary-accent-colour);
        --element-highlight-colour: var(--primary-accent-colour);
        --outer-padding: 0px;
        border-width: 3px;
    }
    & :is([type=radio], [type=checkbox]):disabled + label {
        opacity: 0.5;
        cursor: not-allowed;
    }
    & [type=radio] + label.flow-horiz.text-only {
        --toggle-button-side-padding: 0;
        justify-items: center;
    }
}
@media (min-width: 768px) {
    label {
        &.wordy {
            font-size: 16px;
        }
        &.very-wordy {
            font-size: 16px;
        }
    }
}