.sap-loader {
  margin: 20px auto;
  width: 140px;
  height: 140px;
  border: 6px solid rgba(0, 10, 23, 0.15);
  border-top-color: var(--primary-color);
  border-radius: 50%;
  animation: sap-spin 0.8s linear infinite;
  position: absolute;
  top: -40px;
}

@keyframes sap-spin {
  to { transform: rotate(360deg); }
}

.loader {
  height: 48px;
  border-radius: 50%;
  position: relative;
  margin-left: 16px;
  animation: rotate 1s linear infinite;

  width: 0;
  opacity: 0;
  visibility: hidden;
  transition: all 0.4s ease;
}

.loader.visible {
  opacity: 1;
  width: 48px;
  visibility: visible;
}

.loader::before , .loader::after {
  content: "";
  box-sizing: border-box;
  position: absolute;
  inset: 0px;
  border-radius: 50%;
  border: 5px solid #FFF;
  animation: prixClipFix 2s linear infinite ;
}
.loader::after{
  inset: 8px;
  transform: rotate3d(90, 90, 0, 180deg );
  border-color: #FFF;
}

@keyframes rotate {
  0%   {transform: rotate(0deg)}
  100%   {transform: rotate(360deg)}
}

@keyframes prixClipFix {
    0%   {clip-path:polygon(50% 50%,0 0,0 0,0 0,0 0,0 0)}
    50%  {clip-path:polygon(50% 50%,0 0,100% 0,100% 0,100% 0,100% 0)}
    75%, 100%  {clip-path:polygon(50% 50%,0 0,100% 0,100% 100%,100% 100%,100% 100%)}
}