/*------------------------------------
  Card
------------------------------------*/

@each $breakpoint in map-keys($grid-breakpoints) {
  @include media-breakpoint-up($breakpoint, $grid-breakpoints) {
    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);

    @each $prop, $abbrev in (column-count: cc) {
      @each $card-count, $length in $card-count {
        .card#{$infix}-#{$card-count}-count { #{$prop}: $length; }
      }
    }

    .card#{$infix}-columns {
      column-gap: 1rem;
      orphans: 1;
      widows: 1;

      .card {
        display: inline-block; // Don't let them vertically span multiple columns
        width: 100%; // Don't let their width change
      }
    }
  }
}

.card-collapse {
  border-top: none;
  border-left: none;
  border-right: none;
  @include border-radius(0);
  background-color: transparent;

  &__header {
    padding: 0;
    background-color: transparent;
    transition: $transition-timing $transition-function;
  }

  &__btn {
    color: $dark;
    text-align: left;
    padding-left: 0;
    padding-right: 0;
    white-space: inherit;

    &-arrow {
      color: $primary;
      margin-left: 1rem;
      transition: $transition-timing $transition-function;

      &-inner {
        font-size: .8125rem;
      }

      .collapsed & {
        transform: rotate(-90deg);
      }
    }
  }

  &__body {
    color: $paragraph-color;
  }
}

// Card image caps
.card-img-right {
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
  @include border-right-radius($card-inner-border-radius);
}

.card-img-left {
  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch
  @include border-left-radius($card-inner-border-radius);
}

/* Card Frame */
.card-frame {
  border: $card-border-width solid $card-border-color;
  border-top-width: $card-border-top-width;
  transition: $transition-timing;

  &.active,
  &:hover {
    border-color: $card-border-hover-color;
    box-shadow: $card-border-box-shadow;
  }
}

/* Card Shadow */
.card-shadow {
  transition: $transition-timing;

  &:hover {
    box-shadow: $card-shadow;
  }
}

/* Text */
.card-text-dark {
  color: $dark;

  &:hover {
    color: $primary;
  }
}

@each $color, $value in $theme-colors {
  .card-#{$color}-frame {
    @include card-frame-style($value);
  }
}

// Small Devices
@include media-breakpoint-up(sm) {
  /* Gutters X */
  .card-sm-gutters-1 {
    margin-right: -.25rem;
    margin-left: -.25rem;

    .card {
      margin-right: .25rem;
      margin-left: .25rem;
    }
  }

  .card-sm-gutters-2 {
    margin-right: -.5rem;
    margin-left: -.5rem;

    .card {
      margin-right: .5rem;
      margin-left: .5rem;
    }
  }

  .card-sm-gutters-3 {
    margin-right: -1rem;
    margin-left: -1rem;

    .card {
      margin-right: 1rem;
      margin-left: 1rem;
    }
  }
}

// Medium Devices
@include media-breakpoint-up(md) {
  /* Gutters X */
  .card-md-gutters-1 {
    margin-right: -.25rem;
    margin-left: -.25rem;

    .card {
      margin-right: .25rem;
      margin-left: .25rem;
    }
  }

  .card-md-gutters-2 {
    margin-right: -.5rem;
    margin-left: -.5rem;

    .card {
      margin-right: .5rem;
      margin-left: .5rem;
    }
  }

  .card-md-gutters-3 {
    margin-right: -1rem;
    margin-left: -1rem;

    .card {
      margin-right: 1rem;
      margin-left: 1rem;
    }
  }
}

// Large Devices
@include media-breakpoint-up(lg) {
  /* Gutters X */
  .card-lg-gutters-1 {
    margin-right: -.25rem;
    margin-left: -.25rem;

    .card {
      margin-right: .25rem;
      margin-left: .25rem;
    }
  }

  .card-lg-gutters-2 {
    margin-right: -.5rem;
    margin-left: -.5rem;

    .card {
      margin-right: .5rem;
      margin-left: .5rem;
    }
  }

  .card-lg-gutters-3 {
    margin-right: -1rem;
    margin-left: -1rem;

    .card {
      margin-right: 1rem;
      margin-left: 1rem;
    }
  }
}

// Extra Large Devices
@include media-breakpoint-up(xl) {
  /* Gutters X */
  .card-xl-gutters-1 {
    margin-right: -.25rem;
    margin-left: -.25rem;

    .card {
      margin-right: .25rem;
      margin-left: .25rem;
    }
  }

  .card-xl-gutters-2 {
    margin-right: -.5rem;
    margin-left: -.5rem;

    .card {
      margin-right: .5rem;
      margin-left: .5rem;
    }
  }

  .card-xl-gutters-3 {
    margin-right: -1rem;
    margin-left: -1rem;

    .card {
      margin-right: 1rem;
      margin-left: 1rem;
    }
  }
}