.nest-radio {
  user-select: none;
  position: relative;
  display: inline-block;
  vertical-align: middle;
  padding: var(--nest-radio-bleed, 2px);
}

.nest-radio-inner {
  --radio-bd-color: var(--nest-radio-bd-color, rgba(0, 0, 0, 0.17));
  --radio-bg-color: var(--nest-radio-bg-color, #ffffff);
  --radio-color: var(--nest-radio-color, #000000);
  display: block;
  border-radius: 50%;
  border-style: solid;
  border-color: var(--radio-bd-color);
  background-color: var(--radio-bg-color);
  color: var(--radio-color);
  width: var(--nest-radio-size, 20px);
  height: var(--nest-radio-size, 20px);
  padding: var(--nest-radio-p, 3.5px);
  border-width: var(--nest-radio-bd-w, 1.5px);
}

.nest-radio-inner::after {
  content: '';
  display: block;
  border-radius: inherit;
  background-color: currentColor;
  scale: 0;
  transition: scale 0.2s cubic-bezier(0.2, 0.64, 0.21, 1);
  width: 100%;
  height: 100%;
}

.nest-radio-input {
  cursor: pointer;
  z-index: 1;
  opacity: 0;
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  margin: 0px;
}

.nest-radio-input:checked + .nest-radio-inner {
  --radio-bd-color: var(--nest-radio-bd-color-checked, #000000);
  --radio-bg-color: var(--nest-radio-bg-color-checked, #ffffff);
}

.nest-radio-input:checked + .nest-radio-inner::after {
  scale: 1;
}

@media (hover: hover) and (pointer: fine) {
  /* 单选按钮无法取消选中 - 无需交互 */
  .nest-radio-input:not(:checked, :disabled):hover + .nest-radio-inner {
    border-color: var(--nest-radio-bd-color-hover, var(--radio-bd-color));
    background-color: var(--nest-radio-bg-color-hover, var(--radio-bg-color));
  }
}

.nest-radio-input:disabled {
  cursor: not-allowed;
}

.nest-radio-input:disabled + .nest-radio-inner {
  border-color: var(--nest-radio-bd-color-disabled, rgba(0, 0, 0, 0.05));
  background: var(--nest-radio-bg-color-disabled, rgba(0, 0, 0, 0.05));
  color: var(--nest-radio-bd-color-disabled, var(--radio-color));
  opacity: var(--nest-radio-opacity-disabled, 1);
}

.nest-radio-input:checked:disabled + .nest-radio-inner {
  border-color: var(--nest-radio-bd-color-checked-disabled, var(--radio-bd-color));
  background: var(--nest-radio-bg-color-checked-disabled, var(--radio-bg-color));
  opacity: var(--nest-radio-opacity-checked-disabled, 0.34);
}
