@keyframes fadeInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}.animate-shimmer{animation:shimmer 3s infinite}@keyframes spin-slow{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.animate-spin-slow{animation:spin-slow 12s linear infinite}@keyframes typing{0%{width:0}40%{width:100%}60%{width:100%}to{width:0}}@keyframes blink{0%,to{border-color:transparent}50%{border-color:#10b981cc}}.typing-text{display:inline-block;overflow:hidden;white-space:nowrap;animation:typing 4s steps(20,end) infinite,blink .75s step-end infinite;max-width:-moz-fit-content;max-width:fit-content}@media(min-width:768px){.typing-text{animation:typing 6s steps(20,end) infinite,blink .75s step-end infinite}}@media(max-width:768px){.typing-text{animation:none;border-right:none;white-space:normal;overflow:visible}}.animate-fade-in-up{opacity:0;animation:fadeInUp .6s cubic-bezier(.4,0,.2,1) forwards}@media(hover:hover){.group:hover .group-hover\:opacity-0{opacity:0}.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:scale-105{transform:scale(1.05)}}@media(hover:none){.group .opacity-0,.group .group-hover\:opacity-100{opacity:0}}@media(prefers-reduced-motion:reduce){.animate-fade-in-up,.animate-shimmer,.animate-spin-slow,.animate-pulse,.typing-text{animation:none;transition:none}.animate-fade-in-up{opacity:1;transform:translateY(0)}.typing-text{border-right:none;white-space:normal;overflow:visible}}a:focus-visible{outline:2px solid #10b981;outline-offset:4px;transform:scale(1.05)}.rounded-full{will-change:transform,opacity;backface-visibility:hidden}::-moz-selection{background:#10b9814d;color:#fff}::selection{background:#10b9814d;color:#fff}
