@-webkit-keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

// Spec and IE10+
@keyframes progress-bar-stripes {
  from {
    background-position: 40px 0;
  }
  to {
    background-position: 0 0;
  }
}

// Bar itself
.progress {
  overflow: hidden;
  margin-bottom: @line-height-computed;
  height: @line-height-computed;
  border-radius: @progress-border-radius;
  background-color: @progress-bg;

  .box-shadow(inset 0 1px 2px rgba(0, 0, 0, 0.1));
}

// Bar of progress
.progress-bar {
  float: left;
  width: 0%;
  height: 100%;
  background-color: @progress-bar-bg;
  color: @progress-bar-color;
  text-align: center;
  font-size: @font-size-small;
  line-height: @line-height-computed;

  .box-shadow(inset 0 -1px 0 rgba(0, 0, 0, 0.15));
  .transition(width 0.6s ease);
}

// Striped bars
// `.progress-striped .progress-bar` is deprecated as of v3.2.0 in favor of the
// `.progress-bar-striped` class, which you just add to an existing `.progress-bar`.
.progress-striped .progress-bar,
.progress-bar-striped {
  background-size: 40px 40px;

  #gradient > .striped();
}

// Call animation for the active one
// `.progress.active .progress-bar` is deprecated as of v3.2.0 in favor of the `.progress-bar.active` approach.
.progress.active .progress-bar,
.progress-bar.active {
  .animation(progress-bar-stripes 2s linear infinite);
}

// Variations
.progress-bar-success {
  .progress-bar-variant(@progress-bar-success-bg);
}

.progress-bar-info {
  .progress-bar-variant(@progress-bar-info-bg);
}

.progress-bar-warning {
  .progress-bar-variant(@progress-bar-warning-bg);
}

.progress-bar-danger {
  .progress-bar-variant(@progress-bar-danger-bg);
}
