@keyframes errorToNeutral{0%{border-color:#ef4444;box-shadow:0 0 0 3px rgba(239,68,68,.1)}to{border-color:var(--color-slate-200);box-shadow:none}}@keyframes neutralToSuccess{0%{border-color:var(--color-slate-200);transform:scale(1)}50%{border-color:var(--color-emerald-300);transform:scale(1.02)}to{border-color:var(--color-slate-300);transform:scale(1)}}@keyframes fadeInUp{0%{opacity:0;transform:translate3d(0,40px,0)}to{opacity:1;transform:translate3d(0,0,0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes bounce{0%,20%,50%,80%,to{transform:translateY(0)}40%{transform:translateY(-20px)}60%{transform:translateY(-10px)}}@keyframes pulse{0%{transform:scale(.95);box-shadow:0 0 0 0 rgba(16,185,129,.7)}70%{transform:scale(1);box-shadow:0 0 0 15px transparent}to{transform:scale(.95);box-shadow:0 0 0 0 transparent}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-2px)}20%,40%,60%,80%{transform:translateX(2px)}}@keyframes successSlideIn{0%{opacity:0;transform:translateY(30px) scale(.95)}50%{opacity:.8;transform:translateY(-5px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes submitLoading{0%,to{transform:scale(1)}50%{transform:scale(.98)}}@keyframes formSuccess{0%,to{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.01);filter:brightness(1.05)}}@keyframes inputFocus{0%{transform:translateY(0) scale(1)}50%{transform:translateY(-1px) scale(1.0025)}to{transform:translateY(-1px) scale(1)}}@keyframes errorSlideIn{0%{opacity:0;transform:translateY(-12px) scale(.95);max-height:0}50%{opacity:.8;transform:translateY(2px) scale(1.02)}to{opacity:1;transform:translateY(0) scale(1);max-height:60px}}@keyframes successGlow{0%,to{opacity:0}50%{opacity:1}}@keyframes shimmer{0%{left:-100%}to{left:100%}}@keyframes loadingPulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(.98)}}@keyframes formShake{0%,to{transform:translateX(0)}25%{transform:translateX(-2px)}75%{transform:translateX(2px)}}@keyframes rotate{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes errorHighlight{0%,to{background-color:transparent}50%{background-color:rgba(239,68,68,.1)}}@keyframes formReset{0%,to{opacity:1;transform:scale(1)}50%{opacity:.7;transform:scale(.98)}}@keyframes formHideToSuccess{0%{opacity:1;transform:translateY(0) scale(1)}50%{opacity:.3;transform:translateY(-10px) scale(.98)}to{opacity:0;transform:translateY(-20px) scale(.95);height:0;overflow:hidden}}.animate-element{will-change:transform,opacity;transition:transform .8s cubic-bezier(.25,.46,.45,.94),opacity .8s cubic-bezier(.25,.46,.45,.94),border-color .3s ease,box-shadow .3s ease}.reveal{opacity:0;transform:translateY(50px);transition:opacity .8s cubic-bezier(.25,.46,.45,.94),transform .8s cubic-bezier(.25,.46,.45,.94),border-color .3s ease,box-shadow .3s ease;pointer-events:none;will-change:opacity,transform}.reveal.active{opacity:1;transform:translateY(0);pointer-events:auto}.project-card,.skill-card{will-change:transform,opacity,border-color,box-shadow;transition:transform .6s cubic-bezier(.25,.46,.45,.94),opacity .6s cubic-bezier(.25,.46,.45,.94),border-color .3s ease,box-shadow .3s ease}.project-card{transition:transform .6s cubic-bezier(.16,1,.3,1),opacity .6s cubic-bezier(.16,1,.3,1),border-color .3s ease,box-shadow .3s ease}.timeline-item{transition:transform .7s cubic-bezier(.34,1.56,.64,1),opacity .7s cubic-bezier(.34,1.56,.64,1)}.hero-cta,.hero-subtitle,.hero-title,.social-links,.timeline-item{will-change:transform,opacity}.form-input.error{animation:shake .4s ease-in-out}.form-success{transition:all .5s cubic-bezier(.34,1.56,.64,1)}.form-success.show{animation:successSlideIn .6s cubic-bezier(.34,1.56,.64,1)}.contact-form.hide-for-success{animation:formHideToSuccess .6s cubic-bezier(.4,0,.2,1) forwards}.contact-submit{transition:all .3s cubic-bezier(.4,0,.2,1);position:relative;overflow:hidden}.contact-submit:disabled{animation:submitLoading .3s ease-out;position:relative}.contact-submit:disabled::before{content:"";position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.2),transparent);animation:shimmer 1.5s infinite}.form-input:focus-visible{animation:inputFocus .3s cubic-bezier(.34,1.56,.64,1)}.error-message{transition:all .3s cubic-bezier(.4,0,.2,1)}.error-message.show{animation:errorSlideIn .4s cubic-bezier(.34,1.56,.64,1)}.form-input.success.touched{position:relative}.form-input.success.touched::after{content:"";position:absolute;top:-2px;left:-2px;right:-2px;bottom:-2px;border-radius:.6rem;background:linear-gradient(45deg,transparent,rgba(16,185,129,.1),transparent);pointer-events:none;opacity:0;transition:opacity .3s ease}.form-input.success.touched:focus-visible::after{opacity:1;animation:successGlow 2s ease-in-out infinite}.form-input.error.recovering{animation:errorToNeutral .4s cubic-bezier(.4,0,.2,1)}.form-input.success.touched.entering{animation:neutralToSuccess .5s cubic-bezier(.34,1.56,.64,1)}.contact-form-container{transition:all .4s cubic-bezier(.4,0,.2,1)}.theme-toggle{transition:background-color .3s ease,transform .3s ease}.theme-toggle:hover{transform:rotate(15deg)}.theme-toggle.animating i{animation:rotate .5s ease-in-out}.form-resetting{animation:formReset .5s cubic-bezier(.4,0,.2,1)}