@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes slideIn{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes glow{0%,to{box-shadow:0 0 20px hsl(var(--primary)/.3)}50%{box-shadow:0 0 30px hsl(var(--primary)/.5)}}@keyframes gradient-shift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}@keyframes bounce-gentle{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.animate-fade-in{animation:fadeIn .5s ease-out}.animate-slide-in{animation:slideIn .3s ease-out}.animate-pulse-slow{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.animate-float{animation:float 3s ease-in-out infinite}.animate-bounce-gentle{animation:bounce-gentle 2s ease-in-out infinite}.gradient-bg{background:linear-gradient(135deg,hsl(var(--primary)) 0,hsl(var(--primary)/.8) 100%)}.gradient-bg-animated{background:linear-gradient(-45deg,hsl(var(--primary)),hsl(var(--primary)/.7),hsl(var(--accent)),hsl(var(--primary)/.8));background-size:400% 400%;animation:gradient-shift 8s ease infinite}.glass-effect{background:rgba(255,255,255,.05);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.1)}.glass-effect-strong{background:rgba(255,255,255,.1);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.2)}.hover-lift{transition:transform .3s cubic-bezier(.4,0,.2,1),box-shadow .3s ease}.hover-lift:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 20px 40px rgba(0,0,0,.15)}.price-up{color:#10b981}.price-down,.price-up{animation:fadeIn .3s ease-out;font-weight:600}.price-down{color:#ef4444}.shimmer-loading{background:linear-gradient(90deg,hsl(var(--muted)) 0,hsl(var(--muted)/.5) 50%,hsl(var(--muted)) 100%);background-size:1000px 100%;animation:shimmer 2s infinite}.glow-effect{box-shadow:0 0 20px hsl(var(--primary)/.3);animation:glow 2s ease-in-out infinite}.glow-effect-hover{transition:box-shadow .3s ease}.glow-effect-hover:hover{box-shadow:0 0 30px hsl(var(--primary)/.5)}.card-hover{transition:all .3s cubic-bezier(.4,0,.2,1);border:1px solid hsl(var(--border))}.card-hover:hover{transform:translateY(-6px) scale(1.01);box-shadow:0 25px 50px rgba(0,0,0,.15);border-color:hsl(var(--primary)/.3)}.ribbit-logo{position:relative;display:inline-block}.gradient-text{background:linear-gradient(135deg,hsl(var(--primary)),hsl(var(--accent)));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;font-weight:700}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:hsl(var(--muted));border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:linear-gradient(135deg,hsl(var(--primary)/.5),hsl(var(--accent)/.5));border-radius:4px;-webkit-transition:background .3s ease;transition:background .3s ease}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:linear-gradient(135deg,hsl(var(--primary)/.7),hsl(var(--accent)/.7))}@keyframes ticker{0%{transform:translateY(0)}to{transform:translateY(-100%)}}.ticker{animation:ticker .3s ease-out}.card-border-gradient{position:relative;border-radius:var(--radius);overflow:hidden}.card-border-gradient:before{content:"";position:absolute;inset:0;border-radius:var(--radius);padding:2px;background:linear-gradient(135deg,hsl(var(--primary)/.3),hsl(var(--accent)/.3),transparent);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}@keyframes sparkle{0%,to{opacity:0;transform:scale(0)}50%{opacity:1;transform:scale(1)}}.sparkle{position:relative}.sparkle:after{content:"✨";position:absolute;top:-5px;right:-5px;font-size:.8em;animation:sparkle 2s ease-in-out infinite;opacity:.7}