.za-progress {
  --background: var(--za-progress-background, #f2f2f2);
  --width: var(--za-progress-width, 100%);
  --size: var(--za-progress-size, 150px);
  --font-size: var(--za-progress-font-size, 24px);
  display: inline-block;
  position: relative;
}
.za-progress__outer {
  display: flex;
  align-items: center;
}

.za-progress__text {
  display: inline-block;
  margin-left: 5px;
}

.za-progress--line.za-progress--primary .za-progress__thumb {
  background-color: var(--za-theme-primary);
}

.za-progress--line.za-progress--success .za-progress__thumb {
  background-color: var(--za-theme-success);
}

.za-progress--line.za-progress--warning .za-progress__thumb {
  background-color: var(--za-theme-warning);
}

.za-progress--line.za-progress--danger .za-progress__thumb {
  background-color: var(--za-theme-danger);
}

.za-progress--line.za-progress--lg {
  width: 100%;
}
.za-progress--line.za-progress--lg .za-progress__text {
  font-size: 16px;
}

.za-progress--line.za-progress--md {
  width: var(--width);
}
.za-progress--line.za-progress--md .za-progress__text {
  font-size: calc(var(--font-size) * 2 / 3);
}

.za-progress--line.za-progress--sm {
  width: 140px;
}
.za-progress--line.za-progress--sm .za-progress__text {
  font-size: 14px;
}

.za-progress--line .za-progress__track {
  width: 100%;
  height: 100%;
  background: var(--background);
  overflow: hidden;
}

.za-progress--line .za-progress__thumb {
  height: 100%;
  width: 0;
  transition: width 0.6s ease, background-color 0.6s ease;
}

.za-progress--circle {
  display: inline-block;
}
.za-progress--circle .za-progress__track {
  stroke: var(--background);
  fill-opacity: 0;
}

.za-progress--circle .za-progress__thumb {
  fill-opacity: 0;
  transition: stroke-dashoffset 0.6s ease, stroke 0.6s ease;
}

.za-progress--circle.za-progress--primary .za-progress__thumb {
  stroke: var(--za-theme-primary);
}

.za-progress--circle.za-progress--success .za-progress__thumb {
  stroke: var(--za-theme-success);
}

.za-progress--circle.za-progress--warning .za-progress__thumb {
  stroke: var(--za-theme-warning);
}

.za-progress--circle.za-progress--danger .za-progress__thumb {
  stroke: var(--za-theme-danger);
}

.za-progress--circle svg {
  width: 100%;
  height: 100%;
}
.za-progress--circle .za-progress__text {
  display: block;
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  margin: 0;
  text-align: center;
  line-height: 1;
  transform: translateY(-50%);
}

.za-progress--circle.za-progress--lg {
  width: 200px;
  height: 200px;
}
.za-progress--circle.za-progress--lg .za-progress__text {
  font-size: 30px;
}

.za-progress--circle.za-progress--md {
  width: var(--size);
  height: var(--size);
}
.za-progress--circle.za-progress--md .za-progress__text {
  font-size: var(--font-size);
}

.za-progress--circle.za-progress--sm {
  width: 80px;
  height: 80px;
}
.za-progress--circle.za-progress--sm .za-progress__text {
  font-size: 18px;
}

.za-progress--semi-circle {
  display: inline-block;
}
.za-progress--semi-circle .za-progress__track {
  stroke: var(--background);
  fill-opacity: 0;
}

.za-progress--semi-circle .za-progress__thumb {
  fill-opacity: 0;
  transition: stroke-dashoffset 0.6s ease, stroke 0.6s ease;
}

.za-progress--semi-circle.za-progress--primary .za-progress__thumb {
  stroke: var(--za-theme-primary);
}

.za-progress--semi-circle.za-progress--success .za-progress__thumb {
  stroke: var(--za-theme-success);
}

.za-progress--semi-circle.za-progress--warning .za-progress__thumb {
  stroke: var(--za-theme-warning);
}

.za-progress--semi-circle.za-progress--danger .za-progress__thumb {
  stroke: var(--za-theme-danger);
}

.za-progress--semi-circle svg {
  width: 100%;
  height: 100%;
}
.za-progress--semi-circle .za-progress__text {
  display: block;
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  margin: 0;
  text-align: center;
  line-height: 1;
}

.za-progress--semi-circle.za-progress--lg {
  width: 200px;
  height: 100px;
}
.za-progress--semi-circle.za-progress--lg .za-progress__text {
  font-size: 30px;
}

.za-progress--semi-circle.za-progress--md {
  width: var(--size);
  height: calc(var(--size) / 2);
}
.za-progress--semi-circle.za-progress--md .za-progress__text {
  font-size: var(--font-size);
}

.za-progress--semi-circle.za-progress--sm {
  width: 80px;
  height: 40px;
}
.za-progress--semi-circle.za-progress--sm .za-progress__text {
  font-size: 18px;
}