/* ============================================================
   MAX FM | SIGNAL TV — KEYFRAME ANIMATIONS
   ============================================================ */

/* ── Fade ───────────────────────────────────────────────── */
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

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

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

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

/* ── Scale ──────────────────────────────────────────────── */
@keyframes scaleIn {
  from { opacity: 0; transform: scale(0.88); }
  to   { opacity: 1; transform: scale(1); }
}

@keyframes scalePulse {
  0%, 100% { transform: scale(1); }
  50%       { transform: scale(1.06); }
}

/* ── Blur Reveal ────────────────────────────────────────── */
@keyframes blurReveal {
  from { opacity: 0; filter: blur(20px); transform: scale(0.96); }
  to   { opacity: 1; filter: blur(0px);  transform: scale(1); }
}

/* ── Slide ──────────────────────────────────────────────── */
@keyframes slideInLeft {
  from { opacity: 0; transform: translateX(-60px); }
  to   { opacity: 1; transform: translateX(0); }
}

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

/* ── Loading / Spinner ──────────────────────────────────── */
@keyframes spin {
  to { transform: rotate(360deg); }
}

@keyframes orbitalSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes counterSpin {
  from { transform: rotate(0deg); }
  to   { transform: rotate(-360deg); }
}

/* ── Pulse / Glow ───────────────────────────────────────── */
@keyframes glowPulse {
  0%, 100% { box-shadow: 0 0 20px var(--glow-gold-soft), 0 0 40px transparent; }
  50%       { box-shadow: 0 0 40px var(--glow-gold), 0 0 80px var(--glow-gold-soft); }
}

@keyframes glowPulseBlue {
  0%, 100% { box-shadow: 0 0 20px var(--glow-blue-soft), 0 0 40px transparent; }
  50%       { box-shadow: 0 0 40px var(--glow-blue), 0 0 80px var(--glow-blue-soft); }
}

@keyframes textGlow {
  0%, 100% { text-shadow: 0 0 20px var(--glow-gold-soft); }
  50%       { text-shadow: 0 0 40px var(--glow-gold), 0 0 80px var(--glow-gold-soft); }
}

/* ── Live Indicator ─────────────────────────────────────── */
@keyframes livePulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.5; transform: scale(0.85); }
}

@keyframes liveRing {
  0%   { transform: scale(1);    opacity: 0.6; }
  100% { transform: scale(2.5);  opacity: 0; }
}

/* ── Light Sweep ────────────────────────────────────────── */
@keyframes lightSweep {
  0%   { transform: translateX(-150%) skewX(-20deg); opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { transform: translateX(350%) skewX(-20deg); opacity: 0; }
}

@keyframes lightSweepLoop {
  0%   { transform: translateX(-200%) skewX(-15deg); }
  100% { transform: translateX(400%) skewX(-15deg); }
}

/* ── Progress ───────────────────────────────────────────── */
@keyframes progressFill {
  from { width: 0%; }
  to   { width: 100%; }
}

/* ── Signal Wave ────────────────────────────────────────── */
@keyframes waveFlow {
  0%   { transform: translateX(0) scaleY(1); }
  25%  { transform: translateX(-15px) scaleY(1.2); }
  50%  { transform: translateX(-30px) scaleY(0.9); }
  75%  { transform: translateX(-15px) scaleY(1.1); }
  100% { transform: translateX(0) scaleY(1); }
}

/* ── Float ──────────────────────────────────────────────── */
@keyframes floatY {
  0%, 100% { transform: translateY(0); }
  50%       { transform: translateY(-16px); }
}

@keyframes floatRotate {
  0%   { transform: translateY(0) rotate(0deg); }
  50%  { transform: translateY(-12px) rotate(3deg); }
  100% { transform: translateY(0) rotate(0deg); }
}

/* ── Ripple ─────────────────────────────────────────────── */
@keyframes ripple {
  0%   { transform: scale(0); opacity: 0.6; }
  100% { transform: scale(4); opacity: 0; }
}

/* ── Typewriter ─────────────────────────────────────────── */
@keyframes blink {
  0%, 100% { opacity: 1; }
  50%       { opacity: 0; }
}

/* ── Gradient Shift ─────────────────────────────────────── */
@keyframes gradientShift {
  0%   { background-position: 0% 50%; }
  50%  { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

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

/* ── Border Glow ────────────────────────────────────────── */
@keyframes borderGlow {
  0%, 100% { border-color: rgba(255,190,30,0.2); }
  50%       { border-color: rgba(255,190,30,0.7); }
}

/* ── Equalizer Bar ──────────────────────────────────────── */
@keyframes eqBar1 {
  0%,100%{ height:20%; } 25%{ height:80%; } 50%{ height:40%; } 75%{ height:90%; }
}
@keyframes eqBar2 {
  0%,100%{ height:60%; } 25%{ height:30%; } 50%{ height:95%; } 75%{ height:50%; }
}
@keyframes eqBar3 {
  0%,100%{ height:40%; } 25%{ height:70%; } 50%{ height:20%; } 75%{ height:85%; }
}
@keyframes eqBar4 {
  0%,100%{ height:75%; } 25%{ height:45%; } 50%{ height:65%; } 75%{ height(30%); }
}
@keyframes eqBar4 {
  0%,100%{ height:75%; } 25%{ height:45%; } 50%{ height:65%; } 75%{ height:30%; }
}

/* ── Loading Logo ───────────────────────────────────────── */
@keyframes logoReveal {
  0%   { opacity: 0; transform: scale(0.7) translateY(20px); filter: blur(30px); }
  60%  { opacity: 1; filter: blur(0); }
  100% { opacity: 1; transform: scale(1) translateY(0); filter: blur(0); }
}

/* ── Vinyl Rotation ─────────────────────────────────────── */
@keyframes vinylSpin {
  from { transform: perspective(800px) rotateY(0deg) rotateZ(0deg); }
  to   { transform: perspective(800px) rotateY(360deg) rotateZ(360deg); }
}

/* ── TV Static ──────────────────────────────────────────── */
@keyframes tvStatic {
  0%   { opacity: 0.03; }
  50%  { opacity: 0.07; }
  100% { opacity: 0.03; }
}

/* ── Cursor ring ─────────────────────────────────────────── */
@keyframes cursorRingExpand {
  from { transform: translate(-50%,-50%) scale(0.8); opacity: 0; }
  to   { transform: translate(-50%,-50%) scale(1);   opacity: 1; }
}
