/* ═══════════════════════════════════════════════════
   PORTFOLIO — NEON GLOW + SEQUENTIAL REVEAL
   Shared across works / services / skills /
   journey / experience pages
═══════════════════════════════════════════════════ */

/* ── Keyframes ── */
@keyframes na-revealUp {
  from { opacity: 0; transform: translateY(60px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes na-fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes na-fadeInUp {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes na-borderPulse {
  0%, 100% { opacity: 1; }
  50%       { opacity: .4; }
}
@keyframes na-filterFadeIn {
  from { opacity: 0; transform: translateY(16px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes na-scaleDown {
  from { opacity: 1; transform: scale(1); }
  to   { opacity: 0; transform: scale(.94); }
}
@keyframes na-scaleUp {
  from { opacity: 0; transform: scale(.94) translateY(20px); }
  to   { opacity: 1; transform: scale(1) translateY(0); }
}

/* ── Generic hidden-until-revealed state ── */
.na-hidden {
  opacity: 0 !important;
  transform: translateY(60px);
}

/* ── Page-level hero items ── */
.na-badge-anim  { animation: na-fadeIn   .5s ease forwards; }
.na-title-anim  { animation: na-fadeInUp .6s .2s ease both; }
.na-sub-anim    { animation: na-fadeInUp .6s .3s ease both; }
.na-filter-anim { animation: na-filterFadeIn .5s ease both; }

/* ── Common neon card shell ── */
.na-card {
  transition:
    transform .3s ease,
    border-color .3s ease,
    box-shadow .3s ease,
    background .3s ease !important;
  animation-fill-mode: both;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Filter active neon */
.na-filter-active {
  box-shadow: 0 0 15px rgba(249,115,22,.5) !important;
  border-color: #f97316 !important;
  color: #f97316 !important;
}

/* Filter-exit / filter-enter */
.na-filter-exit  { animation: na-scaleDown .2s ease forwards !important; }
.na-filter-enter { animation: na-scaleUp   .3s ease both !important; }
