@keyframes blink{0%,to{opacity:1}50%{opacity:0}}.animate-blink{animation:blink 1s infinite}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-float{animation:float 6s ease-in-out infinite}@keyframes typing{0%{width:0}to{width:100%}}.typing-effect{overflow:hidden;white-space:nowrap;border-right:2px solid #6a00f4;animation:typing 3.5s steps(40),blink 1s step-end infinite}@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(106,0,244,.4)}70%{box-shadow:0 0 0 10px rgba(106,0,244,0)}to{box-shadow:0 0 0 0 rgba(106,0,244,0)}}.animate-pulse-button:hover{animation:pulse 1.5s infinite}@keyframes gradient{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.animate-gradient{background:linear-gradient(270deg,#6a00f4,#06f);background-size:200% 200%;animation:gradient 8s ease infinite}.code-block{position:relative;overflow:hidden;font-family:IBM Plex Mono,monospace}.code-block:before{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:linear-gradient(180deg,#6a00f4,#06f)}.code-line-numbers{position:absolute;left:0;top:0;padding:1rem .5rem;counter-reset:line;text-align:right;color:#6e6e6e;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-line-numbers span{counter-increment:line;display:block;line-height:1.5rem}.code-line-numbers span:before{content:counter(line);font-size:.85em}.touch-target{min-height:44px;min-width:44px}.tech-card{transition:all .3s cubic-bezier(.25,.8,.25,1);background:rgba(26,26,29,.7);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.05)}.tech-card:hover{transform:translateY(-5px);box-shadow:0 10px 30px rgba(0,0,0,.4),0 0 20px rgba(106,0,244,.35);border:1px solid rgba(106,0,244,.3)}.form-input:focus{box-shadow:0 0 0 2px rgba(106,0,244,.5)}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:rgba(26,26,29,.7);border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb{background:rgba(106,0,244,.5);border-radius:4px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:rgba(106,0,244,.7)}@keyframes data-flow{0%{stroke-dashoffset:1000;opacity:.8}to{stroke-dashoffset:0;opacity:.3}}.data-flow-line{stroke-dasharray:1000;stroke-dashoffset:1000;animation:data-flow 10s linear infinite}