:root{--bg:#f6f5f1;--panel:#fff;--ink:#1d2421;--muted:#5d6a64;--line:#dcdad2;--accent:#2f6f5e;--accent-ink:#fff;--accent-soft:#e2efe9;--bad:#b3372f;--bad-soft:#f6dcd9;--good:#2f7d4f;--key:#eceae3;--key-line:#cfccc2;--heat:#c2410c;--f-p:#e07a5f;--f-r:#e9c46a;--f-m:#81b29a;--f-i:#5b8fd0;--f-t:#9aa3a0;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#141917;--panel:#1c2320;--ink:#e8ece9;--muted:#9aa8a1;--line:#2c3631;--accent:#5bb89d;--accent-ink:#0d1411;--accent-soft:#213a31;--bad:#ef7d73;--bad-soft:#432522;--good:#6fcf97;--key:#26302b;--key-line:#36423c;--heat:#fb923c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#141917;--panel:#1c2320;--ink:#e8ece9;--muted:#9aa8a1;--line:#2c3631;--accent:#5bb89d;--accent-ink:#0d1411;--accent-soft:#213a31;--bad:#ef7d73;--bad-soft:#432522;--good:#6fcf97;--key:#26302b;--key-line:#36423c;--heat:#fb923c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--ink);font:16px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}h1{font-size:1.6rem}h2{font-size:1.25rem}h3{font-size:1rem}button{font:inherit;color:inherit;cursor:pointer;border:1px solid var(--line);background:var(--panel);border-radius:10px;padding:.55rem 1rem}button:hover{border-color:var(--accent)}button:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:2px}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.ghost{background:0 0}.wrap{max-width:920px;margin:0 auto;padding:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px}.muted{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.grow{flex:1}.num{font-variant-numeric:tabular-nums}.top.svelte-1ary22t{margin-bottom:12px}.tag.svelte-1ary22t{font-size:.8rem;font-weight:400}.goal.svelte-1ary22t,.brk.svelte-1ary22t{margin-bottom:14px}.brk.svelte-1ary22t{background:var(--accent-soft);border-color:var(--accent)}.bar.svelte-1ary22t{background:var(--key);border-radius:5px;height:10px;margin:8px 0;overflow:hidden}.bar.svelte-1ary22t i:where(.svelte-1ary22t){background:var(--accent);height:100%;transition:width .3s;display:block}.small.svelte-1ary22t{margin:0;font-size:.85rem}.modes.svelte-1ary22t{margin-bottom:20px}.grid.svelte-1ary22t{grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:10px;display:grid}.lesson.svelte-1ary22t{text-align:left;flex-direction:column;gap:2px;padding:12px 14px;display:flex}.lesson.svelte-1ary22t .t:where(.svelte-1ary22t){font-weight:600}.lesson.svelte-1ary22t .d:where(.svelte-1ary22t),.lesson.svelte-1ary22t .m:where(.svelte-1ary22t){font-size:.85rem}.lesson.ok.svelte-1ary22t{border-color:var(--good)}.lesson.locked.svelte-1ary22t{opacity:.5;cursor:not-allowed}.kb.svelte-1dlz8xf{--u:min(48px, 6.1vw);width:calc(15 * var(--u));height:calc(5 * var(--u));max-width:100%;margin:0 auto;position:relative}.key.svelte-1dlz8xf{height:calc(var(--u) - 4px);border:1px solid var(--key-line);background:color-mix(in srgb, var(--fc) 20%, var(--key));font-size:calc(var(--u) * .36);-webkit-user-select:none;user-select:none;border-radius:7px;justify-content:center;align-items:center;transition:background .12s,transform .12s;display:flex;position:absolute}.f-p.svelte-1dlz8xf{--fc:var(--f-p)}.f-r.svelte-1dlz8xf{--fc:var(--f-r)}.f-m.svelte-1dlz8xf{--fc:var(--f-m)}.f-i.svelte-1dlz8xf{--fc:var(--f-i)}.f-t.svelte-1dlz8xf{--fc:var(--f-t)}.sh.svelte-1dlz8xf{opacity:.65;font-size:.62em;position:absolute;top:2px;left:4px}.key.hint.svelte-1dlz8xf{background:var(--fc);border-color:var(--ink);z-index:1;color:#111;font-weight:700;transform:translateY(1px)scale(1.05)}.key.heated.svelte-1dlz8xf{background:color-mix(in srgb, var(--heat) var(--v,0%), var(--key))}.fingers.svelte-1dlz8xf{flex-wrap:wrap;justify-content:center;gap:14px;margin:10px 0 0;padding:0;font-size:.8rem;list-style:none;display:flex}.fingers.svelte-1dlz8xf li:where(.svelte-1dlz8xf){align-items:center;gap:5px;display:flex}.fingers.svelte-1dlz8xf b:where(.svelte-1dlz8xf){background:var(--fc);border:1px solid var(--key-line);border-radius:4px;width:14px;height:14px}.legend.svelte-1dlz8xf{justify-content:center;align-items:center;gap:8px;margin-top:8px;font-size:.8rem;display:flex}.legend.svelte-1dlz8xf i:where(.svelte-1dlz8xf){background:linear-gradient(90deg, var(--key), var(--heat));border:1px solid var(--key-line);border-radius:5px;width:120px;height:10px}.goal.svelte-ghrahy{margin:0 0 8px}.bar.svelte-ghrahy{background:var(--key);border-radius:3px;height:6px;margin-bottom:14px;overflow:hidden}.bar.svelte-ghrahy i:where(.svelte-ghrahy){background:var(--accent);height:100%;display:block}.text.svelte-ghrahy{white-space:pre-wrap;word-break:break-word;letter-spacing:.02em;padding:20px 24px;font:1.55rem/2.1 ui-monospace,Cascadia Mono,Consolas,monospace}.text.svelte-ghrahy span:where(.svelte-ghrahy){color:var(--muted);border-radius:3px}.text.svelte-ghrahy span.done:where(.svelte-ghrahy){color:var(--good);opacity:.65}.text.svelte-ghrahy span.cur:where(.svelte-ghrahy){color:var(--ink);background:var(--accent-soft);box-shadow:0 2px 0 var(--accent)}.text.flash.svelte-ghrahy span.cur:where(.svelte-ghrahy){background:var(--bad-soft);box-shadow:0 2px 0 var(--bad)}.finger.svelte-ghrahy{text-align:center;min-height:1.6em;color:var(--accent);margin:10px 0 0;font-weight:600}.sink.svelte-ghrahy{opacity:0;width:1px;height:1px;position:absolute;left:-9999px}.resume.svelte-ghrahy{text-align:center;color:var(--bad);font-weight:600}.kbwrap.svelte-ghrahy{margin-top:24px;transition:opacity .15s}.kbwrap.off.svelte-ghrahy{opacity:0}.narrow.svelte-yy3cw3{max-width:680px}.ok.svelte-yy3cw3{background:var(--accent-soft);border-color:var(--good);margin-bottom:14px}.ko.svelte-yy3cw3{background:var(--bad-soft);border-color:var(--bad);margin-bottom:14px}.stats.svelte-yy3cw3{grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin-bottom:8px;display:grid}.v.svelte-yy3cw3{font-size:1.8rem;font-weight:700}.badge.svelte-yy3cw3{align-items:center;gap:10px;display:flex}.ic.svelte-yy3cw3{text-align:center;min-width:2rem;font-size:1.8rem}.actions.svelte-yy3cw3{margin-top:18px}.cards.svelte-1knxy6b{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:12px;display:grid}.v.svelte-1knxy6b{font-size:1.7rem;font-weight:700}section.svelte-1knxy6b{margin-bottom:12px}svg.svelte-1knxy6b{width:100%;height:auto}.grid.svelte-1knxy6b{stroke:var(--line);stroke-width:1px}.ax.svelte-1knxy6b{fill:var(--muted);font-size:11px}.line.svelte-1knxy6b{fill:none;stroke:var(--accent);stroke-width:2.5px;stroke-linejoin:round}.dot.svelte-1knxy6b{fill:var(--accent)}.two.svelte-1knxy6b{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;display:grid}table.svelte-1knxy6b{border-collapse:collapse;width:100%}th.svelte-1knxy6b{text-align:left;color:var(--muted);font-size:.85rem;font-weight:600}td.svelte-1knxy6b,th.svelte-1knxy6b{border-bottom:1px solid var(--line);padding:4px 6px}.mini.svelte-1knxy6b{padding:2px 9px;font-size:.8rem}.small.svelte-1knxy6b{margin:6px 0 0;font-size:.85rem}kbd.svelte-1knxy6b{background:var(--key);border:1px solid var(--key-line);border-radius:5px;padding:1px 7px;font-family:ui-monospace,Consolas,monospace}.tag.svelte-xzbbc8{font-size:.9rem;font-weight:400}.grid.svelte-xzbbc8{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;margin-top:12px;display:grid}.b.svelte-xzbbc8{align-items:center;gap:12px;display:flex}.b.off.svelte-xzbbc8{opacity:.55}.ic.svelte-xzbbc8{text-align:center;min-width:2.4rem;font-size:1.9rem}.small.svelte-xzbbc8{font-size:.8rem}.narrow.svelte-1u3w06f{max-width:680px}section.svelte-1u3w06f{margin-top:12px}label.svelte-1u3w06f{flex-wrap:wrap;align-items:center;gap:10px;display:flex}select.svelte-1u3w06f,input[type=number].svelte-1u3w06f{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:8px;padding:.35rem .5rem}.file.svelte-1u3w06f{border:1px solid var(--line);cursor:pointer;background:var(--panel);border-radius:10px;padding:.55rem 1rem}.danger.svelte-1u3w06f{color:var(--bad);border-color:var(--bad)}
