@use "../base/mixins" as *;
@use "../base/variables" as *;
@use "../base/typography" as *;

.checkset {
  position: relative;
  display: flex;
  align-items: center;

  &__wrap {
    display: flex;
    align-items: center;
    gap: 0.8rem;
  }

  &__input {
    @include blind();
  }

  &__label {
    @include transition((padding-left, color));

    display: flex;
    align-items: center;
    padding-left: calc(2rem + 0.8rem);
    color: theme-color($text-high);
    font-weight: 700;
    cursor: pointer;

    &::before {
      @include transition((background, border-color));

      content: "";
      position: absolute;
      left: 0;
      top: 50%;
      translate: 0 -50%;
      width: 2rem;
      height: 2rem;
      background-color: transparent;
      border: 2px solid;
      border-radius: 0.4rem;

      [data-theme="dark"] & {
        border-color: rgba(#fff, 0.2);
      }

      [data-theme="light"] & {
        border-color: #e5e5e5;
      }
    }

    &::after {
      @include transition((color, font-size));

      content: "";
      position: absolute;
      left: 0;
      top: 50%;
      z-index: 2;
      translate: 0 -50%;
      font-family: $font-temha;
      font-size: 2rem;
      color: theme-color($primary);
      font-weight: 400;
    }
  }

  // Size modifiers
  &--lg {
    .checkset__label {
      padding-left: calc(2.4rem + 0.8rem);

      @include media("lg") {
        padding-left: 2.6rem;
      }

      &::before {
        width: 2.4rem;
        height: 2.4rem;

        @include media("lg") {
          width: 1.8rem;
          height: 1.8rem;
        }
      }

      &::after {
        font-size: 2.4rem;

        @include media("lg") {
          font-size: 1.8rem;
        }
      }
    }
  }

  &--sm {
    .checkset__label {
      padding-left: calc(1.8rem + 0.8rem);

      &::before {
        width: 1.8rem;
        height: 1.8rem;
      }

      &::after {
        font-size: 1.8rem;
      }
    }
  }

  // Fill modifier
  &--fill {
    .checkset__input:checked + .checkset__label {
      &::before {
        background: theme-color($primary);
        border-color: theme-color($primary);
      }

      &::after {
        content: "\a009";
        color: #111;
      }
    }
  }

  // Thumb modifier
  @include media("lg") {
    &--thumb {
      .checkset__label {
        padding: 0 1.6rem;
      }
    }

    &--sm.checkset--thumb {
      .checkset__label {
        padding: 0 1rem;
      }
    }
  }
}
