@keyframes fade-in-up{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes blur-in{0%{opacity:0;filter:blur(8px)}to{opacity:1;filter:blur(0)}}@keyframes slide-in-start{0%{opacity:0;transform:translate(-40px)}to{opacity:1;transform:translate(0)}}@keyframes slide-in-end{0%{opacity:0;transform:translate(40px)}to{opacity:1;transform:translate(0)}}@keyframes sonar-pulse{0%{opacity:.6;transform:scale(.8)}to{opacity:0;transform:scale(2.2)}}@keyframes beam-vertical{0%{background-position:0 -100%}to{background-position:0 200%}}.animate-fade-in-up{animation:fade-in-up .7s cubic-bezier(.16,1,.3,1) both}.animate-blur-in{animation:blur-in .8s cubic-bezier(.16,1,.3,1) both}.animate-slide-in-start{animation:slide-in-start .7s cubic-bezier(.16,1,.3,1) both}.animate-slide-in-end{animation:slide-in-end .7s cubic-bezier(.16,1,.3,1) both}.animate-sonar-pulse{animation:sonar-pulse 2s ease-out infinite}.animate-beam-vertical{background:linear-gradient(180deg,transparent 0%,var(--primary, #3b82f6) 50%,transparent 100%);background-size:100% 200%;animation:beam-vertical 3s linear infinite}.flashlight-card{--mouse-x: 50%;--mouse-y: 50%;position:relative;overflow:hidden}.flashlight-card:before{content:"";position:absolute;inset:0;opacity:0;transition:opacity .3s;background:radial-gradient(400px circle at var(--mouse-x) var(--mouse-y),rgba(var(--primary-rgb, 59 130 246) / .08),transparent 60%);pointer-events:none;z-index:1}.flashlight-card:hover:before{opacity:1}.swiper-slide{height:auto}.swiper-pagination-bullet{width:10px;height:10px;background:var(--muted-foreground, #737373);opacity:.4;border-radius:9999px;transition:all .3s}.swiper-pagination-bullet-active{width:32px;background:var(--primary, #16a34a);opacity:1}
