@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}@keyframes pulse-border{0%,to{border-color:#f97316;box-shadow:0 0 0 0 rgba(249,115,22,.4)}50%{border-color:#fdba74;box-shadow:0 0 20px 5px rgba(249,115,22,.2)}}@keyframes slide-up{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slide-down{0%{transform:translateY(-20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes shake{0%,to{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}@keyframes glow{0%,to{box-shadow:0 0 5px rgba(249,115,22,.5)}50%{box-shadow:0 0 20px rgba(249,115,22,.8),0 0 40px rgba(249,115,22,.4)}}@keyframes confetti{0%{transform:translateY(0) rotate(0deg);opacity:1}to{transform:translateY(100vh) rotate(2turn);opacity:0}}@keyframes countdown-pulse{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-pulse{animation:pulse 2s ease-in-out infinite}.animate-pulse-border{animation:pulse-border 2s ease-in-out infinite}.animate-slide-up{animation:slide-up .3s ease-out forwards}.animate-slide-down{animation:slide-down .3s ease-out forwards}.animate-fade-in{animation:fade-in .3s ease-out forwards}.animate-bounce{animation:bounce .5s ease-in-out}.animate-shake{animation:shake .3s ease-in-out}.animate-glow{animation:glow 2s ease-in-out infinite}.animate-countdown{animation:countdown-pulse 1s ease-in-out infinite}.animate-spin{animation:spin 1s linear infinite}.event-card{animation:slide-down .4s ease-out forwards;transition:all .3s ease}.event-card:hover{transform:translateY(-2px)}.event-card-urgent{animation:pulse-border 1s ease-in-out infinite,slide-down .4s ease-out forwards}.points-change{position:absolute;animation:slide-up .5s ease-out forwards,fade-in .2s ease-out;pointer-events:none}.points-positive{color:#10b981}.points-negative{color:#ef4444}.tab-content{animation:fade-in .2s ease-out}.btn-chaos{transition:all .2s ease}.btn-chaos:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(249,115,22,.3)}.btn-chaos:active{transform:translateY(0)}.connection-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.connection-connected{background-color:#10b981;box-shadow:0 0 8px #10b981}.connection-disconnected{background-color:#ef4444;animation:pulse 1s ease-in-out infinite}.connection-connecting{background-color:#fbbf24;animation:pulse .5s ease-in-out infinite}.tap-button{transition:transform .1s ease}.tap-button:active{transform:scale(.95)}.leaderboard-item{animation:slide-up .3s ease-out forwards;animation-delay:calc(var(--index) * .05s);opacity:0}.toast{animation:slide-up .3s ease-out forwards}.toast-exit{animation:slide-down .3s ease-out forwards;opacity:0}.skeleton{background:linear-gradient(90deg,#1a1a1a 25%,#2a2a2a 50%,#1a1a1a 75%);background-size:200% 100%;animation:skeleton-loading 1.5s infinite}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}.quick-draw-ready{animation:glow 1s ease-in-out infinite}.quick-draw-tap{background:linear-gradient(135deg,#10b981,#059669);animation:pulse .3s ease-in-out infinite}.timer-critical{color:#ef4444;animation:countdown-pulse .5s ease-in-out infinite}.timer-warning{color:#fbbf24}.timer-normal{color:#e2e8f0}.safe-area-top{padding-top:env(safe-area-inset-top,0)}.safe-area-bottom{padding-bottom:env(safe-area-inset-bottom,0)}