@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .25s ease-in-out}@keyframes fadeInSlideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-slide-up{animation:fadeInSlideUp .3s ease-out}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.animate-skeleton{background:linear-gradient(90deg,#f0f0f0,#e0e0e0 20%,#f0f0f0 40%,#f0f0f0);background-size:1000px 100%;animation:shimmer 1.5s infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes heatmap-cell-wave{0%,to{opacity:1;transform:scale(1);filter:brightness(1);box-shadow:0 0 0 0 rgba(124,58,237,0)}50%{opacity:.88;transform:scale(1.028);filter:brightness(1.1);box-shadow:0 0 0 1px rgba(124,58,237,.28)}}.animate-heatmap-cell-wave{transform-origin:center;animation:heatmap-cell-wave 4.5s ease-in-out infinite}@keyframes heatmap-cell-wave-cracked{0%,to{opacity:1;transform:scale(1);filter:brightness(1);box-shadow:0 0 0 0 rgba(251,191,36,0)}50%{opacity:.92;transform:scale(1.024);filter:brightness(1.12);box-shadow:0 0 0 1px rgba(251,191,36,.38)}}.animate-heatmap-cell-wave-cracked{transform-origin:center;animation:heatmap-cell-wave-cracked 4.5s ease-in-out infinite}@keyframes focus-area-bar-pulse{0%,to{box-shadow:inset 0 0 0 0 hsla(0,0%,100%,0),0 0 0 0 rgba(201,160,60,.18)}50%{box-shadow:inset 0 0 0 0 hsla(0,0%,100%,0),inset 0 1px 2px 0 hsla(0,0%,100%,.28),0 0 8px 0 rgba(201,160,60,.45)}}.animate-focus-area-bar-pulse{animation:focus-area-bar-pulse 3s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.animate-heatmap-cell-wave,.animate-heatmap-cell-wave-cracked{animation:none!important;opacity:1!important;filter:none!important;box-shadow:none!important;transform:none!important}.animate-focus-area-bar-pulse{animation:none!important;box-shadow:none}}@keyframes dev-updates-title-gradient{0%,to{background-position:0 50%}50%{background-position:100% 50%}}.dev-updates-title-hero{background-image:linear-gradient(100deg,#0f172a,#4c1d95 32%,#7c3aed 50%,#c9a03c 72%,#0f172a);background-size:220% auto;-webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;animation:fadeInSlideUp .5s ease-out forwards,dev-updates-title-gradient 10s ease-in-out .5s infinite}html.dark .dev-updates-title-hero{background-image:linear-gradient(100deg,#f1f5f9,#a78bfa 38%,#e2c76a 62%,#f1f5f9)}@keyframes dev-updates-version-pill-wiggle{0%,to{transform:rotate(0deg)}35%{transform:rotate(-2.5deg)}70%{transform:rotate(2.5deg)}}.dev-updates-version-pill{display:inline-block;transition:transform .15s ease}.dev-updates-version-pill:hover{animation:dev-updates-version-pill-wiggle .32s ease-in-out 1}@media (prefers-reduced-motion:reduce){.dev-updates-title-hero{animation:none!important;background:none!important;-webkit-background-clip:unset;background-clip:unset;-webkit-text-fill-color:currentColor;color:inherit}.dev-updates-version-pill:hover{transform:none;animation:none}}.button-press{transition:transform .12s ease,box-shadow .12s ease;position:relative;-webkit-tap-highlight-color:transparent}.button-press:active{transform:scale(.97)}.button-press:focus-visible{outline:2px solid rgba(236,72,153,.5);outline-offset:2px}.button-press-glow:active{box-shadow:0 0 0 3px rgba(236,72,153,.2)}.card-clickable,[role=button],a[href],button,input[type=button],input[type=submit]{-webkit-tap-highlight-color:transparent}a.button-press:active{transform:scale(.97)}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-slide-up{animation:slideUp .3s ease-out}.chart-container-fade-in{opacity:0;animation:fadeIn .3s ease-in-out forwards}.chart-container-fade-in-delay{opacity:0;animation:fadeIn .3s ease-in-out 50ms forwards}@keyframes scroll-banner{0%{transform:translateX(0)}to{transform:translateX(-50%)}}.animate-scroll-banner{animation:scroll-banner 30s linear infinite}@media (prefers-reduced-motion:reduce){.animate-scroll-banner{animation:none!important}}@keyframes toastSlideIn{0%{opacity:0;transform:translateY(-16px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes toastSlideOut{0%{opacity:1;transform:translateY(0) scale(1)}to{opacity:0;transform:translateY(-16px) scale(.95)}}.animate-toast-in{animation:toastSlideIn .2s ease-out}.animate-toast-out{animation:toastSlideOut .15s ease-in forwards}@keyframes menuOpen{0%{opacity:0;transform:scale(.95) translateY(-4px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes menuClose{0%{opacity:1;transform:scale(1) translateY(0)}to{opacity:0;transform:scale(.95) translateY(-4px)}}.animate-menu-open{animation:menuOpen .15s ease-out;transform-origin:top right}.animate-menu-close{animation:menuClose .1s ease-in forwards;transform-origin:top right}@keyframes drawerSlideIn{0%{transform:translateX(100%)}to{transform:translateX(0)}}@keyframes drawerSlideOut{0%{transform:translateX(0)}to{transform:translateX(100%)}}.animate-drawer-slide-in{animation:drawerSlideIn .2s ease-out}.animate-drawer-slide-out{animation:drawerSlideOut .15s ease-in forwards}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-4px)}20%,40%,60%,80%{transform:translateX(4px)}}.animate-shake{animation:shake .4s ease-in-out}@keyframes checkinLevelUp{0%{transform:scale(1);box-shadow:0 0 0 0 rgba(168,85,247,.35)}45%{transform:scale(1.1);box-shadow:0 0 0 10px rgba(168,85,247,0)}to{transform:scale(1);box-shadow:0 0 0 0 rgba(168,85,247,0)}}.animate-checkin-level-up{animation:checkinLevelUp .62s ease-out}@keyframes checkinCardGlow{0%{box-shadow:0 0 0 0 rgba(236,72,153,.35)}45%{box-shadow:0 0 28px 2px rgba(168,85,247,.22)}to{box-shadow:0 0 0 0 rgba(236,72,153,0)}}.checkin-card-reward{animation:checkinCardGlow 1.1s ease-out}@keyframes checkinStreakTick{0%{transform:scale(1)}55%{transform:scale(1.12)}to{transform:scale(1)}}.checkin-streak-tick{animation:checkinStreakTick .48s ease-out}@media (prefers-reduced-motion:reduce){.animate-checkin-level-up,.animate-drawer-slide-in,.animate-drawer-slide-out,.animate-fade-in,.animate-fade-in-slide-up,.animate-menu-close,.animate-menu-open,.animate-shake,.animate-slide-up,.animate-toast-in,.animate-toast-out,.checkin-card-reward,.checkin-streak-tick{animation:none!important;transition:none!important}.button-press:active{transform:none!important}}