@keyframes dropdownFadeIn{0%{opacity:0;transform:translate(-50%) translateY(-4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes dropdownFadeInUp{0%{opacity:0;transform:translate(-50%) translateY(4px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes scaleIn{0%{opacity:0;transform:scale(.92)}to{opacity:1;transform:scale(1)}}@keyframes modalIn{0%{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes listItemIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.02)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes selectionPulse{0%,to{box-shadow:0 0 0 2px #f6821f80}50%{box-shadow:0 0 0 4px #f6821f4d}}.action-button:hover:not(:disabled){transform:translateY(-1px);background-color:#0000000d}.action-button:active:not(:disabled){transform:translateY(0) scale(.98)}.component-item{transition:transform .15s ease-out,box-shadow .15s ease,border-color .15s ease}.component-item:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a;border-color:#f6821f4d}.component-item:active{transform:translateY(0) scale(.98)}.selection-box{animation:fadeIn .1s ease-out}.draggable-component{transition:box-shadow .2s ease}.draggable-component.selected{animation:selectionPulse 2s ease-in-out infinite}@keyframes bottomSheetIn{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}.bottom-sheet{animation:bottomSheetIn .3s cubic-bezier(.16,1,.3,1)}.smooth-scroll{scroll-behavior:smooth}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
