/* NexusAGI intro. Created and designed by Vasa Serafin. © 2026 Vasa Serafin. All rights reserved. */
/* NexusAGI keyword-brain intro + first-load shell (intro lane 2026-10-12). Loaded in <head> after landing.css so the
   page can stay hidden (html.nx-pre) until the intro reveals it. nx-pre is only ever added by script, so
   without JavaScript nothing is hidden. */
html.nx-pre { background: #05070f; }
html.nx-pre body > *:not(.nx-intro):not(.nxp) { visibility: hidden; }

.nx-intro { position: fixed; inset: 0; z-index: 99990; overflow: hidden; contain: strict;
  background: radial-gradient(ellipse 70% 55% at 50% 40%, #16214d 0%, #0a1030 48%, #05070f 100%);
  perspective: 1100px; -webkit-tap-highlight-color: transparent; user-select: none; -webkit-user-select: none; }
/* HF15-BRAIN-LOADER: the .nx-stage / .nx-brain / .nx-head / .nx-halo / .nx-t / .nx-spark DOM layers (and their per-disc
   box-shadow + infinite ::before/::after animations) are gone: discs, outlines, halo and sparks are drawn on one canvas
   in intro.js. Only the overlay, the canvas, the brand line and the seed spinner remain. */
.nx-brand { position: absolute; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 10px; opacity: 0;
  color: #f2f6ff; font: 700 clamp(20px, 3.2vw, 30px)/1 -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Arial, sans-serif;
  letter-spacing: -.02em; text-shadow: 0 0 18px rgba(120, 160, 255, .7); white-space: nowrap; pointer-events: none; }
.nx-brand img { flex: none; }
.nx-skip { position: absolute; left: 0; right: 0; bottom: 18px; text-align: center; font: 500 13px/1 -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  color: rgba(210, 222, 255, .8); pointer-events: none; z-index: 2; opacity: 0; }

/* the real page rises into place under the fading intro */
@keyframes nxPageIn { from { transform: scale(.985); opacity: .35; } to { transform: none; opacity: 1; } }
html.nx-reveal .site-header, html.nx-reveal main, html.nx-reveal .site-footer { animation: nxPageIn .55s cubic-bezier(.16, 1, .3, 1) both; }

@media (prefers-reduced-motion: reduce) {
  html.nx-reveal .site-header, html.nx-reveal main, html.nx-reveal .site-footer { animation: none; }
}
.nx-dots { position: absolute; left: 0; top: 0; pointer-events: none; }
/* seed spinner (same as the inline head one) stays until the first discs are in */
.nx-intro::before, .nx-intro::after { content: ""; position: absolute; left: 50%; top: 44%; border-radius: 50%; border: 2px solid transparent;
  animation: nxSeed 1.1s linear infinite; transition: opacity .5s; pointer-events: none; }
.nx-intro::before { width: 46px; height: 46px; margin: -23px; border-top-color: #22d3ee; border-right-color: #22d3ee66; }
.nx-intro::after { width: 28px; height: 28px; margin: -14px; border-bottom-color: #e879f9; border-left-color: #e879f966; animation-direction: reverse; }
.nx-intro.live::before, .nx-intro.live::after { opacity: 0; }
@keyframes nxSeed { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .nx-intro::before, .nx-intro::after { animation: none; } }
