.q-linear-progress
  position relative
  width 100%
  overflow hidden
  height 4px
  color $primary
  color var(--q-color-primary)

  &--reverse
    transform scale3d(-1, 1, 1)

  &__model, &__track
    transform-origin 0 0
    transition transform .3s

  &__model

    &--determinate
      background currentColor

    &--indeterminate, &--query
      transition none

      &:before, &:after
        background currentColor
        content ''
        position absolute
        top 0
        right 0
        bottom 0
        left 0
        transform-origin 0 0

      &:before
        animation q-linear-progress--indeterminate 2.1s cubic-bezier(.65, .815, .735, .395) infinite
      &:after
        transform translate3d(-101%, 0, 0) scale3d(1, 1, 1)
        animation q-linear-progress--indeterminate-short 2.1s cubic-bezier(.165, .84, .44, 1) infinite
        animation-delay 1.15s

  &__track
    opacity 0.4
    &--light
      background rgba(0, 0, 0, .26)
    &--dark
      background rgba(255, 255, 255, .6)

  &__stripe
    transition width .3s
    background-image linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent) !important
    background-size 40px 40px !important

@keyframes q-linear-progress--indeterminate
  0%
    transform translate3d(-35%, 0, 0) scale3d(.35, 1, 1)
  60%
    transform translate3d(100%, 0, 0) scale3d(.9, 1, 1)
  100%
    transform translate3d(100%, 0, 0) scale3d(.9, 1, 1)

@keyframes q-linear-progress--indeterminate-short
  0%
    transform translate3d(-101%, 0, 0) scale3d(1, 1, 1)
  60%
    transform translate3d(107%, 0, 0) scale3d(0.01, 1, 1)
  100%
    transform translate3d(107%, 0, 0) scale3d(0.01, 1, 1)
