@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-15px)}}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}@keyframes wiggle{0%,to{transform:rotate(-5deg)}50%{transform:rotate(5deg)}}@keyframes card-flip{0%{transform:perspective(1000px) rotateY(0deg)}to{transform:perspective(1000px) rotateY(180deg)}}@keyframes xp-gain{0%{transform:scale(1)}50%{transform:scale(1.5)}to{transform:scale(1)}}@keyframes progress-fill{0%{width:0}to{width:100%}}.confetti-container{height:100%;left:0;overflow:hidden;pointer-events:none;position:fixed;top:0;width:100%;z-index:9999}.confetti{animation:confetti-fall 4s ease-in-out forwards;background-color:var(--color-text-muted);border-radius:50%;box-shadow:0 1px 3px var(--overlay-contrast-20);height:10px;opacity:.8;position:absolute;width:10px}.confetti:nth-child(2n){background-color:var(--color-warning)}@keyframes confetti-fall{0%{opacity:1;transform:translateY(-10vh) rotate(0deg)}to{opacity:0;transform:translateY(110vh) rotate(1turn)}}@keyframes pulse-correct{0%,to{box-shadow:0 0 0 0 var(--color-success-soft)}50%{box-shadow:0 0 0 20px transparent}}@keyframes pulse-incorrect{0%,to{box-shadow:0 0 0 0 var(--color-danger-soft)}50%{box-shadow:0 0 0 20px transparent}}.answer-option.correct{animation:bounce-correct .5s 1s}.answer-option.incorrect{animation:bounce-incorrect .5s 1s}@keyframes glow-correct{0%,to{box-shadow:0 0 5px var(--color-success-soft)}50%{box-shadow:0 0 30px var(--color-success),0 0 40px var(--color-success-soft)}}@keyframes glow-incorrect{0%,to{box-shadow:0 0 5px var(--color-danger-soft)}50%{box-shadow:0 0 30px var(--color-danger),0 0 40px var(--color-danger-soft)}}@keyframes shake-correct{0%,to{transform:translateX(0)}10%{transform:translateX(-2px) rotate(-1deg)}20%{transform:translateX(2px) rotate(1deg)}30%{transform:translateX(-2px) rotate(-1deg)}40%{transform:translateX(2px) rotate(1deg)}50%{transform:translateX(-2px) rotate(-1deg)}60%{transform:translateX(2px) rotate(1deg)}70%{transform:translateX(-2px) rotate(-1deg)}80%{transform:translateX(2px) rotate(1deg)}90%{transform:translateX(-2px) rotate(-1deg)}}@keyframes shake-incorrect{0%,to{transform:translateX(0)}10%{transform:translateX(-10px)}20%{transform:translateX(10px)}30%{transform:translateX(-10px)}40%{transform:translateX(10px)}50%{transform:translateX(-10px)}60%{transform:translateX(10px)}70%{transform:translateX(-10px)}80%{transform:translateX(10px)}90%{transform:translateX(-10px)}}@keyframes scale-correct{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}@keyframes scale-incorrect{0%,to{transform:scale(1)}25%{transform:scale(.95)}75%{transform:scale(1.05)}}@keyframes bounce-correct{0%,to{transform:translateY(0)}25%{transform:translateY(-10px)}50%{transform:translateY(0)}75%{transform:translateY(-5px)}}@keyframes bounce-incorrect{0%,to{transform:translateY(0)}25%{transform:translateY(-5px)}50%{transform:translateY(0)}75%{transform:translateY(-2px)}}@keyframes flip-correct{0%{transform:perspective(1000px) rotateY(0)}to{transform:perspective(1000px) rotateY(1turn)}}@keyframes flip-incorrect{0%{transform:perspective(1000px) rotateX(0)}to{transform:perspective(1000px) rotateX(1turn)}}@keyframes fade-correct{0%,to{opacity:1}50%{opacity:.7}}@keyframes fade-incorrect{0%,to{opacity:1}50%{opacity:.3}}@keyframes wobble-correct{0%,to{transform:rotate(0deg)}15%{transform:rotate(-5deg)}30%{transform:rotate(3deg)}45%{transform:rotate(-3deg)}60%{transform:rotate(2deg)}75%{transform:rotate(-1deg)}}@keyframes wobble-incorrect{0%,to{transform:rotate(0deg)}15%{transform:rotate(-15deg)}30%{transform:rotate(10deg)}45%{transform:rotate(-5deg)}60%{transform:rotate(3deg)}75%{transform:rotate(-1deg)}}@keyframes heartbeat-correct{0%,to{transform:scale(1)}14%{transform:scale(1.1)}28%{transform:scale(1)}42%{transform:scale(1.1)}70%{transform:scale(1)}}@keyframes heartbeat-incorrect{0%,to{transform:scale(1)}25%{transform:scale(1.05)}50%{transform:scale(1)}75%{transform:scale(1.05)}}.topic-option:focus,a:focus,button:focus,input:focus{outline:2px solid var(--color-text-tertiary);outline-offset:2px}