@keyframes gradient-x{0%,to{background-position:0% 50%}50%{background-position:100% 50%}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px #14b8a64d}50%{box-shadow:0 0 40px #14b8a699}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes slide-up{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes slide-in-right{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}.animate-gradient-x{background-size:200% 200%;animation:gradient-x 3s ease infinite}.animate-float{animation:float 6s ease-in-out infinite}.animate-pulse-glow{animation:pulse-glow 2s ease-in-out infinite}.animate-shimmer{background:linear-gradient(90deg,transparent,rgba(255,255,255,.1),transparent);background-size:200% 100%;animation:shimmer 2s infinite}.animate-slide-up{animation:slide-up .6s ease-out forwards}.animate-slide-in-right{animation:slide-in-right .6s ease-out forwards}.animation-delay-100{animation-delay:.1s}.animation-delay-200{animation-delay:.2s}.animation-delay-300{animation-delay:.3s}.animation-delay-400{animation-delay:.4s}.animation-delay-500{animation-delay:.5s}.animation-delay-1000{animation-delay:1s}.animation-delay-2000{animation-delay:2s}.animation-delay-3000{animation-delay:3s}.animation-delay-4000{animation-delay:4s}.reveal{opacity:0;transform:translateY(30px);transition:all .8s cubic-bezier(.4,0,.2,1)}.reveal.active{opacity:1;transform:translateY(0)}.reveal-left{opacity:0;transform:translate(-30px);transition:all .8s cubic-bezier(.4,0,.2,1)}.reveal-left.active{opacity:1;transform:translate(0)}.reveal-right{opacity:0;transform:translate(30px);transition:all .8s cubic-bezier(.4,0,.2,1)}.reveal-right.active{opacity:1;transform:translate(0)}.stagger-children>*{opacity:0;transform:translateY(20px)}.stagger-children.active>*:nth-child(1){transition-delay:0ms}.stagger-children.active>*:nth-child(2){transition-delay:.1s}.stagger-children.active>*:nth-child(3){transition-delay:.2s}.stagger-children.active>*:nth-child(4){transition-delay:.3s}.stagger-children.active>*:nth-child(5){transition-delay:.4s}.stagger-children.active>*:nth-child(6){transition-delay:.5s}.stagger-children.active>*{opacity:1;transform:translateY(0);transition:all .6s cubic-bezier(.4,0,.2,1)}.gradient-text{background:linear-gradient(135deg,#14b8a6,#0d9488,#0891b2,#6366f1,#14b8a6);background-size:200% 200%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:gradient-x 4s ease infinite}.hover-lift{transition:transform .3s ease,box-shadow .3s ease}.hover-lift:hover{transform:translateY(-8px);box-shadow:0 20px 40px #0000001a}.dark .hover-lift:hover{box-shadow:0 20px 40px #0000004d}.glass{background:#ffffff1a;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.dark .glass{background:#0f172a99;border:1px solid rgba(255,255,255,.1)}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-track{background:#f1f5f9}.dark ::-webkit-scrollbar-track{background:#1e293b}::-webkit-scrollbar-thumb{background:#94a3b8;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#64748b}.dark ::-webkit-scrollbar-thumb{background:#475569}.dark ::-webkit-scrollbar-thumb:hover{background:#64748b}::selection{background:#14b8a64d;color:inherit}*:focus-visible{outline:2px solid #14b8a6;outline-offset:2px}html{scroll-behavior:smooth}.skeleton{background:linear-gradient(90deg,#e2e8f0 25%,#f1f5f9,#e2e8f0 75%);background-size:200% 100%;animation:shimmer 1.5s infinite}.dark .skeleton{background:linear-gradient(90deg,#334155 25%,#475569,#334155 75%);background-size:200% 100%}.btn-press:active{transform:scale(.97)}.card-glow{position:relative;overflow:hidden}.card-glow:before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(20,184,166,.1),transparent);transition:left .5s ease}.card-glow:hover:before{left:100%}.typing-cursor:after{content:"|";animation:blink 1s step-end infinite}@keyframes blink{0%,to{opacity:1}50%{opacity:0}}@media(max-width:640px){html{font-size:14px}}
