.nes-progress {
  @include compact-rounded-corners();

  width: 100%;
  height: 48px;
  margin: 4px;
  color: $base-color;
  background-color: $background-color;
  -webkit-appearance: none;
  appearance: none;

  @mixin progress-style($color) {
    &::-webkit-progress-bar {
      background-color: $background-color;
    }
    &::-webkit-progress-value {
      background-color: $color;
    }
    &::-moz-progress-bar {
      background-color: $color;
    }
    &::-ms-fill {
      background-color: $color;
      border: none;
    }
  }

  @include progress-style($base-color);

  &.is-rounded {
    @include rounded-corners();
  }
  &.is-primary {
    @include progress-style(map-get($primary-colors, "normal"));
  }

  &.is-success {
    @include progress-style(map-get($success-colors, "normal"));
  }

  &.is-warning {
    @include progress-style(map-get($warning-colors, "normal"));
  }

  &.is-error {
    @include progress-style(map-get($error-colors, "normal"));
  }

  &.is-pattern {
    &::-webkit-progress-value {
      background-color: $base-color;
      background-image: linear-gradient(
          45deg,
          $background-color 25%,
          transparent 25%,
          transparent 75%,
          $background-color 75%,
          $background-color
        ),
        linear-gradient(
          45deg,
          $background-color 25%,
          transparent 25%,
          transparent 75%,
          $background-color 75%,
          $background-color
        );
      background-position: 0 0, 10px 10px;
      background-size: 20px 20px;
    }

    &::-moz-progress-bar {
      background-color: $base-color;
      background-image: -moz-linear-gradient(
          45deg,
          $background-color 25%,
          transparent 25%,
          transparent 75%,
          $background-color 75%,
          $background-color
        ),
        -moz-linear-gradient(45deg, $background-color 25%, transparent 25%, transparent 75%, $background-color
              75%, $background-color);
      background-position: 0 0, 10px 10px;
      background-size: 20px 20px;
    }

    &::-ms-fill {
      background-color: $base-color;
      background-image: linear-gradient(
          45deg,
          $background-color 25%,
          transparent 25%,
          transparent 75%,
          $background-color 75%,
          $background-color
        ),
        linear-gradient(
          45deg,
          $background-color 25%,
          transparent 25%,
          transparent 75%,
          $background-color 75%,
          $background-color
        );
      background-position: 0 0, 10px 10px;
      background-size: 20px 20px;
      border: none;
    }
  }
}
