@keyframes overlay-in{0%{opacity:0}to{opacity:1}}@keyframes overlay-out{0%{opacity:1}to{opacity:0}}.overlay-enter{animation:overlay-in .25s ease-out forwards}.overlay-exit{animation:overlay-out .2s ease-in forwards}@keyframes modal-slide-up{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes modal-slide-down{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(40px)}}@keyframes modal-scale-in{0%{opacity:0;transform:scale(.95) translateY(12px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes modal-scale-out{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(12px)}}.modal-enter{animation:modal-scale-in .3s cubic-bezier(.16,1,.3,1) forwards}.modal-exit{animation:modal-scale-out .2s ease-in forwards}.modal-enter-mobile{animation:modal-slide-up .35s cubic-bezier(.16,1,.3,1) forwards}.modal-exit-mobile{animation:modal-slide-down .25s ease-in forwards}@keyframes card-in{0%{opacity:0;transform:translateY(16px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.card-animate{opacity:0;animation:card-in .4s cubic-bezier(.16,1,.3,1) forwards;animation-delay:var(--delay, 0ms)}.game-card-hover{transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s ease}.game-card-hover:hover{transform:translateY(-4px) scale(1.02);box-shadow:0 12px 32px #00000026,0 4px 12px #0000001a}.game-card-hover:active{transform:translateY(-1px) scale(1.005);transition-duration:.1s}.list-row-hover{transition:background .15s ease,transform .15s ease}.list-row-hover:hover{background:var(--surface-2)!important;transform:translate(2px)}@keyframes fab-in{0%{opacity:0;transform:scale(.5) translateY(16px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes fab-out{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.5) translateY(16px)}}.fab-enter{animation:fab-in .3s cubic-bezier(.16,1,.3,1) forwards}.fab-exit{animation:fab-out .2s ease-in forwards;pointer-events:none}.fab-hover{transition:transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s ease}.fab-hover:hover{transform:scale(1.12);box-shadow:0 6px 24px #efa10b66}.fab-hover:active{transform:scale(.95)}@keyframes stats-expand{0%{opacity:0;max-height:0;transform:translateY(-8px)}to{opacity:1;max-height:1200px;transform:translateY(0)}}@keyframes stats-collapse{0%{opacity:1;max-height:1200px;transform:translateY(0)}to{opacity:0;max-height:0;transform:translateY(-8px)}}.stats-enter{animation:stats-expand .4s cubic-bezier(.16,1,.3,1) forwards;overflow:hidden}.stats-exit{animation:stats-collapse .3s ease-in forwards;overflow:hidden}@keyframes toast-slide-in{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toast-slide-out{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-8px) scale(.95)}}.toast-enter{animation:toast-slide-in .35s cubic-bezier(.16,1,.3,1) forwards}.toast-exit{animation:toast-slide-out .25s ease-in forwards}.status-tab{transition:border-color .2s ease,background .2s ease,transform .15s ease}.status-tab:hover{transform:scale(1.04)}.status-tab:active{transform:scale(.97)}.header-btn-anim{transition:background .2s ease,color .2s ease,transform .15s ease,box-shadow .2s ease}.header-btn-anim:hover{transform:translateY(-1px);box-shadow:0 4px 12px #00000014}.header-btn-anim:active{transform:translateY(0)}.filter-input-anim{transition:border-color .2s ease,box-shadow .2s ease}.filter-input-anim:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px #efa10b26}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(4px)}}.confirm-shake{animation:shake .4s ease-in-out}@keyframes spin{to{transform:rotate(360deg)}}@keyframes empty-pulse{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.1);opacity:.5}}.empty-icon-pulse{animation:empty-pulse 3s ease-in-out infinite}.filter-chip{transition:transform .15s ease,opacity .15s ease}.filter-chip:hover{transform:scale(1.05)}@keyframes img-fade-in{0%{opacity:0}to{opacity:1}}.img-loaded{animation:img-fade-in .3s ease-out forwards}
