.loading_wrap {
    width: 100%;
    height: 100%;
    overflow: hidden;
    background: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    position: absolute;
    top: 0;
    left: 0;
    z-index: 9999;
  }

  .loader_logo {
    display: none;
  }

  .loading {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    border: none;
    background: transparent;
    width: auto;
    height: auto;
    position: static;
  }

  .loading span {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: #8b5cf6;
    display: inline-block;
    animation: loader-dots 1.2s ease-in-out infinite;
    -webkit-animation: loader-dots 1.2s ease-in-out infinite;
  }

  .loading span:nth-child(1) { animation-delay: 0s;    -webkit-animation-delay: 0s; }
  .loading span:nth-child(2) { animation-delay: 0.15s; -webkit-animation-delay: 0.15s; }
  .loading span:nth-child(3) { animation-delay: 0.3s;  -webkit-animation-delay: 0.3s; }

  @keyframes loader-dots {
    0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
    40%           { transform: scale(1);   opacity: 1;   }
  }

  @-webkit-keyframes loader-dots {
    0%, 80%, 100% { -webkit-transform: scale(0.6); opacity: 0.4; }
    40%           { -webkit-transform: scale(1);   opacity: 1;   }
  }

  #app {
    animation: app-fade-in 0.5s ease-out both;
    -webkit-animation: app-fade-in 0.5s ease-out both;
  }

  @keyframes app-fade-in {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0);  }
  }

  @-webkit-keyframes app-fade-in {
    from { opacity: 0; -webkit-transform: translateY(8px); }
    to   { opacity: 1; -webkit-transform: translateY(0);  }
  }
