@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.typing-cursor{display:inline-block;width:4px;height:1em;background-color:currentColor;margin-left:.1em;vertical-align:middle}.animate-cursor,.typing-cursor{animation:blink 1s step-end infinite}.gradient-text{background-clip:text;-webkit-background-clip:text;color:transparent;-webkit-text-fill-color:transparent;background-image:linear-gradient(90deg,#000,#333,#fa0)}.dark .gradient-text{background-image:linear-gradient(90deg,#fff,#fa0)}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-15px)}to{transform:translateY(0)}}.float-animation{animation:float 7s ease-in-out infinite}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.pulse-slow{animation:pulse 5s ease-in-out infinite}@keyframes radar-ping{0%{transform:scale(1);opacity:.7}50%{transform:scale(7);opacity:0}to{transform:scale(1);opacity:0}}.radar-ping{animation:radar-ping 4s cubic-bezier(0,0,.2,1) infinite;animation-delay:calc(var(--animation-index, 0) * 1s)}.glass-card{background-color:hsla(0,0%,100%,.05);backdrop-filter:blur(10px)}.grid-lines{background-image:linear-gradient(to right,rgba(var(--primary-rgb),.05) 1px,transparent 1px),linear-gradient(to bottom,rgba(var(--primary-rgb),.05) 1px,transparent 1px);background-size:40px 40px;background-position:50%}