/* ============================================
   JAZZ SITE — ANIMATIONS
   ============================================ */

/* --- Floating Musical Notes (homepage) --- */
@keyframes floatNote {
  0%   { transform: translateY(0) rotate(0deg); opacity: 0; }
  10%  { opacity: 0.6; }
  90%  { opacity: 0.4; }
  100% { transform: translateY(-110vh) rotate(360deg); opacity: 0; }
}

.note-float {
  position: absolute;
  font-size: 1.5rem;
  color: var(--gold);
  animation: floatNote var(--dur, 8s) ease-in infinite;
  animation-delay: var(--delay, 0s);
  pointer-events: none;
  user-select: none;
}

/* --- Waveform Bars (hero) --- */
@keyframes wave {
  0%, 100% { transform: scaleY(0.3); }
  50%       { transform: scaleY(1); }
}

.waveform {
  display: flex;
  align-items: center;
  gap: 3px;
  height: 40px;
}
.waveform .bar {
  width: 4px;
  height: 100%;
  background: var(--gold);
  border-radius: 2px;
  transform-origin: center bottom;
  animation: wave var(--spd, 1s) ease-in-out infinite;
  animation-delay: var(--d, 0s);
}

/* --- Pulse Glow --- */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(184,131,42,0.4); }
  50%       { box-shadow: 0 0 0 12px rgba(184,131,42,0); }
}

.pulse-glow { animation: pulseGlow 2.5s ease-in-out infinite; }

/* --- Rotate (vinyl) --- */
@keyframes spin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

.vinyl-spin { animation: spin 4s linear infinite; }
.vinyl-spin.paused { animation-play-state: paused; }

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

.shimmer-text {
  background: linear-gradient(90deg, var(--gold-dk) 0%, var(--gold-lt) 40%, var(--gold-dk) 60%, var(--gold-lt) 100%);
  background-size: 200%;
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
  animation: shimmer 3s linear infinite;
}

/* --- Typewriter --- */
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}
.cursor-blink {
  display: inline-block;
  width: 2px;
  background: var(--gold);
  margin-left: 2px;
  vertical-align: baseline;
  height: 1em;
  animation: blink 1s step-end infinite;
}

/* --- Bounce In --- */
@keyframes bounceIn {
  0%   { transform: scale(0.3); opacity: 0; }
  60%  { transform: scale(1.05); opacity: 1; }
  80%  { transform: scale(0.95); }
  100% { transform: scale(1); }
}
.bounce-in { animation: bounceIn 0.7s cubic-bezier(.36,.07,.19,.97) forwards; }

/* --- Slide In Left --- */
@keyframes slideInLeft {
  from { transform: translateX(-40px); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
.slide-in-left { animation: slideInLeft 0.6s ease forwards; }

/* --- Fade Up --- */
@keyframes fadeUp {
  from { transform: translateY(20px); opacity: 0; }
  to   { transform: none; opacity: 1; }
}
.fade-up { animation: fadeUp 0.6s ease forwards; }

/* --- Brain pulse animation (neuroscience page) --- */
@keyframes brainPulse {
  0%, 100% { opacity: 0.6; transform: scale(1); }
  50%       { opacity: 1; transform: scale(1.04); }
}

/* --- Piano key animation --- */
@keyframes keyPress {
  0%, 100% { transform: scaleY(1); background: white; }
  50%       { transform: scaleY(1.05); background: #f0e8d0; }
}
@keyframes blackKeyPress {
  0%, 100% { transform: scaleY(1); background: #1C1008; }
  50%       { transform: scaleY(1.03); background: #3A2A14; }
}
