.button,.choice,.rune-tile,.sprint-champion,.help-button{transition:transform .12s,background-color .15s,border-color .15s,box-shadow .15s}
.button:not(:disabled):active,.choice:not(:disabled):active,.rune-tile:not(:disabled):active,.sprint-champion:not(:disabled):active,.help-button:active{transform:scale(.97)}
#feedback-layer{position:fixed;inset:0;pointer-events:none;z-index:100;overflow:hidden}
.fx-correct{animation:fx-correct .5s ease-out}.fx-miss{animation:fx-miss .32s ease-out}.fx-win{animation:fx-win .65s ease-out}
@keyframes fx-correct{0%{box-shadow:0 0 0 2px #6ce0cc,0 0 26px #37c5b332}100%{box-shadow:0 0 0 0 transparent,0 0 0 transparent}}
@keyframes fx-miss{0%,100%{translate:0}25%{translate:-3px}60%{translate:3px}}
@keyframes fx-win{0%{box-shadow:0 0 0 2px #e3bd71,0 0 38px #e3bd7152}100%{box-shadow:0 0 0 0 transparent,0 0 0 transparent}}
.fx-burst{position:absolute;display:block;width:0;height:0;color:#88f1d8}.fx-burst-win{color:#f4d694}
.fx-burst::before{content:'';position:absolute;inset:-9px;border:1px solid currentColor;border-radius:50%;animation:fx-ring .5s ease-out both}
.fx-burst i{position:absolute;width:3px;height:8px;background:currentColor;border-radius:2px;rotate:var(--angle);animation:fx-spark .5s ease-out both}
@keyframes fx-ring{to{transform:scale(2.5);opacity:0}}@keyframes fx-spark{0%{transform:translateY(-7px);opacity:.9}100%{transform:translateY(-34px) scaleY(.3);opacity:0}}
@media(prefers-reduced-motion:reduce){.button,.choice,.rune-tile,.sprint-champion,.help-button{transition:none!important;transform:none!important}.fx-correct,.fx-miss,.fx-win,.fx-burst,.fx-burst *{animation:none!important;translate:none!important}#feedback-layer{display:none}}
