.angle-input {
  width: 58px;
  display: flex;
  justify-content: center;
  align-items: center;

  & &__track {
    border-radius: 50%;
    height: 48px;
    border: 2px solid var(--wds-angle-input-ring-border, #d6e6fe);
    position: relative;
    display: flex;
    justify-content: center;
    align-items: center;
  }

  &#{&}--disabled &__track {
    border-color: var(--wds-color-border-standard-secondary-disabled, rgba(0, 6, 36, 0.1));
  }

  &#{&}--disabled &__arm {
    background-color: var(--wds-color-border-standard-secondary-disabled, rgba(0, 6, 36, 0.1));
  }

  &#{&}--disabled &__knob {
    background: linear-gradient(
        0deg,
        var(--wds-color-fill-standard-primary-disabled, rgba(0, 6, 36, 0.3)),
        var(--wds-color-fill-standard-primary-disabled, rgba(0, 6, 36, 0.3)) 100%
      ),
      #fff;
    border-width: 0;
    width: 12px;
  }

  &#{&}--disabled {
    pointer-events: none;
  }

  &:not(&--disabled) &__knob-wrapper:active &__knob {
    width: 12px;
    border-width: 3px;
  }

  /* stylelint-disable-next-line plugin/use-baseline */
  &:not(&--disabled):has(#{&}__knob-wrapper:active) &__arm {
    background-color: var(--wds-angle-input-arm-border, #116dff);
  }

  @media (hover: hover) {
    &:not(&--disabled) &__knob-wrapper:hover &__knob {
      width: 12px;
      border-width: 3px;
    }

    /* stylelint-disable-next-line plugin/use-baseline */
    &:not(&--disabled):has(#{&}__knob-wrapper:hover) &__arm {
      background-color: var(--wds-angle-input-arm-border, #116dff);
    }
  }

  & &__arm {
    position: absolute;
    top: 0;
    width: 2px;
    height: 50%;
    background-color: var(--wds-angle-input-arm-border, #d6e6fe);
    transform-origin: bottom center;
  }

  & &__knob-wrapper {
    z-index: 1;
    cursor: pointer;
    width: 18px;
    display: flex;
    justify-content: center;
    align-items: center;
    transform-origin: 9px calc(9px + 24px);
    margin-bottom: 48px;
  }

  & &__knob {
    position: absolute;
    width: 6px;
    border: 3px solid var(--wds-angle-input-arm-border, #116dff);
    background-color: var(--wds-angle-input-knob-fill, #116dff);
    border-radius: 50%;
  }

  & &__knob:focus-within {
    border-color: var(--wds-angle-input-arm-border, #d6e6fe);
  }

  & &__input {
    border: 0;
    /* stylelint-disable-next-line plugin/use-baseline */
    clip: rect(0 0 0 0);
    clip-path: inset(50%);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
    white-space: nowrap;
  }

  &,
  & &__track,
  & &__knob-wrapper,
  & &__knob {
    aspect-ratio: 1/1;
  }
}
