/* ============================================ */
/* Page Loader Styles */
/* ============================================ */

.page-loader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: var(--color-background);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  transition:
    opacity 0.5s ease,
    visibility 0.5s ease;
}

.page-loader.fade-out {
  opacity: 0;
  visibility: hidden;
}

.loader-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-xl);
}

/* Spinner Ring */
.loader-spinner {
  position: relative;
  width: 80px;
  height: 80px;
}

.spinner-ring {
  position: absolute;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  border: 4px solid transparent;
  border-top-color: #2f6fed;
  border-right-color: #2f6fed;
  animation: spin 1.2s cubic-bezier(0.5, 0, 0.5, 1) infinite;
}

.spinner-ring:nth-child(1) {
  animation-delay: -0.45s;
  border-top-color: #2f6fed;
  border-right-color: #2f6fed;
}

.spinner-ring:nth-child(2) {
  animation-delay: -0.3s;
  border-top-color: #8b5cf6;
  border-right-color: #8b5cf6;
  width: 90%;
  height: 90%;
  top: 5%;
  left: 5%;
}

.spinner-ring:nth-child(3) {
  animation-delay: -0.15s;
  border-top-color: #14b8a6;
  border-right-color: #14b8a6;
  width: 80%;
  height: 80%;
  top: 10%;
  left: 10%;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }

  100% {
    transform: rotate(360deg);
  }
}

/* Loader Text */
.loader-text {
  font-size: 15px;
  font-weight: 700;
  color: #111827;
  letter-spacing: 0.5px;
  animation: pulse 1.5s ease-in-out infinite;
  margin-top: 15px;
}

@keyframes pulse {
  0%,
  100% {
    opacity: 1;
  }

  50% {
    opacity: 0.5;
  }
}

/* Pulsing Dots */
.loader-dots {
  display: flex;
  gap: var(--spacing-sm);
}

.loader-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #2f6fed;
  animation: bounce 1.4s ease-in-out infinite;
}

.loader-dot:nth-child(1) {
  animation-delay: -0.32s;
  background: #2f6fed;
}

.loader-dot:nth-child(2) {
  animation-delay: -0.16s;
  background: #8b5cf6;
}

.loader-dot:nth-child(3) {
  background: #14b8a6;
}

@keyframes bounce {
  0%,
  80%,
  100% {
    transform: scale(0);
    opacity: 0.5;
  }

  40% {
    transform: scale(1);
    opacity: 1;
  }
}

/* Logo Animation (optional) */
.loader-logo {
  width: 48px;
  height: 48px;
  margin-bottom: var(--spacing-md);
  animation: float 2s ease-in-out infinite;
}

@keyframes float {
  0%,
  100% {
    transform: translateY(0px);
  }

  50% {
    transform: translateY(-10px);
  }
}

/* Shimmer Effect */
.loader-shimmer {
  position: relative;
  overflow: hidden;
}

.loader-shimmer::after {
  content: "";
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);
  animation: shimmer 2s infinite;
}

@keyframes shimmer {
  0% {
    left: -100%;
  }

  100% {
    left: 100%;
  }
}
