.app-loading {
  display: flex;
  width: 100%;
  height: 100%;
  justify-content: center;
  align-items: center;
  flex-direction: column;
  background: #f0f2f5;
}

.app-loading .app-loading-wrap {
  position: absolute;
  top: 50%;
  left: 50%;
  display: flex;
  transform: translate3d(-50%, -50%, 0);
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

.app-loading .app-loading-title {
  margin-bottom: 30px;
  font-size: 20px;
  font-weight: bold;
  text-align: center;
}

.app-loading .app-loading-logo {
  width: 100px;
  margin: 0 auto 15px auto;
}

.app-loading .app-loading-square {
  width: 32px;
  height: 32px;
  background: #2d8cf0;
  margin: 0 auto;
  animation: rotate-square 1s infinite cubic-bezier(.68, -0.55, .27, 1.55);
}

@keyframes rotate-square {
  0% {
    transform: rotate(0deg) scale(1);
  }

  50% {
    transform: rotate(180deg) scale(1.2);
  }

  100% {
    transform: rotate(360deg) scale(1);
  }
}

.app-loading-double-ring {
  display: inline-block;
  position: relative;
  width: 48px;
  height: 48px;
}

.app-loading-double-ring div {
  box-sizing: border-box;
  display: block;
  position: absolute;
  width: 48px;
  height: 48px;
  border: 5px solid #2d8cf0;
  border-radius: 50%;
  animation: double-ring 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite, ring-color 1.2s linear infinite;
  border-color: #2d8cf0 transparent transparent transparent;
}

.app-loading-double-ring div:nth-child(2) {
  animation-delay: -0.6s, -0.6s;
}

@keyframes double-ring {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

@keyframes ring-color {
  0% {
    border-top-color: #2d8cf0;
  }

  25% {
    border-top-color: #87bdff;
  }

  50% {
    border-top-color: #ffb300;
  }

  75% {
    border-top-color: #ff4d4f;
  }

  100% {
    border-top-color: #2d8cf0;
  }
}
