/* Gaia Urban Preloader — structural + animation styles */

body.gup-lock { overflow: hidden !important; height: 100vh !important; }

.gup-preloader,
#gup-preloader {
  position: fixed;
  inset: 0;
  z-index: 999999;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  transition: opacity .9s ease, filter .9s ease, transform .9s ease;
  cursor: pointer;
}
#gup-preloader.exit {
  opacity: 0;
  filter: blur(12px);
  transform: scale(1.08);
  pointer-events: none;
}

#gup-preloader .gup-glow {
  position: absolute;
  width: 340px;
  height: 340px;
  border-radius: 50%;
  background: radial-gradient(circle, var(--gup-accent, #AD8A4E) 0%, transparent 70%);
  opacity: 0.16;
  filter: blur(28px);
  animation: gupGlowPulse 2.6s ease-in-out infinite;
}
@keyframes gupGlowPulse {
  0%, 100% { transform: scale(1); opacity: .14; }
  50% { transform: scale(1.15); opacity: .24; }
}

#gup-preloader .gup-shape { width: 180px; height: auto; position: relative; z-index: 2; overflow: visible; }
#gup-preloader .gup-logo-img img { max-height: 64px; width: auto; position: relative; z-index: 2; }

#gup-preloader .gup-word {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 1.7rem;
  color: var(--gup-text, #2B2019);
  opacity: 0;
  animation: gupRise .9s cubic-bezier(.2,.7,.3,1) forwards;
  margin-top: 16px;
  position: relative;
  z-index: 2;
}
#gup-preloader .gup-word .accent { color: var(--gup-accent, #AD8A4E); }
@keyframes gupRise { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }

#gup-preloader .gup-line { height: 1px; background: var(--gup-accent, #AD8A4E); margin-top: 16px; opacity: 0; position: relative; z-index: 2; }

#gup-preloader .gup-hint {
  position: absolute;
  bottom: 40px;
  left: 50%;
  transform: translateX(-50%);
  font-family: 'Work Sans', sans-serif;
  font-size: 0.76rem;
  letter-spacing: 0.05em;
  color: var(--gup-text, #2B2019);
  opacity: 0;
  animation: gupRise .8s ease forwards;
}

/* ---------- Style: roots ---------- */
.style-roots .gup-word,
.style-roots.gup-preloader .gup-word { animation-delay: 1.6s; }
.style-roots .gup-hint { animation-delay: 2.7s; }
.style-roots .seed {
  fill: var(--gup-accent, #AD8A4E);
  transform-origin: 150px 220px;
  animation: gupSeedPulse .6s cubic-bezier(.34,1.56,.64,1) both;
}
.style-roots .trunk {
  fill: none; stroke: var(--gup-text, #2B2019); stroke-width: 2.4; stroke-linecap: round;
  stroke-dasharray: 1; stroke-dashoffset: 1; pathLength: 1;
  animation: gupGrow 1s .4s cubic-bezier(.4,0,.2,1) forwards;
}
.style-roots .root {
  fill: none; stroke: var(--gup-accent, #AD8A4E); stroke-width: 1.8; stroke-linecap: round;
  stroke-dasharray: 1; stroke-dashoffset: 1; pathLength: 1;
  animation: gupGrow .9s cubic-bezier(.4,0,.2,1) forwards;
}
.style-roots .root.r1 { animation-delay: 1s; }
.style-roots .root.r2 { animation-delay: 1.1s; }
@keyframes gupGrow { to { stroke-dashoffset: 0; } }
@keyframes gupSeedPulse { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.3); opacity: 1; } 100% { transform: scale(1); opacity: 1; } }

/* ---------- Style: rings ---------- */
.style-rings .gup-word { animation-delay: 1.1s; }
.style-rings .gup-hint { animation-delay: 2.3s; }
.style-rings .gup-rings { position: relative; width: 150px; height: 150px; display: flex; align-items: center; justify-content: center; }
.style-rings .ring {
  position: absolute; width: 150px; height: 150px; border: 1.5px solid var(--gup-accent, #AD8A4E);
  border-radius: 50%; animation: gupRingPulse 1.7s cubic-bezier(.4,0,.2,1) infinite;
}
.style-rings .ring:nth-child(2) { animation-delay: .4s; }
.style-rings .ring:nth-child(3) { animation-delay: .8s; }
.style-rings .ring-center {
  width: 8px; height: 8px; border-radius: 50%; background: var(--gup-accent, #AD8A4E);
  position: relative; z-index: 2; animation: gupSeedPulse .6s cubic-bezier(.34,1.56,.64,1) both;
}
@keyframes gupRingPulse { 0% { transform: scale(.3); opacity: .8; } 100% { transform: scale(1.6); opacity: 0; } }

/* ---------- Style: line draw ---------- */
.style-linedraw .gup-word { animation-delay: 1s; }
.style-linedraw .gup-hint { animation-delay: 2.1s; }
.style-linedraw .gup-line { width: 0; opacity: 1; animation: gupLineGrow .9s .3s cubic-bezier(.4,0,.2,1) forwards; }
@keyframes gupLineGrow { to { width: 140px; } }

/* ---------- Style: minimal ---------- */
.style-minimal .gup-word { animation-delay: .2s; }
.style-minimal .gup-hint { animation-delay: 1.3s; }

@media (prefers-reduced-motion: reduce) {
  #gup-preloader * { animation-duration: .01ms !important; animation-delay: 0s !important; transition-duration: .01ms !important; }
}
