@keyframes fire-fade{0%{opacity:1;filter:brightness(1.5) saturate(1.2);transform:scale(1.05)}50%{opacity:.7;filter:brightness(1.2) saturate(1);transform:scale(1.02)}100%{opacity:0;filter:brightness(.8) saturate(.5);transform:scale(1)}}@keyframes ember-flicker{0%,100%{opacity:.8;transform:translateY(0) scale(1)}25%{opacity:1;transform:translateY(-2px) scale(1.1)}50%{opacity:.6;transform:translateY(-4px) scale(.9)}75%{opacity:.9;transform:translateY(-1px) scale(1.05)}}@keyframes smoke-rise{0%{opacity:.8;transform:translateY(0) scale(1);filter:blur(2px)}100%{opacity:0;transform:translateY(-100px) scale(2);filter:blur(10px)}}@keyframes ghost-appear{0%{opacity:0;transform:translateY(20px) scale(.9);filter:blur(10px)}60%{opacity:.8;filter:blur(2px)}100%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}}@keyframes ghost-disappear{0%{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}100%{opacity:0;transform:translateY(-20px) scale(.9);filter:blur(10px)}}@keyframes ghost-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes ghost-pulse{0%,100%{box-shadow:0 0 20px var(--color-ghost);opacity:.9}50%{box-shadow:0 0 40px var(--color-ghost),0 0 60px var(--color-ghost);opacity:1}}@keyframes silhouette-glow{0%,100%{filter:drop-shadow(0 0 10px var(--glow-color, var(--color-primary)))}50%{filter:drop-shadow(0 0 25px var(--glow-color, var(--color-primary))) drop-shadow(0 0 40px var(--glow-color, var(--color-primary)))}}@keyframes poi-pulse{0%,100%{transform:scale(1);box-shadow:0 0 0 0 var(--color-ghost)}50%{transform:scale(1.1);box-shadow:0 0 20px 10px transparent}}@keyframes poi-discovered{0%{transform:scale(0);opacity:0}50%{transform:scale(1.3)}100%{transform:scale(1);opacity:1}}@keyframes marker-bounce{0%,100%{transform:translateY(0)}40%{transform:translateY(-15px)}60%{transform:translateY(-8px)}}@keyframes ripple{0%{transform:scale(.8);opacity:1}100%{transform:scale(2);opacity:0}}@keyframes recording-glow{0%,100%{box-shadow:0 0 10px var(--color-accent)}50%{box-shadow:0 0 30px var(--color-accent),0 0 60px var(--color-primary)}}@keyframes recording-pulse{0%,100%{transform:scale(1);background-color:var(--color-error)}50%{transform:scale(1.1);background-color:#ff5252}}@keyframes waveform-flow{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}@keyframes level-meter{0%,100%{height:20%}50%{height:80%}}@keyframes fade-in{0%{opacity:0}100%{opacity:1}}@keyframes fade-out{0%{opacity:1}100%{opacity:0}}@keyframes slide-up{0%{opacity:0;transform:translateY(30px)}100%{opacity:1;transform:translateY(0)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-30px)}100%{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translateX(30px)}100%{opacity:1;transform:translateX(0)}}@keyframes slide-in-left{0%{opacity:0;transform:translateX(-30px)}100%{opacity:1;transform:translateX(0)}}@keyframes scale-in{0%{opacity:0;transform:scale(.9)}100%{opacity:1;transform:scale(1)}}@keyframes scale-out{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(.9)}}@keyframes xp-float{0%{opacity:1;transform:translateY(0) scale(1)}100%{opacity:0;transform:translateY(-50px) scale(1.5)}}@keyframes card-reveal{0%{clip-path:inset(100% 0 0 0)}100%{clip-path:inset(0 0 0 0)}}@keyframes badge-unlock{0%{transform:scale(0) rotate(-180deg);opacity:0}50%{transform:scale(1.2) rotate(10deg)}75%{transform:scale(.95) rotate(-5deg)}100%{transform:scale(1) rotate(0);opacity:1}}@keyframes confetti-fall{0%{transform:translateY(-100%) rotate(0);opacity:1}100%{transform:translateY(100vh) rotate(720deg);opacity:0}}@keyframes particle-burst{0%{transform:translate(0,0) scale(1);opacity:1}100%{transform:translate(var(--x,50px),var(--y,-50px)) scale(0);opacity:0}}@keyframes star-spin{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(1.2)}100%{transform:rotate(360deg) scale(1)}}@keyframes cursor-blink{0%,50%{opacity:1}100%,51%{opacity:0}}@keyframes typewriter-cursor{0%,100%{border-right-color:var(--text-accent)}50%{border-right-color:transparent}}@keyframes progress-fill{0%{width:0%}100%{width:var(--progress,100%)}}@keyframes spinner{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}@keyframes pulse-ring{0%{transform:scale(.8);opacity:.8}50%{transform:scale(1);opacity:.4}100%{transform:scale(1.2);opacity:0}}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}@keyframes btn-press{0%,100%{transform:scale(1)}50%{transform:scale(.95)}}@keyframes btn-glow{0%,100%{box-shadow:0 0 5px var(--color-accent)}50%{box-shadow:0 0 20px var(--color-accent),0 0 30px var(--color-accent)}}@keyframes bubble-appear{0%{opacity:0;transform:scale(.8) translateY(10px)}100%{opacity:1;transform:scale(1) translateY(0)}}@keyframes bubble-disappear{0%{opacity:1;transform:scale(1) translateY(0)}100%{opacity:0;transform:scale(.8) translateY(-10px)}}.animate-fade-in{animation:fade-in var(--transition-medium) forwards}.animate-fade-out{animation:fade-out var(--transition-medium) forwards}.animate-slide-up{animation:slide-up var(--transition-medium) forwards}.animate-slide-down{animation:slide-down var(--transition-medium) forwards}.animate-scale-in{animation:scale-in var(--transition-medium) forwards}.animate-ghost-appear{animation:ghost-appear var(--transition-slow) forwards}.animate-ghost-float{animation:3s ease-in-out infinite ghost-float}.animate-pulse{animation:2s ease-in-out infinite ghost-pulse}.animate-recording{animation:1s ease-in-out infinite recording-pulse}.animate-badge-unlock{animation:badge-unlock .6s var(--easing-bounce) forwards}.animate-particle{animation:.8s ease-out forwards particle-burst}.delay-100{animation-delay:.1s}.delay-200{animation-delay:.2s}.delay-300{animation-delay:.3s}.delay-400{animation-delay:.4s}.delay-500{animation-delay:.5s}.duration-fast{animation-duration:var(--transition-fast)}.duration-medium{animation-duration:var(--transition-medium)}.duration-slow{animation-duration:var(--transition-slow)}.duration-slower{animation-duration:var(--transition-slower)}