
// Radio.
ion-radio,
input[type=radio],
.select-alert .alert-radio-icon {
    --border-radius: 50%;
    --border-width: 2px;
    --outer-border-width: 2px;
    --border-style: solid;
    --size: 20px;

    &:not(.ion-color) {
        --color: var(--text-color);
        --color-checked: var(--color);
    }
}

.ios ion-radio,
.ios input[type=radio],
.select-alert.ios .alert-radio-icon {
    --border-width: 1px;
    --outer-border-width: 1px;
}

ion-radio::part(label) {
    white-space: normal;
}

.ios ion-radio {
    &::part(container) {
        width: var(--size);
        height: var(--size);

        margin: 0px;
        border-radius: var(--border-radius);
        border-width: var(--outer-border-width);
        border-style: var(--border-style);
        border-color: var(--color);
    }

    &::part(mark) {
        border-radius: 50%;
        width: calc(50% + var(--outer-border-width));
        height: calc(50% + var(--outer-border-width));
        transform: scale3d(0, 0, 0);
        transition: transform 280ms cubic-bezier(.4, 0, .2, 1);
        background: var(--contrast-background);
        border: 0 !important;
    }

    &.radio-checked {
        &::part(container) {
            border-color: var(--color);
            background: var(--color);
        }

        &::part(mark) {
            transform: scale3d(1, 1, 1);
        }
    }
}

ion-radio {
    &.radio-disabled {
        @include pointer-events-on-buttons();

        &.md::part(label),
        &.ios {
            opacity: var(--mdl-input-disabled-opacity);
        }

        &::part(container) {
            opacity: var(--mdl-input-disabled-opacity);
        }
    }
}

input[type=radio][disabled] {
    opacity: var(--mdl-input-disabled-opacity);
}
