@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.fade-in{animation:fadeIn .7s cubic-bezier(.23,1,.32,1);will-change:opacity}@keyframes slideUp{0%{transform:translateY(30px);opacity:0}70%{transform:translateY(-2px)}to{transform:translateY(0);opacity:1}}.slide-up{animation:slideUp .8s cubic-bezier(.16,1,.3,1);will-change:transform,opacity}@keyframes pulse{0%{transform:scale(1)}70%{transform:scale(1.03)}to{transform:scale(1)}}.pulse{animation:pulse 2.5s cubic-bezier(.4,0,.6,1) infinite;will-change:transform}.button-hover{transition:transform .4s cubic-bezier(.25,1,.5,1),box-shadow .4s cubic-bezier(.25,1,.5,1)}.button-hover:hover{transform:translateY(-3px);box-shadow:0 10px 25px rgba(0,0,0,.12)}@keyframes sectionEntrance{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.section-entrance{animation:sectionEntrance .9s cubic-bezier(.25,1,.5,1) forwards;will-change:transform,opacity}@keyframes typeIn{0%{width:0}to{width:100%}}.typing-animation{display:inline-block;overflow:hidden;white-space:nowrap;animation:typeIn 1.5s steps(40);will-change:width}@keyframes float{0%{transform:translateY(0)}50%{transform:translateY(-10px)}to{transform:translateY(0)}}.floating{animation:float 5s ease-in-out infinite;will-change:transform}@keyframes zoomRotate{0%{transform:scale(.9) rotate(-3deg);opacity:0}to{transform:scale(1) rotate(0);opacity:1}}.zoom-rotate{animation:zoomRotate .8s cubic-bezier(.34,1.56,.64,1) forwards;will-change:transform,opacity}@keyframes fadeIn3D{0%{transform:perspective(400px) rotateX(10deg);opacity:0}to{transform:perspective(400px) rotateX(0);opacity:1}}.fade-in-3d{animation:fadeIn3D .8s cubic-bezier(.25,1,.5,1) forwards;will-change:transform,opacity}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.shimmer-effect{background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.8) 50%,rgba(255,255,255,0));background-size:200% 100%;animation:shimmer 2.5s infinite;will-change:background-position}