@keyframes neoCoreSpin{
  from{transform:rotate(0deg)}
  to{transform:rotate(360deg)}
}
@keyframes neoCoreSpinReverse{
  from{transform:rotate(360deg)}
  to{transform:rotate(0deg)}
}
@keyframes neoPulse{
  0%,100%{opacity:.58}
  50%{opacity:1}
}
@keyframes neoScan{
  0%{transform:translateX(-120%);opacity:0}
  15%{opacity:.7}
  85%{opacity:.7}
  100%{transform:translateX(120%);opacity:0}
}
@keyframes neoReveal{
  from{opacity:0;transform:translateY(12px);filter:blur(3px)}
  to{opacity:1;transform:none;filter:none}
}
@keyframes neoStatusBlink{
  0%,100%{opacity:.45}
  50%{opacity:1}
}

.energy-device::before{animation:neoCoreSpin 14s linear infinite}
.energy-device::after{animation:neoCoreSpinReverse 20s linear infinite}
.status-dot{animation:neoStatusBlink 2.4s ease-in-out infinite}

.neo-panel{
  animation:neoReveal .55s both;
}
.metric-grid .neo-panel:nth-child(1){animation-delay:.03s}
.metric-grid .neo-panel:nth-child(2){animation-delay:.08s}
.metric-grid .neo-panel:nth-child(3){animation-delay:.13s}
.metric-grid .neo-panel:nth-child(4){animation-delay:.18s}
.metric-grid .neo-panel:nth-child(5){animation-delay:.23s}
.metric-grid .neo-panel:nth-child(6){animation-delay:.28s}

.neo-action::after{
  content:"";
  position:absolute;
  top:0;bottom:0;
  width:34%;
  left:-45%;
  background:linear-gradient(90deg,transparent,rgba(143,242,255,.10),transparent);
  transform:skewX(-18deg);
}
.neo-action:hover::after{animation:neoScan .8s ease}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    scroll-behavior:auto!important;
  }
}


@keyframes packageTerminalSweep{
  from{transform:translateX(-110%);opacity:0}
  20%{opacity:.5}
  80%{opacity:.5}
  to{transform:translateX(110%);opacity:0}
}

.package-qualification-panel,
.package-card,
.purchase-preview-panel,
.purchase-execution-panel{
  animation:neoReveal .5s both;
}

.package-card:nth-child(2){animation-delay:.06s}
.package-card:nth-child(3){animation-delay:.12s}
.package-card:nth-child(4){animation-delay:.18s}
.package-card:nth-child(5){animation-delay:.24s}

.package-card.selected::after{
  content:"";
  position:absolute;
  left:0;right:0;top:0;
  height:1px;
  background:linear-gradient(90deg,transparent,var(--cyan),transparent);
  animation:neoRailCharge 2.8s ease-in-out infinite;
}


@keyframes networkNodeOrbit{
  from{transform:rotate(0deg) translateY(-89px)}
  to{transform:rotate(360deg) translateY(-89px)}
}

@keyframes networkLinePulse{
  0%,100%{opacity:.24}
  50%{opacity:1}
}

.node-orbit{
  margin:-4px 0 0 -4px;
  animation:networkNodeOrbit 8s linear infinite;
}

.upline-row i::after{
  animation:networkLinePulse 2.8s ease-in-out infinite;
}


@keyframes earningsMaturityPulse{
  0%,100%{box-shadow:inset 0 -2px 0 rgba(117,241,122,.30)}
  50%{box-shadow:inset 0 -2px 0 rgba(117,241,122,.90),0 0 18px rgba(117,241,122,.05)}
}

.maturity-schedule-card.matured{
  animation:neoReveal .5s both, earningsMaturityPulse 3.4s ease-in-out infinite;
}


@keyframes vestingClaimablePulse{
  0%,100%{box-shadow:inset 0 -2px 0 rgba(87,229,255,.34)}
  50%{box-shadow:inset 0 -2px 0 rgba(87,229,255,.9),0 0 20px rgba(87,229,255,.05)}
}

.vesting-schedule-card.claimable{
  animation:neoReveal .5s both, vestingClaimablePulse 3.2s ease-in-out infinite;
}


@keyframes salesMilestonePulse{
  0%,100%{box-shadow:0 0 7px rgba(87,229,255,.18)}
  50%{box-shadow:0 0 17px rgba(87,229,255,.50)}
}

.sales-milestone.done .sales-milestone-node span{
  animation:salesMilestonePulse 3s ease-in-out infinite;
}


@keyframes specialUnlockPulse{
  0%,100%{box-shadow:inset 0 -2px 0 rgba(255,192,77,.25)}
  50%{box-shadow:inset 0 -2px 0 rgba(255,192,77,.85),0 0 18px rgba(255,192,77,.05)}
}

.special-status-core.claimable{
  animation:specialUnlockPulse 3.2s ease-in-out infinite;
}


@keyframes historyRowBoot{
  from{opacity:0;transform:translateX(-8px)}
  to{opacity:1;transform:none}
}

.history-record{
  animation:historyRowBoot .35s both;
}

.history-record:nth-child(2){animation-delay:.03s}
.history-record:nth-child(3){animation-delay:.06s}
.history-record:nth-child(4){animation-delay:.09s}
.history-record:nth-child(5){animation-delay:.12s}


@keyframes forensicSignalPulse{
  0%,100%{transform:scale(.92);opacity:.7}
  50%{transform:scale(1);opacity:1}
}

@keyframes forensicScanLine{
  from{transform:translateY(-10px);opacity:0}
  15%,85%{opacity:.3}
  to{transform:translateY(110px);opacity:0}
}

.forensic-node.verified .forensic-node-signal i{
  animation:forensicSignalPulse 2.8s ease-in-out infinite;
}

.forensic-node-body::after{
  content:"";
  position:absolute;
  left:0;right:0;
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(87,229,255,.18),transparent);
  pointer-events:none;
}
