/* ============================================================
   JANE-CC.AU — ANIMATIONS
   ============================================================ */

@keyframes fadeInDown {
  from { opacity: 0; transform: translateY(-20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(20px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); box-shadow: 0 0 0 0 rgba(0,212,180,0.4); }
  50%       { opacity: 0.8; transform: scale(1.1); box-shadow: 0 0 0 6px rgba(0,212,180,0); }
}

@keyframes scrollPulse {
  0%, 100% { opacity: 0.4; transform: scaleY(1); }
  50%       { opacity: 1; transform: scaleY(1.1); }
}

@keyframes float {
  0%, 100% { transform: translateY(0px); }
  50%       { transform: translateY(-8px); }
}

@keyframes shimmer {
  0%   { background-position: -200% center; }
  100% { background-position: 200% center; }
}

@keyframes scanline {
  0%   { transform: translateY(-100%); }
  100% { transform: translateY(100vh); }
}

@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 12px rgba(0,212,180,0.25); }
  50%       { box-shadow: 0 0 24px rgba(0,212,180,0.5); }
}

@keyframes countUp {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes slideInRight {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: translateX(0); }
}

/* Achievement card pop-in */
@keyframes popIn {
  0%   { opacity: 0; transform: scale(0.9) translateY(10px); }
  70%  { transform: scale(1.02) translateY(-2px); }
  100% { opacity: 1; transform: scale(1) translateY(0); }
}

/* Terminal slide-in */
@keyframes terminalOpen {
  from { opacity: 0; transform: translateY(16px) scale(0.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}

.terminal-window.open {
  animation: terminalOpen 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

/* Glow border animation on hero name */
@keyframes borderGlow {
  0%, 100% { border-color: rgba(0,212,180,0.2); }
  50%       { border-color: rgba(0,212,180,0.6); }
}

/* Loading shimmer for skeleton */
@keyframes skeletonShimmer {
  0%   { background-position: -400px 0; }
  100% { background-position: 400px 0; }
}
