@font-face{font-family:Lilita One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lilita-one-latin-ext-400-normal-DxX3B4s6.woff2)format("woff2"),url(/assets/lilita-one-latin-ext-400-normal-QROd2hfm.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lilita One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lilita-one-latin-400-normal-87r-Z-Re.woff2)format("woff2"),url(/assets/lilita-one-latin-400-normal-DXkechA3.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lexend-vietnamese-400-normal-DoLa7jNB.woff2)format("woff2"),url(/assets/lexend-vietnamese-400-normal-mPlHoWg5.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lexend-latin-ext-400-normal-D38JI5AK.woff2)format("woff2"),url(/assets/lexend-latin-ext-400-normal-D9P7pMo-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/lexend-latin-400-normal-CwRJVcUA.woff2)format("woff2"),url(/assets/lexend-latin-400-normal-CHypAkT3.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/lexend-vietnamese-600-normal-Cr1ePs6O.woff2)format("woff2"),url(/assets/lexend-vietnamese-600-normal-BxEVPgxw.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/lexend-latin-ext-600-normal-hDcqLAH9.woff2)format("woff2"),url(/assets/lexend-latin-ext-600-normal-BXtyp5LP.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/lexend-latin-600-normal-DdvlkEkX.woff2)format("woff2"),url(/assets/lexend-latin-600-normal-DSBzZxpA.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/lexend-vietnamese-700-normal-BrGlFDtO.woff2)format("woff2"),url(/assets/lexend-vietnamese-700-normal-NEp7hM5T.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/lexend-latin-ext-700-normal-CcWyeg4T.woff2)format("woff2"),url(/assets/lexend-latin-ext-700-normal-iR1cPiNX.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Lexend;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/lexend-latin-700-normal-DqO8md6r.woff2)format("woff2"),url(/assets/lexend-latin-700-normal-DVyJlN8t.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--bg:#f3f1fb;--card:#fff;--ink:#1c1640;--muted:#6b6590;--line:#e2ddf5;--pri:#5b3df5;--pri-ink:#fff;--pri-soft:#ece8ff;--gold:#ffb020;--gold-ink:#3a2600;--ok:#17a865;--bad:#e5484d;--fire:#ff6a2b;--ice:#3ab0ff;--display:"Lilita One", "Arial Rounded MT Bold", system-ui, sans-serif;--body:"Lexend", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#110d24;--card:#1c1638;--ink:#efeaff;--muted:#a59fcc;--line:#2e2754;--pri:#8c73ff;--pri-ink:#120b33;--pri-soft:#271f52;--gold:#ffc24d;--gold-ink:#2b1c00;--ok:#3fd68c;--bad:#ff7378;--fire:#ff8a55;--ice:#6cc6ff;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--body);-webkit-tap-highlight-color:transparent;font-size:16px;line-height:1.45}[hidden]{display:none!important}.app{max-width:560px;min-height:100vh;padding:max(14px, env(safe-area-inset-top,0px)) max(16px, env(safe-area-inset-right,0px)) max(28px, env(safe-area-inset-bottom,0px)) max(16px, env(safe-area-inset-left,0px));flex-direction:column;gap:14px;margin:0 auto;display:flex}h1,h2,h3{font-family:var(--display);letter-spacing:.01em;text-wrap:balance;margin:0;font-weight:400}h1{font-size:2rem;line-height:1.05}h2{font-size:1.5rem}h3{font-size:1.15rem}p{margin:0}.muted{color:var(--muted)}.small{font-size:.85rem}.center{text-align:center}button{font-family:var(--body);cursor:pointer;color:inherit}button:disabled{opacity:.5;cursor:default}button:focus-visible,input:focus-visible,summary:focus-visible{outline:3px solid var(--pri);outline-offset:2px}.card{background:var(--card);border:1.5px solid var(--line);border-radius:18px;padding:16px}.row{align-items:center;gap:10px;display:flex}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.stack{flex-direction:column;gap:10px;display:flex}.grid2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.btn{background:var(--pri);color:var(--pri-ink);box-shadow:0 4px 0 color-mix(in srgb, var(--pri) 60%, #000);border:0;border-radius:14px;min-height:48px;padding:14px 16px;font-size:1rem;font-weight:700;transition:transform 80ms}.btn:active:not(:disabled){box-shadow:0 1px 0 color-mix(in srgb, var(--pri) 60%, #000);transform:translateY(3px)}.btn.gold{background:var(--gold);color:var(--gold-ink);box-shadow:0 4px 0 color-mix(in srgb, var(--gold) 60%, #000)}.btn.ghost{color:var(--pri);box-shadow:none;border:2px solid var(--pri);background:0 0}.btn.block{width:100%}.btn.sm{border-radius:11px;min-height:40px;padding:9px 12px;font-size:.9rem}.icon-btn{border:1.5px solid var(--line);background:var(--card);border-radius:12px;min-height:40px;padding:8px 11px;font-weight:700}.chip{background:var(--pri-soft);color:var(--ink);border-radius:99px;align-items:center;gap:4px;padding:3px 9px;font-size:.75rem;font-weight:700;display:inline-flex}.chip.warn{background:color-mix(in srgb, var(--gold) 30%, var(--card))}input.field{width:100%;font:600 1.1rem var(--body);border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:14px;padding:13px 14px}label.lbl{flex-direction:column;gap:6px;font-size:.9rem;font-weight:600;display:flex}.hero{background:linear-gradient(135deg, var(--pri), color-mix(in srgb, var(--pri) 55%, var(--fire)));color:#fff;border:0;position:relative;overflow:hidden}.hero .lvl{font-family:var(--display);font-size:2.6rem;line-height:1}.hero .title{opacity:.95;font-weight:700}.xpbar{background:#ffffff40;border-radius:8px;height:12px;overflow:hidden}.xpbar i{background:var(--gold);border-radius:8px;height:100%;transition:width .6s;display:block}.stats{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.stat{text-align:center;background:#ffffff26;border-radius:12px;padding:8px 4px}.stat b{font-family:var(--display);white-space:nowrap;font-size:1.35rem;font-weight:400;display:block}.stat span{opacity:.9;font-size:.7rem}.goal{align-items:center;gap:12px;display:flex}.ring{--p:0;background:conic-gradient(var(--ok) calc(var(--p) * 1%), var(--line) 0);border-radius:50%;flex:none;place-items:center;width:58px;height:58px;display:grid}.ring b{background:var(--card);border-radius:50%;place-items:center;width:44px;height:44px;font-size:.8rem;display:grid}.dots{gap:5px;display:flex}.dots i{background:var(--line);border-radius:50%;width:14px;height:14px}.dots i.on{background:var(--ok)}.mission{text-align:left;border:1.5px solid var(--line);background:var(--card);border-radius:16px;align-items:center;gap:12px;width:100%;padding:12px;display:flex}.mission .ico{background:var(--pri-soft);border-radius:12px;flex:none;place-items:center;width:44px;height:44px;font-size:1.4rem;display:grid}.mission .t{font-weight:700}.mission .d{color:var(--muted);font-size:.8rem}.stars{letter-spacing:1px;white-space:nowrap;color:var(--gold);margin-left:auto;font-size:1.05rem}.stars .off{color:var(--line)}.section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-top:4px;font-size:.75rem;font-weight:700}.unit-head{text-align:left;background:0 0;border:0;align-items:center;gap:10px;width:100%;padding:6px 2px;font-weight:700;display:flex}.unit-head .meter{flex:1;max-width:90px}.badges{grid-template-columns:repeat(4,1fr);gap:8px;display:grid}.badge{text-align:center;background:var(--pri-soft);border:0;border-radius:12px;padding:8px 4px;font-size:.68rem;line-height:1.2}.badge .e{margin-bottom:2px;font-size:1.6rem;display:block}.badge.locked{opacity:.35;filter:grayscale()}.status{color:var(--muted);text-align:center;font-size:.75rem}.topbar{align-items:center;gap:10px;display:flex}.prog{background:var(--line);border-radius:8px;flex:1;height:14px;overflow:hidden}.prog i{background:var(--ok);border-radius:8px;height:100%;transition:width .3s;display:block}.combo{font-family:var(--display);color:var(--fire);text-align:right;min-width:52px;font-size:1.1rem}.timer{background:var(--line);border-radius:4px;height:6px;overflow:hidden}.timer i{background:var(--gold);width:100%;height:100%;transition:width .1s linear;display:block}.qcard{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:8px;min-height:150px;display:flex}.qcard .kind{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700}.qcard .q{font-family:var(--display);word-break:break-word;font-size:1.9rem;line-height:1.15}.qcard .q.long{font-family:var(--body);font-size:1.15rem;font-weight:600}.opts{gap:10px;display:grid}.opt{border:2px solid var(--line);background:var(--card);text-align:left;box-shadow:0 3px 0 var(--line);border-radius:14px;min-height:52px;padding:14px;font-size:1.05rem;font-weight:600}.opt.ok{border-color:var(--ok);background:color-mix(in srgb, var(--ok) 18%, var(--card))}.opt.bad{border-color:var(--bad);background:color-mix(in srgb, var(--bad) 18%, var(--card));animation:.3s shake}.opt.picked{border-color:var(--pri);background:var(--pri-soft)}.type{gap:8px;display:flex}.type input{min-width:0;font:600 1.15rem var(--body);border:2px solid var(--line);background:var(--card);color:var(--ink);border-radius:14px;flex:1;padding:14px}.type input.ok{border-color:var(--ok)}.type input.bad{border-color:var(--bad);animation:.3s shake}.type input.close{border-color:var(--gold)}.fb{border-radius:14px;justify-content:space-between;align-items:center;gap:10px;min-height:52px;padding:12px 14px;font-weight:700;display:flex}.fb.ok{background:color-mix(in srgb, var(--ok) 16%, var(--card));color:var(--ok)}.fb.bad{background:color-mix(in srgb, var(--bad) 14%, var(--card));color:var(--bad)}.fb.close{background:color-mix(in srgb, var(--gold) 22%, var(--card));color:var(--ink)}.fb .ans{color:var(--ink);font-weight:600}.memgrid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.tile{aspect-ratio:1/.8;border:2px solid var(--line);background:var(--pri);color:var(--pri-ink);text-align:center;word-break:break-word;border-radius:14px;place-items:center;padding:6px;font-size:.85rem;font-weight:700;display:grid}.tile.open{background:var(--card);color:var(--ink)}.tile.done{background:color-mix(in srgb, var(--ok) 20%, var(--card));border-color:var(--ok);color:var(--ink)}.tile.wrong{border-color:var(--bad);animation:.3s shake}.reading{background:var(--pri-soft);border-radius:14px;max-height:260px;padding:12px;font-size:.92rem;overflow:auto}.reading summary{cursor:pointer}@keyframes shake{25%{transform:translate(-5px)}75%{transform:translate(5px)}}@keyframes pop{0%{opacity:0;transform:scale(.6)}to{opacity:1;transform:scale(1)}}.result{text-align:center;flex-direction:column;align-items:center;gap:12px;display:flex}.bigstars{letter-spacing:6px;font-size:3rem;animation:.5s pop}.bigstars .off{color:var(--line)}.bigstars .on{color:var(--gold)}.grade{font-family:var(--display);color:var(--pri);font-size:4.5rem;line-height:1}.xp-gain{font-family:var(--display);color:var(--gold);font-size:1.6rem}.review{text-align:left;flex-direction:column;gap:6px;width:100%;max-height:300px;display:flex;overflow:auto}.review div{background:var(--pri-soft);border-radius:10px;padding:8px 10px;font-size:.85rem}.review .x{color:var(--bad);font-weight:700}.meter{background:var(--line);border-radius:6px;height:10px;overflow:hidden}.meter i{background:var(--ok);height:100%;display:block}.toasts{left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:50;pointer-events:none;flex-direction:column;align-items:center;gap:8px;display:flex;position:fixed;transform:translate(-50%)}.toast{background:var(--ink);color:var(--bg);text-align:center;border-radius:14px;max-width:90vw;padding:12px 18px;font-weight:700;animation:.3s pop}canvas.fx{pointer-events:none;z-index:40;position:fixed;inset:0}.overlay{z-index:45;background:color-mix(in srgb, var(--pri) 85%, #000);color:#fff;text-align:center;border:0;place-items:center;width:100%;padding:24px;display:grid;position:fixed;inset:0}.overlay .big{font-family:var(--display);font-size:3.4rem;line-height:1;animation:.5s pop}.tabs{background:var(--pri-soft);border-radius:14px;grid-template-columns:1fr 1fr;gap:6px;padding:5px;display:grid}.tabs button{background:0 0;border:0;border-radius:10px;padding:10px;font-weight:700}.tabs button.on{background:var(--card);box-shadow:0 1px 3px #0000001a}.chk{border:1.5px solid var(--line);background:var(--card);border-radius:12px;align-items:center;gap:10px;padding:10px;display:flex}.chk input{width:22px;height:22px;accent-color:var(--pri)}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}table{border-collapse:collapse;width:100%;font-size:.82rem}th,td{text-align:left;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;vertical-align:top;padding:7px 4px}th{color:var(--muted);font-weight:600}.tablewrap{overflow-x:auto}code{background:var(--pri-soft);border-radius:6px;padding:1px 5px;font-size:.85em}@media print{body *{visibility:hidden}#report,#report *{visibility:visible}#report{color:#000;font-size:12pt;position:absolute;top:0;left:0}}.chart.svelte-2lpgn1{margin:0}.chart-readout.svelte-2lpgn1{min-height:1.3em;margin-bottom:6px;font-size:.8rem}.chart-plot.svelte-2lpgn1{border-bottom:1px solid var(--line);align-items:flex-end;gap:2px;padding-top:14px;display:flex;position:relative}.chart-max.svelte-2lpgn1{color:var(--muted);font-size:.65rem;position:absolute;top:0;left:0}.chart-goal.svelte-2lpgn1{border-top:1.5px dashed var(--muted);pointer-events:none;position:absolute;left:0;right:0}.chart-goal.svelte-2lpgn1 span:where(.svelte-2lpgn1){color:var(--muted);background:var(--card);padding:0 3px;font-size:.65rem;position:absolute;top:-15px;right:0}.chart-col.svelte-2lpgn1{background:0 0;border:0;flex:1;align-items:flex-end;min-width:0;height:100%;padding:0;display:flex}.chart-col.svelte-2lpgn1 i:where(.svelte-2lpgn1){background:var(--pri);border-radius:4px 4px 0 0;width:100%;max-width:22px;margin:0 auto;display:block}.chart-col.svelte-2lpgn1 i.on:where(.svelte-2lpgn1){background:color-mix(in srgb, var(--pri) 70%, var(--ink))}.chart-axis.svelte-2lpgn1{color:var(--muted);text-align:center;gap:2px;margin-top:3px;font-size:.6rem;line-height:1.2;display:flex}.chart-axis.svelte-2lpgn1 span:where(.svelte-2lpgn1){flex:1;min-width:0}
