*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:#efeff3;font-family:-apple-system,Helvetica Neue,Hiragino Sans,sans-serif}::-webkit-scrollbar{display:none}*{scrollbar-width:none}ruby{ruby-align:center;white-space:nowrap}rt{color:#8e8e93;letter-spacing:0;text-align:center;ruby-align:center;font-size:.52em;font-weight:400;line-height:1.2}@keyframes slideUp{0%{transform:translateY(110%)}to{transform:translateY(0)}}@keyframes slideInRight{0%{opacity:0;transform:translate(28px)}to{opacity:1;transform:translate(0)}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-7px)}40%{transform:translate(7px)}60%{transform:translate(-5px)}80%{transform:translate(5px)}}@keyframes correctBounce{0%,to{transform:scale(1)}35%{transform:scale(1.06)}65%{transform:scale(.97)}}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes pulseRing{0%{box-shadow:0 0 #2aabee73}70%{box-shadow:0 0 0 10px #2aabee00}to{box-shadow:0 0 #2aabee00}}@keyframes waveBar{0%,to{transform:scaleY(.4)}50%{transform:scaleY(1)}}@keyframes warmupCountdown{0%{width:0%}to{width:100%}}@keyframes flipIn{0%{opacity:0;transform:rotateY(180deg)}to{opacity:1;transform:rotateY(0)}}@keyframes cardPop{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}.tab-enter{animation:.3s ease-out both tabFadeIn}@keyframes tabFadeIn{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.bar-fill{transform-origin:0;animation:.6s cubic-bezier(.4,0,.2,1) .3s both barGrow}@keyframes barGrow{0%{transform:scaleX(0)}to{transform:scaleX(1)}}.heat-tile{animation:.3s ease-out both tileIn}@keyframes tileIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes mistakeSlideIn{0%{opacity:0;transform:translate(30px)}60%{opacity:1;transform:translate(-4px)}to{opacity:1;transform:translate(0)}}@keyframes stampX{0%{opacity:0;transform:scale(0)rotate(-20deg)}50%{opacity:1;transform:scale(1.25)rotate(5deg)}75%{transform:scale(.9)rotate(-2deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes badgePop{0%{opacity:0;transform:scale(0)}70%{opacity:1;transform:scale(1.15)}to{transform:scale(1)}}@keyframes loadSpin{0%,to{transform:scale(1)rotate(0)}25%{transform:scale(1.1)rotate(-8deg)}50%{transform:scale(1)rotate(0)}75%{transform:scale(1.1)rotate(8deg)}}.flashcard-flip{transform-style:preserve-3d;transition:transform .55s cubic-bezier(.4,0,.2,1)}.flashcard-flip.flipped{transform:rotateY(180deg)}.flashcard-face{backface-visibility:hidden}.flashcard-face.back{transform:rotateY(180deg)}
