.Radio {
  inline-size: var(--radio-size, 20px);
  block-size: var(--radio-size, 20px);
  position: relative;
  border-radius: 50%;
  flex-shrink: 0;
}

  .Radio_size_l,
  .Radio_size_m {
    --radio-size: 20px;
    --radio-icon-size: 10px;
  }

  .Radio_size_s,
  .Radio_size_xs,
  .Radio_size_2xs {
    --radio-size: 16px;
    --radio-icon-size: 8px;
  }

  .Radio-Box {
    --radio-box-background-color: var(--color-background-base-primary);
    --radio-box-border-color: var(--color-border-base-main);
    --radio-box-focus-shadow: none;
    --radio-box-check-icon-opacity: 0;
    inline-size: 100%;
    block-size: 100%;
    position: relative;
    display: block;
    border-radius: inherit;
    box-sizing: border-box;
    background-color: var(--radio-box-background-color);
    border: 1px solid var(--radio-box-border-color);
    box-shadow: var(--radio-box-focus-shadow);
    transition: border-color var(--transition-default),
      background-color var(--transition-default),
      box-shadow var(--transition-default);
  }

  .Radio-Box::after {
      position: absolute;
      content: ' ';
      inline-size: var(--radio-icon-size, 10px);
      block-size: var(--radio-icon-size, 10px);
      inset-block-start: 50%;
      inset-inline-start: 50%;
      background-color: var(--color-content-base-accent-on);
      border-radius: 50%;
      transform: translate(-50%, -50%);
      opacity: var(--radio-box-check-icon-opacity);
      transition: opacity var(--transition-default);
    }

  .Radio-Input {
    position: absolute;
    margin: 0;
    opacity: 0;
    inset-inline-start: 0;
    inset-block-start: 0;
    inline-size: 100%;
    block-size: 100%;
    cursor: pointer;
    z-index: var(--z-index-absolute);
  }

  .Radio-Input:hover:not(:checked, :disabled) + .Radio-Box {
      --radio-box-background-color: var(--color-background-base-primary-hover);
      --radio-box-border-color: var(--color-border-base-main-hover);
    }

  .Radio-Input:active:not(:checked, :disabled) + .Radio-Box {
      --radio-box-background-color: var(--color-background-base-primary-pressed);
      --radio-box-border-color: var(--color-border-base-main-pressed);
    }

  .Radio-Input:checked:not(:hover, :active) + .Radio-Box {
      --radio-box-background-color: var(--color-background-accent-default);
      --radio-box-border-color: var(--color-background-accent-default);
    }

  .Radio-Input:hover:checked:not(:active, :disabled) + .Radio-Box {
      --radio-box-background-color: var(--color-background-accent-hover);
      --radio-box-border-color: var(--color-background-accent-hover);
    }

  .Radio-Input:active:checked + .Radio-Box {
      --radio-box-background-color: var(--color-background-accent-pressed);
      --radio-box-border-color: var(--color-background-accent-pressed);
    }

  .Radio-Input:focus-visible + .Radio-Box {
      --radio-box-focus-shadow: var(--shadow-outline-focused);
    }

  .Radio-Input:checked + .Radio-Box {
      --radio-box-check-icon-opacity: 1;
    }

  .Radio_error .Radio-Box {
      --radio-box-border-color: var(--color-border-error-default);
    }

  .Radio_error .Radio-Input:hover:not(:checked, :disabled) + .Radio-Box {
      --radio-box-border-color: var(--color-border-error-default);
    }

  .Radio_error .Radio-Input:active:not(:checked, :disabled) + .Radio-Box {
      --radio-box-border-color: var(--color-border-error-default);
    }

  .Radio_disabled {
    pointer-events: none;
  }

  .Radio_disabled .Radio-Box {
      --radio-box-background-color: var(--color-background-base-disabled);
      --radio-box-border-color: var(--color-border-base-disabled);
    }

  .Radio_disabled .Radio-Input:checked + .Radio-Box {
      --radio-box-background-color: var(--color-background-accent-active-disabled);
      --radio-box-border-color: var(--color-background-accent-active-disabled);
      --radio-box-check-icon-opacity: 0.7;
    }
