#app-loader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  justify-content: center;
  background: radial-gradient(
    circle at center,
    rgba(121, 191, 248, 0.08),
    rgba(255, 255, 255, 0.98) 45%
  );
  backdrop-filter: blur(6px);
  opacity: 1;
  visibility: visible;
  transition:
    opacity 0.45s ease,
    visibility 0.45s ease;
}
/* Fade out */
#app-loader.fade-out {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}
#app-loader .loader-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 18px;
  transform: scale(1);
  transition: transform 0.45s ease;
}
#app-loader.fade-out .loader-content {
  transform: scale(1.08);
}
/* Main loader */
.loader {
  position: relative;
  width: 64px;
  height: 64px;
  display: flex;
  align-items: center;
  justify-content: center;
}
/* Rotating ring */
.loader-ring {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  border: 4px solid rgba(121, 191, 248, 0.2);
  border-top-color: #0b78d1;
  border-right-color: #79bff8;
  animation: spin 1s linear infinite;
  box-shadow:
    0 0 12px rgba(11, 120, 209, 0.2),
    inset 0 0 8px rgba(121, 191, 248, 0.1);
}
/* Second ring */
.loader-ring-2 {
  inset: 9px;
  border-width: 3px;
  border-color: rgba(121, 191, 248, 0.15);
  border-bottom-color: #79bff8;
  border-left-color: #0b78d1;
  animation:
    spin-reverse 0.8s linear infinite,
    pulse 1.5s ease-in-out infinite;
}
/* Animations */
@keyframes spin {
  to {
    transform: rotate(360deg);
  }
}
@keyframes spin-reverse {
  to {
    transform: rotate(-360deg);
  }
}
@keyframes pulse {
  0%,
  100% {
    opacity: 0.5;
  }
  50% {
    opacity: 1;
  }
}
