.o-radio {
  --radio-text-size: var(--o-font_size-text1);
  --radio-text-height: var(--o-line_height-text1);
  --radio-align: center;
  --radio-label-gap: 8px;
  --radio-color: var(--o-color-info1);
  --radio-color-disabled: var(--o-color-info4);
  --radio-input-wrap-size: var(--o-control_size-s);
  --radio-input-size: var(--o-control_size-xs);
  --radio-input-bg-color: var(--o-color-control5-light);
  --radio-input-bg-color-disabled: var(--o-color-control4-light);
  --radio-input-bg-color-checked: var(--o-color-primary1);
  --radio-input-bg-color-checked-hover: var(--o-color-primary2);
  --radio-input-bg-color-checked-active: var(--o-color-primary3);
  --radio-input-bg-color-checked-disabled: var(--o-color-primary4);
  --radio-input-bd-color: var(--o-color-control1);
  --radio-input-bd-color-hover: var(--o-color-primary2);
  --radio-input-bd-color-active: var(--o-color-primary3);
  --radio-input-bd-color-disabled: var(--o-color-control4);
  --radio-input-bd-color-checked: var(--o-color-primary1);
  --radio-input-bd-color-checked-hover: var(--o-color-primary2);
  --radio-input-bd-color-checked-active: var(--o-color-primary3);
  --radio-input-bd-color-checked-disabled: var(--o-color-primary4);
  --radio-input-icon-size: calc(var(--radio-input-size) / 2);
  --radio-input-icon-color: var(--o-color-fill2);
}

.o-radio {
  color: var(--radio-color);
  font-size: var(--radio-text-size);
  line-height: var(--radio-text-height);
  cursor: pointer;
}
@media (hover: hover) {
  .o-radio:hover .o-radio-input {
    border-color: var(--radio-input-bd-color-hover);
  }
}
.o-radio:active .o-radio-input {
  border-color: var(--radio-input-bd-color-active);
}

.o-radio-wrap {
  position: relative;
  display: flex;
  align-items: var(--radio-align);
  height: 100%;
}
.o-radio-wrap input[type=radio] {
  position: absolute;
  outline: none;
  z-index: -1;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  opacity: 0;
}

.o-radio-input-wrap {
  display: flex;
  justify-content: center;
  align-items: center;
  width: var(--radio-input-wrap-size);
  height: var(--radio-input-wrap-size);
}

.o-radio-input {
  position: relative;
  width: var(--radio-input-size);
  height: var(--radio-input-size);
  background-color: var(--radio-input-bg-color);
  border: 1px solid var(--radio-input-bd-color);
  border-radius: 50%;
  flex-shrink: 0;
  transition: all var(--o-duration-s) var(--o-easing-standard);
}
.o-radio-input::after {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: var(--radio-input-icon-size);
  height: var(--radio-input-icon-size);
  border-radius: 50%;
  opacity: 0;
  background-color: var(--radio-input-icon-color);
  transition: opacity var(--o-duration-s) var(--o-easing-standard), opacity var(--o-duration-s) var(--o-easing-standard);
}

.o-radio-label {
  margin-left: var(--radio-label-gap);
}

.o-radio-checked .o-radio-input {
  background-color: var(--radio-input-bg-color-checked);
  border-color: var(--radio-input-bd-color-checked);
}
.o-radio-checked .o-radio-input::after {
  opacity: 1;
}
@media (hover: hover) {
  .o-radio-checked:hover .o-radio-input {
    background-color: var(--radio-input-bg-color-checked-hover);
    border-color: var(--radio-input-bd-color-checked-hover);
  }
}
.o-radio-checked:active .o-radio-input {
  background-color: var(--radio-input-bg-color-checked-active);
  border-color: var(--radio-input-bd-color-checked-active);
}

.o-radio-disabled, .o-radio-disabled:hover, .o-radio-disabled.active {
  cursor: not-allowed;
  color: var(--radio-color-disabled);
}
.o-radio-disabled .o-radio-input, .o-radio-disabled:hover .o-radio-input, .o-radio-disabled.active .o-radio-input {
  background-color: var(--radio-input-bg-color-disabled);
  border-color: var(--radio-input-bd-color-disabled);
}

.o-radio-checked.o-radio-disabled .o-radio-input, .o-radio-checked.o-radio-disabled:hover .o-radio-input, .o-radio-checked.o-radio-disabled.active .o-radio-input {
  background-color: var(--radio-input-bg-color-checked-disabled);
  border-color: var(--radio-input-bd-color-checked-disabled);
}

@media (max-width: 1680px) {
  .o-radio {
    --radio-text-size: var(--o-font_size-tip1);
    --radio-text-height: var(--o-line_height-tip1);
  }
}