@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes slideOutDown{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(20px)}}@keyframes slideInRight{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}@keyframes slideOutRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(100%)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes toastProgress{0%{width:100%}to{width:0%}}@keyframes slideInDown{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideOutUp{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-100%)}}@keyframes modalScaleIn{0%{opacity:0;transform:scale(.92)translateY(12px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes modalScaleOut{0%{opacity:1;transform:scale(1)translateY(0)}to{opacity:0;transform:scale(.92)translateY(12px)}}@keyframes overlayFadeIn{0%{-webkit-backdrop-filter:blur();backdrop-filter:blur();background:0 0}to{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#000c}}@keyframes notifSlideIn{0%{opacity:0;transform:translate(-12px)}to{opacity:1;transform:translate(0)}}@keyframes cardAppear{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes badgePop{0%{transform:scale(0)}60%{transform:scale(1.3)}to{transform:scale(1)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes ripple{to{opacity:0;transform:scale(4)}}@keyframes buttonPop{0%{transform:scale(1)}40%{transform:scale(.92)}to{transform:scale(1)}}@keyframes successPulse{0%{box-shadow:0 0 #2ed57380}70%{box-shadow:0 0 0 10px #2ed57300}to{box-shadow:0 0 #2ed57300}}@keyframes warningPulse{0%{box-shadow:0 0 #f1c40f80}70%{box-shadow:0 0 0 10px #f1c40f00}to{box-shadow:0 0 #f1c40f00}}@keyframes dangerPulse{0%{box-shadow:0 0 #e74c3c80}70%{box-shadow:0 0 0 10px #e74c3c00}to{box-shadow:0 0 #e74c3c00}}@keyframes navIndicatorSlide{0%{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}@keyframes confettiPop{0%{opacity:1;transform:scale(0)rotate(0)}50%{opacity:.8;transform:scale(1.2)rotate(180deg)}to{opacity:0;transform:scale(0)rotate(360deg)}}@keyframes pillAppear{0%{opacity:0;transform:scale(.8)translateY(4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes chipCascade{0%{opacity:0;transform:translateY(12px)scale(.95)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes chipSelect{0%{box-shadow:0 0 #4a90e299}50%{box-shadow:0 0 0 8px #4a90e200}to{box-shadow:0 0 #4a90e200}}@keyframes teamCardEntrance{0%{opacity:0;transform:translateY(20px)scale(.96)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes draftPickFlash{0%{background:#4a90e24d;transform:scale(1)}30%{background:#4a90e280;transform:scale(1.03)}to{background:#ffffff0d;transform:scale(1)}}@keyframes stepperBounce{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(.9)}to{transform:scale(1)}}@keyframes shuffleSpin{0%{transform:rotate(0)scale(1)}25%{transform:rotate(5deg)scale(.95)}50%{transform:rotate(-3deg)scale(1.02)}75%{transform:rotate(2deg)scale(.98)}to{transform:rotate(0)scale(1)}}@keyframes celebrationBurst{0%{opacity:1;transform:scale(0)}40%{opacity:.9;transform:scale(1.1)}to{opacity:0;transform:scale(1.6)}}@keyframes crownBounce{0%{transform:scale(1)rotate(0)}25%{transform:scale(1.3)rotate(-10deg)}50%{transform:scale(1.1)rotate(5deg)}75%{transform:scale(1.2)rotate(-3deg)}to{transform:scale(1)rotate(0)}}@keyframes moveToTeam{0%{opacity:1;transform:translate(0)scale(1)}40%{opacity:.5;transform:translate(30px)scale(.8)}60%{opacity:0;transform:translate(60px)scale(.6)}to{opacity:0;transform:translate(60px)scale(.6)}}@keyframes popIn{0%{opacity:0;transform:scale(0)}60%{opacity:1;transform:scale(1.15)}to{opacity:1;transform:scale(1)}}@keyframes tabContentSwitch{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes currentPickPulse{0%,to{box-shadow:0 0 #4a90e266}50%{box-shadow:0 0 0 8px #4a90e200}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes avatarPop{0%{opacity:0;transform:scale(.5)rotate(-10deg)}60%{transform:scale(1.08)rotate(2deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes settingSlideIn{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes tabContentFade{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes typingDot{0%,60%,to{opacity:.3;transform:translateY(0)}30%{opacity:1;transform:translateY(-3px)}}@keyframes scorePulse{0%{transform:scale(1)}50%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes scoreBump{0%{transform:translateY(0)}30%{transform:translateY(-8px)}to{transform:translateY(0)}}@keyframes statusSlide{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes setWinFlash{0%{background:#4caf504d}to{background:#4caf5014}}@keyframes statusPulse{0%,to{opacity:1}50%{opacity:.4}}@keyframes gamePointPulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes splashBounce{0%,to{transform:translateY(0)rotate(0)}25%{transform:translateY(-35px)rotate(90deg)}50%{transform:translateY(0)rotate(180deg)}75%{transform:translateY(-18px)rotate(270deg)}}@keyframes splashFadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes splashDot{0%,80%,to{opacity:.3;transform:scale(.8)}40%{opacity:1;transform:scale(1.2)}}@keyframes splashExit{0%{opacity:1;transform:translateY(0)scale(1)}40%{opacity:1;transform:translateY(-100px)scale(.8)rotate(360deg)}to{opacity:0;transform:translateY(-250px)scale(.3)rotate(720deg)}}@keyframes splashParticle{0%{opacity:1;transform:translate(0)scale(1)}to{opacity:0;transform:translate(var(--px), var(--py)) scale(0)}}@keyframes paymentGrowIn{0%{opacity:0;transform-origin:top;max-height:0;margin-top:0;padding-top:0;padding-bottom:0;transform:scaleY(.3)}to{opacity:1;transform-origin:top;max-height:200px;margin-top:1rem;padding-top:.75rem;padding-bottom:.75rem;transform:scaleY(1)}}@keyframes slideUpBanner{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}@keyframes slideDownBanner{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(100%)}}@keyframes wizardSlideIn{0%{opacity:0;transform:translate(30px)}to{opacity:1;transform:translate(0)}}@keyframes wizardSlideBack{0%{opacity:0;transform:translate(-30px)}to{opacity:1;transform:translate(0)}}:root{--spring-ease:cubic-bezier(.21, 1.02, .73, 1)}.game-card{transition:transform .3s var(--spring-ease), box-shadow .3s ease, border-color .3s ease;animation:.4s ease-out both cardAppear}.game-card:nth-child(2){animation-delay:50ms}.game-card:nth-child(3){animation-delay:.1s}.modal[open]{animation:modalScaleIn .3s var(--spring-ease)}.modal::backdrop{animation:.25s ease-out overlayFadeIn}.primary,.secondary,.danger,.card-rsvp button{transition:transform .15s,background .25s,box-shadow .25s}.primary:active,.secondary:active,.card-rsvp button:active{transform:scale(.96)}@media (hover:hover){.game-card:hover{transform:translateY(-3px);box-shadow:0 10px 30px #0003}.primary:hover{transform:translateY(-1px)}}.notice.success{animation:.6s ease-out successPulse}.notice.error{animation:.6s ease-out dangerPulse}.team-card{animation:teamCardEntrance .35s var(--spring-ease) both}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}.modal.closing{animation:.2s ease-in forwards modalScaleOut}.modal.closing::backdrop{animation:.2s ease-in forwards fadeOut}
