/* ── Page-load cogs spinner ─────────────────────────────── */

@keyframes cog-spin-cw {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(360deg);
  }
}

@keyframes cog-spin-ccw {
  from {
    transform: rotate(0deg);
  }
  to {
    transform: rotate(-360deg);
  }
}

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

/* ── Wrapper ──────────────────────────────────────────── */
.app-loading {
  position: fixed;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  background: #0a0a0f;
  z-index: 9999;
  animation: loader-fade-in 0.3s ease forwards;
}

/* ── Cogs container ───────────────────────────────────── */
.cogs-loader {
  position: relative;
  width: 110px;
  height: 110px;
}

/* ── Shared cog styles ────────────────────────────────── */
.cog {
  position: absolute;
  fill: none;
}

/* Large cog – bottom-left, spins clockwise */
.cog--large {
  width: 80px;
  height: 80px;
  bottom: 0;
  left: 0;
  fill: url(#cog-grad-large);
  animation: cog-spin-cw 2.4s linear infinite;
  transform-origin: center center;
  filter: drop-shadow(0 0 8px rgba(139, 92, 246, 0.55));
}

/* Small cog – top-right, spins counter-clockwise (meshing) */
.cog--small {
  width: 52px;
  height: 52px;
  top: 0;
  right: 0;
  fill: url(#cog-grad-small);
  animation: cog-spin-ccw 1.6s linear infinite;
  transform-origin: center center;
  filter: drop-shadow(0 0 6px rgba(167, 139, 250, 0.45));
}

/* ── Gradient definitions injected via CSS trick ──────── */
/* We use a tiny inline SVG defs block rendered off-screen  */
.cog--large,
.cog--small {
  overflow: visible;
}

/* Fallback solid colours when gradients aren't resolved   */
.cog--large {
  fill: url(#cog-grad-large) #7c3aed;
}
.cog--small {
  fill: url(#cog-grad-small) #a78bfa;
}

/* ── Loading text ─────────────────────────────────────── */
.app-loading-text {
  margin-top: 28px;
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: rgba(167, 139, 250, 0.7);
}

/* ── Error panel (shown after 4 s if Angular fails) ───── */
#app-error {
  font-family: 'Space Grotesk', 'Inter', sans-serif;
  color: #e2e8f0;
  max-width: 560px;
  padding: 32px;
  text-align: left;
}

#app-error h1,
#app-error h2 {
  color: #a78bfa;
}

#app-error code {
  background: rgba(139, 92, 246, 0.15);
  border: 1px solid rgba(139, 92, 246, 0.3);
  border-radius: 4px;
  padding: 1px 6px;
  font-size: 0.88em;
}
