:host {
  /**
   * @prop --background: Color of the radio
   * @prop --background-checked: Color of the checked radio
   * @prop --border-radius: Border radius of the radio
   */
  --border-radius: 50%;
  --background: rgba(var(--bkkr-text-color-rgb, 0, 0, 0), 0.04);
  --background-hover: rgba(var(--bkkr-text-color-rgb, 0, 0, 0), 0.3);
  --background-focus: rgba(var(--bkkr-text-color-rgb, 0, 0, 0), 0.3);
  --background-checked: var(--color-base, var(--color-primary, #3880ff));
  --transition: transform 0.2s cubic-bezier(0.155, 1.105, 0.295, 1.12), background-color 0.2s cubic-bezier(0.32, 0.72, 0, 1);
  --mark-background: var(--bkkr-input-knob-background, var(--bkkr-background-color, #fff));
  --mark-box-shadow: 0 1.5px 2.5px 0 rgba(var(--box-shadow-color, 0, 0, 0), 0.1), 0 6px 5px 0 rgba(var(--box-shadow-color, 0, 0, 0), 0.12), 0 0.6px 10px 0 rgba(var(--box-shadow-color, 0, 0, 0), 0.08);
  --mark-transition: 0.5s transform cubic-bezier(0.155, 1.105, 0.295, 1.12);
  --mark-scale-checked: 0.5;
  display: inline-block;
  position: relative;
  width: 24px;
  height: 24px;
  transition: var(--transition);
  touch-action: manipulation;
  user-select: none;
  z-index: 2;
  box-sizing: border-box;
}

.radio-button {
  border-radius: var(--border-radius);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  height: 100%;
  transition: var(--transition);
  background-color: var(--background);
  contain: layout size style;
  z-index: 1;
  pointer-events: none;
}

.radio-button,
.radio-mark {
  box-sizing: border-box;
}

label {
  left: 0;
  top: 0;
  margin-left: 0;
  margin-right: 0;
  margin-top: 0;
  margin-bottom: 0;
  position: absolute;
  width: 100%;
  height: 100%;
  border: 0;
  outline: none;
  background: transparent;
  cursor: pointer;
  appearance: none;
  margin-left: 0;
  display: flex;
  align-items: center;
  opacity: 0;
}
[dir=rtl] label, :host-context([dir=rtl]) label {
  left: unset;
  right: unset;
  right: 0;
}

label::-moz-focus-inner {
  border: 0;
}
@supports (margin-inline-start: 0) or (-webkit-margin-start: 0) {
  label {
    margin-left: unset;
    -webkit-margin-start: 0;
    margin-inline-start: 0;
  }
}

input {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 0;
  border: 0;
  outline: 0;
  opacity: 0;
  overflow: hidden;
  clip: rect(0 0 0 0);
  appearance: none;
}

:host(:focus) {
  outline: none;
}

.radio-mark {
  border-radius: var(--border-radius);
  width: calc(100% - 6px);
  height: calc(100% - 6px);
  transition: var(--mark-transition);
  background: var(--mark-background);
  box-shadow: var(--mark-box-shadow);
}

@media (any-hover: hover) {
  :host(:hover) .radio-button {
    background: var(--background-hover);
  }
}
:host(:focus) .radio-button,
:host(.state-focused) .radio-button {
  background: var(--background-focus);
}

:host-context(.state-activated) .radio-button {
  transform: scale(0.9);
}

:host(.state-checked) .radio-button {
  background: var(--background-checked);
}
:host(.state-checked) .radio-mark {
  transform: scale(var(--mark-scale-checked));
}

:host(:disabled),
:host(.state-disabled) {
  pointer-events: none;
  cursor: default;
  opacity: 0.3;
}

:host(.in-item) {
  margin-left: calc(var(--bkkr-spacer, 16px) * 0.5);
  margin-right: 11px;
  margin-top: 8px;
  margin-bottom: 8px;
  display: block;
  position: static;
}
@supports (margin-inline-start: 0) or (-webkit-margin-start: 0) {
  :host(.in-item) {
    margin-left: unset;
    margin-right: unset;
    -webkit-margin-start: calc(var(--bkkr-spacer, 16px) * 0.5);
    margin-inline-start: calc(var(--bkkr-spacer, 16px) * 0.5);
    -webkit-margin-end: 11px;
    margin-inline-end: 11px;
  }
}

:host(.in-item[slot=start]) {
  margin-left: 3px;
  margin-right: 21px;
  margin-top: 8px;
  margin-bottom: 8px;
}
@supports (margin-inline-start: 0) or (-webkit-margin-start: 0) {
  :host(.in-item[slot=start]) {
    margin-left: unset;
    margin-right: unset;
    -webkit-margin-start: 3px;
    margin-inline-start: 3px;
    -webkit-margin-end: 21px;
    margin-inline-end: 21px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .radio-mark {
    transition: none;
  }
}