*,:before,:after{box-sizing:border-box}:root{--font-display:"Playfair Display", Georgia, serif;--font-sans:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", "Fira Code", ui-monospace, monospace;--paper:#f5f0e8;--aged:#e3dcc8;--ink:#1a1714;--muted:#665545;--light-rule:#d5cdb8;--rust:#8b3a1e;--slate:#3d4a5c;--brand:#5b3fa0;--brand-hover:#4a3288;--brand-subtle:#eeebf8;--brand-text:#3d2970;--brand-border:#5b3fa0;--bg:var(--paper);--bg-subtle:var(--aged);--bg-muted:#ece6d8;--bg-code:#ece6d8;--border:var(--light-rule);--border-subtle:#e0d8c8;--border-strong:#bfb5a0;--text:var(--ink);--text-2:#4a4030;--text-3:var(--muted);--text-4:#5a5040;--pass-bg:#f0fdf4;--pass-border:#86efac;--badge-pass-bg:#dcfce7;--badge-pass-text:#166534;--fail-bg:#fff1f2;--fail-border:#fda4af;--badge-fail-bg:#fee2e2;--badge-fail-text:#991b1b;--warn-bg:#fffbeb;--warn-border:#fcd34d;--badge-warn-bg:#fef3c7;--badge-warn-text:#92400e;--hints-bg:#f7f3ea;--hints-border:var(--light-rule);--hints-btn-bg:var(--paper);--hints-btn-border:#c5bba8;--hints-btn-hover:var(--aged);--skeleton-1:#cfc8b4;--skeleton-2:#ddd6c0;--shadow-card:0 4px 20px #1a17141f;--radius-sm:3px;--radius-md:4px;--radius-lg:10px;font-family:var(--font-sans);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-size:16px;font-weight:300;line-height:1.65}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}:root:not([data-theme=light]){--brand:#9e82db;--brand-hover:#b59ae6;--brand-subtle:#2a2240;--brand-text:#c4b5fd;--brand-border:#9e82db;--bg:#1e1c18;--bg-subtle:#252219;--bg-muted:#2c2922;--bg-code:#242018;--border:#3a3530;--border-subtle:#302d28;--border-strong:#4a4540;--text:#e8e3d8;--text-2:#bdb5a8;--text-3:#9a9080;--text-4:#ccc4b8;--pass-bg:#052e16;--pass-border:#166534;--badge-pass-bg:#052e16;--badge-pass-text:#86efac;--fail-bg:#2d0a0f;--fail-border:#9f1239;--badge-fail-bg:#2d0a0f;--badge-fail-text:#fda4af;--warn-bg:#1c1500;--warn-border:#92400e;--badge-warn-bg:#1c1500;--badge-warn-text:#fcd34d;--hints-bg:#252218;--hints-border:#3a3528;--hints-btn-bg:#2c2920;--hints-btn-border:#3a3528;--hints-btn-hover:#332f22;--skeleton-1:#2c2920;--skeleton-2:#35312a;--shadow-card:0 4px 20px #00000080}}:root[data-theme=dark]{--brand:#9e82db;--brand-hover:#b59ae6;--brand-subtle:#2a2240;--brand-text:#c4b5fd;--brand-border:#9e82db;--bg:#1e1c18;--bg-subtle:#252219;--bg-muted:#2c2922;--bg-code:#242018;--border:#3a3530;--border-subtle:#302d28;--border-strong:#4a4540;--text:#e8e3d8;--text-2:#bdb5a8;--text-3:#8a8070;--text-4:#ccc4b8;--pass-bg:#052e16;--pass-border:#166534;--badge-pass-bg:#052e16;--badge-pass-text:#86efac;--fail-bg:#2d0a0f;--fail-border:#9f1239;--badge-fail-bg:#2d0a0f;--badge-fail-text:#fda4af;--warn-bg:#1c1500;--warn-border:#92400e;--badge-warn-bg:#1c1500;--badge-warn-text:#fcd34d;--hints-bg:#252218;--hints-border:#3a3528;--hints-btn-bg:#2c2920;--hints-btn-border:#3a3528;--hints-btn-hover:#332f22;--skeleton-1:#2c2920;--skeleton-2:#35312a;--shadow-card:0 4px 20px #00000080}body{margin:0}h1,h2,h3{font-family:var(--font-display);margin:0 0 .5em;font-weight:700;line-height:1.2}p{margin:0 0 1em}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.sidebar.svelte-1nhzsi7{flex-direction:column;height:100%;display:flex}.chapter-list.svelte-1nhzsi7{flex:1;padding-bottom:1rem;overflow-y:auto}.sidebar-header.svelte-1nhzsi7{border-bottom:1px solid var(--border);flex-direction:column;margin-bottom:.5rem;padding:1.25rem 1rem 1rem;display:flex}.site-title.svelte-1nhzsi7{font-family:var(--font-display);letter-spacing:-.01em;color:var(--brand);font-size:1.15rem;font-weight:700}.site-tagline.svelte-1nhzsi7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.15em;color:var(--text-3);margin-top:.2rem;font-size:.6rem}.skeleton.svelte-1nhzsi7{background:linear-gradient(90deg, var(--skeleton-1) 25%, var(--skeleton-2) 50%, var(--skeleton-1) 75%);background-size:200% 100%;border-radius:2px;animation:1.4s infinite svelte-1nhzsi7-shimmer}.skeleton--heading.svelte-1nhzsi7{width:50%;height:.55rem;margin:.65rem 1rem .4rem}.skeleton--item.svelte-1nhzsi7{width:72%;height:.65rem;margin:.45rem 1.25rem}@keyframes svelte-1nhzsi7-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.chapter-section.svelte-1nhzsi7{padding:.5rem 0}.chapter-heading.svelte-1nhzsi7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.15em;color:var(--text-3);margin:0;padding:.3rem 1rem;font-size:.6rem;font-weight:500}.exercise-list.svelte-1nhzsi7{margin:0;padding:0;list-style:none}.exercise-link.svelte-1nhzsi7{color:var(--text);border-left:3px solid #0000;padding:.35rem 1rem .35rem 1.25rem;font-size:.875rem;font-weight:300;text-decoration:none;transition:background .1s,color .1s;display:block}.exercise-link.svelte-1nhzsi7:hover{background:var(--brand-subtle);color:var(--brand-text)}.exercise-link.active.svelte-1nhzsi7{border-left-color:var(--brand-border);background:var(--brand-subtle);color:var(--brand-text);font-weight:400}.lesson-link.svelte-1nhzsi7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);font-size:.72rem}.lesson-link.svelte-1nhzsi7:hover,.lesson-link.active.svelte-1nhzsi7{color:var(--brand-text)}.new-badge.svelte-1nhzsi7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--brand);border:1px solid var(--brand);vertical-align:middle;opacity:.8;border-radius:2px;margin-left:.4em;padding:0 .25em;font-size:.55rem;font-weight:500;line-height:1.4;display:inline-block}.coming-soon.svelte-1nhzsi7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);margin:0;padding:.5rem 1rem .25rem;font-size:.6rem}.user-footer.svelte-1nhzsi7{border-top:1px solid var(--border);align-items:center;gap:.5rem;padding:.75rem 1rem;display:flex}.user-avatar.svelte-1nhzsi7{object-fit:cover;border-radius:50%;flex-shrink:0;width:26px;height:26px}.user-avatar--placeholder.svelte-1nhzsi7{background:var(--brand);color:#fff;justify-content:center;align-items:center;font-size:.72rem;font-weight:500;display:flex}.user-name.svelte-1nhzsi7{text-overflow:ellipsis;white-space:nowrap;color:var(--text-2);flex:1;font-size:.8rem;font-weight:300;overflow:hidden}.theme-btn.svelte-1nhzsi7,.sign-out-btn.svelte-1nhzsi7{cursor:pointer;color:var(--text-3);background:0 0;border:none;flex-shrink:0;padding:.1rem .25rem;font-size:1rem;font-style:normal;line-height:1;transition:color .1s}.theme-btn.svelte-1nhzsi7:hover,.sign-out-btn.svelte-1nhzsi7:hover{color:var(--text-2)}.editor.svelte-1g4qxuv{border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.editor.svelte-1g4qxuv .cm-editor{min-height:inherit}.editor.svelte-1g4qxuv .cm-scroller{font-family:Fira Code,Cascadia Code,Menlo,monospace;font-size:14px;line-height:1.6}@media (width<=640px){.editor.svelte-1g4qxuv .cm-scroller{font-size:16px}}.exercise-page.svelte-16ee4bm{flex-direction:column;gap:1.5rem;max-width:860px;margin:0 auto;padding:2.25rem 1.75rem;display:flex}.tab-bar.svelte-16ee4bm{border-bottom:1px solid var(--border);gap:0;margin-bottom:-.5rem;display:flex}.tab-btn.svelte-16ee4bm{font-family:var(--font-sans);color:var(--text-3);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.5rem 1.25rem;font-size:.875rem;font-weight:400;transition:color .1s}.tab-btn.svelte-16ee4bm:hover{color:var(--text)}.tab-btn.active.svelte-16ee4bm{color:var(--brand);border-bottom-color:var(--brand-border)}.lesson-panel.svelte-16ee4bm{padding-top:.5rem}.prose.svelte-16ee4bm h1,.prose.svelte-16ee4bm h2,.prose.svelte-16ee4bm h3{font-family:var(--font-display);margin:1.5em 0 .5em}.prose.svelte-16ee4bm h1{font-size:1.5rem}.prose.svelte-16ee4bm h2{font-size:1.2rem}.prose.svelte-16ee4bm h3{font-size:1rem}.prose.svelte-16ee4bm p{margin:0 0 1em;line-height:1.75}.prose.svelte-16ee4bm pre{background:var(--bg-code);border-radius:var(--radius-md);border:1px solid var(--border);margin:0 0 1em;padding:.75rem 1rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.prose.svelte-16ee4bm code{font-family:var(--font-mono)}.prose.svelte-16ee4bm :not(pre)>code{background:var(--bg-code);border-radius:var(--radius-sm);padding:.15em .35em;font-size:.88em}.prose.svelte-16ee4bm ul,.prose.svelte-16ee4bm ol{margin:0 0 1em;padding-left:1.5rem}.prose.svelte-16ee4bm li{margin:.25em 0}.prose.svelte-16ee4bm table{border-collapse:collapse;width:100%;margin:0 0 1em;font-size:.9rem}.prose.svelte-16ee4bm th,.prose.svelte-16ee4bm td{border:1px solid var(--border);text-align:left;padding:.4rem .75rem}.prose.svelte-16ee4bm th{background:var(--bg-subtle);font-weight:500}.exercise-header.svelte-16ee4bm{flex-direction:column;gap:.4rem;display:flex}h1.svelte-16ee4bm{font-family:var(--font-display);margin:0;font-size:1.6rem;font-weight:700;line-height:1.15}.learning-objective.svelte-16ee4bm{color:var(--text-2);margin:0;font-size:.925rem;font-style:italic}.editor-area.svelte-16ee4bm .editor{min-height:240px}.actions.svelte-16ee4bm{justify-content:flex-end;padding:.5rem 0;display:flex}.submit-btn.svelte-16ee4bm{font-size:.9rem;font-weight:500;font-family:var(--font-sans);border-radius:var(--radius-md);background:var(--brand);color:#fff;cursor:pointer;letter-spacing:.01em;border:none;min-width:8rem;min-height:44px;padding:.5rem 1.5rem;transition:background .1s}.submit-btn.svelte-16ee4bm:hover:not(:disabled){background:var(--brand-hover)}.submit-btn.svelte-16ee4bm:disabled{opacity:.6;cursor:not-allowed}.shortcut-hint.svelte-16ee4bm{font-family:var(--font-mono);opacity:.65;border-radius:var(--radius-sm);background:#ffffff26;margin-left:.5rem;padding:.1em .35em;font-size:.72rem}.result.svelte-16ee4bm{border-radius:var(--radius-md);border:1px solid #0000;flex-direction:column;gap:.75rem;padding:1rem 1.25rem;display:flex}.result--pass.svelte-16ee4bm{background:var(--pass-bg);border-color:var(--pass-border)}.result--fail.svelte-16ee4bm,.result--compile_error.svelte-16ee4bm,.result--runtime_error.svelte-16ee4bm,.result--error.svelte-16ee4bm{background:var(--fail-bg);border-color:var(--fail-border)}.result--timeout.svelte-16ee4bm{background:var(--warn-bg);border-color:var(--warn-border)}.result-header.svelte-16ee4bm{align-items:center;gap:1rem;display:flex}.result-badge.svelte-16ee4bm{font-size:.875rem;font-weight:600}.result-counts.svelte-16ee4bm{opacity:.8;font-size:.82rem}.result-output.svelte-16ee4bm{font-family:var(--font-mono);white-space:pre-wrap;word-break:break-word;max-height:20rem;margin:0;font-size:.8rem;line-height:1.6;overflow-y:auto}.result-message.svelte-16ee4bm{margin:0;font-size:.9rem}.hints-section.svelte-16ee4bm{background:var(--hints-bg);border:1px solid var(--hints-border);border-radius:var(--radius-md);flex-direction:column;gap:.5rem;padding:1rem 1.25rem;display:flex}.hints-label.svelte-16ee4bm{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;color:var(--text-3);font-size:.6rem;font-weight:500}.hints-list.svelte-16ee4bm{color:var(--text-4);margin:.25rem 0 0;padding-left:1.25rem;font-size:.9rem;line-height:1.65}.hint-btn.svelte-16ee4bm{font-size:.82rem;font-family:var(--font-sans);background:var(--hints-btn-bg);border:1px solid var(--hints-btn-border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text-2);align-self:flex-start;align-items:center;gap:.5rem;padding:.3rem .75rem;transition:background .1s;display:flex}.hint-btn.svelte-16ee4bm:hover{background:var(--hints-btn-hover)}.hint-count.svelte-16ee4bm{color:var(--text-3);font-size:.72rem}.no-more-hints.svelte-16ee4bm{color:var(--text-3);margin:0;font-size:.85rem}.history-section.svelte-16ee4bm{border-top:1px solid var(--border);flex-direction:column;gap:.75rem;padding-top:.5rem;display:flex}.history-toggle.svelte-16ee4bm{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;color:var(--text-3);cursor:pointer;background:0 0;border:none;align-items:center;gap:.4rem;padding:0;font-size:.72rem;font-weight:400;transition:color .1s;display:flex}.history-toggle.svelte-16ee4bm:hover{color:var(--text-2)}.history-body.svelte-16ee4bm{overflow-x:auto}.history-loading.svelte-16ee4bm,.history-empty.svelte-16ee4bm{color:var(--text-3);margin:0;font-size:.875rem}.history-table.svelte-16ee4bm{border-collapse:collapse;width:100%;font-size:.82rem}.history-table.svelte-16ee4bm th:where(.svelte-16ee4bm){text-align:left;border-bottom:1px solid var(--border);color:var(--text-3);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.1em;padding:.35rem .75rem;font-size:.62rem;font-weight:500}.history-table.svelte-16ee4bm td:where(.svelte-16ee4bm){border-bottom:1px solid var(--border-subtle);vertical-align:middle;padding:.4rem .75rem}.history-date.svelte-16ee4bm{color:var(--text-3);white-space:nowrap}.status-badge.svelte-16ee4bm{border-radius:var(--radius-sm);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:.15em .5em;font-size:.68rem;font-weight:500;display:inline-block}.status-badge--pass.svelte-16ee4bm{background:var(--badge-pass-bg);color:var(--badge-pass-text)}.status-badge--fail.svelte-16ee4bm,.status-badge--compile_error.svelte-16ee4bm,.status-badge--runtime_error.svelte-16ee4bm,.status-badge--error.svelte-16ee4bm{background:var(--badge-fail-bg);color:var(--badge-fail-text)}.status-badge--timeout.svelte-16ee4bm{background:var(--badge-warn-bg);color:var(--badge-warn-text)}@media (width<=640px){.exercise-page.svelte-16ee4bm{gap:1.25rem;padding:1.25rem 1rem}.actions.svelte-16ee4bm{justify-content:stretch}.submit-btn.svelte-16ee4bm{justify-content:center;width:100%}}.lesson-page.svelte-10yulvw{flex-direction:column;gap:1.5rem;max-width:860px;margin:0 auto;padding:2.25rem 1.75rem;display:flex}.lesson-header.svelte-10yulvw{border-bottom:1px solid var(--border);flex-direction:column;gap:.4rem;padding-bottom:1rem;display:flex}h1.svelte-10yulvw{font-family:var(--font-display);margin:0;font-size:1.6rem;font-weight:700;line-height:1.15}.lesson-label.svelte-10yulvw{color:var(--text-3);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;margin:0;font-size:.62rem}.prose.svelte-10yulvw h1,.prose.svelte-10yulvw h2,.prose.svelte-10yulvw h3{font-family:var(--font-display);margin:1.5em 0 .5em}.prose.svelte-10yulvw h1{font-size:1.5rem}.prose.svelte-10yulvw h2{font-size:1.2rem}.prose.svelte-10yulvw h3{font-size:1rem}.prose.svelte-10yulvw p{margin:0 0 1em;line-height:1.75}.prose.svelte-10yulvw pre{background:var(--bg-code);border-radius:var(--radius-md);border:1px solid var(--border);margin:0 0 1em;padding:.75rem 1rem;font-size:.85rem;line-height:1.6;overflow-x:auto}.prose.svelte-10yulvw code{font-family:var(--font-mono)}.prose.svelte-10yulvw :not(pre)>code{background:var(--bg-code);border-radius:var(--radius-sm);padding:.15em .35em;font-size:.88em}.prose.svelte-10yulvw ul,.prose.svelte-10yulvw ol{margin:0 0 1em;padding-left:1.5rem}.prose.svelte-10yulvw li{margin:.25em 0}@media (width<=640px){.lesson-page.svelte-10yulvw{gap:1.25rem;padding:1.25rem 1rem}}.skip-link.svelte-1n46o8q{z-index:9999;background:var(--brand);color:#fff;border-radius:var(--radius-md);padding:.4rem .9rem;font-size:.875rem;text-decoration:none;transition:top .1s;position:absolute;top:-100%;left:.5rem}.skip-link.svelte-1n46o8q:focus{top:.5rem}.app-layout.svelte-1n46o8q{height:100dvh;display:flex;overflow:hidden}.mobile-header.svelte-1n46o8q,.sidebar-backdrop.svelte-1n46o8q{display:none}.sidebar-container.svelte-1n46o8q{border-right:1px solid var(--border);background:var(--bg-subtle);flex-shrink:0;width:260px;overflow-y:auto}.main-content.svelte-1n46o8q{background:var(--bg);flex:1;overflow-y:auto}@media (width<=640px){.app-layout.svelte-1n46o8q{flex-direction:column}.mobile-header.svelte-1n46o8q{border-bottom:1px solid var(--border);background:var(--bg-subtle);z-index:100;flex-shrink:0;align-items:center;gap:.75rem;height:48px;padding:0 1rem;display:flex}.menu-btn.svelte-1n46o8q{color:var(--text-2);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;padding:.25rem .35rem;font-size:1.25rem;line-height:1}.menu-btn.svelte-1n46o8q:hover{color:var(--text)}.mobile-brand.svelte-1n46o8q{font-family:var(--font-display);color:var(--brand);font-size:1.05rem;font-weight:700}.sidebar-backdrop.svelte-1n46o8q{z-index:140;background:#0006;display:block;position:fixed;inset:0}.sidebar-container.svelte-1n46o8q{z-index:150;border-right:1px solid var(--border);width:80vw;max-width:300px;height:100%;box-shadow:none;transition:transform .22s;position:fixed;top:0;left:0;transform:translate(-100%)}.sidebar-container.open.svelte-1n46o8q{transform:translate(0);box-shadow:4px 0 24px #0003}}.app-state.svelte-1n46o8q{height:100vh;color:var(--text-3);justify-content:center;align-items:center;font-size:.9rem;display:flex}.app-state--error.svelte-1n46o8q{color:var(--rust);flex-direction:column;gap:.75rem}.app-state--404.svelte-1n46o8q{opacity:.7;flex-direction:column;gap:.5rem}.error-msg.svelte-1n46o8q{margin:0;font-size:.9rem}.retry-btn.svelte-1n46o8q{background:var(--rust);color:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:.82rem;font-weight:500;font-family:var(--font-sans);letter-spacing:.02em;border:none;padding:.4rem 1.1rem}.retry-btn.svelte-1n46o8q:hover{opacity:.88}.spinner.svelte-1n46o8q{border:2px solid var(--border);border-top-color:var(--brand);border-radius:50%;width:24px;height:24px;animation:.7s linear infinite svelte-1n46o8q-spin;display:inline-block}@keyframes svelte-1n46o8q-spin{to{transform:rotate(360deg)}}.sign-in-bg.svelte-1n46o8q{background:var(--bg-subtle);justify-content:center;align-items:center;height:100vh;display:flex}.sign-in-card.svelte-1n46o8q{background:var(--bg);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);border:1px solid var(--border);text-align:center;flex-direction:column;align-items:center;gap:1rem;min-width:280px;padding:3rem 2.5rem;display:flex}.brand.svelte-1n46o8q{font-family:var(--font-display);color:var(--brand);margin:0;font-size:2rem;font-weight:700}.tagline.svelte-1n46o8q{color:var(--text-3);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;margin:0;font-size:.68rem}.sign-in-btn.svelte-1n46o8q{color:#fff;border-radius:var(--radius-md);cursor:pointer;font-size:.9rem;font-weight:500;font-family:var(--font-sans);background:#24292e;border:none;align-items:center;gap:.5rem;margin-top:.5rem;padding:.65rem 1.75rem;display:flex}.sign-in-btn.svelte-1n46o8q:hover{background:#1a1e22}
