.hy-checkbox {
  display: inline-block;
  position: relative;
  margin-right: 1rem;
}

.hy-checkbox__checkmark {
  border-color: var(--link-blue);
  border-style: solid inset solid solid;
  border-width: 2px;
  height: 20px;
  margin-right: 6px;
  min-width: 20px;
  min-height: 20px;
  position: relative;
  width: 20px;

  svg {
    bottom: 0;
    left: 0;
    position: absolute;
    visibility: hidden;
  }

  &::before {
    background-color: var(--grayscale-white);
    content: '';
    height: 10px;
    position: absolute;
    right: 0;
    transform: rotate(40deg) translate(6%, -55%);
    visibility: hidden;
    width: 8px;
  }
}

.hy-checkbox__label {
  @include font-size(14px, 20px);
  align-items: center;
  color: var(--grayscale-black);
  display: inline-flex;
  font-family: var(--main-font-family);
  letter-spacing: -0.4px;
  text-align: left;

  @include breakpoint($narrow) {
    @include font-size(16px, 20px);
  }
}

.hy-checkbox__checkbox {
  height: 100%;
  margin: 0;
  opacity: 0;
  position: absolute;
  width: 100%;
  z-index: 10;

  &:checked {
    & + label {
      color: var(--grayscale-black);

      .hy-checkbox__checkmark {
        svg,
        &::before {
          visibility: visible;
        }
      }
    }
  }

  &:hover {
    cursor: pointer;

    & + label {
      color: var(--brand-main);
    }
  }

  &:focus {
    & + label {
      outline-offset: 1px;
      outline: 2px solid var(--link-blue);
    }
  }
}

.hy-checkbox--button {
  display: inline-block;
  margin-right: 4px;
  position: relative;

  &__label {
    @include font-size(12px, 14px);

    align-items: center;
    border: 0.5px solid var(--grayscale-medium-dark);
    color: var(--link-blue);
    display: inline-flex;
    font-family: var(--main-font-family);
    font-weight: 600;
    letter-spacing: -0.3px;
    padding: 12px 15px 12px 13px;
    z-index: 1;

    @include breakpoint($wide) {
      @include font-size(14px, 18px);

      letter-spacing: -0.4px;
      padding: 9px 8px 9px 8px;
    }
  }

  &__checkmark {
    position: absolute;
    right: 12px;
    top: 0;
    bottom: 0;

    @include breakpoint($wide) {
      right: 10px;
      bottom: calc(50% + 10px);
    }

    svg {
      bottom: 0;
      left: 0;
      position: absolute;
      visibility: hidden;
    }
  }

  &__label-icon {
    height: 13px;
    position: absolute;
    width: 12px;

    @include breakpoint($wide) {
      padding: 10px;
      right: -6px;
      top: calc(50% + 5px);
    }

    svg {
      background: var(--grayscale-white);
      height: 12px;
      left: 50%;
      top: 50%;
      transform: translate(-50%, -50%);
      width: 12px;
    }
  }

  &__checkbox {
    height: 100%;
    margin: 0;
    opacity: 0;
    position: absolute;
    width: 100%;
    z-index: 10;

    &:checked {
      & + label {
        border: 1px solid var(--grayscale-black);
        color: var(--grayscale-black);
        padding: 12px 15px 12px 13px;

        @include breakpoint($wide) {
          border: 2px solid var(--grayscale-black);
          padding: 8px 26px 8px 7px;
        }

        .hy-checkbox--button__checkmark {
          .hy-checkbox--button__label-icon {
            background: var(--grayscale-white);
          }

          svg {
            visibility: visible;
          }
        }
      }
    }

    &:hover {
      cursor: pointer;
    }

    &:focus {
      & + label {
        outline-offset: 1px;
        outline: 1px solid var(--link-blue);
      }
    }
  }
}