/* VouNessa brand loading screen */

html,
body {
  margin: 0;
  padding: 0;
}

.app-loading {
  position: fixed;
  inset: 0;
  background: #0a0a0a;
  background-image: radial-gradient(ellipse at top center, rgba(245, 197, 24, 0.12) 0%, transparent 60%),
    radial-gradient(ellipse at bottom center, rgba(245, 197, 24, 0.06) 0%, transparent 55%);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  z-index: 9999;
  font-family: 'Montserrat', 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

.vn-loader {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 1.75rem;
  padding: 2rem;
}

.vn-loader__glow {
  position: absolute;
  top: 50%;
  left: 50%;
  width: 420px;
  height: 420px;
  max-width: 85vw;
  max-height: 85vw;
  transform: translate(-50%, -50%);
  background: radial-gradient(circle, rgba(245, 197, 24, 0.22) 0%, rgba(245, 197, 24, 0.08) 40%, transparent 70%);
  border-radius: 50%;
  animation: vn-pulse 2.4s ease-in-out infinite;
  pointer-events: none;
}

.vn-loader__logo {
  position: relative;
  height: 96px;
  max-width: 80vw;
  filter: invert(1);
  animation: vn-breathe 2.4s ease-in-out infinite;
}

.vn-loader__bar {
  position: relative;
  width: 240px;
  max-width: 70vw;
  height: 3px;
  background: rgba(255, 255, 255, 0.08);
  border-radius: 2px;
  overflow: hidden;
}

.vn-loader__bar-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  width: 35%;
  background: linear-gradient(90deg, transparent 0%, #f5c518 50%, transparent 100%);
  border-radius: 2px;
  animation: vn-slide 1.4s ease-in-out infinite;
}

.vn-loader__text {
  position: relative;
  color: rgba(255, 255, 255, 0.55);
  font-size: 0.8rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.25em;
}

@keyframes vn-pulse {
  0%,
  100% {
    opacity: 0.6;
    transform: translate(-50%, -50%) scale(0.95);
  }
  50% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1.05);
  }
}

@keyframes vn-breathe {
  0%,
  100% {
    opacity: 0.85;
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(1.03);
  }
}

@keyframes vn-slide {
  0% {
    left: -35%;
  }
  100% {
    left: 100%;
  }
}

@media (max-width: 480px) {
  .vn-loader__logo {
    height: 68px;
  }

  .vn-loader {
    gap: 1.25rem;
  }
}
