/* Checkboxes and Radios */

.form-check {
  position: relative;
  margin-top: 10px;
  margin-bottom: 10px;
  padding-left: 0;

  .form-check-label {
    min-height: 18px;
    display: block;
    margin-left: 1.75rem;
    font-size: $default-font-size;
    line-height: 1.5;

    input {
      position: absolute;
      top: 0;
      left: 0;
      margin-left: 0;
      margin-top: 0;
      z-index: 1;
      cursor: pointer;
      opacity: 0;
      filter: alpha(opacity=0);
    }
    input[type="checkbox"] {
      + .input-frame {
        &:before,
        &:after {
          position: absolute;
          top: 0;
          left: 0;
        }
        &:before {
          content: "";
          width: 18px;
          height: 18px;
          border-radius: 2px;
          border: solid theme-color(primary);
          border-width: 2px;
          @include transition(all);
          transition-duration: 0s;
          -webkit-transition-duration: 250ms;
          transition-duration: 250ms;
        }
  
        &:after {
          @include transition(all);
          transition-duration: 0s;
          -webkit-transition-duration: 250ms;
          transition-duration: 250ms;
          font-family: feather;
          content: '\e83f';
          opacity: 0;
          filter: alpha(opacity=0);
          -webkit-transform: scale(0);
          -ms-transform: scale(0);
          -o-transform: scale(0);
          transform: scale(0);
          font-size: .9375rem;
          font-weight: bold;
          color: $white;
        }
      }
      &:checked {
        +.input-frame {
          &:before {
            background: theme-color(primary);
            border-width: 0;
          }
          &:after {
            width: 18px;
            opacity: 1;
            line-height: 18px;
            filter: alpha(opacity=100);
            -webkit-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1);
          }
        }
      }

      &:disabled {
        + .input-frame {
          &:before {
            border-color: $border-color;
          }
        }

        &:checked {
          + .input-frame {
            &:after {
              background: $border-color;
              color: $white;
            }
          }
        }
      }
    }
    input[type="radio"] {
      +.input-frame {
        &:before {
          position: absolute;
          content: "";
          top: 0;
          left: 0;
          border: solid theme-color(primary);
          border-width: 2px;
          width: 20px;
          height: 20px;
          border-radius: 50%;
          @include transition(all);
          transition-duration: 0s;
          -webkit-transition-duration: 250ms;
          transition-duration: 250ms;
        }

        &:after {
          content: "";
          width: 8px;
          height: 8px;
          background: $white;
          border-radius: 50%;
          top: 6px;
          left: 6px;
          -webkit-transition: all;
          -o-transition: all;
          transition: all;
          transition-duration: 0s;
          -webkit-transition-duration: 250ms;
          transition-duration: 250ms;
          opacity: 0;
          filter: alpha(opacity=0);
          -webkit-transform: scale(0);
          -ms-transform: scale(0);
          -o-transform: scale(0);
          transform: scale(0);
          position: absolute;
        }
      }

      &:checked {
        +.input-frame {
          &:before {
            background: theme-color(primary);
            border-width: 0;
          }

          &:after {
            opacity: 1;
            line-height: 1.5;
            filter: alpha(opacity=100);
            -webkit-transform: scale(1);
            -ms-transform: scale(1);
            -o-transform: scale(1);
            transform: scale(1);
          }
        }
      }

      &:disabled {
        + .input-frame {
          &:before {
            border-color: $border-color;
          }
        }

        &:checked {
          + .input-frame {
            &:before {
              background: $border-color;
            }

            &:after {
              background: $white;
            }
          }
        }
      }
    }
  }
}

@each $color, $value in $theme-colors {
  .form-check-#{$color} {
    &.form-check {
      label {
        input[type="checkbox"],
        input[type="radio"] {
          +.input-frame {
            &:before {
              border-color: theme-color($color);
            }
          }
          &:checked {
            +.input-frame {
              &:before {
                border-color: $value;
              }
            }
          }
        }
      }
    }
  }
}

.rtl {
  .form-check {
    .form-check-label {
      margin-left: 0;
      margin-right: 1.75rem;
      input[type="checkbox"] {
        + .input-frame {
          &:before,
          &:after {
            left: auto;
            right: 0;
          }
          &::after {
            right: 0;
            transform: scale(-1, 1);
            text-align: center;
          }
        }
      }
      input[type="radio"] {
        + .input-frame {
          &:before,
          &:after {
            left: auto;
            right: 0;
          }
          &::after {
            right: 6px;
          }
        }
      }
    }
  }
}