@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.template-grid-item{animation:fadeInUp .5s ease-out forwards;opacity:0}.template-grid-item:first-child{animation-delay:0s}.template-grid-item:nth-child(2){animation-delay:.1s}.template-grid-item:nth-child(3){animation-delay:.2s}.template-grid-item:nth-child(4){animation-delay:.3s}.template-grid-item:nth-child(5){animation-delay:.4s}.template-grid-item:nth-child(6){animation-delay:.5s}.template-grid-item:nth-child(7){animation-delay:.6s}.template-grid-item:nth-child(8){animation-delay:.7s}.template-grid-item:nth-child(9){animation-delay:.8s}@keyframes pulse{0%{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}50%{box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}to{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-content{animation:modalFadeIn .3s ease-out}@keyframes spin{to{transform:rotate(1turn)}}.loading-spinner{width:20px;height:20px;border:2px solid #e5e7eb;border-top-color:#3b82f6;border-radius:50%;animation:spin .8s linear infinite}@keyframes gradientShift{0%{background-position:0 50%}50%{background-position:100% 50%}to{background-position:0 50%}}.gradient-bg{background:linear-gradient(270deg,#f3f4f6,#ffffff,#f9fafb);background-size:400% 400%;animation:gradientShift 15s ease infinite}