/* Splash iniziale (index.html) — visibile finché React non monta #root */
html,
body {
  margin: 0;
  min-height: 100%;
}

body.spo-app-booting {
  overflow: hidden;
  background: linear-gradient(165deg, #f8fafc 0%, #eef2ff 48%, #f1f5f9 100%);
}

.spo-app-preloader {
  position: fixed;
  inset: 0;
  z-index: 99999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.75rem;
  padding: 2rem;
  font-family: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;
  background: linear-gradient(165deg, #f8fafc 0%, #eef2ff 48%, #f1f5f9 100%);
}

.spo-app-preloader__logo-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.25rem;
  animation: spo-app-preloader-fade-in 0.45s ease-out both;
}

.spo-app-preloader__logo {
  width: min(220px, 72vw);
  height: auto;
  display: block;
  filter: drop-shadow(0 8px 24px rgba(72, 127, 255, 0.12));
}

.spo-app-preloader__spinner {
  width: 2.5rem;
  height: 2.5rem;
  border-radius: 50%;
  border: 3px solid rgba(72, 127, 255, 0.18);
  border-top-color: #1d4ed8;
  animation: spo-app-preloader-spin 0.85s linear infinite;
}

.spo-app-preloader__label {
  margin: 0;
  font-size: 0.875rem;
  font-weight: 500;
  letter-spacing: 0.02em;
  color: #64748b;
  animation: spo-app-preloader-pulse 1.6s ease-in-out infinite;
}

@keyframes spo-app-preloader-spin {
  to {
    transform: rotate(360deg);
  }
}

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

@keyframes spo-app-preloader-pulse {
  0%,
  100% {
    opacity: 0.55;
  }
  50% {
    opacity: 1;
  }
}
