/**
 * Newabodes — first-visit splash / preloader (homepage)
 */

html.na-preloader-active,
html.na-preloader-active body {
  overflow: hidden;
  height: 100%;
}

.ne-preloader-container {
  position: fixed;
  inset: 0;
  z-index: 99999;
  pointer-events: none;
}

.ne-preloader-container.is-hidden {
  display: none;
}

.ne-preloader-overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: all;
  opacity: 1;
  background:
    radial-gradient(900px 480px at 12% 8%, rgba(13, 148, 136, 0.1) 0, transparent 55%),
    radial-gradient(720px 400px at 92% 88%, rgba(15, 118, 110, 0.07) 0, transparent 50%),
    var(--na-ivory, #faf8f3);
  transition:
    opacity 0.4s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1)),
    visibility 0.4s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1));
}

.ne-preloader-overlay.is-leaving {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.ne-preloader-close {
  position: absolute;
  top: max(16px, env(safe-area-inset-top, 0px));
  right: max(16px, env(safe-area-inset-right, 0px));
  width: 36px;
  height: 36px;
  border: 0;
  border-radius: var(--na-radius-sm, 10px);
  background: rgba(34, 40, 49, 0.05);
  color: var(--na-charcoal, #222831);
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: background 0.2s ease, color 0.2s ease;
  z-index: 2;
}

.ne-preloader-close:hover,
.ne-preloader-close:focus-visible {
  background: rgba(15, 118, 110, 0.1);
  color: var(--na-teal-dark, #0f766e);
  outline: none;
}

.ne-preloader-close:focus-visible {
  box-shadow: var(--na-focus-ring, 0 0 0 3px rgba(13, 148, 136, 0.32));
}

.ne-preloader-close-icon {
  position: relative;
  display: block;
  width: 14px;
  height: 14px;
}

.ne-preloader-close-icon::before,
.ne-preloader-close-icon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 0;
  width: 100%;
  height: 1.5px;
  border-radius: 1px;
  background: currentColor;
}

.ne-preloader-close-icon::before {
  transform: translateY(-50%) rotate(45deg);
}

.ne-preloader-close-icon::after {
  transform: translateY(-50%) rotate(-45deg);
}

.ne-preloader-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: min(320px, 88vw);
  padding: 24px 16px;
  text-align: center;
}

.ne-preloader-brand {
  margin-bottom: 28px;
  opacity: 0;
  transform: translateY(10px) scale(0.98);
  animation: ne-brand-in 0.55s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1)) 0.05s forwards;
}

.ne-brand-logo-img {
  width: auto;
  height: 52px;
  max-width: min(240px, 72vw);
  display: block;
  object-fit: contain;
}

.ne-preloader-progress {
  position: relative;
  width: min(168px, 46vw);
  height: 2px;
  margin-bottom: 20px;
  border-radius: var(--na-radius-pill, 999px);
  background: rgba(15, 118, 110, 0.12);
  overflow: hidden;
  opacity: 0;
  animation: ne-progress-in 0.4s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1)) 0.2s forwards;
}

.ne-preloader-progress-bar {
  display: block;
  height: 100%;
  width: 8%;
  border-radius: inherit;
  background: linear-gradient(90deg, var(--na-teal-dark, #0f766e), var(--na-teal-mid, #14b8a6));
  transform-origin: left center;
  transition: width 0.35s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1));
  will-change: width;
}

.ne-preloader-progress-bar.is-indeterminate {
  width: 36%;
  animation: ne-progress-pulse 1.1s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1)) infinite;
}

.ne-loading-text {
  margin: 0;
  font-family: var(--na-serif, "Cormorant Garamond", Georgia, serif);
  font-size: clamp(1.05rem, 2.4vw, 1.2rem);
  font-weight: 500;
  font-style: italic;
  letter-spacing: 0.01em;
  color: var(--na-muted, #64748b);
  opacity: 0;
  animation: ne-text-in 0.45s var(--na-ease-lux, cubic-bezier(0.22, 1, 0.36, 1)) 0.28s forwards;
}

@keyframes ne-brand-in {
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes ne-progress-in {
  to { opacity: 1; }
}

@keyframes ne-text-in {
  to { opacity: 1; }
}

@keyframes ne-progress-pulse {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(280%); }
}

@media (max-width: 768px) {
  .ne-brand-logo-img {
    height: 44px;
  }

  .ne-preloader-brand {
    margin-bottom: 24px;
  }

  .ne-preloader-progress {
    margin-bottom: 18px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .ne-preloader-brand,
  .ne-preloader-progress,
  .ne-loading-text,
  .ne-preloader-progress-bar.is-indeterminate {
    animation: none;
    opacity: 1;
    transform: none;
  }

  .ne-preloader-progress-bar {
    transition-duration: 0.15s;
  }

  .ne-preloader-overlay {
    transition-duration: 0.15s;
  }
}
