@vui-card: ~"@{vui}-card";

@keyframes vuiCardLoading {
  0% { background-position:100% 50%; }
  100% { background-position:0 50%; }
}

.@{vui-card} {
  display:block;
  border-radius:@card-border-radius;
  background-color:@card-background-color;
  overflow:hidden;
  color:@card-font-color;
  font-size:@card-font-size;
  line-height:@card-line-height;
  transition:all @transition-duration @transition-timing-function;

  &-bordered {
    border:@card-border-width solid @card-border-color;
  }

  &-shadow-hover {
    &:hover {
      box-shadow:@card-box-shadow;
    }
  }
  &-shadow-always {
    box-shadow:@card-box-shadow;
  }

  &-header {
    display:flex;
    justify-content:flex-start;
    align-items:center;
    border-bottom:@card-border-width solid @card-border-color;
    padding:@card-header-padding;
    color:@card-header-font-color;
    font-size:@card-header-font-size;
    font-weight:@card-header-font-weight;
    transition:all @transition-duration @transition-timing-function;
  }

  &-body {
    display:block;
    padding:@card-body-padding;
    transition:all @transition-duration @transition-timing-function;
    .clearfix;
  }

  &-footer {
    display:block;
    border-top:@card-border-width solid @card-border-color;
    padding:@card-footer-padding;
    transition:all @transition-duration @transition-timing-function;
    .clearfix;
  }

  &-icon {
    display:block;
    margin-right:@card-icon-margin-right;
    font-size:@card-header-font-size - 2px;
    line-height:1;

    .@{vui}-icon {
      display:block;
    }
  }

  &-title {
    flex:1;
    display:block;
    width:0;
    .writeEllipsis;
  }

  &-extra {
    display:block;
    margin-left:@card-extra-margin-left;
    color:@card-extra-font-color;
    font-size:@card-extra-font-size;
    font-weight:400;
    line-height:1;
    transition:all @transition-duration @transition-timing-function;
  }

  &-with-grid > &-body {
    padding:0;
    overflow:hidden;
  }
  &-with-grid > &-body > &-grid {
    float:left;
    display:block;
    width:25%;
    box-shadow:1px 0 0 0 @card-border-color, 0 1px 0 0 @card-border-color;
    padding:@card-body-padding;
    transition:all @transition-duration @transition-timing-function;
  }

  &-cover {
    display:block;
    overflow:hidden;

    img {
      display:block;
      width:100%;
    }
  }
  &-bordered &-cover {
    margin:-1px;
  }

  &-meta {
    display:flex;
    align-items:flex-start;

    &-avatar {
      margin-right:@card-meta-avatar-margin-right;
    }

    &-detail {
      flex:1;
      width:0;
      overflow:hidden;
    }
    &-detail &-title {
      color:@card-meta-title-font-color;
      font-size:@card-meta-title-font-size;

      .writeEllipsis;
    }
    &-detail &-description {
      display:-webkit-box;
      margin-top:@card-meta-description-margin-top;
      overflow:hidden;
      color:@card-meta-description-font-color;
      font-size:@card-meta-description-font-size;
      white-space:normal;
      word-break:break-all;
      word-wrap:break-word;
      text-overflow:ellipsis;
      -webkit-line-clamp:@card-meta-description-line-clamp;
      -webkit-box-orient:vertical;
    }
  }

  &-actions {
    display:flex;
    justify-content:center;
    align-items:center;
    border-top:1px solid @card-border-color;
  }

  &-action {
    flex:1;
    cursor:pointer;
    display:flex;
    justify-content:center;
    align-items:center;
    width:0;
    padding:@card-action-padding;
    overflow:hidden;
    color:@card-action-color;
    font-size:@card-action-font-size;
    text-align:center;
    transition:all @transition-duration @transition-timing-function;

    &:hover {
      color:@card-action-hover-color;
    }

    &:active {
      color:@card-action-active-color;
    }

    &-divider {
      display:block;
      width:@card-action-divider-width;
      height:@card-action-divider-height;
      background-color:shade(@card-border-color, 10%);
      background-image:linear-gradient(@card-border-color, shade(@card-border-color, 10%), @card-border-color);
    }
  }

  &-loading {
    &-row + &-row {
      margin-top:@card-loading-block-gutter;
    }

    &-block {
      display:block;
      height:@card-loading-block-height;
      border-radius:@card-loading-block-border-radius;
      background-image:linear-gradient(90deg, @card-loading-block-from-color 25%, @card-loading-block-to-color 50%, @card-loading-block-from-color 75%);
      background-size:400% 100%;
      animation:vuiCardLoading 1s ease infinite;
    }
  }
}