:host {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 800;
  max-width: 100%;
}

*,
*::after,
*::before {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
  -moz-appearance: none;
  -webkit-appearance: none;
  appearance: none;
  background: transparent;
  border: 0;
}

.duet-spinner {
  -webkit-user-select: none;
  user-select: none;
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 800;
  width: 24px;
  height: 24px;
  color: rgb(0, 119, 179);
  border: 2px solid transparent;
  border-left: 2px solid currentColor;
  border-radius: 50%;
  transform: translateZ(0) translateX(-50%) translateY(-50%);
  transform-origin: 0% 0%;
  animation: duetRotate 0.6s linear infinite;
}
.duet-spinner.duet-theme-turva {
  color: rgb(198, 12, 48);
}
.duet-spinner::after {
  position: absolute;
  top: 50%;
  left: 50%;
  z-index: 200;
  box-sizing: content-box;
  width: 100%;
  height: 100%;
  overflow: hidden;
  content: "";
  border: 2px solid currentColor;
  border-radius: 50%;
  opacity: 0.3;
  transform: translateZ(0) translateX(-50%) translateY(-50%);
  transform-origin: 0% 0%;
}
.duet-spinner.medium {
  width: 36px;
  height: 36px;
  border-width: 4px;
}
.duet-spinner.medium::after {
  border-width: 4px;
}
.duet-spinner.large {
  width: 72px;
  height: 72px;
  border-width: 8px;
}
.duet-spinner.large::after {
  border-width: 8px;
}

@keyframes duetRotate {
  0% {
    transform: translateZ(0) rotate(0deg) translateX(-50%) translateY(-50%);
  }
  100% {
    transform: translateZ(0) rotate(360deg) translateX(-50%) translateY(-50%);
  }
}
:host(.duet-theme-turva2) .duet-theme-turva.duet-spinner {
  color: rgb(230, 23, 64);
}