/**
 * Loader
 */
.loader {
  display: inline-block;
  position: relative;
  width: var(--loader--size);
  height: var(--loader--size);
}
.loader::before {
  content: "";
  display: block;
  padding-top: 100%;
}
.loader .loader-text,
.loader > svg {
  position: absolute;
  height: 100%;
  width: 100%;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  margin: auto;
}
.loader .loader-text {
  display: flex;
  justify-content: center;
  align-items: center;
}
.loader > svg {
  animation: loader-rotate var(--loader--animation-duration, 1.2s) linear infinite;
  transform-origin: center center;
}
.loader > svg > circle {
  stroke: var(--loader--background);
  stroke-dasharray: 89, 200;
  stroke-dashoffset: -35px;
  animation: loader-dash var(--loader--animation-duration, 1.2s) ease-in-out infinite;
  stroke-linecap: round;
}
.loader.-auto {
  width: 100%;
  height: 100%;
}

@keyframes loader-rotate {
  100% {
    transform: rotate(360deg);
  }
}
@keyframes loader-dash {
  0% {
    stroke-dasharray: 1, 200;
    stroke-dashoffset: 0;
  }
  50% {
    stroke-dasharray: 89, 200;
    stroke-dashoffset: -35px;
  }
  100% {
    stroke-dasharray: 89, 200;
    stroke-dashoffset: -124px;
  }
}
/**
 * Color variants
 */
.loader.-primary {
  --loader--background: var(--loader--primary--background, var(--color-primary));
}
.loader.-light {
  --loader--background: var(--loader--light--background, var(--color-dark));
}
.loader.-dark {
  --loader--background: var(--loader--dark--background, var(--color-light));
}

/**
 * Size variants
 */
.loader.-sm {
  --loader--size: var(--loader--sm--size, calc(64px * var(--size-multiplier-sm)));
}
.loader.-md {
  --loader--size: var(--loader--md--size, calc(64px * var(--size-multiplier-md)));
}
.loader.-lg {
  --loader--size: var(--loader--lg--size, calc(64px * var(--size-multiplier-lg)));
}