.ve-checkbox {
  cursor: pointer;
  font-size: 12px;
  display: inline-block;
  position: relative;
  vertical-align: middle;

  &:hover {
    .ve-checkbox-inner {
      border-color: var(--ve-checkbox-checked-border-color);
    }
  }

  &-content {
    white-space: nowrap;
    cursor: pointer;
    outline: none;
    display: inline-block;
    line-height: 1;
    position: relative;
    vertical-align: text-bottom;

    &:hover {
      .ve-checkbox-inner {
        border-color: var(--ve-checkbox-checked-border-color);
      }
    }

    // input
    .ve-checkbox-input {
      position: absolute;
      left: 0;
      z-index: 1;
      cursor: pointer;
      opacity: 0;
      filter: alpha(opacity=0);
      top: 0;
      bottom: 0;
      right: 0;

      &:focus {
        .ve-checkbox-inner {
          border-color: var(--ve-checkbox-checked-border-color);
        }
      }
    }

    // checkbox 框
    .ve-checkbox-inner {
      position: relative;
      top: 0;
      left: 0;
      display: block;
      width: 16px;
      height: 16px;
      border: 1px solid #abbacc;
      border-radius: 2px;
      background-color: #fff;
      transition: all 0.3s;

      &:after {
        transform: rotate(45deg) scale(0);
        position: absolute;
        left: 4px;
        top: 2px;
        display: table;
        width: 6px;
        height: 9px;
        border: 2px solid #fff;
        border-top: 0;
        border-left: 0;
        content: " ";
        transition: all 0.1s cubic-bezier(0.71, -0.46, 0.88, 0.6);
      }
    }
  }

  // 选中时
  .ve-checkbox-checked {
    &:after {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      border-radius: 2px;
      border: 1px solid var(--ve-checkbox-checked-background-color);
      content: "";
      animation-fill-mode: both;
      visibility: hidden;
    }

    .ve-checkbox-inner {
      background-color: var(--ve-checkbox-checked-background-color);
      border-color: var(--ve-checkbox-checked-background-color);

      &:after {
        transform: rotate(45deg) scale(1);
        position: absolute;
        display: table;
        border: 2px solid #fff;
        border-top: 0;
        border-left: 0;
        content: " ";
        transition: all 0.2s cubic-bezier(0.12, 0.4, 0.29, 1.46) 0.1s;
      }
    }
  }

  // 半选状态
  .ve-checkbox-indeterminate {
    .ve-checkbox-inner {
      background-color: #fff;
      border-color: #d9d9d9;
      position: relative;
      top: 0;
      left: 0;
      direction: ltr;
      background-color: #fff;
      border: 1px solid #d9d9d9;
      border-radius: 2px;
      border-collapse: separate;
      transition: all 0.3s;

      &:after {
        top: 50%;
        left: 50%;
        width: 8px;
        height: 8px;
        background-color: var(--ve-checkbox-checked-border-color);
        border: 0;
        -webkit-transform: translate(-50%, -50%) scale(1);
        transform: translate(-50%, -50%) scale(1);
        opacity: 1;
        content: " ";
      }

      &:hover {
        border-color: var(--ve-checkbox-checked-border-color);
      }
    }

    &.ve-checkbox-disabled {
      .ve-checkbox-inner:after {
        border-color: rgba(0, 0, 0, 0.25);
      }
    }
  }

  // 禁用选择
  .ve-checkbox-disabled {
    cursor: not-allowed;

    // 禁用的选中
    &.ve-checkbox-checked {
      .ve-checkbox-inner:after {
        animation-name: none;
        border-color: rgba(0, 0, 0, 0.25);
      }
    }

    .ve-checkbox-input {
      cursor: not-allowed;
    }

    // 禁用状态的框
    .ve-checkbox-inner {
      color: rgba(0, 0, 0, 0.25);
      cursor: not-allowed;
      border-color: #d9d9d9 !important;
      background-color: #f7f7f7;

      &:after {
        animation-name: none;
        border-color: #f7f7f7;
      }
    }
  }

  // label
  &-label {
    margin: 0 6px 0 3px;
    width: 100%;
    color: var(--ve-checkbox-label-text-color) !important;
  }
}