#initial-loading {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  background: #fff;
  z-index: 99999;
  transition: opacity 0.5s ease-out;
}
#initial-loading.fade-out {
  opacity: 0;
  pointer-events: none;
}
#initial-loading .dots {
  position: relative;
  width: 200px;
  height: 200px;
}
#initial-loading .dot {
  position: absolute;
  border-radius: 50%;
  animation-fill-mode: both;
}
#initial-loading .dot1 {
  z-index: 3;
  width: 40px;
  height: 40px;
  top: 80px;
  left: 80px;
  animation: ld-jump1 2s cubic-bezier(0.21, 0.98, 0.6, 0.99) infinite alternate,
             ld-color 3s ease-in-out infinite;
}
#initial-loading .dot2 {
  z-index: 2;
  width: 80px;
  height: 80px;
  top: 60px;
  left: 60px;
  opacity: 0.9;
  animation: ld-jump2 2s cubic-bezier(0.21, 0.98, 0.6, 0.99) infinite alternate,
             ld-color 3s ease-in-out infinite 0.25s;
}
#initial-loading .dot3 {
  z-index: 1;
  width: 120px;
  height: 120px;
  top: 40px;
  left: 40px;
  opacity: 0.7;
  animation: ld-jump3 2s cubic-bezier(0.21, 0.98, 0.6, 0.99) infinite alternate,
             ld-color 3s ease-in-out infinite 0.5s;
}
#initial-loading .brand {
  margin-top: 60px;
  font-size: 18px;
  color: #666;
  letter-spacing: 0.2em;
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
@keyframes ld-jump1 {
  0%, 70% { box-shadow: 2px 2px 3px 2px rgba(0,0,0,.3); transform: scale(0); }
  100% { box-shadow: 10px 10px 15px 0 rgba(0,0,0,.3); transform: scale(1); }
}
@keyframes ld-jump2 {
  0%, 40% { box-shadow: 2px 2px 3px 2px rgba(0,0,0,.3); transform: scale(0); }
  100% { box-shadow: 10px 10px 15px 0 rgba(0,0,0,.3); transform: scale(1); }
}
@keyframes ld-jump3 {
  0%, 10% { box-shadow: 2px 2px 3px 2px rgba(0,0,0,.3); transform: scale(0); }
  100% { box-shadow: 10px 10px 15px 0 rgba(0,0,0,.3); transform: scale(1); }
}
@keyframes ld-color {
  0% { background: #cf3f3f; }
  16% { background: #ffaa00; }
  32% { background: #ffdb00; }
  48% { background: #15803d; }
  66% { background: #0062ff; }
  83% { background: #9400e4; }
  100% { background: #cf3f3f; }
}