$size: 9rem;
$border: 0.2rem;
$border-space: 0.3rem;

$component-name: form-field-togglebutton;

.#{$component-name} {
  display: inline-block;
  cursor: pointer;

  &__input {
    display: none;
  }

  &__checkbox {
    @include clickable;
    border-radius: 50%;
    position: relative;
    width: $size;
    height: $size;
    display: flex;
    justify-content: center;
    align-items: center;
    z-index: 0;
    text-align: center;
    padding: 0.75rem;
    hyphens: auto;

    &::before {
      position: absolute;
      top: 0;
      left: 0;
      content: '';
      width: 100%;
      height: 100%;
      border-color: var(--input-radio--fill);
      border-width: $border;
      border-style: solid;
      border-radius: 50%;
      transition: border-color var(--animation-easing) var(--animation-duration-standard);
    }

    &::after {
      position: absolute;
      content: '';
      top: $border + $border-space;
      left: $border + $border-space;
      width: calc(100% - #{($border + $border-space) * 2});
      height: calc(100% - #{($border + $border-space) * 2});
      background-color: var(--input-radio--fill);
      border-radius: 50%;
      opacity: 0;
      transition: opacity var(--animation-easing) var(--animation-duration-standard);
      z-index: -1;
    }

  }

  &__label {
    display: inline-block;
    margin-left: unit(1);
    vertical-align: top;
    line-height: $size;
  }

  &:hover {
    .form-field-checkbox__checkbox {
      &::before {
        border-color: var(--input-radio--fill);
      }
    }
  }

  &__input:checked + &__checkbox { // sass-lint:disable-line force-pseudo-nesting

    &::after {
      opacity: 1;
    }
  }

  &--disabled {
    cursor: default;
    pointer-events: none;

    .form-field-checkbox__checkbox {
      &::before {
        border-color: var(--color-charcoal);
      }

      &::after {
        opacity: 0;
      }
    }

    &:hover {
      .form-field-checkbox__checkbox {
        &::before {
          border-color: var(--color-charcoal);
        }

        &::after {
          opacity: 0;
        }
      }
    }
  }
}

@for $i from 0 through 20 {
  $sequence-number: $i % 10 + 1;
  .form-field-togglebutton-cat-color-seq-#{$i} {
    .form-field-togglebutton__checkbox {
      &::before {
        border-color: var(--cat-color-seq-#{$sequence-number});
      }

      &::after {
        background-color: var(--cat-color-seq-#{$sequence-number});
      }
    }
  }
}
