/* ===== Overlay loader ===== */
body.loading { overflow: hidden; }
body.loading #body-loader { display: flex; align-items: center; }

#body-loader{
  display: none;
  position: fixed;
  inset: 0;
  background-color: #001EB4 !important;
  background-repeat: no-repeat;
  background-position: center center;
  background-size: 100% 100%;
  z-index: 99999;
  justify-content: center;
  align-items: center;
}

/* ===== Spinner SVG ===== */
.spinner-svg{
  --size: 56px;
  --thickness: 4;
  --base: #2EC7F5;
  --highlight: #FFFFFF;
  --speed: 1.1s;
  width: var(--size);
  height: var(--size);
  display: block;
  animation: spin var(--speed) linear infinite;
}
.spinner-svg .ring-base{
  stroke: var(--base);
  stroke-width: var(--thickness);
  fill: none;
  opacity: .95;
}
.spinner-svg .ring-highlight{
  stroke: var(--highlight);
  stroke-width: var(--thickness);
  stroke-linecap: round;
  fill: none;
  stroke-dasharray: 62.8 251.3;
  animation: dash var(--speed) linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes dash {
  0%   { stroke-dashoffset: 0; }
  100% { stroke-dashoffset: 251.3; }
}

/* Spinner 3D */
.spinner-3d { perspective: 240px; text-align: center; }
.spinner-3d .spinner-item { margin: 0 auto; width: 60px; height: auto; }
.spinner-3d.infinite .spinner-item {
  -webkit-animation-name: spinner;
  -webkit-animation-timing-function: linear;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-duration: 2s;
  animation-name: spinner;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-duration: 2s;
  -webkit-transform-style: preserve-3d;
  -moz-transform-style: preserve-3d;
  -ms-transform-style: preserve-3d;
  transform-style: preserve-3d;
}
.spinner-3d.infinite.pulse .spinner-item{
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-name: pulse;
  animation-name: pulse;
}

@-webkit-keyframes spinner {
  from { -webkit-transform: rotateY(0deg); }
  to   { -webkit-transform: rotateY(-360deg); }
}
@keyframes spinner {
  from { transform: rotateY(0deg); }
  to   { transform: rotateY(-360deg); }
}
@-webkit-keyframes pulse {
  0% { transform: scale3d(1, 1, 1); }
  50%{ transform: scale3d(1.05, 1.05, 1.05); }
  100%{transform: scale3d(1, 1, 1); }
}
@keyframes pulse {
  0% { transform: scale3d(1, 1, 1); }
  50%{ transform: scale3d(1.05, 1.05, 1.05); }
  100%{transform: scale3d(1, 1, 1); }
}

     /* WebKit and Opera browsers */
      @-webkit-keyframes spinner {
        from {
          -webkit-transform: rotateY(0deg);
        }
        to {
          -webkit-transform: rotateY(-360deg);
        }
      }
      /* all other browsers */
      @keyframes spinner {
        from {
          -moz-transform: rotateY(0deg);
          -ms-transform: rotateY(0deg);
          transform: rotateY(0deg);
        }
        to {
          -moz-transform: rotateY(-360deg);
          -ms-transform: rotateY(-360deg);
          transform: rotateY(-360deg);
        }
      } 


      @-webkit-keyframes pulse {
        0% {
          -webkit-transform: scale3d(1, 1, 1);
          transform: scale3d(1, 1, 1);
        }

        50% {
          -webkit-transform: scale3d(1.05, 1.05, 1.05);
          transform: scale3d(1.05, 1.05, 1.05);
        }

        100% {
          -webkit-transform: scale3d(1, 1, 1);
          transform: scale3d(1, 1, 1);
        }
      }

      @keyframes pulse {
        0% {
          -webkit-transform: scale3d(1, 1, 1);
          transform: scale3d(1, 1, 1);
        }

        50% {
          -webkit-transform: scale3d(1.05, 1.05, 1.05);
          transform: scale3d(1.05, 1.05, 1.05);
        }

        100% {
          -webkit-transform: scale3d(1, 1, 1);
          transform: scale3d(1, 1, 1);
        }
      }
