:root{--bg:#f6f7f9;--surface:#fff;--surface-2:#f0f2f5;--text:#1a1d23;--muted:#5f6672;--border:#dde1e7;--primary:#2563eb;--primary-hover:#1d4ed8;--primary-text:#fff;--primary-soft:#e8efff;--good:#15803d;--good-soft:#e7f6ec;--bad:#c62828;--bad-soft:#fdecec;--warn:#b45309;--warn-soft:#fef3e2;--shadow:0 1px 2px #1018280f, 0 1px 3px #10182814;--shadow-lg:0 12px 32px #1018282e, 0 2px 6px #1018281a;--radius:12px;--xp:#7c3aed;--xp-soft:#f1ebff;--flame:#c2410c;--flame-soft:#fff1e7;--ice:#0e7490;--ice-soft:#e4f6fa;--mastered:#0f6b32;--good-mid:#6fcf97;--header-h:57px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--bg:#14161a;--surface:#1d2026;--surface-2:#262a32;--text:#e8eaee;--muted:#9aa2ae;--border:#343944;--primary:#5b8cff;--primary-hover:#7aa2ff;--primary-text:#0b1020;--primary-soft:#1f2b47;--good:#4ade80;--good-soft:#15301f;--bad:#f87171;--bad-soft:#3a1c1c;--warn:#fbbf24;--warn-soft:#3a2c10;--shadow:none;--shadow-lg:0 12px 32px #0000008c;--xp:#b69cff;--xp-soft:#2b2342;--flame:#fb923c;--flame-soft:#3a2414;--ice:#67d4ea;--ice-soft:#12313a;--mastered:#86efac;--good-mid:#2f8a52;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body{background:var(--bg);min-height:100%;margin:0}h1,h2,h3{margin:0 0 .5rem;line-height:1.25}h1{font-size:1.5rem}h2{font-size:1.1rem}h3{font-size:1rem}p{margin:0 0 .75rem}a{color:var(--primary)}button,input,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--primary);outline-offset:2px}.container{width:100%;max-width:720px;margin:0 auto;padding:0 16px}.main{padding-top:20px;padding-bottom:48px}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}.pad{padding:24px 16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.btn{cursor:pointer;-webkit-user-select:none;user-select:none;border:1px solid #0000;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-height:48px;padding:10px 18px;font-weight:600;text-decoration:none;transition:background .15s,border-color .15s;display:inline-flex}.btn:disabled,.btn[aria-disabled=true]{opacity:.55;cursor:default}.btn-primary{background:var(--primary);color:var(--primary-text)}.btn-primary:not(:disabled):hover{background:var(--primary-hover)}.btn-secondary{background:var(--surface-2);border-color:var(--border);color:var(--text)}.btn-secondary:not(:disabled):hover{border-color:var(--muted)}.btn-ghost{color:var(--text);background:0 0}.btn-ghost:not(:disabled):hover{background:var(--surface-2)}.btn-danger{color:var(--bad)}.btn-sm{min-height:40px;padding:6px 12px}.btn-block{width:100%}.btn-grow{flex:1}.btn-icon{min-width:52px;padding:0 12px;font-size:1.5rem;line-height:1}.alert{border-radius:10px;margin:12px 0;padding:10px 14px}.alert-error{background:var(--bad-soft);color:var(--bad)}.badge{white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:600;display:inline-block}.badge-done{background:var(--good-soft);color:var(--good)}.badge-progress{background:var(--warn-soft);color:var(--warn)}.site-header{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;padding-top:env(safe-area-inset-top);position:sticky;top:0}.header-inner{justify-content:space-between;align-items:center;gap:8px;min-height:56px;display:flex}.brand{color:var(--text);letter-spacing:-.02em;flex-shrink:0;font-size:1.15rem;font-weight:800;text-decoration:none}.brand-dot{color:var(--primary)}.nav{gap:2px;min-width:0;display:flex}.nav a{min-width:60px;min-height:48px;color:var(--muted);white-space:nowrap;border-radius:10px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:4px 6px;font-size:.7rem;font-weight:600;line-height:1.1;text-decoration:none;display:inline-flex}.nav a:hover{background:var(--surface-2);color:var(--text)}.nav a.active{color:var(--primary);background:var(--primary-soft)}.nav a.active .icon{stroke-width:2.3px}@media (width>=600px){.nav{gap:4px}.nav a{flex-direction:row;gap:6px;min-height:40px;padding:0 12px;font-size:.9rem}}.icon{flex-shrink:0}.login-wrap{max-width:420px;padding-top:8vh;padding-bottom:48px}.login-brand{text-align:center;margin-bottom:20px;font-size:2rem;font-weight:800}.login-card{padding:8px 20px 20px}.tabs{border-bottom:1px solid var(--border);margin:0 -20px 16px;padding:0 12px;display:flex}.tab{min-height:52px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-bottom:3px solid #0000;flex:1;font-weight:600}.tab.active{color:var(--primary);border-bottom-color:var(--primary)}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:4px;font-weight:600;display:flex}.field small{font-weight:400}input:not([type=checkbox]),select{border:1px solid var(--border);background:var(--surface);border-radius:10px;width:100%;min-height:48px;padding:10px 12px;font-size:1rem}input:not([type=checkbox]):focus,select:focus{border-color:var(--primary)}.stats{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:24px;display:grid}.stat-value.skeleton-text{color:#0000;min-width:2.5em}.stat{text-align:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;align-items:center;padding:12px 8px;display:flex}.stat-value{font-size:1.5rem;font-weight:800}.stat-label{color:var(--muted);font-size:.8rem;line-height:1.2}.section-head{flex-wrap:wrap;align-items:center;gap:8px 16px;margin-bottom:12px;display:flex}.section-head h1{margin:0}.search{flex:1;min-width:200px}.quiz-list,.history-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.quiz{flex-direction:column;gap:10px;padding:14px 16px;display:flex}.quiz-top{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.quiz-info{min-width:0}.quiz-title{margin:0 0 2px;font-size:1.05rem}.quiz-start{flex-shrink:0;min-height:42px;padding:8px 16px}.quiz-progress{align-items:center;gap:10px;display:flex}.quiz-progress .meter{flex:1}.quiz-seen{font-variant-numeric:tabular-nums;flex-shrink:0}.hint-good{color:var(--good);font-weight:600}.hint-ok{color:var(--warn);font-weight:600}.hint-bad{color:var(--bad);font-weight:600}.start-controls{grid-template-columns:1fr 1fr;gap:8px;display:grid}.start-controls select{text-overflow:ellipsis;min-width:0;min-height:42px;padding:6px 10px;font-size:.92rem}.quiz .alert,.mixed .alert{margin:0}.meter{background:var(--surface-2);border-radius:999px;height:6px;display:flex;overflow:hidden}.meter-lg{height:10px}.meter>div{height:100%}.meter-primary{background:var(--primary);border-radius:999px}.meter-good{background:var(--good)}.meter-bad{background:var(--bad);opacity:.75}.meter-lg .meter-good{border-radius:999px}.mixed{border-color:color-mix(in srgb, var(--primary) 35%, var(--border));background:linear-gradient(135deg, var(--primary-soft), var(--surface) 70%);flex-direction:column;gap:12px;margin-bottom:24px;padding:16px;display:flex}.mixed-title{margin:0;font-size:1.15rem}.mixed-sub{margin:2px 0 0}.mixed-actions{flex-wrap:wrap;gap:8px;display:flex}.mixed-actions .btn{white-space:nowrap;flex:auto}@keyframes shimmer{0%{background-position:100% 0}to{background-position:-100% 0}}.skeleton-card,.skeleton-text,.skeleton-row,.skeleton-option{background:linear-gradient(90deg, var(--surface-2) 25%, var(--surface) 50%, var(--surface-2) 75%);background-size:200% 100%;animation:1.4s ease-in-out infinite shimmer}.skeleton-card{border-color:var(--border)}.skeleton-card.mixed{height:176px}.skeleton-quiz{height:148px}.skeleton-history{height:72px}.skeleton-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.skeleton-text{border-radius:6px}.skeleton-line{height:1em;margin-bottom:8px}.skeleton-option{cursor:default;border-color:#0000}@media (prefers-reduced-motion:reduce){.skeleton-card,.skeleton-text,.skeleton-row,.skeleton-option{animation:none}}.empty{text-align:center;flex-direction:column;align-items:center;gap:4px;padding:28px 20px;display:flex}.empty p{margin:0}.empty .btn{margin-top:12px}.empty-icon{font-size:2.2rem;line-height:1;margin-bottom:8px!important}.empty-title{font-size:1.05rem;font-weight:700}.history-item{align-items:stretch;min-height:64px;transition:border-color .15s,opacity .15s;display:flex}.history-item:hover{border-color:var(--primary)}.history-item.removing{opacity:.5}.history-link{min-width:0;color:var(--text);border-radius:var(--radius) 0 0 var(--radius);flex:1;justify-content:space-between;align-items:center;gap:12px;padding:12px 4px 12px 16px;text-decoration:none;display:flex}.history-main{flex-direction:column;gap:4px;min-width:0;display:flex}.history-title{overflow-wrap:anywhere;font-weight:600;line-height:1.3}.history-meta{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.history-side{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:4px;display:flex}.history-score{font-variant-numeric:tabular-nums;font-weight:700}.score-good{color:var(--good)}.score-ok{color:var(--warn)}.score-bad{color:var(--bad)}.history-delete{min-width:44px;min-height:44px;color:var(--muted);flex-shrink:0;align-self:center;margin-right:4px;padding:0}.history-delete:not(:disabled):hover{color:var(--bad);background:var(--bad-soft)}.badge-mode{background:var(--surface-2);color:var(--muted);border:1px solid var(--border);padding:1px 8px;font-size:.72rem}.badge-mode-mistakes{background:var(--bad-soft);color:var(--bad);border-color:#0000}.badge-mode-unseen{background:var(--primary-soft);color:var(--primary);border-color:#0000}.segmented{background:var(--surface-2);border:1px solid var(--border);border-radius:10px;gap:2px;margin-left:auto;padding:3px;display:inline-flex}.segment{min-height:36px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:4px 12px;font-size:.88rem;font-weight:600}.segment.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}@media (prefers-color-scheme:dark){.segment.active{background:var(--border)}}.board{transition:opacity .15s;overflow:hidden}.board.stale{opacity:.55}.board-list{margin:0;padding:0;list-style:none}.board-row{border-top:1px solid var(--border);font-variant-numeric:tabular-nums;grid-template-columns:30px 26px minmax(0,1fr) auto;align-items:center;gap:6px;min-height:60px;padding:8px 12px;display:grid}.board-list .board-row:first-child,.board>.skeleton-row:first-child{border-top:0}.board-header{border-top:0;border-bottom:1px solid var(--border);background:var(--surface-2);min-height:0;color:var(--muted);padding-top:8px;padding-bottom:8px;font-size:.75rem;font-weight:600}.skeleton-row{border-radius:0}.board-rank{width:28px;height:28px;color:var(--muted);border-radius:999px;justify-content:center;align-items:center;font-size:.9rem;font-weight:800;display:inline-flex}.board-header .board-rank{height:auto}.medal{color:#3b2a00}.medal-1{background:#fcd34d}.medal-2{color:#2b3038;background:#d4d8de}.medal-3{color:#3d1d05;background:#f0b17a}.board-name{align-items:center;gap:6px;min-width:0;display:flex}.board-user{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.board-name .badge{flex-shrink:0}.board-num{text-align:right;white-space:nowrap}.board-correct{flex-direction:column;align-items:flex-end;line-height:1.2;display:flex}.board-correct strong{font-size:1.05rem;font-weight:800}.board-correct .small{font-size:.75rem}.board-row.me{background:var(--primary-soft);box-shadow:inset 3px 0 0 var(--primary)}.badge-me{background:var(--primary);color:var(--primary-text);padding:0 7px;font-size:.7rem}.profile{align-items:center;gap:14px;margin-bottom:24px;padding:16px;display:flex}.avatar{background:var(--primary);width:52px;height:52px;color:var(--primary-text);border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;font-size:1.5rem;font-weight:800;display:inline-flex}.profile-main{flex:1;min-width:0}.profile-main .username{text-overflow:ellipsis;white-space:nowrap;margin:0 0 2px;font-size:1.3rem;overflow:hidden}.profile-main p{margin:0}.section-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 10px 2px;font-size:.8rem}.account-form{flex-direction:column;gap:14px;padding:16px;display:flex}.field-error{color:var(--bad);font-weight:600!important}input[aria-invalid=true]{border-color:var(--bad)!important}.alert-success{background:var(--good-soft);color:var(--good)}.account-form .alert{margin:0}.attempt-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:8px;display:flex}.attempt-meta{flex-direction:column;min-width:0;display:flex}.attempt-title{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.attempt-pos{font-weight:700}.attempt-side{flex-direction:column;flex-shrink:0;align-items:flex-end;display:flex}.elapsed{font-variant-numeric:tabular-nums;align-items:center;gap:4px;display:inline-flex}.chapter-chip{background:var(--primary-soft);max-width:100%;color:var(--primary);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;margin:0;padding:2px 10px;font-size:.78rem;font-weight:700;display:inline-block;overflow:hidden}.attempt-score{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.progress{background:var(--surface-2);border-radius:999px;height:8px;margin-bottom:16px;overflow:hidden}.progress-bar{background:var(--primary);border-radius:999px;width:100%;height:100%;transition:transform .3s ease-out}.question-card{padding:18px 16px}.question-text{margin-bottom:.75rem;font-size:1.1rem;font-weight:600}.options{flex-direction:column;gap:10px;margin-top:12px;display:flex}.option{border:2px solid var(--border);background:var(--surface);cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:12px;align-items:flex-start;gap:12px;min-height:56px;padding:12px 14px;display:flex;position:relative}.option:not(.option-readonly):hover{border-color:var(--muted)}.option input{opacity:0;pointer-events:none;width:1px;height:1px;position:absolute}.option:has(input:focus-visible){outline:3px solid var(--primary);outline-offset:2px}.option-letter{border:2px solid var(--border);border-radius:7px;flex-shrink:0;justify-content:center;align-items:center;width:30px;height:30px;font-size:.9rem;font-weight:700;display:inline-flex}.option-text{flex:1;min-width:0;padding-top:2px}.option-mark{text-align:center;flex-shrink:0;width:1.1em;padding-top:2px;font-size:1.1rem;font-weight:800}.option-selected{border-color:var(--primary);background:var(--primary-soft)}.option-selected .option-letter{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.option-readonly{cursor:default}.option-correct{border-color:var(--good);background:var(--good-soft)}.option-correct .option-letter{background:var(--good);border-color:var(--good);color:var(--surface)}.option-correct .option-mark{color:var(--good)}.option-wrong{border-color:var(--bad);background:var(--bad-soft)}.option-wrong .option-letter{background:var(--bad);border-color:var(--bad);color:var(--surface)}.option-wrong .option-mark{color:var(--bad)}.option-missed{border-color:var(--good);border-style:dashed}.option-missed .option-letter{border-color:var(--good);color:var(--good)}.option-missed .option-mark{color:var(--good)}.feedback{border-radius:10px;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin-top:16px;padding:12px 14px;font-size:1.05rem;display:flex}.feedback-correct{background:var(--good-soft);color:var(--good)}.feedback-wrong{background:var(--bad-soft);color:var(--bad)}.feedback-detail{color:var(--text);font-size:.95rem}.explanation{border-left:4px solid var(--primary);background:var(--surface-2);border-radius:0 10px 10px 0;margin-top:12px;padding:12px 14px}.explanation h3{margin-bottom:4px}.rich{white-space:pre-wrap;overflow-wrap:anywhere;overflow-x:auto}.rich p,.rich ul,.rich ol,.rich table{margin:0 0 .5em}.rich>:last-child{margin-bottom:0}.rich ul,.rich ol{padding-left:1.3em}.rich table{border-collapse:collapse;white-space:normal}.rich td,.rich th{border:1px solid var(--border);padding:4px 8px}.action-bar{padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(to bottom, transparent, var(--bg) 30%);z-index:5;gap:8px;display:flex;position:sticky;bottom:0}.action-bar .btn{min-height:52px}.attempt-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.kbd-hint{display:none}@media (hover:hover) and (pointer:fine){.kbd-hint{display:inline}}.summary{text-align:center;padding:24px 20px}.summary-score{flex-direction:column;align-items:center;gap:4px;margin:16px 0;font-weight:600;display:flex}.summary-pct{font-size:3rem;font-weight:800;line-height:1}.summary-score.good .summary-pct{color:var(--good)}.summary-score.ok .summary-pct{color:var(--warn)}.summary-score.bad .summary-pct{color:var(--bad)}.summary-actions{flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px;display:flex}.summary-actions .btn{flex:180px}@media (width<=480px){:root{font-size:16px}.section-head .segmented{flex:100%}.segmented .segment{flex:1}.stat-value{font-size:1.3rem}.stats{gap:8px}}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.bar{background:var(--surface-2);border-radius:999px;height:8px;display:block;position:relative;overflow:hidden}.bar-sm{height:6px}.bar-fill{background:var(--primary);border-radius:999px;transition:transform .9s cubic-bezier(.22,1,.36,1);position:absolute;inset:0}.bar-xp .bar-fill{background:linear-gradient(90deg, color-mix(in srgb, var(--xp) 70%, var(--primary)), var(--xp))}.bar-mastery .bar-fill{background:var(--mastered)}.bar-mastery .bar-fill-seen{background:color-mix(in srgb, var(--good) 28%, var(--surface-2))}.meter-mastered{background:var(--mastered)}.meter>.meter-good{background:var(--good-mid)}.level{align-items:center;gap:12px;min-height:44px;display:flex}.level-skeleton{height:44px;margin:16px 0}.level-badge{background:linear-gradient(135deg, color-mix(in srgb, var(--xp) 75%, var(--primary)), var(--xp));color:#fff;font-variant-numeric:tabular-nums;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.05rem;font-weight:800;display:inline-flex;box-shadow:inset 0 -2px #00000026}.level-badge-sm{border-radius:8px;width:26px;height:26px;font-size:.78rem}.level-main{flex-direction:column;flex:1;gap:5px;min-width:0;display:flex}.level-head{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.level-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:700;overflow:hidden}.level-xp{color:var(--xp);font-variant-numeric:tabular-nums;flex-shrink:0;font-size:.82rem;font-weight:700}.level-xp .muted{font-weight:600}.ring{flex-shrink:0;position:relative}.ring svg{display:block}.ring-track{stroke:var(--surface-2)}.ring-fill{stroke:var(--primary)}.ring-done .ring-fill{stroke:var(--good)}.ring-label{font-variant-numeric:tabular-nums;justify-content:center;align-items:baseline;padding-top:26px;line-height:1;display:flex;position:absolute;inset:0}.ring-value{font-size:1.35rem;font-weight:800}.ring-goal{color:var(--muted);font-size:.78rem;font-weight:600}.ring-check{color:var(--good);margin-top:-4px;font-size:1.6rem;font-weight:800}.hero{flex-direction:column;gap:14px;margin-bottom:12px;padding:16px;display:flex}.skeleton-card.hero{height:226px}.hero-countdown{background:var(--primary-soft);color:var(--primary);border-radius:999px;align-self:flex-start;margin:0;padding:4px 12px;font-size:.85rem;font-weight:700}.hero-main{align-items:center;gap:16px;display:flex}.hero-ring{color:inherit;border-radius:999px;flex-shrink:0;text-decoration:none}.hero-today{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.hero-streak{flex-wrap:wrap;align-items:center;gap:6px 8px;display:flex}.hero-flame{font-size:1.35rem;line-height:1}.hero-streak-off .hero-flame{filter:grayscale();opacity:.55}.hero-streak-text{font-size:1.2rem;font-weight:800;line-height:1.2}.freeze-chip{background:var(--ice-soft);color:var(--ice);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;padding:1px 8px;font-size:.82rem;font-weight:700;display:inline-flex}.freeze-chip-off{background:var(--surface-2);color:var(--muted);filter:grayscale(.7)}.hero-goal{font-variant-numeric:tabular-nums;margin:0}.goal-done{color:var(--good);font-weight:700}.hero-best{margin:0}.at-risk{border-radius:var(--radius);background:var(--flame-soft);color:var(--text);align-items:baseline;gap:8px;margin:0 0 12px;padding:10px 14px;font-size:.92rem;display:flex}.cta-wrap{margin-bottom:24px}.cta-wrap .alert{margin-bottom:0}.btn-cta{text-align:left;width:100%;min-height:72px;box-shadow:0 6px 16px color-mix(in srgb, var(--primary) 30%, transparent);border-radius:14px;justify-content:space-between;gap:12px;padding:12px 18px}.btn-cta .icon{transition:transform .2s ease-out}.btn-cta:not(:disabled):hover .icon{transform:translate(3px)}.cta-text{flex-direction:column;gap:2px;min-width:0;display:flex}.cta-label{font-size:1.08rem;font-weight:800;line-height:1.25}.cta-caption{opacity:.88;font-size:.85rem;font-weight:500;line-height:1.3}.btn-cta-skeleton{border-radius:14px;height:72px;margin-bottom:24px}.cards{grid-template-columns:1fr;gap:10px;margin-bottom:28px;display:grid}@media (width>=640px){.cards{grid-template-columns:1fr 1fr}.cards>.sim-card,.cards>.weak-card{grid-column:span 2}}.tile{min-height:64px;color:var(--text);align-items:center;gap:12px;padding:12px 14px;text-decoration:none;transition:border-color .15s;display:flex}a.tile:hover{border-color:var(--primary)}.tile .icon{color:var(--muted);flex-shrink:0}.tile-icon{background:var(--surface-2);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.25rem;line-height:1;display:inline-flex}.tile-text{flex-direction:column;flex:1;gap:1px;min-width:0;display:flex}.tile-title{margin:0;font-size:1rem;font-weight:700;line-height:1.3}.tile-date{font-weight:500}.tile-sub{color:var(--muted);margin:0;font-size:.85rem;line-height:1.35}.tile-action{background:var(--primary);color:var(--primary-text);border-radius:999px;flex-shrink:0;padding:6px 12px;font-size:.85rem;font-weight:700}.tile-skeleton{height:72px}.daily-result{color:var(--text);font-weight:700}.daily-correct{color:var(--good)}.daily-partial{color:var(--warn)}.daily-wrong{color:var(--bad)}.tile-card{flex-direction:column;gap:12px;padding:14px;display:flex}.tile-card .alert{margin:0}.tile-head{align-items:flex-start;gap:12px;display:flex}.tile-head .tile-sub{margin-top:2px}.sim-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.sim-btn{flex-direction:column;gap:0;min-height:58px;padding:8px 10px;line-height:1.25}.sim-name{font-weight:800}.sim-meta{color:var(--muted);font-size:.8rem;font-weight:500}.weak-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.weak-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.weak-row:first-child{border-top:0;padding-top:0}.weak-info{flex-direction:column;min-width:0;display:flex}.weak-name{font-weight:600;line-height:1.3}.weak-row .btn{flex-shrink:0}.btn-mistakes{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 35%, var(--border));background:var(--surface)}.section-label{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 8px 2px;font-size:.8rem}.topic{margin-bottom:28px}.topic-box{border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:text;border-radius:12px;align-items:center;gap:8px;padding:0 12px;display:flex}.topic-box:focus-within{border-color:var(--primary);outline:3px solid color-mix(in srgb, var(--primary) 30%, transparent)}.topic-box .topic-input{color:var(--text);background:0 0;border:0;outline:none;padding:10px 0}.topic-status{min-height:1.4em;color:var(--muted);margin:6px 2px 8px;font-size:.88rem}.topic-status-error{color:var(--bad)}.section-h{margin:0;font-size:1.35rem}.mixed .mixed-start{align-self:stretch}.mixed-head{flex-direction:column;display:flex}.quiz-badges{flex-wrap:wrap;gap:6px;margin-top:-2px;display:flex}.badge-mastered{background:var(--good-soft);color:var(--mastered);font-weight:600}.badge-due{background:var(--primary-soft);color:var(--primary)}.quiz-title{font-size:1.05rem}html.modal-open{overflow:hidden}.modal-backdrop{z-index:50;background:#0a0e1673;justify-content:center;align-items:center;padding:16px;animation:.18s ease-out fade-in;display:flex;position:fixed;inset:0}.modal-backdrop-sheet{align-items:flex-end;padding:0}.modal{background:var(--surface);border:1px solid var(--border);width:100%;max-width:400px;max-height:calc(100dvh - 32px);box-shadow:var(--shadow-lg);border-radius:16px;outline:none;padding:20px;animation:.22s cubic-bezier(.22,1,.36,1) pop-in;overflow-y:auto}.modal h2{font-size:1.2rem}.modal-sheet{max-width:720px;max-height:82dvh;padding:8px 16px calc(16px + env(safe-area-inset-bottom));border-bottom:0;border-radius:18px 18px 0 0;animation:.26s cubic-bezier(.22,1,.36,1) sheet-up}.modal-actions{gap:8px;margin-top:16px;display:flex}.modal-actions .btn{flex:1}.sheet-head{z-index:1;background:var(--surface);justify-content:space-between;align-items:center;gap:8px;margin:0 -16px;padding:8px 8px 4px 16px;display:flex;position:sticky;top:-8px}.sheet-head h2{margin:0}.sheet-close{min-width:44px;min-height:44px;padding:0}.sheet-actions{bottom:calc(-16px - env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--border);gap:8px;margin:12px -16px 0;padding:12px 16px 0;display:flex;position:sticky}.sheet-actions .btn{flex:1}@keyframes fade-in{0%{opacity:0}}@keyframes pop-in{0%{opacity:0;transform:translateY(8px)scale(.96)}}@keyframes sheet-up{0%{transform:translateY(100%)}}.qnav-summary{margin:0 0 8px}.qnav-legend{color:var(--muted);flex-wrap:wrap;gap:4px 14px;margin:0 0 12px;padding:0;font-size:.8rem;list-style:none;display:flex}.qnav-legend li{align-items:center;gap:6px;display:inline-flex}.qcell-dot{border:2px solid var(--border);border-radius:4px;width:12px;height:12px;display:inline-block}.qgrid{grid-template-columns:repeat(auto-fill,minmax(42px,1fr));gap:6px;margin:0;padding:2px;list-style:none;display:grid}.qcell{border:2px solid var(--border);background:var(--surface);width:100%;min-height:42px;color:var(--text);font-variant-numeric:tabular-nums;cursor:pointer;border-radius:10px;font-size:.9rem;font-weight:700}.qcell-filled,.qcell-dot.qcell-filled{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.qcell-correct,.qcell-dot.qcell-correct{background:var(--good-soft);border-color:var(--good);color:var(--good)}.qcell-partial,.qcell-dot.qcell-partial{background:var(--warn-soft);border-color:var(--warn);color:var(--warn)}.qcell-wrong,.qcell-dot.qcell-wrong{background:var(--bad-soft);border-color:var(--bad);color:var(--bad)}.qcell-current{outline:3px solid var(--text);outline-offset:2px}.toast-region{top:calc(var(--header-h) + env(safe-area-inset-top) + 8px);z-index:40;pointer-events:none;justify-content:center;padding:0 12px;display:flex;position:fixed;left:0;right:0}.toast{pointer-events:auto;background:var(--surface);border:1px solid var(--border);width:100%;max-width:420px;box-shadow:var(--shadow-lg);border-radius:14px;align-items:center;gap:12px;padding:10px 8px 10px 14px;animation:.32s cubic-bezier(.22,1,.36,1) toast-in;display:flex;position:relative}.toast-achievement{border-color:color-mix(in srgb, var(--xp) 45%, var(--border));background:linear-gradient(135deg, var(--xp-soft), var(--surface) 70%)}.toast-error{border-color:color-mix(in srgb, var(--bad) 45%, var(--border))}.toast-icon{font-size:1.6rem;line-height:1}.toast-text{flex-direction:column;flex:1;min-width:0;line-height:1.3;display:flex}.toast-eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--xp);font-size:.7rem;font-weight:800}.toast-title{font-size:.98rem}.toast-body{color:var(--muted);font-size:.85rem}.toast-close{width:40px;height:40px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.toast-close:hover{background:var(--surface-2)}.toast-more{background:var(--xp);color:#fff;border-radius:999px;padding:0 7px;font-size:.72rem;font-weight:800;line-height:18px;position:absolute;top:-8px;right:-6px}@keyframes toast-in{0%{opacity:0;transform:translateY(-14px)scale(.97)}}.levelup{text-align:center;padding-top:28px}.levelup-burst{justify-content:center;margin-bottom:12px;display:flex}.levelup-badge{background:linear-gradient(135deg, color-mix(in srgb, var(--xp) 70%, var(--primary)), var(--xp));color:#fff;width:84px;height:84px;box-shadow:0 0 0 8px var(--xp-soft), 0 10px 24px color-mix(in srgb, var(--xp) 40%, transparent);border-radius:26px;justify-content:center;align-items:center;font-size:2.4rem;font-weight:800;animation:.6s cubic-bezier(.34,1.56,.64,1) .1s both badge-pop;display:inline-flex}@keyframes badge-pop{0%{opacity:0;transform:scale(.4)rotate(-12deg)}}.levelup-title{margin-bottom:6px;font-size:1.5rem!important}.levelup-desc{margin-bottom:6px}.levelup-next{margin-bottom:18px}.confetti{z-index:60;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.q-top{justify-content:space-between;align-items:flex-start;gap:8px;margin:-4px -6px 10px 0;display:flex}.q-chips{flex-wrap:wrap;gap:6px;min-width:0;padding-top:6px;display:flex}.type-chip{background:var(--surface-2);color:var(--muted);white-space:nowrap;border-radius:999px;padding:2px 10px;font-size:.78rem;font-weight:700;display:inline-block}.bookmark{width:44px;height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;transition:color .15s;display:inline-flex}.bookmark:hover{background:var(--surface-2)}.bookmark-on{color:#e8a400}.bookmark-on .icon{animation:.35s cubic-bezier(.34,1.56,.64,1) star-pop}@keyframes star-pop{50%{transform:scale(1.3)}}.option-cs .option-letter{border-radius:999px}.answer-hint:empty{display:none}.cm-warning{background:var(--warn-soft);color:var(--warn);border-radius:10px;margin:12px 0 0;padding:8px 12px;font-size:.9rem;font-weight:600}.feedback{flex-direction:column;align-items:stretch;gap:8px;animation:.25s ease-out feedback-in;display:flex}@keyframes feedback-in{0%{opacity:0;transform:translateY(6px)}}.feedback-partial{background:var(--warn-soft);color:var(--warn)}.feedback-head{flex-wrap:wrap;align-items:center;gap:4px 10px;display:flex}.feedback-points{font-variant-numeric:tabular-nums;font-weight:800}.feedback-chips{gap:6px;margin-left:auto;display:inline-flex}.combo-chip,.xp-chip{white-space:nowrap;border-radius:999px;align-items:center;padding:2px 9px;font-size:.85rem;font-weight:800;display:inline-flex;position:relative}.combo-chip{background:var(--flame-soft);color:var(--flame)}.xp-chip{background:var(--xp-soft);color:var(--xp)}.xp-float{background:var(--xp);color:#fff;pointer-events:none;border-radius:999px;padding:2px 9px;font-size:.85rem;font-weight:800;animation:1.3s cubic-bezier(.22,1,.36,1) forwards xp-float;position:absolute;bottom:100%;right:0}@keyframes xp-float{0%{opacity:0;transform:translateY(14px)scale(.8)}20%{opacity:1;transform:translateY(0)scale(1.08)}70%{opacity:1}to{opacity:0;transform:translateY(-30px)scale(1)}}.feedback .feedback-detail{margin:0}.points-row-wrap{flex-direction:column;gap:4px;display:flex}.points-row{gap:6px;display:flex}.pr-cell{background:var(--surface);min-width:34px;color:var(--text);font-variant-numeric:tabular-nums;border-radius:8px;flex-direction:column;align-items:center;padding:3px 0;line-height:1.15;display:inline-flex}.pr-letter{color:var(--muted);font-size:.72rem;font-weight:700}.pr-value{font-weight:800}.pr-1 .pr-value{color:var(--good)}.pr-0 .pr-value{color:var(--bad)}.points-row-void .pr-value{color:var(--muted)}.points-note{color:var(--text);margin:0;font-size:.82rem}.feedback-meta{color:var(--text);flex-wrap:wrap;gap:4px 12px;margin:0;font-size:.88rem;display:flex}.srs-hint{color:var(--muted);font-weight:600}.ref-chip{background:var(--surface);border:1px solid var(--border);max-width:100%;color:var(--muted);border-radius:8px;align-items:flex-start;gap:6px;margin:10px 0 0;padding:4px 10px;font-size:.8rem;font-weight:600;line-height:1.35;display:inline-flex}.ref-chip .icon{margin-top:1px}.ref-text{overflow-wrap:anywhere}.grid-toggle{min-height:34px;margin-top:2px;padding:4px 10px}.exam-bar{top:calc(var(--header-h) + env(safe-area-inset-top));z-index:6;background:color-mix(in srgb, var(--bg) 92%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:10px;margin:-20px -16px 14px;padding:8px 16px;display:flex;position:sticky}.exam-clock{background:var(--surface);border:1px solid var(--border);font-variant-numeric:tabular-nums;border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-weight:800;display:inline-flex}.exam-clock-low{background:var(--warn-soft);color:var(--warn);border-color:#0000}.exam-clock-critical{background:var(--bad-soft);color:var(--bad);border-color:#0000;animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.6}}.exam-count{font-variant-numeric:tabular-nums;white-space:nowrap;flex:1;font-size:.9rem;font-weight:700}.exam-bar .grid-toggle{margin:0}.save-status{white-space:nowrap;min-height:1.2em}.exam-tools{align-items:center;min-height:40px;margin-top:10px;display:flex}.exam-tools .btn{min-height:40px;color:var(--muted);margin-left:-10px}.alert .retry{min-height:34px;margin-left:8px}.summary-line{max-width:34ch;margin:0 auto 8px}.summary-stats{grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;display:grid}.summary-stats-one{grid-template-columns:1fr}.summary-stat{background:var(--surface-2);border-radius:12px;flex-direction:column;align-items:center;padding:10px 8px;display:flex}.summary-stat-value{font-variant-numeric:tabular-nums;font-size:1.35rem;font-weight:800}.summary-stat-label{color:var(--muted);font-size:.8rem}.summary-stat-xp{background:var(--xp-soft)}.summary-stat-xp .summary-stat-value{color:var(--xp)}.summary .level,.exam-result .level{text-align:left;margin:4px 0 8px}.summary-actions-quiet{margin-top:8px}.unlocked{text-align:left;margin:16px 0 4px}.unlocked-title{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px;font-size:.8rem}.unlocked-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.unlocked-item{background:linear-gradient(135deg, var(--xp-soft), var(--surface) 80%);border:1px solid color-mix(in srgb, var(--xp) 30%, var(--border));border-radius:12px;align-items:center;gap:12px;padding:10px 12px;animation:.4s cubic-bezier(.22,1,.36,1) both pop-in;display:flex}.unlocked-icon{font-size:1.6rem;line-height:1}.unlocked-text{flex-direction:column;line-height:1.3;display:flex}.exam-result{text-align:center;padding:24px 18px}.exam-score{justify-content:center;align-items:baseline;gap:8px;margin:14px 0 4px;display:flex}.exam-points{color:var(--primary);font-variant-numeric:tabular-nums;font-size:3rem;font-weight:800;line-height:1}.exam-max{color:var(--muted);font-weight:700}.exam-sub{margin-bottom:6px}.split{text-align:left;grid-template-columns:1fr 1fr;gap:10px;margin:16px 0 0;display:grid}.split-item{background:var(--surface-2);border-radius:12px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.split-item .bar{background:var(--surface)}.split-head{flex-direction:column;display:flex}.split-label{color:var(--muted);font-size:.8rem;font-weight:700}.split-points{font-variant-numeric:tabular-nums;font-size:1.1rem;font-weight:800}.chapters-result{text-align:left;margin-top:20px}.chapters-title{font-size:1.05rem}.chapter-table{border-collapse:collapse;width:100%}.chapter-table thead th{color:var(--muted);text-align:left;border-bottom:1px solid var(--border);padding:4px 0 6px;font-size:.75rem;font-weight:600}.chapter-table td,.chapter-table tbody th{border-bottom:1px solid var(--border);vertical-align:middle;padding:8px 0}.chapter-table .num{text-align:right;padding-right:10px}.ct-title{text-align:left;font-weight:400}.ct-name{font-weight:600;line-height:1.3;display:block}.ct-points{white-space:nowrap;font-variant-numeric:tabular-nums}.ct-points>span{display:block}.ct-action{text-align:right;width:1%}.league-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:2px 12px;margin:-2px 2px 10px;display:flex}.league-title{margin:0;font-weight:700}.league-reset{color:var(--muted);margin:0;font-size:.88rem}.board-rank.medal{background:0 0;font-size:1.35rem}.board-name{flex-direction:column;align-items:flex-start;gap:0}.board-user-line{align-items:center;gap:6px;min-width:0;max-width:100%;display:flex}.board-level{text-overflow:ellipsis;white-space:nowrap;max-width:100%;line-height:1.25;overflow:hidden}.board-xp{flex-direction:column;align-items:flex-end;line-height:1.2;display:flex}.board-xp strong{color:var(--xp);font-size:1.05rem;font-weight:800}.board-xp-unit{font-size:.75rem;font-weight:700}.board-xp .small{font-size:.75rem}.profile{margin-bottom:12px}.level-card{margin-bottom:24px;padding:16px}.level-skeleton-card{height:96px}.level-next{margin:10px 0 0}.pad-card{margin-bottom:24px;padding:16px}.section-count{text-transform:none;letter-spacing:0;font-weight:600}.goal-setting .goal-row{justify-content:space-between;align-items:center;gap:12px;display:flex}.goal-label{margin:0;font-size:1.05rem}.goal-setting .muted.small{margin:0}.goal-status{min-height:1.3em;margin:6px 0 0}.goal-status-error{color:var(--bad);font-size:.85rem}.stepper{border:1px solid var(--border);background:var(--surface-2);border-radius:999px;flex-shrink:0;align-items:center;display:inline-flex}.stepper-btn{width:44px;height:40px;color:var(--text);cursor:pointer;background:0 0;border:0;border-radius:999px;font-size:1.2rem;font-weight:700;line-height:1}.stepper-btn:disabled{opacity:.4;cursor:default}.stepper-btn:not(:disabled):hover{background:var(--border)}.stepper-value{text-align:center;font-variant-numeric:tabular-nums;min-width:2.4em;font-weight:800}.heatmap{gap:4px;display:flex}.heatmap-days,.heatmap-grid{margin:0;padding:0;list-style:none}.heatmap-days{color:var(--muted);grid-template-rows:repeat(7,1fr);gap:3px;font-size:.65rem;line-height:1;display:grid}.heatmap-days li{align-items:center;display:flex}.heatmap-grid{flex:1;grid-template-rows:repeat(7,auto);grid-auto-columns:1fr;grid-auto-flow:column;gap:3px;display:grid}.hm-cell{aspect-ratio:1;background:var(--surface-2);border-radius:4px;display:block}.hm-pad{background:0 0}.hm-1{background:color-mix(in srgb, var(--good) 25%, var(--surface-2))}.hm-2{background:color-mix(in srgb, var(--good) 50%, var(--surface-2))}.hm-3{background:color-mix(in srgb, var(--good) 80%, var(--surface-2))}.hm-4{background:var(--mastered)}.hm-today{box-shadow:inset 0 0 0 2px var(--text)}.hm-picked{outline:2px solid var(--primary);outline-offset:1px}.heatmap-foot{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 12px;margin-top:10px;display:flex}.heatmap-caption{margin:0}.heatmap-legend{color:var(--muted);align-items:center;gap:3px;font-size:.72rem;display:inline-flex}.heatmap-legend .hm-cell{width:11px;height:11px}.heatmap-skeleton{border-radius:8px;height:150px}.achievements{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 0 24px;padding:0;list-style:none;display:grid}@media (width>=600px){.achievements{grid-template-columns:repeat(3,minmax(0,1fr))}}.ach{border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);flex-direction:column;gap:2px;padding:12px;display:flex}.ach-on{border-color:color-mix(in srgb, var(--xp) 35%, var(--border));background:linear-gradient(160deg, var(--xp-soft), var(--surface) 65%)}.ach-icon{margin-bottom:4px;font-size:1.6rem;line-height:1.1}.ach-off .ach-icon{filter:grayscale();opacity:.45}.ach-title{font-weight:700;line-height:1.25}.ach-off .ach-title{color:var(--muted)}.ach-desc{color:var(--muted);font-size:.78rem;line-height:1.3}.ach-date{color:var(--xp);margin-top:auto;padding-top:6px;font-size:.75rem;font-weight:700}.ach-progress{align-items:center;gap:8px;margin-top:auto;padding-top:8px;display:flex}.ach-progress .bar{flex:1}.ach-progress .bar-fill{background:var(--muted)}.ach-count{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.72rem;font-weight:700}.achievements-skeleton{height:260px;margin-bottom:24px}.mastery{margin-bottom:12px}.mastery-summary{cursor:pointer;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;min-height:52px;padding:14px 16px;font-weight:700;list-style-position:inside;display:flex}.mastery-list{margin:0;padding:0 16px 12px;list-style:none}.mastery-row{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) 72px auto;align-items:center;gap:10px;padding:6px 0;font-size:.88rem;display:grid}.mastery-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.mastery-count{text-align:right;font-variant-numeric:tabular-nums;min-width:4.5em}.account-saved{margin-bottom:24px}.saved-practice{margin-bottom:14px}.saved-list{flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.saved-item{align-items:flex-start;gap:8px;padding:12px 4px 12px 16px;display:flex}.saved-main{flex-direction:column;flex:1;align-items:flex-start;gap:6px;min-width:0;display:flex}.saved-snippet{overflow-wrap:anywhere;margin:0;font-weight:600;line-height:1.4}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.show-all{width:100%;color:var(--primary);margin-top:6px}
