:root{--text:#a9b7bf;--text-h:#eef4f6;--text-muted:#6f7d86;--bg:#12161a;--card-bg:#1c2229;--border:#2a333a;--accent:#2e8cff;--accent-2:#0b5fe0;--accent-bg:#2e8cff24;--good:#4ade80;--good-bg:#4ade801f;--bad:#f87171;--bad-bg:#f871711f;--gold:#ff972c;--gold-2:#fc8244;--gold-bg:#ff972c24;--shadow:#00000073 0 4px 16px;--sans:system-ui, "Segoe UI", Roboto, sans-serif;font:16px/145% var(--sans);--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}h1,h2{color:var(--text-h);margin:0;font-weight:600}p{margin:0}button{font:inherit;color:inherit}#root{flex-direction:column;min-height:100svh;display:flex}.app-shell{width:100%;max-width:480px;min-height:100svh;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));overflow-anchor:none;flex-direction:column;margin:0 auto;display:flex}.screen{touch-action:pan-y;flex-direction:column;flex:1;gap:16px;display:flex}.home .hero{padding:24px 4px 8px}.home h1{letter-spacing:-.5px;color:#aab4bd;text-shadow:0 0 3px #2e8cff99,0 0 16px #2e8cff73,0 0 32px #2e8cff40;-webkit-text-stroke:1px #eef4f626;font-family:Alfa Slab One,ui-serif,Georgia,serif;font-size:32px;font-weight:400}.home .tagline{color:var(--gold);text-transform:uppercase;letter-spacing:.08em;margin-top:4px;font-size:13px;font-weight:700}.home .subtitle{color:var(--text-muted);margin-top:6px;font-size:15px}.rank-card{text-align:left;width:100%;font:inherit;background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);cursor:pointer;border-radius:16px;flex-direction:column;gap:8px;padding:16px;transition:transform .1s;display:flex}.rank-card:active{transform:scale(.98)}.rank-top{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;display:flex}.rank-name{color:var(--gold);font-size:17px;font-weight:700}.rank-xp{color:var(--text-muted);font-size:13px;font-weight:400}.rank-accuracy{color:var(--text-muted);flex-shrink:0;align-items:center;gap:3px;font-size:13px;display:inline-flex}.xp-bar{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:20px;overflow:hidden}.xp-bar-fill{background:linear-gradient(90deg, var(--accent-2), var(--gold), var(--gold-2));will-change:transform;background-size:200% 100%;height:100%;transition:width .35s cubic-bezier(.34,1.56,.64,1);transform:translateZ(0)}.xp-bar-fill.pulse{filter:drop-shadow(0 0 3px #ff972c99)drop-shadow(0 0 16px #ff972c73)drop-shadow(0 0 32px #ff972c40);animation:.6s ease-out xp-bar-sheen}@keyframes xp-bar-sheen{0%{background-position:0 0}to{background-position:-200% 0}}.hud-xp{flex:100%;order:3}.rank-next{color:var(--text-muted);justify-content:space-between;gap:12px;font-size:12px;display:flex}.rank-seen{text-align:right;flex-shrink:0}.medal-case{gap:10px;padding:2px 2px 4px;display:flex;overflow:auto hidden}.medal{background:var(--card-bg);border:1px solid var(--border);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:52px;height:52px;padding:0;display:flex;position:relative}.medal-icon{object-fit:contain;width:30px;height:30px}.medal.earned{background:var(--gold-bg);border-color:var(--gold)}.medal.locked{filter:grayscale();opacity:.35}.medal.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-bg)}.medal-count{background:var(--gold);color:#1a0f04;text-align:center;border:2px solid var(--bg);border-radius:999px;min-width:18px;height:18px;padding:0 4px;font-size:10px;font-weight:800;line-height:18px;position:absolute;bottom:-4px;right:-4px}.medal-detail{background:var(--card-bg);border:1px solid var(--accent);border-radius:14px;align-items:flex-start;gap:12px;padding:14px;display:flex}.medal-detail-icon{object-fit:contain;flex-shrink:0;width:40px;height:40px}.medal-detail-name{color:var(--text-h);font-size:15px;font-weight:700}.medal-detail-locked{color:var(--text-muted);font-weight:400}.medal-detail-count{color:var(--gold);font-weight:700}.medal-detail-desc{color:var(--text-muted);margin-top:2px;font-size:13px}.medal-detail-close{color:var(--text);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;margin-left:auto;padding:4px;display:flex}.stats-row strong{color:var(--text-h);font-size:16px}.section-list{flex-direction:column;gap:12px;display:flex}.section-card{text-align:left;background:var(--card-bg);border:1px solid var(--border);cursor:pointer;box-shadow:var(--shadow);border-radius:16px;flex-direction:column;gap:4px;padding:18px;transition:transform .1s;display:flex}.section-card:active{transform:scale(.98)}.section-card-top{justify-content:space-between;align-items:center;display:flex}.section-name{color:var(--text-h);font-size:17px;font-weight:600}.section-badge{color:var(--accent);background:var(--accent-bg);border-radius:999px;padding:2px 10px;font-size:13px;font-weight:600}.section-meta{color:var(--text-muted);font-size:13px}.home-footer{flex-direction:column;align-items:center;gap:4px;margin-top:auto;display:flex}.reset-link{color:var(--text-muted);cursor:pointer;background:0 0;border:none;align-self:center;padding:12px;font-size:13px;text-decoration:underline}.toggle-row{flex-wrap:wrap;justify-content:center;gap:16px 24px;display:flex}.toggle-group{align-items:center;gap:10px;display:flex}.toggle-label{color:var(--text-muted);font-size:13px}.toggle-options{background:var(--bg);border:1px solid var(--border);border-radius:999px;gap:2px;padding:3px;display:flex}.toggle-option{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:6px 16px;font-size:13px;font-weight:600}.toggle-option.active{background:var(--accent-bg);color:var(--accent)}.modal-overlay{z-index:100;background:#0009;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-card{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:16px;width:100%;max-width:340px;padding:20px;display:flex;box-shadow:0 8px 32px #00000080}.modal-message{color:var(--text-h);font-size:15px;line-height:1.4}.modal-actions{flex-direction:column;gap:10px;display:flex}.modal-button{cursor:pointer;border:none;border-radius:12px;padding:14px;font-size:15px;font-weight:600}.modal-button-danger{background:var(--bad);color:#fff}.modal-button-cancel{border:1px solid var(--border);color:var(--text-h);background:0 0}.loading{flex:1;justify-content:center;align-items:center;gap:16px}.spinner{border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:32px;height:32px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.error-message{color:var(--bad);background:var(--bad-bg);border-radius:12px;padding:12px 14px;font-size:14px}.practice-header{align-items:center;gap:12px;display:flex}.icon-button{color:var(--text);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:8px;line-height:1;display:flex}.page-header{align-items:center;gap:12px;display:flex}.page-title{color:var(--text-h);font-size:20px;font-weight:700}.rank-list{flex-direction:column;gap:10px;display:flex}.rank-list-item{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.rank-list-item.current{border-color:var(--gold);background:var(--gold-bg)}.rank-list-top{align-items:baseline;gap:8px;display:flex}.rank-list-name{color:var(--text-h);font-size:16px;font-weight:700}.rank-list-badge{text-transform:uppercase;letter-spacing:.04em;color:var(--gold);background:var(--card-bg);border:1px solid var(--gold);border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700}.rank-list-xp{color:var(--text-muted);margin-left:auto;font-size:13px}.rank-list-desc{color:var(--text-muted);font-size:13px}.progress-bar{background:var(--border);border-radius:999px;flex:1;height:6px;overflow:hidden}.progress-bar-fill{background:var(--accent);height:100%;transition:width .2s}.progress-count{color:var(--text-muted);text-align:right;min-width:36px;font-size:13px}.hud-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.hud-xp .xp-bar{height:14px}.hud-score{color:var(--gold);font-size:14px;font-weight:700}.hud-streak{color:var(--bad);background:var(--bad-bg);border-radius:999px;padding:3px 10px;font-size:13px;font-weight:700}.question-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);touch-action:pan-y;will-change:transform;border-radius:16px;flex-direction:column;gap:14px;padding:20px;display:flex;position:relative}.tag-row{flex-wrap:wrap;gap:8px;padding-right:34px;display:flex}.skill-tag{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);background:var(--accent-bg);border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:12px;font-weight:600}.difficulty-tag{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;align-self:flex-start;padding:4px 10px;font-size:12px;font-weight:600}.difficulty-tag.difficulty-H{color:var(--bad)}.shuffle-button{border:1px solid var(--border);color:var(--text);cursor:pointer;background:0 0;border-radius:999px;justify-content:center;align-items:center;width:26px;height:26px;display:flex;position:absolute;top:20px;right:20px}.shuffle-button:active{background:var(--bg)}.passage{color:var(--text);border-left:3px solid var(--border);padding-left:12px;font-size:15px;font-style:italic;line-height:1.5}.prompt{color:var(--text-h);font-size:17px;font-weight:600;line-height:1.4}.passage p,.prompt p,.choice-body p,.feedback-explanation p{margin:0 0 8px}.passage p:last-child,.prompt p:last-child,.choice-body p:last-child,.feedback-explanation p:last-child{margin-bottom:0}.choice-body{flex:1}.prompt math,.choice-body math,.passage math,.feedback-explanation math{font-size:1em}.prompt svg,.choice-body svg,.passage svg,.feedback-explanation svg{filter:invert(.92)hue-rotate(180deg);max-width:100%;height:auto}.prompt figure,.passage figure,.feedback-explanation figure{margin:0}.prompt table,.passage table,.feedback-explanation table{-webkit-overflow-scrolling:touch;border-collapse:collapse;width:100%;margin:8px 0;font-size:14px;display:block;overflow-x:auto}.prompt th,.prompt td,.passage th,.passage td,.feedback-explanation th,.feedback-explanation td{border:1px solid var(--border);white-space:nowrap;padding:4px 8px}.underline{text-decoration:underline}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.choices{flex-direction:column;gap:10px;display:flex}.choice{text-align:left;background:var(--bg);border:1px solid var(--border);cursor:pointer;border-radius:12px;align-items:center;gap:12px;padding:14px;font-size:15px;display:flex}.choice:disabled{cursor:default}.choice-letter{background:var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:flex}.choice.correct{border-color:var(--good);background:var(--good-bg)}.choice.correct .choice-letter{background:var(--good);color:#fff}.choice.incorrect{border-color:var(--bad);background:var(--bad-bg)}.choice.incorrect .choice-letter{background:var(--bad);color:#fff}.choice.eliminated{opacity:.4}.choice.eliminated .choice-body{text-decoration:line-through}.choice.wrong-tried{border-color:var(--bad);background:var(--bad-bg);opacity:.5}.choice.wrong-tried .choice-letter{background:var(--bad);color:#fff}.choice.shake{border-color:var(--bad);background:var(--bad-bg);animation:.5s choice-shake}@keyframes choice-shake{10%,90%{transform:translate(-1px)}20%,80%{transform:translate(2px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}@media (prefers-reduced-motion:reduce){.choice.shake{animation:none}}.feedback{border-radius:12px;flex-direction:column;gap:4px;padding:14px;display:flex}.feedback.good{background:var(--good-bg);animation:.4s cubic-bezier(.34,1.56,.64,1) feedback-pop}.feedback.bad{background:var(--bad-bg)}@keyframes feedback-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.starburst{pointer-events:none;z-index:60;will-change:transform;justify-content:center;align-items:center;width:0;height:0;display:flex;position:fixed;top:50vh;left:50vw;transform:translateZ(0)}.starburst-flash{background:radial-gradient(circle, #fff 0%, #ffe3a3 14%, var(--gold) 34%, var(--gold-2) 54%, #78220e8c 74%, transparent 86%);border-radius:50%;width:36px;height:36px;animation:.7s ease-out forwards starburst-flash;position:absolute}.starburst-ray{background:linear-gradient(to top, transparent, var(--gold-2) 40%, #ffe3a3);transform-origin:bottom;border-radius:999px;width:3px;height:26px;animation:.5s cubic-bezier(.15,.8,.3,1) forwards starburst-ray;position:absolute}.starburst-spark{border-radius:50%;width:6px;height:6px;animation:.6s cubic-bezier(.15,.8,.3,1) forwards starburst-spark;position:absolute}.starburst-spark--gold{background:var(--gold);box-shadow:0 0 6px 2px #ff972c99}.starburst-spark--ember{background:#ff5a36;box-shadow:0 0 6px 2px #ff5a3699}.starburst-spark--white{background:#fff;box-shadow:0 0 6px 2px #fff9}.starburst-scorch{filter:blur(2px);background:radial-gradient(circle,#0a0806bf 0%,#0a080659 45%,#0000 72%);border-radius:50%;width:46px;height:46px;animation:1.6s cubic-bezier(.2,.8,.3,1) forwards starburst-scorch;position:absolute}.starburst-hole{clip-path:polygon(50% 2%,60% 8%,56% 18%,72% 14%,66% 28%,82% 26%,74% 40%,90% 44%,78% 52%,92% 62%,76% 64%,84% 78%,66% 70%,68% 88%,54% 76%,50% 94%,44% 78%,32% 90%,36% 74%,18% 80%,28% 64%,10% 60%,26% 50%,8% 38%,24% 36%,14% 22%,30% 26%,26% 10%,42% 16%);background:radial-gradient(circle at 35% 30%,#1a1512 0%,#0b0908 55%,#000 100%);border-radius:50%;width:22px;height:22px;animation:1.6s cubic-bezier(.2,.8,.3,1) forwards starburst-hole;position:absolute;box-shadow:0 0 0 1px #0006}.starburst-smoke-puff{filter:blur(1.5px);opacity:0;background:radial-gradient(circle,#d6d6d68c 0%,#d6d6d638 55%,#0000 75%);border-radius:50%;width:12px;height:12px;animation:1.5s ease-out forwards starburst-smoke;position:absolute;top:-6px;left:-6px}@keyframes starburst-flash{0%{opacity:1;transform:scale(.2)}60%{opacity:.55;transform:scale(5)}to{opacity:0;transform:scale(8)}}@keyframes starburst-ray{0%{transform:rotate(var(--angle,0)) translateY(-4px) scaleY(.3);opacity:1}to{transform:rotate(var(--angle,0)) translateY(-64px) scaleY(1);opacity:0}}@keyframes starburst-spark{0%{transform:rotate(var(--angle,0)) translateY(0) scale(1);opacity:1}to{transform:rotate(var(--angle,0)) translateY(calc(-1 * var(--dist,60px))) scale(.3);opacity:0}}@keyframes starburst-scorch{0%{opacity:0;transform:scale(.2)}20%{opacity:1;transform:scale(1.1)}75%{opacity:.8;transform:scale(1)}to{opacity:0;transform:scale(.9)}}@keyframes starburst-hole{0%{opacity:0;transform:scale(.3)}15%{opacity:1;transform:scale(1.2)}25%{opacity:1;transform:scale(1)}75%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.92)}}@keyframes starburst-smoke{0%{opacity:0;transform:translate(0)scale(.6)}15%{opacity:.7}to{transform:translate(var(--drift,0px), -68px) scale(calc(var(--scale,1) * 1.9));opacity:0}}@media (prefers-reduced-motion:reduce){.starburst,.starburst-flash,.starburst-ray,.starburst-spark,.starburst-scorch,.starburst-smoke-puff,.score-card,.feedback.good,.score-pct.settled{animation:none!important}.starburst-hole{opacity:1;transform:scale(1);animation:none!important}.xp-bar-fill{transition:width .15s linear;animation:none!important}}.feedback-title{font-size:14px;font-weight:700}.feedback.good .feedback-title{color:var(--good)}.feedback.bad .feedback-title{color:var(--bad)}.feedback-explanation{color:var(--text);font-size:14px;line-height:1.5}.explanation-tldr{color:var(--text-h);border-bottom:1px solid var(--border);margin:0 0 10px;padding-bottom:10px;font-size:14px;font-weight:600;line-height:1.5}.explanation-tldr-label{text-transform:uppercase;letter-spacing:.04em;color:var(--accent);margin-right:6px;font-size:11px;font-weight:700}.primary-button{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:12px;padding:16px;font-size:16px;font-weight:600}.primary-button:active{opacity:.85}.swipe-hint{text-align:center;color:var(--text-muted);margin-top:-8px;font-size:12px}.secondary-button{border:1px solid var(--border);color:var(--text-h);cursor:pointer;background:0 0;border-radius:12px;padding:16px;font-size:16px;font-weight:600}.hint-button{border:1px solid var(--gold);color:var(--gold);cursor:pointer;background:0 0;border-radius:12px;align-items:center;gap:8px;padding:12px;font-size:14px;font-weight:600;animation:.3s ease-out hint-in;display:flex}.hint-button svg{flex-shrink:0}.hint-button:active{background:var(--gold-bg)}@keyframes hint-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion:reduce){.hint-button{animation:none}}.score-card{background:var(--card-bg);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;flex-direction:column;align-items:center;gap:10px;padding:32px 28px;animation:.6s cubic-bezier(.2,.9,.3,1.2) score-card-in;display:flex;position:relative;overflow:hidden}.score-card:before{content:"";z-index:0;pointer-events:none;background:radial-gradient(circle,#ff972c40 0%,#0000 65%);animation:2.2s ease-in-out infinite score-glow-pulse;position:absolute;inset:-40%}@keyframes score-card-in{0%{opacity:0;transform:scale(.7)}60%{opacity:1;transform:scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes score-glow-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.15)}}@keyframes score-pct-pop{0%{transform:scale(1)}40%{transform:scale(1.2)}to{transform:scale(1)}}.score-label{z-index:1;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted);font-size:12px;font-weight:700;position:relative}.score-pct{z-index:1;color:var(--gold);text-shadow:0 0 3px #ff972c99,0 0 16px #ff972c73,0 0 32px #ff972c40;font-size:48px;font-weight:700;position:relative}.score-pct.settled{animation:.4s score-pct-pop}.score-detail{z-index:1;color:var(--text-muted);margin-top:2px;font-size:14px;position:relative}.xp-gain-card{background:var(--accent-bg);border:1px solid var(--accent);border-radius:16px;flex-direction:column;gap:4px;padding:14px 16px;display:flex}.xp-gain-top{justify-content:space-between;align-items:center;display:flex}.xp-gain-amount{color:var(--accent);font-size:18px;font-weight:700}.xp-gain-rank{color:var(--text-muted);font-size:13px}.xp-gain-bonus{color:var(--text-muted);font-size:12px}.rank-up{color:var(--gold);font-size:13px;font-weight:700}.medals-earned h2{margin-bottom:8px}.medals-earned-list{flex-direction:column;gap:10px;display:flex}.medal-earned-item{background:var(--gold-bg);border:1px solid var(--gold);border-radius:12px;align-items:center;gap:12px;padding:12px;display:flex}.medal-earned-item .medal-icon{object-fit:contain;width:34px;height:34px}.medal-earned-name{color:var(--text-h);font-size:14px;font-weight:700}.medal-earned-desc{color:var(--text-muted);font-size:12px}.review-list{flex-direction:column;gap:12px;display:flex}.review-item{background:var(--card-bg);border:1px solid var(--border);border-radius:16px;flex-direction:column;gap:8px;padding:16px;display:flex}.review-answer{font-size:14px;font-weight:600}.review-answer.wrong{color:var(--bad)}.review-answer.right{color:var(--good)}.perfect-message{text-align:center;color:var(--good);padding:16px;font-weight:600}.results-actions{flex-direction:column;gap:10px;margin-top:auto;padding-top:8px;display:flex}
