@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/code-nybbles/assets/nunito-cyrillic-ext-wght-normal-D4X5GqEv.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/code-nybbles/assets/nunito-cyrillic-wght-normal-CY6AOgYE.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/code-nybbles/assets/nunito-vietnamese-wght-normal-U01xdrZh.woff2)format("woff2-variations");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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/code-nybbles/assets/nunito-latin-ext-wght-normal-CXYtwYOx.woff2)format("woff2-variations");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:Nunito Variable;font-style:normal;font-display:swap;font-weight:200 1000;src:url(/code-nybbles/assets/nunito-latin-wght-normal-BzFMHfZw.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-cyrillic-ext-wght-normal-EocZY2iu.woff2)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-cyrillic-wght-normal-D73BlboJ.woff2)format("woff2-variations");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-greek-wght-normal-Bw9x6K1M.woff2)format("woff2-variations");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-vietnamese-wght-normal-Bt-aOZkq.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-latin-ext-wght-normal-DBQx-q_a.woff2)format("woff2-variations");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:JetBrains Mono Variable;font-style:normal;font-display:swap;font-weight:100 800;src:url(/code-nybbles/assets/jetbrains-mono-latin-wght-normal-B9CIFXIH.woff2)format("woff2-variations");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{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--c-canvas:var(--lightningcss-light,#fff)var(--lightningcss-dark,#15121f);--c-surface:var(--lightningcss-light,#f8f6fc)var(--lightningcss-dark,#211c30);--c-tile:var(--lightningcss-light,#e7e3f0)var(--lightningcss-dark,#342c47);--c-tile-ledge:var(--lightningcss-light,#cfc8de)var(--lightningcss-dark,#251f35);--c-text:var(--lightningcss-light,#3f3a4d)var(--lightningcss-dark,#fff);--c-text-2:var(--lightningcss-light,#756e88)var(--lightningcss-dark,#a9a3b8);--c-border:var(--lightningcss-light,#e7e3f0)var(--lightningcss-dark,#342c47);--c-scrim:#0006;--c-shade:#000;--c-terminal:var(--lightningcss-light,#1f1b2e)var(--lightningcss-dark,#0b0912);--c-terminal-text:#ece9f5;--c-syn-kw:var(--lightningcss-light,#6a3df0)var(--lightningcss-dark,#b39dff);--c-syn-str:var(--lightningcss-light,#2e7d32)var(--lightningcss-dark,#8bd17c);--c-syn-num:var(--lightningcss-light,#b93d0b)var(--lightningcss-dark,#ffab70);--c-syn-com:var(--lightningcss-light,#6f6982)var(--lightningcss-dark,#a9a3b8);--c-syn-mac:var(--lightningcss-light,#0369a1)var(--lightningcss-dark,#6cc4ff);--c-syn-ty:var(--lightningcss-light,#9c3f88)var(--lightningcss-dark,#f19ad8);--c-primary:#7c4dff;--c-primary-ledge:#5b32d6;--c-primary-hi:#a585ff;--c-on-primary:#fff;--c-primary-text:var(--lightningcss-light,#6a3df0)var(--lightningcss-dark,#a585ff);--c-selected-tint:var(--lightningcss-light,#efe9ff)var(--lightningcss-dark,#2d2350);--c-selected-border:var(--lightningcss-light,#b9a2ff)var(--lightningcss-dark,#7c4dff);--c-selected-ledge:#7c4dff;--c-correct:#2db84c;--c-correct-ledge:#1f8f3a;--c-correct-tint:var(--lightningcss-light,#dff7e5)var(--lightningcss-dark,#173a24);--c-correct-text:var(--lightningcss-light,#1a7a32)var(--lightningcss-dark,#6fdc8a);--c-wrong:#f04858;--c-wrong-ledge:#c42f40;--c-wrong-tint:var(--lightningcss-light,#ffe3e6)var(--lightningcss-dark,#3d1a22);--c-wrong-text:var(--lightningcss-light,#c42f40)var(--lightningcss-dark,#ff8a96);--c-correct-button:#218738;--c-correct-button-ledge:#17602a;--c-wrong-button:#d92d3f;--c-wrong-button-ledge:#a61f2e;--c-streak:#ff9600;--c-streak-off:var(--lightningcss-light,#cfc8de)var(--lightningcss-dark,#4a4160);--c-gems:#22c3e6;--c-gold:#ffc233;--c-gold-ledge:#e0a000;--c-info:#3d8bfd;--c-rust:#ce422b;--c-frozen:#3d8bfd;--c-streak-text:var(--lightningcss-light,#ab6400)var(--lightningcss-dark,#ff9600);--c-gems-text:var(--lightningcss-light,#118098)var(--lightningcss-dark,#22c3e6);--c-section-purple:#7c4dff;--c-section-teal:#14a3a3;--c-section-blue:#3d8bfd;--c-section-rust:#ce422b;--c-section-pink:#e0559b;--c-section-orange:#f08a24;--font-ui:"Nunito Variable", "Nunito", system-ui, sans-serif;--font-code:"JetBrains Mono Variable", "JetBrains Mono", ui-monospace, monospace;--code-size:.9375rem;--radius-tile:12px;--radius-card:16px;--radius-banner:20px;--radius-pill:999px;--ledge:4px;--s-1:4px;--s-2:8px;--s-3:12px;--s-4:16px;--s-5:24px;--s-6:32px;--touch-min:44px;--button-h:56px;--hud-h:56px;--tabbar-h:64px;--path-max:600px;--safe-top:var(--safe-area-inset-top,env(safe-area-inset-top,0px));--safe-right:var(--safe-area-inset-right,env(safe-area-inset-right,0px));--safe-bottom:var(--safe-area-inset-bottom,env(safe-area-inset-bottom,0px));--safe-left:var(--safe-area-inset-left,env(safe-area-inset-left,0px));--t-fast:.12s;--t-med:.25s}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*,:before,:after{box-sizing:border-box}html,body{background:var(--c-canvas);color:var(--c-text);font-family:var(--font-ui);-webkit-tap-highlight-color:transparent;margin:0;font-size:100%;line-height:1.4}body{padding-left:var(--safe-left);padding-right:var(--safe-right)}button{font:inherit;color:inherit}code,pre{font-family:var(--font-code);font-variant-ligatures:none}:focus-visible{outline:3px solid var(--c-primary-hi);outline-offset:2px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.stack{gap:var(--s-3);flex-direction:column;display:flex}.row{align-items:center;gap:var(--s-2);display:flex}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}@keyframes pop{0%{transform:scale(1)}50%{transform:scale(1.08)}to{transform:scale(1)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}:root[data-motion=reduced] *,:root[data-motion=reduced] :before,:root[data-motion=reduced] :after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.view{width:100%;max-width:var(--path-max);padding:var(--s-4);margin:0 auto}h1{margin:0;font-size:1.5rem;font-weight:900}.md :where(p,ul,ol){margin:0 0 var(--s-2)}.md :where(p,ul,ol):last-child{margin-bottom:0}.md :not(pre)>code{background:var(--c-tile);border-radius:4px;padding:0 .25em;font-size:.92em}.md pre{padding:var(--s-3);border:2px solid var(--c-border);border-radius:var(--radius-card);background:var(--c-surface);font-size:var(--code-size);overflow-x:auto}.syn-kw{color:var(--c-syn-kw);font-weight:600}.syn-str{color:var(--c-syn-str)}.syn-num{color:var(--c-syn-num)}.syn-com{color:var(--c-syn-com);font-style:italic}.syn-mac{color:var(--c-syn-mac)}.syn-ty{color:var(--c-syn-ty)}:is(.correct,.wrong)>[class^=syn-]{color:inherit}.app-icon[data-v-d3527e98]{color:var(--icon,currentcolor);vertical-align:middle;flex-shrink:0;display:inline-block}.app-nav[data-v-5b8e5a24]{z-index:10;height:calc(var(--tabbar-h) + var(--safe-bottom));padding:0 var(--safe-right) var(--safe-bottom) var(--safe-left);border-top:2px solid var(--c-border);background:var(--c-canvas);justify-content:space-around;display:flex;position:fixed;bottom:0;left:0;right:0}.brand[data-v-5b8e5a24]{display:none}.label[data-v-5b8e5a24]{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.nav-item[data-v-5b8e5a24]{justify-content:center;align-items:center;gap:var(--s-3);min-width:64px;margin:var(--s-2) 0;border-radius:var(--radius-tile);color:var(--c-text-2);text-transform:uppercase;letter-spacing:.4px;border:2px solid #0000;font-weight:800;text-decoration:none;display:flex}.nav-item.router-link-exact-active[data-v-5b8e5a24]{border-color:var(--c-selected-border);background:var(--c-selected-tint);--icon:var(--c-primary);color:var(--c-primary-text)}@media (width>=1024px){.app-nav[data-v-5b8e5a24]{justify-content:flex-start;gap:var(--s-1);height:100dvh;padding:calc(var(--s-5) + var(--safe-top)) var(--s-3) var(--s-5);border-top:0;border-right:2px solid var(--c-border);flex-direction:column;position:sticky;top:0}.brand[data-v-5b8e5a24]{padding:0 var(--s-3) var(--s-5);color:var(--c-primary);font-size:1.6rem;font-weight:900;display:block}.label[data-v-5b8e5a24]{clip-path:none;width:auto;height:auto;position:static;overflow:visible}.nav-item[data-v-5b8e5a24]{padding:var(--s-2) var(--s-3);justify-content:flex-start;margin:0}}.duo-button[data-v-4b584d8e]{--face:var(--c-primary);--ledge-c:var(--c-primary-ledge);--fg:var(--c-on-primary);--border:transparent;min-height:var(--button-h);padding:0 var(--s-5);border:2px solid var(--border);border-radius:var(--radius-card);background:var(--face);color:var(--fg);box-shadow:0 var(--ledge) 0 var(--ledge-c);letter-spacing:.4px;text-transform:uppercase;cursor:pointer;transition:transform var(--t-fast), box-shadow var(--t-fast);justify-content:center;align-items:center;gap:var(--s-2);font-size:1rem;font-weight:800;display:inline-flex}.duo-button.block[data-v-4b584d8e]{width:100%}.duo-button[data-v-4b584d8e]:active:not(:disabled){transform:translateY(var(--ledge));box-shadow:none}.duo-button[data-v-4b584d8e]:disabled{--face:var(--c-tile);--ledge-c:var(--c-tile-ledge);--fg:var(--c-text-2);cursor:default}.v-secondary[data-v-4b584d8e]{--face:var(--c-canvas);--ledge-c:var(--c-border);--fg:var(--c-primary-text);--border:var(--c-border)}.v-danger[data-v-4b584d8e]{--face:var(--c-wrong-button);--ledge-c:var(--c-wrong-button-ledge)}.v-correct[data-v-4b584d8e]{--face:var(--c-correct-button);--ledge-c:var(--c-correct-button-ledge)}.v-ghost[data-v-4b584d8e]{--face:transparent;--ledge-c:transparent;--fg:var(--c-primary-text)}.progress-bar[data-v-a71bfd9d]{border-radius:var(--radius-pill);background:var(--c-tile);height:16px;overflow:hidden}.fill[data-v-a71bfd9d]{border-radius:var(--radius-pill);background:var(--c-primary);min-width:16px;height:100%;transition:width var(--t-med) ease-out;position:relative}.fill.pulse[data-v-a71bfd9d]{animation:.6s ease-out bar-flash-a71bfd9d}@keyframes bar-flash-a71bfd9d{50%{filter:brightness(1.45)}}.fill[data-v-a71bfd9d]:after{content:"";border-radius:var(--radius-pill);background:var(--c-primary-hi);opacity:.7;height:4px;position:absolute;top:3px;left:8px;right:8px}.hud-chip[data-v-0f16db7f]{align-items:center;gap:var(--s-1);min-height:var(--touch-min);padding:0 var(--s-2);border-radius:var(--radius-pill);cursor:pointer;background:0 0;border:0;font-size:1rem;font-weight:800;display:inline-flex}.hud-chip[data-v-0f16db7f]:hover{background:var(--c-surface)}.k-streak[data-v-0f16db7f]{--icon:var(--c-streak);color:var(--c-streak-text)}.k-gems[data-v-0f16db7f]{--icon:var(--c-gems);color:var(--c-gems-text)}.k-hearts[data-v-0f16db7f]{--icon:var(--c-wrong);color:var(--c-wrong-text)}.dim[data-v-0f16db7f]{--icon:var(--c-streak-off);color:var(--c-text-2)}.top-hud[data-v-8860a855]{z-index:5;height:calc(var(--hud-h) + var(--safe-top));padding:var(--safe-top) var(--s-3) 0;border-bottom:2px solid var(--c-border);background:var(--c-canvas);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.course-badge[data-v-8860a855]{padding:var(--s-1) var(--s-3);border-radius:var(--radius-tile);background:var(--c-rust);color:var(--c-on-primary);font-weight:900}.shell[data-v-d4d588c5]{min-height:100dvh;padding-bottom:calc(var(--tabbar-h) + var(--safe-bottom))}.rail[data-v-d4d588c5]{display:none}.rail-card[data-v-d4d588c5]{padding:var(--s-4);border:2px solid var(--c-border);border-radius:var(--radius-card)}.rail-card h2[data-v-d4d588c5]{margin:0 0 var(--s-3);font-size:1.1rem}.goal-text[data-v-d4d588c5]{margin:var(--s-2) 0 0;color:var(--c-text-2);font-weight:700}.rail-link[data-v-d4d588c5]{color:var(--c-text-2);font-weight:800}@media (width>=1024px){.shell[data-v-d4d588c5]{grid-template-columns:240px minmax(0,1fr) 340px;padding-bottom:0;display:grid}.hud-mobile[data-v-d4d588c5]{display:none}.main[data-v-d4d588c5]{padding-top:var(--safe-top)}.rail[data-v-d4d588c5]{padding:var(--s-4);align-self:start;display:flex;position:sticky;top:0}}.toast[data-v-d4d588c5]{left:50%;bottom:calc(var(--tabbar-h) + var(--s-3) + var(--safe-bottom));z-index:20;padding:var(--s-2) var(--s-2) var(--s-2) var(--s-4);border-radius:var(--radius-card);background:var(--c-surface);border:2px solid var(--c-border);width:max-content;max-width:calc(100vw - 2 * var(--s-3));flex-wrap:wrap;justify-content:center;font-weight:700;position:fixed;transform:translate(-50%)}.node[data-v-eb4cb02f]{--size:60px;--face:var(--unit-colour);--ledge-c:color-mix(in oklab, var(--unit-colour), var(--c-shade) 25%);width:calc(var(--size) + 12px);height:calc(var(--size) + 12px);background:conic-gradient(var(--c-gold) var(--fill), var(--c-tile) 0);cursor:pointer;transform:translateX(var(--offset,0));border:0;border-radius:50%;place-items:center;display:grid;position:relative}.node.current[data-v-eb4cb02f]{--size:70px}.node.done.level[data-v-eb4cb02f],.node.done.build[data-v-eb4cb02f]{background:0 0}.node.locked[data-v-eb4cb02f]{--face:var(--c-tile);--ledge-c:var(--c-tile-ledge);background:0 0}.node.chest[data-v-eb4cb02f],.node.checkpoint[data-v-eb4cb02f]{background:0 0}.face[data-v-eb4cb02f]{width:var(--size);height:calc(var(--size) - 6px);background:var(--face);color:var(--c-on-primary);box-shadow:0 6px 0 var(--ledge-c);transition:transform var(--t-fast);border-radius:50%;place-items:center;display:grid}.node.locked .face[data-v-eb4cb02f]{color:var(--c-text-2)}.node.done .face[data-v-eb4cb02f]{--face:var(--c-gold);--ledge-c:var(--c-gold-ledge)}.node:active .face[data-v-eb4cb02f]{box-shadow:0 2px 0 var(--ledge-c);transform:translateY(4px)}.node.current .face[data-v-eb4cb02f]{animation:2s infinite pulse}.start-bubble[data-v-eb4cb02f]{padding:var(--s-1) var(--s-3);border:2px solid var(--unit-colour);border-radius:var(--radius-tile);background:var(--c-canvas);color:var(--c-text);text-transform:uppercase;font-weight:900;animation:1.6s ease-in-out infinite bob-eb4cb02f;position:absolute;top:-30px}@keyframes bob-eb4cb02f{50%{transform:translateY(-4px)}}.node-pop{z-index:20;gap:var(--s-2);width:min(300px,90vw);padding:var(--s-4);border-radius:var(--radius-card);background:var(--unit-colour,var(--c-primary));color:var(--c-on-primary);animation:pop var(--t-med);display:grid}.node-pop.locked{border:2px solid var(--c-border);background:var(--c-surface);color:var(--c-text)}.pop-title{font-size:1.1rem;font-weight:900}.pop-sub{opacity:.9;margin:0}.pop-arrow{fill:var(--unit-colour,var(--c-primary))}.node-pop.locked .pop-arrow{fill:var(--c-surface)}.path[data-v-778e081f]{--wave:76px;padding-bottom:120px}@media (width<=375px){.path[data-v-778e081f]{--wave:56px}}.unit-banner[data-v-778e081f]{top:calc(var(--hud-h) + var(--safe-top) + var(--s-2));z-index:3;justify-content:space-between;align-items:center;gap:var(--s-3);height:72px;margin:var(--s-3) 0;padding:var(--s-3) var(--s-4);border-radius:var(--radius-banner);color:var(--c-on-primary);display:flex;position:sticky;overflow:hidden}.unit-banner>div[data-v-778e081f]{min-width:0}@media (width>=1024px){.unit-banner[data-v-778e081f]{top:calc(var(--safe-top) + var(--s-2))}}.unit-banner h2[data-v-778e081f]{text-overflow:ellipsis;white-space:nowrap;margin:0;font-size:1.2rem;font-weight:900;overflow:hidden}.eyebrow[data-v-778e081f]{letter-spacing:.04em;text-overflow:ellipsis;text-transform:uppercase;white-space:nowrap;opacity:.85;font-size:.75rem;font-weight:800;overflow:hidden}.guidebook[data-v-778e081f]{border-radius:var(--radius-tile);width:48px;height:48px;color:inherit;border:2px solid;flex-shrink:0;place-items:center;text-decoration:none;display:grid}.nodes[data-v-778e081f]{justify-items:center;gap:var(--s-3);margin:calc(var(--s-5) + 28px) 0 var(--s-4);padding:0;list-style:none;display:grid}.jump[data-v-778e081f]{right:var(--s-4);bottom:calc(var(--tabbar-h) + var(--s-4) + var(--safe-bottom));z-index:6;border:2px solid var(--c-border);background:var(--c-canvas);width:56px;height:56px;color:var(--c-primary);box-shadow:0 var(--ledge) 0 var(--c-border);cursor:pointer;border-radius:50%;place-items:center;display:grid;position:fixed}.jump .up[data-v-778e081f]{transform:rotate(180deg)}@media (width>=1024px){.jump[data-v-778e081f]{bottom:var(--s-5);right:calc(340px + var(--s-5))}}.toast[data-v-778e081f]{left:50%;bottom:calc(var(--tabbar-h) + var(--s-5) + var(--safe-bottom));z-index:10;padding:var(--s-3) var(--s-5);border-radius:var(--radius-pill);background:var(--c-gems);color:var(--c-on-primary);animation:pop var(--t-med);font-weight:900;position:fixed;transform:translate(-50%)}
