@mixin radio-color(
  $border-color: null,
  $border-color-css-var: --null,
  $background-color: null,
  $background-color-css-var: --null,
  $background-color--disabled: null,
  $background-color--disabled-css-var: --null,
  $background-color--hover: null,
  $background-color--hover-css-var: --null,
  $background-color--checked: null,
  $background-color--checked-css-var: --null,
  $background-color--checked-hover: null,
  $background-color--checked-hover-css-var: --null,
  $label-color: null,
  $label-color-css-var: --null
) {
  .#{$radio__class}__input {
    + .#{$radio__class}__label {
      font-family: $input__font-family;
      @if $label-color {
        color: $label-color;
        color: var($label-color-css-var, $label-color);
      }

      &:before {
        @if $background-color {
          background-color: $background-color;
          background-color: var($background-color-css-var, $background-color);
        }
        @if $border-color {
          border: 1px solid $border-color;
          border: 1px solid var($border-color-css-var, $border-color);
        }
      }

      &:hover,
      &.hover {
        &:before {
          @if $background-color--hover {
            background-color: $background-color--hover;
            background-color: var($background-color--hover-css-var, $background-color--hover);
          }
        }
      }
    }

    &:focus,
    &.focus {
      + .#{$radio__class}__label {
        &:before {
          @include focus-styles;
        }
      }
    }

    &:checked {
      + .#{$radio__class}__label {
        &:before {
          @if $background-color--checked {
            background-color: $background-color--checked;
            background-color: var($background-color--checked-css-var, $background-color--checked);
          }
          border: none;
        }

        &:hover,
        &.hover {
          &:before {
            @if $background-color--checked-hover {
              background-color: $background-color--checked-hover;
              background-color: var($background-color--checked-css-var, $background-color--checked);
            }
          }
        }
      }
    }

    &:disabled,
    &.disabled {
      + .#{$radio__class}__label {
        &:before {
          @if $background-color--disabled {
            background-color: $background-color--disabled;
            background-color: var($background-color--disabled-css-var, $background-color--disabled);
          }
          border: none;
        }
      }

      &:checked {
        + .#{$radio__class}__label {
          &:before {
            @if $background-color--checked {
              background-color: $background-color--checked;
              background-color: var($background-color--checked-css-var, $background-color--checked);
            }
            border: none;
          }

          &:hover,
          &.hover {
            &:before {
              @if $background-color--checked {
                background-color: $background-color--checked;
                background-color: var($background-color--checked-css-var, $background-color--checked);
              }
            }
          }
        }
      }
    }
  }
}
