/*
  NeuroVerse Works — Living Signal
  Additive-only atmospheric layer. No layout footprint, no pointer capture,
  invisible at rest, reduced-motion safe, and print disabled.
*/
#nvw-living-signal{
  --nvw-signal-cyan:rgba(138,219,226,.92);
  --nvw-signal-cyan-soft:rgba(138,219,226,.28);
  --nvw-signal-amber:rgba(255,217,131,.92);
  --nvw-signal-amber-soft:rgba(231,184,90,.23);
  --nvw-signal-x:50vw;
  --nvw-signal-y:24vh;
  position:fixed;
  inset:0;
  z-index:2147481000;
  overflow:hidden;
  pointer-events:none;
  opacity:0;
  contain:strict;
  isolation:isolate;
}
#nvw-living-signal[data-family="editorial"]{
  --nvw-signal-cyan:rgba(184,224,229,.84);
  --nvw-signal-cyan-soft:rgba(184,224,229,.22);
}
#nvw-living-signal[data-family="research"]{
  --nvw-signal-cyan:rgba(138,219,226,.96);
  --nvw-signal-amber:rgba(242,207,114,.82);
}
#nvw-living-signal[data-family="manuscript"]{
  --nvw-signal-cyan:rgba(177,205,224,.78);
  --nvw-signal-amber:rgba(255,217,131,.94);
}
#nvw-living-signal[data-family="restricted"]{
  --nvw-signal-cyan:rgba(211,91,102,.82);
  --nvw-signal-cyan-soft:rgba(211,91,102,.21);
  --nvw-signal-amber:rgba(255,217,131,.78);
}
#nvw-living-signal.is-active{opacity:1}
#nvw-living-signal *{box-sizing:border-box}

.nvw-signal-wash,
.nvw-signal-axis,
.nvw-signal-node,
.nvw-signal-core,
.nvw-signal-network{
  position:absolute;
  inset:0;
  opacity:0;
  will-change:transform,opacity;
}

.nvw-signal-wash{
  background:
    radial-gradient(circle at var(--nvw-signal-x) var(--nvw-signal-y),var(--nvw-signal-cyan-soft) 0,rgba(138,219,226,.08) 10%,transparent 30%),
    radial-gradient(circle at var(--nvw-signal-x) var(--nvw-signal-y),var(--nvw-signal-amber-soft) 0,transparent 17%);
  mix-blend-mode:screen;
}
.nvw-signal-axis::before,
.nvw-signal-axis::after{
  content:"";
  position:absolute;
  left:var(--nvw-signal-x);
  top:var(--nvw-signal-y);
  transform-origin:center;
  background:linear-gradient(90deg,transparent,var(--nvw-signal-cyan),var(--nvw-signal-amber),transparent);
  box-shadow:0 0 14px var(--nvw-signal-cyan-soft);
}
.nvw-signal-axis::before{
  width:min(68vw,920px);
  height:1px;
  transform:translate(-50%,-50%) scaleX(0);
}
.nvw-signal-axis::after{
  width:1px;
  height:min(42vh,420px);
  background:linear-gradient(180deg,transparent,var(--nvw-signal-cyan),var(--nvw-signal-amber),transparent);
  transform:translate(-50%,-50%) scaleY(0);
}

.nvw-signal-node{left:var(--nvw-signal-x);top:var(--nvw-signal-y);inset:auto;width:1px;height:1px}
.nvw-signal-node::before,
.nvw-signal-node::after{
  content:"";
  position:absolute;
  left:0;
  top:0;
  width:88px;
  height:88px;
  margin:-44px;
  border:1px solid var(--nvw-signal-cyan);
  border-radius:50%;
  opacity:0;
  transform:scale(.18);
  box-shadow:0 0 24px var(--nvw-signal-cyan-soft),inset 0 0 20px rgba(255,217,131,.06);
}
.nvw-signal-node::after{
  width:34px;
  height:34px;
  margin:-17px;
  border-color:var(--nvw-signal-amber);
  box-shadow:0 0 18px var(--nvw-signal-amber-soft);
}

.nvw-signal-core{display:grid;place-items:center}
.nvw-signal-core::before,
.nvw-signal-core::after{
  content:"";
  position:absolute;
  width:min(52vw,560px);
  aspect-ratio:1;
  border-radius:50%;
  border:1px solid var(--nvw-signal-amber);
  opacity:0;
  transform:scale(.22);
  box-shadow:0 0 44px var(--nvw-signal-amber-soft),inset 0 0 44px rgba(138,219,226,.07);
}
.nvw-signal-core::after{
  width:min(31vw,320px);
  border-color:var(--nvw-signal-cyan);
  box-shadow:0 0 35px var(--nvw-signal-cyan-soft);
}

.nvw-signal-network{display:grid;place-items:center;filter:drop-shadow(0 0 8px rgba(138,219,226,.22))}
.nvw-signal-network svg{width:min(86vw,820px);height:min(70vh,650px);overflow:visible}
.nvw-signal-network .nvw-net-line{
  fill:none;
  stroke:url(#nvwSignalGradient);
  stroke-width:1.25;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:1;
  stroke-dashoffset:1;
  opacity:.7;
}
.nvw-signal-network .nvw-net-orbit{
  fill:none;
  stroke:rgba(138,219,226,.17);
  stroke-width:1;
  vector-effect:non-scaling-stroke;
  stroke-dasharray:3 9;
  opacity:0;
}
.nvw-signal-network .nvw-net-node{
  fill:rgba(5,7,10,.92);
  stroke:var(--nvw-signal-cyan);
  stroke-width:1.5;
  vector-effect:non-scaling-stroke;
  opacity:0;
  transform-box:fill-box;
  transform-origin:center;
  transform:scale(.2);
}
.nvw-signal-network .nvw-net-heart{
  fill:var(--nvw-signal-amber);
  opacity:0;
  transform-box:fill-box;
  transform-origin:center;
  transform:scale(.2);
}

#nvw-living-signal.is-arrival .nvw-signal-wash{animation:nvwSignalWash 1450ms cubic-bezier(.2,.72,.25,1) both}
#nvw-living-signal.is-arrival .nvw-signal-axis{animation:nvwSignalVisible 1100ms ease both}
#nvw-living-signal.is-arrival .nvw-signal-axis::before{animation:nvwSignalAxisX 1100ms cubic-bezier(.2,.7,.2,1) both}
#nvw-living-signal.is-arrival .nvw-signal-axis::after{animation:nvwSignalAxisY 1100ms cubic-bezier(.2,.7,.2,1) 90ms both}
#nvw-living-signal.is-arrival .nvw-signal-node::before{animation:nvwSignalRing 1250ms cubic-bezier(.18,.75,.18,1) 80ms both}
#nvw-living-signal.is-arrival .nvw-signal-node::after{animation:nvwSignalRing 920ms cubic-bezier(.18,.75,.18,1) 180ms both}

#nvw-living-signal.is-target .nvw-signal-wash{animation:nvwSignalWash 900ms ease-out both}
#nvw-living-signal.is-target .nvw-signal-axis{animation:nvwSignalVisible 760ms ease both}
#nvw-living-signal.is-target .nvw-signal-axis::before{animation:nvwSignalAxisX 760ms cubic-bezier(.2,.7,.2,1) both}
#nvw-living-signal.is-target .nvw-signal-node::before{animation:nvwSignalRing 880ms cubic-bezier(.15,.72,.18,1) both}
#nvw-living-signal.is-target .nvw-signal-node::after{animation:nvwSignalRing 650ms cubic-bezier(.15,.72,.18,1) 80ms both}

#nvw-living-signal[data-world="vault"].is-target .nvw-signal-node::before,
#nvw-living-signal[data-world="vault"].is-arrival .nvw-signal-node::before{animation-name:nvwSignalInwardRing}
#nvw-living-signal[data-world="vault"].is-target .nvw-signal-node::after,
#nvw-living-signal[data-world="vault"].is-arrival .nvw-signal-node::after{animation-name:nvwSignalInwardRing}
#nvw-living-signal[data-world="impact"].is-target .nvw-signal-node::before{animation-duration:1150ms}
#nvw-living-signal[data-world="university"].is-arrival .nvw-signal-axis::after{animation-duration:1350ms}

#nvw-living-signal.is-core .nvw-signal-wash{animation:nvwSignalWash 2400ms ease-out both}
#nvw-living-signal.is-core .nvw-signal-core::before{animation:nvwSignalCore 2300ms cubic-bezier(.12,.68,.22,1) both}
#nvw-living-signal.is-core .nvw-signal-core::after{animation:nvwSignalCore 1750ms cubic-bezier(.12,.68,.22,1) 180ms both}
#nvw-living-signal.is-core .nvw-signal-node::before{animation:nvwSignalRing 1250ms ease-out 420ms both}
#nvw-living-signal.is-core .nvw-signal-node::after{animation:nvwSignalRing 900ms ease-out 530ms both}

#nvw-living-signal.is-network .nvw-signal-network{animation:nvwSignalNetworkVisibility 3300ms ease both}
#nvw-living-signal.is-network .nvw-net-orbit{animation:nvwSignalOrbit 2700ms ease 180ms both}
#nvw-living-signal.is-network .nvw-net-line{animation:nvwSignalDraw 2300ms cubic-bezier(.2,.7,.2,1) 260ms both}
#nvw-living-signal.is-network .nvw-net-node{animation:nvwSignalNodeAwake 2200ms ease both}
#nvw-living-signal.is-network .nvw-net-node:nth-of-type(2){animation-delay:360ms}
#nvw-living-signal.is-network .nvw-net-node:nth-of-type(3){animation-delay:520ms}
#nvw-living-signal.is-network .nvw-net-node:nth-of-type(4){animation-delay:680ms}
#nvw-living-signal.is-network .nvw-net-node:nth-of-type(5){animation-delay:840ms}
#nvw-living-signal.is-network .nvw-net-node:nth-of-type(6){animation-delay:1000ms}
#nvw-living-signal.is-network .nvw-net-heart{animation:nvwSignalHeart 2150ms cubic-bezier(.18,.72,.2,1) 950ms both}

@keyframes nvwSignalVisible{0%,100%{opacity:0}12%,72%{opacity:1}}
@keyframes nvwSignalWash{0%{opacity:0;transform:scale(.82)}18%{opacity:.78}62%{opacity:.28}100%{opacity:0;transform:scale(1.18)}}
@keyframes nvwSignalAxisX{0%{opacity:0;transform:translate(-50%,-50%) scaleX(0)}22%{opacity:.82}66%{opacity:.42;transform:translate(-50%,-50%) scaleX(1)}100%{opacity:0;transform:translate(-50%,-50%) scaleX(1.14)}}
@keyframes nvwSignalAxisY{0%{opacity:0;transform:translate(-50%,-50%) scaleY(0)}28%{opacity:.56}70%{opacity:.22;transform:translate(-50%,-50%) scaleY(1)}100%{opacity:0;transform:translate(-50%,-50%) scaleY(1.08)}}
@keyframes nvwSignalRing{0%{opacity:0;transform:scale(.15)}18%{opacity:.92}64%{opacity:.28}100%{opacity:0;transform:scale(2.8)}}
@keyframes nvwSignalInwardRing{0%{opacity:0;transform:scale(2.9)}28%{opacity:.72}76%{opacity:.28}100%{opacity:0;transform:scale(.16)}}
@keyframes nvwSignalCore{0%{opacity:0;transform:scale(.22)}18%{opacity:.7}46%{opacity:.18;transform:scale(.74)}58%{opacity:.62;transform:scale(.80)}100%{opacity:0;transform:scale(1.32)}}
@keyframes nvwSignalNetworkVisibility{0%,100%{opacity:0}12%,80%{opacity:1}}
@keyframes nvwSignalDraw{0%{stroke-dashoffset:1;opacity:0}18%{opacity:.75}76%{stroke-dashoffset:0;opacity:.72}100%{stroke-dashoffset:0;opacity:0}}
@keyframes nvwSignalOrbit{0%{opacity:0;transform:rotate(-6deg)}24%{opacity:.55}72%{opacity:.25}100%{opacity:0;transform:rotate(5deg)}}
@keyframes nvwSignalNodeAwake{0%{opacity:0;transform:scale(.2)}30%{opacity:.9;transform:scale(1)}48%{opacity:.55;transform:scale(.82)}65%{opacity:.9;transform:scale(1)}100%{opacity:0;transform:scale(1.8)}}
@keyframes nvwSignalHeart{0%{opacity:0;transform:scale(.2)}18%{opacity:1;transform:scale(1)}34%{opacity:.45;transform:scale(.66)}50%{opacity:1;transform:scale(1.15)}70%{opacity:.4;transform:scale(.84)}100%{opacity:0;transform:scale(2.4)}}

@media (max-width:700px){
  #nvw-living-signal{--nvw-signal-y:20vh}
  .nvw-signal-axis::before{width:88vw}
  .nvw-signal-axis::after{height:34vh}
  .nvw-signal-network svg{width:94vw;height:58vh}
  .nvw-signal-core::before{width:82vw}
  .nvw-signal-core::after{width:50vw}
}
@media (prefers-reduced-motion:reduce),(update:slow){
  #nvw-living-signal{display:none!important}
}
@media print{
  #nvw-living-signal{display:none!important}
}
