@keyframes slideUpFromBottom{0%{opacity:0;transform:translate3d(0,100%,0)}to{opacity:1;transform:translateZ(0)}}@keyframes slideDownToBottom{0%{opacity:1;transform:translateZ(0)}to{opacity:0;transform:translate3d(0,100%,0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate-slide-up{animation:slideUpFromBottom .3s cubic-bezier(.4,0,.2,1) forwards}.animate-slide-down,.animate-slide-up{will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.animate-slide-down{animation:slideDownToBottom .25s cubic-bezier(.4,0,1,1) forwards}.animate-fade-in{animation:fadeIn .2s ease-out forwards}.animate-fade-in,.animate-fade-out{will-change:opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden}.animate-fade-out{animation:fadeOut .2s ease-in forwards}@keyframes fabScaleIn{0%{opacity:0;transform:scale(0) translateZ(0)}to{opacity:1;transform:scale(1) translateZ(0)}}@keyframes fabScaleOut{0%{opacity:1;transform:scale(1) translateZ(0)}to{opacity:0;transform:scale(0) translateZ(0)}}.animate-fab-in{animation:fabScaleIn .2s cubic-bezier(0,0,.2,1) forwards}.animate-fab-in,.animate-fab-out{will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.animate-fab-out{animation:fabScaleOut .15s cubic-bezier(.4,0,1,1) forwards}.fab-press{transform:scale(.95) translateZ(0);transition:transform .1s cubic-bezier(.4,0,.2,1);will-change:transform}.swipe-action{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.swiping{will-change:transform}.swipe-complete{will-change:auto;transition:transform .3s cubic-bezier(.4,0,.2,1)}@keyframes tapScale{0%{transform:scale(1) translateZ(0)}50%{transform:scale(.95) translateZ(0)}to{transform:scale(1) translateZ(0)}}.tap-feedback{animation:tapScale .2s cubic-bezier(.4,0,.2,1)}.icon-hover,.tap-feedback{backface-visibility:hidden;-webkit-backface-visibility:hidden}.icon-hover{transition:transform .2s cubic-bezier(.4,0,.2,1);will-change:transform;transform:translateZ(0);-webkit-transform:translateZ(0)}.icon-hover:hover{transform:scale(1.1) translateZ(0)}@keyframes slideInFromTop{0%{opacity:0;transform:translate3d(0,-20px,0)}to{opacity:1;transform:translateZ(0)}}.animate-slide-in-top{animation:slideInFromTop .15s cubic-bezier(.4,0,.2,1) forwards;will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.skeleton-shimmer{animation:shimmer 2s cubic-bezier(.4,0,.6,1) infinite;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.1) 50%,rgba(255,255,255,0));background-size:200% 100%;will-change:background-position}@keyframes ripple{0%{transform:scale(0) translateZ(0);opacity:.5}to{transform:scale(2) translateZ(0);opacity:0}}.ripple-effect{position:relative;overflow:hidden}.ripple-effect:after{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;background:currentColor;border-radius:50%;transform:scale(0) translateZ(0);opacity:0;pointer-events:none}.ripple-effect:active:after{animation:ripple .6s cubic-bezier(.4,0,.2,1)}.theme-transition{transition:background-color .3s cubic-bezier(.4,0,.2,1),color .3s cubic-bezier(.4,0,.2,1),border-color .3s cubic-bezier(.4,0,.2,1);will-change:background-color,color,border-color}.transition-opacity-smooth{transition:opacity .2s cubic-bezier(.4,0,.2,1);will-change:opacity}.transition-opacity-smooth,.transition-transform-smooth{backface-visibility:hidden;-webkit-backface-visibility:hidden}.transition-transform-smooth{transition:transform .3s cubic-bezier(.4,0,.2,1);will-change:transform;transform:translateZ(0);-webkit-transform:translateZ(0)}.transition-colors-smooth{transition:background-color .2s cubic-bezier(.4,0,.2,1),color .2s cubic-bezier(.4,0,.2,1),border-color .2s cubic-bezier(.4,0,.2,1)}.gpu-accelerated{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0);perspective:1000px;-webkit-perspective:1000px}.animating{will-change:transform,opacity}.animation-complete{will-change:auto}.contain-paint{contain:paint layout}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@keyframes spin{0%{transform:rotate(0deg) translateZ(0)}to{transform:rotate(1turn) translateZ(0)}}.animate-spin-optimized{animation:spin 1s linear infinite;will-change:transform}.animate-spin-optimized,.card-hover{backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.card-hover{transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1);will-change:transform,box-shadow}.card-hover:hover{transform:translateY(-2px) translateZ(0)}@keyframes listItemEnter{0%{opacity:0;transform:translate3d(0,20px,0)}to{opacity:1;transform:translateZ(0)}}.list-item-enter{animation:listItemEnter .3s cubic-bezier(.4,0,.2,1) backwards;will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.list-item-enter:first-child{animation-delay:0s}.list-item-enter:nth-child(2){animation-delay:50ms}.list-item-enter:nth-child(3){animation-delay:.1s}.list-item-enter:nth-child(4){animation-delay:.15s}.list-item-enter:nth-child(5){animation-delay:.2s}@keyframes bounceHorizontal{0%,to{transform:translateX(0) translateZ(0)}50%{transform:translateX(-8px) translateZ(0)}}.animate-bounce-horizontal{animation:bounceHorizontal 1.5s cubic-bezier(.4,0,.2,1) infinite;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}@keyframes bounceHorizontalReverse{0%,to{transform:translateX(0) translateZ(0)}50%{transform:translateX(8px) translateZ(0)}}.animate-bounce-horizontal-reverse{animation:bounceHorizontalReverse 1.5s cubic-bezier(.4,0,.2,1) infinite;will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden}@keyframes lineHighlight{0%{background-color:rgba(59,130,246,0)}50%{background-color:rgba(59,130,246,.2)}to{background-color:rgba(59,130,246,.1)}}.line-highlight-animate{animation:lineHighlight .6s cubic-bezier(.4,0,.2,1);will-change:background-color}@keyframes searchPulse{0%,to{background-color:rgba(251,191,36,.3)}50%{background-color:rgba(251,191,36,.5)}}.search-match-pulse{animation:searchPulse 1s cubic-bezier(.4,0,.2,1) infinite;will-change:background-color}@keyframes successPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.7)}70%{box-shadow:0 0 0 10px rgba(34,197,94,0)}to{box-shadow:0 0 0 0 rgba(34,197,94,0)}}.success-pulse{animation:successPulse .6s cubic-bezier(.4,0,.2,1)}@keyframes checkmark{0%{transform:scale(0) rotate(45deg) translateZ(0);opacity:0}50%{transform:scale(1.2) rotate(45deg) translateZ(0);opacity:1}to{transform:scale(1) rotate(45deg) translateZ(0);opacity:1}}.checkmark-animate{animation:checkmark .3s cubic-bezier(.4,0,.2,1) forwards;will-change:transform,opacity;backface-visibility:hidden;-webkit-backface-visibility:hidden}.syntax-token{transition:color .2s cubic-bezier(.4,0,.2,1);will-change:color}.template-card{transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s cubic-bezier(.4,0,.2,1),background-color .2s cubic-bezier(.4,0,.2,1);will-change:transform,box-shadow;backface-visibility:hidden;-webkit-backface-visibility:hidden;transform:translateZ(0);-webkit-transform:translateZ(0)}.template-card:hover{transform:translateY(-4px) translateZ(0)}.template-card:active{transform:translateY(-2px) translateZ(0)}@keyframes exportProgress{0%{transform:translateX(-100%) translateZ(0)}to{transform:translateX(100%) translateZ(0)}}.export-progress{animation:exportProgress 1s cubic-bezier(.4,0,.2,1) infinite;will-change:transform}.export-progress,.performance-dashboard{backface-visibility:hidden;-webkit-backface-visibility:hidden}.performance-dashboard{transition:transform .3s cubic-bezier(.4,0,.2,1),opacity .3s cubic-bezier(.4,0,.2,1);will-change:transform,opacity;transform:translateZ(0);-webkit-transform:translateZ(0)}