/* ============================================================
   Nova FX · navfx.css — nav bar upgrade (all pages)
   Standing effects + scroll state + mobile menu.
     .nv-sc      compact nav when scrolled (on <body>)
     .nv-ink     sliding underline under .nl links
     .nv-on      current-page link state
     .nv-burger  hamburger (<=720px) → .nv-menu panel
   ============================================================ */

/* ---- nav base upgrades ---- */
.nav{transition:background .3s,border-color .3s,box-shadow .3s}
.nav .container{transition:height .3s}
body.nv-sc .nav{background:rgba(4,9,26,.9);border-color:rgba(127,176,255,.16);
  box-shadow:0 10px 40px rgba(2,8,25,.5)}
body.nv-sc .nav .container{height:56px}

/* ---- bottom edge beam — faint sweep, only in compact (scrolled) state ---- */
.nav::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent 8%,rgba(56,140,255,0) 8%,rgba(56,140,255,.55) 50%,rgba(56,140,255,0) 92%,transparent 92%);
  background-size:220% 100%;animation:nv-beam 12s linear infinite;opacity:0;
  transition:opacity .45s}
body.nv-sc .nav::after{opacity:.35}
@keyframes nv-beam{from{background-position:0% 0}to{background-position:220% 0}}

/* ---- logo mark: slow breath + hover spin ---- */
.nav .logo img{transition:transform .45s cubic-bezier(.2,.8,.2,1),filter .3s}
.nav .logo:hover img{transform:rotate(8deg) scale(1.06);
  filter:drop-shadow(0 0 10px rgba(56,189,248,.7))}
.nav .logo{position:relative}
.nav .logo::after{content:'';position:absolute;inset:-4px;border-radius:8px;
  background:radial-gradient(60% 60% at 30% 30%,rgba(56,140,255,.16),transparent 70%);
  opacity:0;transition:opacity .3s;pointer-events:none}
.nav .logo:hover::after{opacity:1}

/* ---- link states: hover ink + active page ---- */
.nav a.nl{position:relative;padding:6px 2px;transition:color .2s}
.nav a.nl.nv-on{color:#e8f2ff}

/* sliding ink pill — single indicator: follows hover, rests under .nv-on
   (element injected by navfx.js into .nav .container; .nv-rest = seated, subtler) */
.nv-ink{position:absolute;top:50%;height:22px;border-radius:7px;
  background:rgba(56,140,255,.10);box-shadow:inset 0 0 0 1px rgba(94,164,255,.18);
  opacity:0;pointer-events:none;transform:translateY(-50%);
  transition:left .32s cubic-bezier(.2,.9,.25,1.15),width .32s cubic-bezier(.2,.9,.25,1.15),opacity .25s,background .25s,box-shadow .25s;
  z-index:-1}
.nv-ink.nv-rest{background:rgba(56,140,255,.06);
  box-shadow:inset 0 0 0 1px rgba(94,164,255,.11)}
.nav .container{position:relative}

/* link entrance cascade */
@keyframes nv-in{from{opacity:0;transform:translateY(-7px)}to{opacity:1;transform:none}}
body.nv-boot .nav a.nl{opacity:0;animation:nv-in .5s cubic-bezier(.2,.8,.2,1) forwards}
body.nv-boot .nav a.nl:nth-of-type(1){animation-delay:.05s}
body.nv-boot .nav a.nl:nth-of-type(2){animation-delay:.12s}
body.nv-boot .nav a.nl:nth-of-type(3){animation-delay:.19s}
body.nv-boot .nav a.nl:nth-of-type(4){animation-delay:.26s}
body.nv-boot .nav a.nl:nth-of-type(5){animation-delay:.33s}
body.nv-boot .nav a.nl:nth-of-type(6){animation-delay:.40s}
body.nv-boot .nav .logo{opacity:0;animation:nv-in .55s .02s cubic-bezier(.2,.8,.2,1) forwards}

/* ---- mobile burger ---- */
.nv-burger{display:none;position:relative;width:40px;height:40px;border:0;
  background:none;cursor:pointer;border-radius:10px;flex:none;
  transition:background .2s}
.nv-burger:hover{background:rgba(94,164,255,.08)}
.nv-burger i{position:absolute;left:11px;right:11px;height:1.8px;border-radius:2px;
  background:#cfe2ff;transition:transform .32s cubic-bezier(.2,.8,.2,1),top .32s,opacity .2s}
.nv-burger i:nth-child(1){top:14px}
.nv-burger i:nth-child(2){top:19px}
.nv-burger i:nth-child(3){top:24px}
.nv-open .nv-burger i:nth-child(1){top:19px;transform:rotate(45deg)}
.nv-open .nv-burger i:nth-child(2){opacity:0;transform:scaleX(.3)}
.nv-open .nv-burger i:nth-child(3){top:19px;transform:rotate(-45deg)}

/* ---- mobile menu panel ---- */
.nv-menu{position:fixed;inset:56px 0 0 0;z-index:99;display:flex;flex-direction:column;
  background:rgba(4,9,26,.97);backdrop-filter:blur(18px);
  border-top:1px solid rgba(127,176,255,.12);
  opacity:0;transform:translateY(-8px);pointer-events:none;
  transition:opacity .28s,transform .28s cubic-bezier(.2,.8,.2,1)}
.nv-open .nv-menu{opacity:1;transform:none;pointer-events:auto}
.nv-menu-in{flex:1;display:flex;flex-direction:column;justify-content:center;
  gap:2px;padding:24px 28px;max-width:480px;margin:0 auto;width:100%}
.nv-menu a{display:flex;align-items:center;justify-content:space-between;
  padding:15px 16px;font-size:19px;font-weight:700;color:#dbe9ff;letter-spacing:-.01em;
  text-decoration:none;border-radius:12px;
  opacity:0;transform:translateY(10px);transition:opacity .35s,transform .35s,background .2s}
.nv-open .nv-menu a{opacity:1;transform:none}
.nv-menu a:active,.nv-menu a:hover{background:rgba(56,140,255,.09)}
.nv-menu a svg{width:16px;height:16px;opacity:.45}
.nv-menu a.nv-on{color:#7fc4ff}
.nv-menu a.nv-on svg{opacity:1;color:#38bdf8}
.nv-menu .nv-mcta{margin:18px 16px 0;display:flex;justify-content:center}
.nv-menu .nv-mcta .btn{width:100%;justify-content:center;padding:14px;font-size:15px;white-space:nowrap}
.nv-menu .nv-mfoot{padding:14px 28px 22px;text-align:center;font-size:11px;
  font-family:ui-monospace,SFMono-Regular,Menlo,monospace;color:rgba(148,178,255,.5);
  letter-spacing:.1em;text-transform:uppercase}
@media (min-width:721px){.nv-menu,.nv-burger{display:none!important}}
@media (max-width:720px){.nv-burger{display:block}}

@media (prefers-reduced-motion:reduce){
  .nav::after,.nav .logo img{animation:none;transition:none}
  body.nv-boot .nav a.nl,body.nv-boot .nav .logo{opacity:1;animation:none}
  .nv-menu a{opacity:1;transform:none;transition:background .2s}
  .nv-ink{transition:none}
}
