.editor.svelte-1ctqrjb{border:1px solid #ddd;border-radius:4px;min-height:200px;font-family:ui-monospace,monospace}.cm-editor{height:100%}.file-tabs.svelte-a57psi{display:flex;gap:2px;flex-wrap:wrap;margin-bottom:4px}.file-tab.svelte-a57psi{border:1px solid #ddd;border-bottom:none;background:#f5f5f5;padding:4px 10px;font-family:ui-monospace,monospace;font-size:.85rem;cursor:pointer;border-radius:4px 4px 0 0;color:#555}.file-tab.active.svelte-a57psi{background:#fff;color:#111;font-weight:600}.entry-marker.svelte-a57psi{color:#2563eb}.output.svelte-1y9o787{background:#1e1e1e;color:#d4d4d4;padding:12px;border-radius:4px;font-family:ui-monospace,monospace;font-size:13px;min-height:100px}pre.svelte-1y9o787{margin:0 0 6px;white-space:pre-wrap}.stderr.svelte-1y9o787,.error.svelte-1y9o787{color:#f48771}.empty.svelte-1y9o787{color:#888;font-style:italic}img.svelte-1y9o787{max-width:100%;display:block;margin:6px 0;background:#fff}.plotly-fig.svelte-1y9o787{background:#fff;border-radius:4px;margin:6px 0;min-height:280px}.tutor.svelte-1vsh67e{display:flex;flex-direction:column;height:100%;background:#fef9e7;border-radius:4px;padding:12px;border:1px solid #fbbf24}.pane-header.svelte-1vsh67e{display:flex;align-items:baseline;justify-content:space-between;padding:6px 12px;border-radius:4px 4px 0 0;font-size:12px;margin:-12px -12px 12px}.pane-header-chat.svelte-1vsh67e{background:#fbbf24;color:#00003c}.pane-label.svelte-1vsh67e{font-weight:700;letter-spacing:1px}.pane-hint.svelte-1vsh67e{opacity:.8;font-size:11px}.messages.svelte-1vsh67e{flex:1;overflow-y:auto;margin-bottom:12px}.turn.svelte-1vsh67e{margin-bottom:8px;display:flex}.turn-user.svelte-1vsh67e{justify-content:flex-end}.turn-assistant.svelte-1vsh67e{justify-content:flex-start}.bubble.svelte-1vsh67e{max-width:80%;padding:8px 12px;border-radius:8px;background:#eef2f7;white-space:pre-wrap}.bubble.markdown.svelte-1vsh67e{white-space:normal}.bubble.markdown.svelte-1vsh67e p{margin:0 0 8px}.bubble.markdown.svelte-1vsh67e p:last-child{margin-bottom:0}.bubble.markdown.svelte-1vsh67e code{background:#00000014;padding:1px 4px;border-radius:3px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.9em}.bubble.markdown.svelte-1vsh67e pre{background:#1e1e1e;color:#d4d4d4;padding:8px;border-radius:4px;overflow-x:auto;margin:6px 0}.bubble.markdown.svelte-1vsh67e pre code{background:transparent;padding:0;color:inherit}.bubble.markdown.svelte-1vsh67e ul,.bubble.markdown.svelte-1vsh67e ol{margin:4px 0;padding-left:24px}.bubble.markdown.svelte-1vsh67e strong{font-weight:600}.bubble.markdown.svelte-1vsh67e em{font-style:italic}.bubble.markdown.svelte-1vsh67e h1,.bubble.markdown.svelte-1vsh67e h2,.bubble.markdown.svelte-1vsh67e h3{margin:8px 0 4px;font-size:1.05em;font-weight:600}.turn-user.svelte-1vsh67e .bubble:where(.svelte-1vsh67e){background:#00003c;color:#fff}.pending.svelte-1vsh67e{color:#666}.input-row.svelte-1vsh67e{display:flex;gap:6px;margin-bottom:6px;align-items:stretch}.ask-input.svelte-1vsh67e{flex:1;padding:10px 14px;border:2px solid #fbbf24;border-radius:18px;background:#fff;font-size:14px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;resize:vertical;min-height:60px;max-height:200px;overflow:auto;line-height:1.4}.ask-input.svelte-1vsh67e:focus{outline:none;border-color:#00003c;box-shadow:0 0 0 3px #fbbf244d}.ask-input.svelte-1vsh67e:disabled{background:#f9fafb;color:#6b7280}button.svelte-1vsh67e{padding:8px 12px;border-radius:4px;border:1px solid #00003c;background:#fff;color:#00003c;cursor:pointer;font-size:14px}.input-row.svelte-1vsh67e button:where(.svelte-1vsh67e){background:#fbbf24;border-color:#fbbf24;color:#00003c;font-weight:600}button.svelte-1vsh67e:disabled{opacity:.5;cursor:not-allowed}.actions.svelte-1vsh67e{display:flex;gap:6px}.actions.svelte-1vsh67e button:where(.svelte-1vsh67e){flex:1}.hint-button.svelte-1vsh67e{background:#fef3c7!important;border-color:#fbbf24!important;display:flex!important;flex-direction:column;align-items:center;gap:1px;padding:6px 10px!important}.hint-button.svelte-1vsh67e:hover:not(:disabled){background:#fde68a!important}.hint-button-main.svelte-1vsh67e{font-weight:600}.hint-button-sub.svelte-1vsh67e{font-size:10px;opacity:.7;font-style:italic}.community.svelte-1vsh67e{margin-top:10px;text-align:center;font-size:12px;color:#666}.community.svelte-1vsh67e a:where(.svelte-1vsh67e){color:#00003c;font-weight:600;text-decoration:none}.community.svelte-1vsh67e a:where(.svelte-1vsh67e):hover{text-decoration:underline}.notify-stack.svelte-1g65hme{position:fixed;top:0;left:0;right:0;z-index:999;display:flex;flex-direction:column;gap:0;pointer-events:none}.notify.svelte-1g65hme{pointer-events:auto;display:flex;align-items:center;gap:.75rem;padding:.65rem 1rem;background:#fff8e6;border-bottom:1px solid #f0d97a;color:#5a4a14;font-family:system-ui,sans-serif;font-size:.95rem;line-height:1.4;box-shadow:0 1px 4px #00000014}.notify.reload.svelte-1g65hme{background:#eaf3fb;border-bottom-color:#cde0f3;color:#14264a}.icon.svelte-1g65hme{font-size:1.1rem;flex-shrink:0;width:1.5rem;text-align:center}.body.svelte-1g65hme{flex:1}.actions.svelte-1g65hme{display:inline-flex;align-items:center;gap:.5rem;flex-shrink:0}.primary.svelte-1g65hme{background:#14264a;color:#fff;border:none;padding:.3rem .8rem;border-radius:4px;font-size:.85rem;font-weight:600;cursor:pointer;font-family:inherit}.primary.svelte-1g65hme:hover{background:#1a3060}.dismiss.svelte-1g65hme{background:transparent;border:none;color:inherit;font-size:1.3rem;line-height:1;cursor:pointer;padding:0 .3rem;opacity:.6}.dismiss.svelte-1g65hme:hover{opacity:1}.persona-preview.svelte-16pd3jd{display:flex;flex-direction:column;gap:6px}.name-hint.svelte-16pd3jd{margin:0;font-size:11px;color:#6b7280;font-family:ui-monospace,SFMono-Regular,monospace}.overlay.svelte-de5oay{position:fixed;inset:0;pointer-events:none;z-index:2000}.flying.svelte-de5oay{position:absolute;width:28px;height:28px;border-radius:50%;background:#3a8dde;box-shadow:0 4px 14px #3a8dde80;color:#fff;font-family:ui-monospace,SFMono-Regular,monospace;font-size:9px;display:flex;align-items:center;justify-content:center;left:var(--from-x);top:var(--from-y);transform:translate(-50%,-50%);opacity:0;animation:svelte-de5oay-fly .7s cubic-bezier(.4,0,.2,1) var(--delay, 0ms) forwards}.oid.svelte-de5oay{-webkit-user-select:none;user-select:none;text-shadow:0 1px 2px rgba(0,0,0,.4)}@keyframes svelte-de5oay-fly{0%{left:var(--from-x);top:var(--from-y);opacity:0;transform:translate(-50%,-50%) scale(.4)}15%{opacity:1;transform:translate(-50%,-50%) scale(1)}85%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{left:var(--to-x);top:var(--to-y);opacity:0;transform:translate(-50%,-50%) scale(.4)}}.git-workspace.svelte-mpyybe{display:flex;flex-direction:column;gap:12px;padding:16px;font-family:system-ui,sans-serif;flex:1;min-height:0;overflow-y:auto}.question.svelte-mpyybe h2:where(.svelte-mpyybe){margin:0 0 8px;font-size:18px}.markdown.svelte-mpyybe{font-size:14px;color:#374151}.persona-tabs.svelte-mpyybe{display:flex;align-items:center;gap:8px}.persona-tabs.svelte-mpyybe .tab-label:where(.svelte-mpyybe){font-size:12px;color:#6b7280;text-transform:uppercase;letter-spacing:.04em;margin-right:4px;font-weight:600}.persona-tabs.svelte-mpyybe button:where(.svelte-mpyybe){padding:8px 16px;border-radius:6px;border:1px solid #d1d5db;background:#fff;cursor:pointer;font-family:ui-monospace,SFMono-Regular,monospace;font-size:14px;transition:background .1s ease,border-color .1s ease}.persona-tabs.svelte-mpyybe button:where(.svelte-mpyybe):hover:not(.active){background:#f3f4f6;border-color:#9ca3af}.persona-tabs.svelte-mpyybe button.active:where(.svelte-mpyybe){background:#1f2937;color:#fff;border-color:#1f2937}.persona-icon.svelte-mpyybe{margin-right:2px}.switch-hint.svelte-mpyybe{margin-left:10px;padding:3px 10px;font-size:11px;font-weight:500;font-family:ui-monospace,SFMono-Regular,monospace;background:#eff6ff;color:#1d4ed8;border:1px solid #bfdbfe;border-radius:4px;cursor:pointer;vertical-align:middle;transition:background .1s ease}.switch-hint.svelte-mpyybe:hover{background:#dbeafe}.workspace.svelte-mpyybe{display:grid;grid-template-columns:1.1fr 1.2fr 1fr;gap:12px}.bottom-row.svelte-mpyybe{display:grid;grid-template-columns:1.2fr 1fr;gap:12px;height:55vh;min-height:280px;max-height:600px}.terminal-pane.svelte-mpyybe,.tutor-pane.svelte-mpyybe{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.three-trees-pane.svelte-mpyybe,.student-dag-pane.svelte-mpyybe,.target-dag-pane.svelte-mpyybe{border:1px solid #e5e7eb;border-radius:4px;padding:10px;background:#f9fafb}h3.svelte-mpyybe{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}h3.separator.svelte-mpyybe{margin-top:14px;padding-top:10px;border-top:1px solid #e5e7eb}.overlay.svelte-148ev8c{position:fixed;inset:0;background:#fff;display:flex;flex-direction:column;z-index:9999}header.svelte-148ev8c{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;background:#00003c;color:#fff}.header-left.svelte-148ev8c{display:flex;align-items:center;gap:12px;min-width:0}.header-logo-link.svelte-148ev8c{display:inline-flex;align-items:center;line-height:0}.header-logo.svelte-148ev8c{height:28px;width:auto;display:block;filter:invert(1)}.header-actions.svelte-148ev8c{display:flex;align-items:center;gap:8px}.header-tool.svelte-148ev8c{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;font-size:12px;padding:4px 10px;border-radius:4px;cursor:pointer;font-family:inherit;text-decoration:none;display:inline-block;line-height:normal}.header-tool.svelte-148ev8c:hover:not(:disabled){background:#ffffff1a;text-decoration:none}.header-tool.svelte-148ev8c:disabled{opacity:.4;cursor:not-allowed}.header-tool-danger.svelte-148ev8c{margin-left:24px;border-color:#fca5a599;color:#fca5a5}.header-tool-danger.svelte-148ev8c:hover:not(:disabled){background:#fca5a51f}.header-close.svelte-148ev8c{background:transparent;border:none;color:#fff;font-size:24px;cursor:pointer;padding:0 4px}.layout.svelte-148ev8c{display:grid;grid-template-columns:2fr 1fr;gap:12px;padding:12px;flex:1;overflow:hidden}.left.svelte-148ev8c,.right.svelte-148ev8c{display:flex;flex-direction:column;gap:12px;min-height:0}.left.svelte-148ev8c{overflow:auto}.right.svelte-148ev8c{overflow:hidden}.question.svelte-148ev8c{padding:8px 12px;background:#eef2f7;border-left:3px solid #fbbf24;border-radius:4px}.question.svelte-148ev8c h2:where(.svelte-148ev8c){margin:0 0 4px;font-size:16px}.markdown.svelte-148ev8c{font-size:14px}.markdown.svelte-148ev8c p{margin:0 0 8px}.markdown.svelte-148ev8c p:last-child{margin-bottom:0}.markdown.svelte-148ev8c code{background:#00000014;padding:1px 4px;border-radius:3px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:.9em}.markdown.svelte-148ev8c pre{background:#1e1e1e;color:#d4d4d4;padding:12px;border-radius:4px;overflow-x:auto}.markdown.svelte-148ev8c pre code{background:transparent;padding:0;color:inherit}.markdown.svelte-148ev8c ul,.markdown.svelte-148ev8c ol{margin:0 0 8px;padding-left:24px}.pane-header.svelte-148ev8c{display:flex;align-items:baseline;justify-content:space-between;padding:6px 12px;border-radius:4px 4px 0 0;font-size:12px;margin-bottom:-1px}.pane-header-editor.svelte-148ev8c{background:#00003c;color:#fbbf24}.pane-label.svelte-148ev8c{font-weight:700;letter-spacing:1px}.pane-hint.svelte-148ev8c{opacity:.75;font-size:11px}.editor-actions.svelte-148ev8c{margin-top:6px;display:flex;align-items:center}.run.svelte-148ev8c{padding:8px 16px;background:#fbbf24;color:#00003c;font-weight:600;border:none;border-radius:4px;cursor:pointer;font-size:14px}.run.svelte-148ev8c:disabled{background:#aaa;cursor:not-allowed}.tutor-link.svelte-148ev8c{margin-left:48px;padding:7px 14px;background:#fff;color:#00003c;border:1px solid #00003c;border-radius:4px;font-size:13px;text-decoration:none;line-height:normal}.tutor-link.svelte-148ev8c:hover{background:#eef2f7;text-decoration:none}.error.svelte-148ev8c{padding:12px;color:#b00020}.loading.svelte-148ev8c{padding:12px;color:#666}.finalize-toast.svelte-148ev8c{position:fixed;top:1rem;right:1rem;z-index:1000;background:#2a6;color:#fff;padding:.75rem 1rem;border-radius:6px;box-shadow:0 2px 8px #00000026;max-width:28rem}.finalize-toast.svelte-148ev8c button:where(.svelte-148ev8c){margin-left:1rem;background:#fff3;border:none;color:#fff;padding:.25rem .75rem;border-radius:4px;cursor:pointer}.overlay.svelte-1peadzr{position:fixed;inset:0;z-index:1000;background:#1419288c;display:flex;align-items:center;justify-content:center;padding:1.5rem;font-family:system-ui,sans-serif}.modal.svelte-1peadzr{background:#fff;max-width:32rem;width:100%;border-radius:8px;box-shadow:0 8px 40px #00000040;padding:2rem 2.25rem}h1.svelte-1peadzr{margin:0 0 .75rem;font-size:1.5rem;color:#14264a}.lead.svelte-1peadzr{margin:0 0 1.2rem;color:#333;line-height:1.55;font-size:1.05rem}.bullets.svelte-1peadzr{margin:0 0 1.5rem;padding-left:1.2rem;line-height:1.55;color:#333}.bullets.svelte-1peadzr li:where(.svelte-1peadzr){margin-bottom:.4rem}.kbd.svelte-1peadzr{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9em;padding:.05rem .4rem;border:1px solid #cbd5e1;border-radius:4px;background:#f1f5f9;color:#14264a}.primary.svelte-1peadzr{background:#14264a;color:#fff;border:none;padding:.7rem 1.4rem;border-radius:6px;font-size:1rem;font-weight:600;cursor:pointer;font-family:inherit}.primary.svelte-1peadzr:hover{background:#1a3060}.primary.svelte-1peadzr:focus-visible{outline:3px solid #fbbf24;outline-offset:2px}.overlay.svelte-lc91xz{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.modal.svelte-lc91xz{background:#fff;padding:2rem;border-radius:8px;max-width:28rem;width:90%;font-family:system-ui,sans-serif}.logo-link.svelte-lc91xz{display:block;text-align:center;margin-bottom:1rem}.logo.svelte-lc91xz{max-width:14rem;height:auto}h2.svelte-lc91xz{margin-top:0}.lede.svelte-lc91xz{color:#555}label.svelte-lc91xz{display:block;margin-bottom:1rem}input.svelte-lc91xz{display:block;width:100%;padding:.5rem;font-size:1rem;margin-top:.25rem}button.svelte-lc91xz{padding:.5rem 1.5rem;font-size:1rem;cursor:pointer}button.svelte-lc91xz:disabled{opacity:.5;cursor:not-allowed}.error.svelte-lc91xz{color:#c00;margin:.5rem 0;font-size:.9rem}.privacy.svelte-lc91xz{margin-top:1.5rem;font-size:.8rem;color:#666;border-top:1px solid #eee;padding-top:.75rem}.page-error.svelte-1qo5zp5{padding:2rem;color:#c00;font-family:system-ui,sans-serif}.loading.svelte-1qo5zp5{padding:2rem;color:#666;font-family:system-ui,sans-serif}.not-found.svelte-1qo5zp5{max-width:36rem;margin:0 auto;padding:3rem 1.5rem;font-family:system-ui,sans-serif;color:#222}.not-found.svelte-1qo5zp5 h1:where(.svelte-1qo5zp5){color:#035;font-size:1.5rem;margin:0 0 1rem}.not-found.svelte-1qo5zp5 p:where(.svelte-1qo5zp5){line-height:1.5;margin:0 0 1rem;color:#444}.not-found.svelte-1qo5zp5 code:where(.svelte-1qo5zp5){background:#f4f4f4;border:1px solid #ddd;border-radius:3px;padding:.05rem .35rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.not-found.svelte-1qo5zp5 .demo-link:where(.svelte-1qo5zp5){color:#035;font-weight:600;text-decoration:underline}.not-found.svelte-1qo5zp5 .back-link:where(.svelte-1qo5zp5){color:#555;font-size:.95rem}.not-found.svelte-1qo5zp5 .back-link:where(.svelte-1qo5zp5) a:where(.svelte-1qo5zp5){color:#035}.page-header.svelte-1qo5zp5{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center}.logo-link.svelte-1qo5zp5{display:inline-block}.logo.svelte-1qo5zp5{height:2.5rem;width:auto;display:block}.student-identity.svelte-1qo5zp5{margin-left:auto;color:#555;font-size:.9rem}.student-identity.svelte-1qo5zp5 strong:where(.svelte-1qo5zp5){color:#222}.student-identity.svelte-1qo5zp5+.instructor-nav:where(.svelte-1qo5zp5){margin-left:1rem}.instructor-nav.svelte-1qo5zp5{margin-left:auto}.instructor-nav.svelte-1qo5zp5 a:where(.svelte-1qo5zp5){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-1qo5zp5 a:where(.svelte-1qo5zp5):hover{background:#f4f7fb}.course.svelte-1qo5zp5{padding:2rem;max-width:48rem;margin:0 auto;font-family:system-ui,sans-serif}.exercises.svelte-1qo5zp5{list-style:none;padding:0}.exercises.svelte-1qo5zp5 li:where(.svelte-1qo5zp5){display:flex;align-items:center;gap:.75rem;padding:.75rem 0;border-bottom:1px solid #eee}.exercises.svelte-1qo5zp5 li.complete:where(.svelte-1qo5zp5) .title:where(.svelte-1qo5zp5){color:#163}.check.svelte-1qo5zp5{width:1.25rem;text-align:center;color:#2c7a3e;font-weight:700;font-size:1.05rem;flex-shrink:0}.title.svelte-1qo5zp5{flex:1}.progress-badge.svelte-1qo5zp5{display:inline-block;margin-left:.75rem;padding:.18rem .7rem;background:#e6f4ec;color:#2c7a3e;border:1px solid #b9dec7;border-radius:999px;font-size:.8rem;font-weight:600;vertical-align:middle}.mode-badge.svelte-1qo5zp5{font-size:.75rem;padding:.125rem .5rem;border-radius:4px;background:#eef;color:#336;text-transform:none;font-weight:600}.mode-git.svelte-1qo5zp5{background:#fee;color:#633}.mode-pandas.svelte-1qo5zp5{background:#efe;color:#163}.mode-numpy.svelte-1qo5zp5{background:#fef3e0;color:#634}button.svelte-1qo5zp5{padding:.4rem 1rem;cursor:pointer}button.svelte-1qo5zp5:disabled{opacity:.5;cursor:not-allowed}.link-button.svelte-1qo5zp5{background:none;border:none;padding:0;cursor:pointer;color:#035;text-decoration:underline;font:inherit}.link-button.tiny.svelte-1qo5zp5{font-size:.8rem;color:#666}.link-button.svelte-1qo5zp5:hover{color:#58a}.restore-row.svelte-1qo5zp5{position:fixed;left:50%;bottom:1.5rem;transform:translate(-50%);z-index:100;width:min(28rem,calc(100vw - 2rem));text-align:center;background:#fff;padding:.75rem 1rem;border-radius:6px;box-shadow:0 4px 20px #00000059;font-family:system-ui,sans-serif}.restore-form.svelte-1qo5zp5{margin-top:1rem;text-align:left;padding:1rem;background:#f8fbff;border:1px solid #d8e1ee;border-radius:6px}.restore-form.svelte-1qo5zp5 label:where(.svelte-1qo5zp5){display:block}.restore-form.svelte-1qo5zp5 input:where(.svelte-1qo5zp5){width:100%;padding:.5rem;margin-top:.25rem;font-size:1rem;box-sizing:border-box}.restore-actions.svelte-1qo5zp5{display:flex;gap:.5rem;margin-top:.75rem}.restore-actions.svelte-1qo5zp5 .secondary:where(.svelte-1qo5zp5){background:#fff}.restore-sent.svelte-1qo5zp5{color:#163;font-size:.9rem;margin-top:.75rem}.email-overlay.svelte-1qo5zp5{position:fixed;inset:0;z-index:1000;background:#1419288c;display:flex;align-items:center;justify-content:center;padding:1.5rem;font-family:system-ui,sans-serif}.email-modal.svelte-1qo5zp5{background:#fff;max-width:28rem;width:100%;border-radius:8px;padding:1.5rem 2rem;box-shadow:0 8px 40px #00000040}.email-modal.svelte-1qo5zp5 h2:where(.svelte-1qo5zp5){margin:0 0 .5rem}.email-modal.svelte-1qo5zp5 label:where(.svelte-1qo5zp5){display:block;margin:1rem 0 .25rem}.email-modal.svelte-1qo5zp5 input:where(.svelte-1qo5zp5){width:100%;padding:.5rem;box-sizing:border-box}.email-actions.svelte-1qo5zp5{display:flex;gap:.5rem;margin-top:1rem}.email-actions.svelte-1qo5zp5 .secondary:where(.svelte-1qo5zp5){background:#fff;border:1px solid #ccc}.success.svelte-1qo5zp5{color:#163}.error.svelte-1qo5zp5{color:#c00}.signed-in.svelte-s72yha{font-size:.9rem;color:#555;display:inline-flex;align-items:center;gap:.5rem}.signed-in.svelte-s72yha strong:where(.svelte-s72yha){color:#222}.role-badge.svelte-s72yha{background:#eef4fb;color:#14264a;border:1px solid #cde0f3;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600}.shorthand-pane.svelte-1k5h6vd{border:1px solid #d8e1ee;border-radius:6px;background:#fff;margin-bottom:1rem;overflow:hidden}.pane-header.svelte-1k5h6vd{padding:.5rem .75rem;background:#f4f7fb;border-bottom:1px solid #d8e1ee;display:flex;align-items:center;gap:1rem}.pane-header.svelte-1k5h6vd h4:where(.svelte-1k5h6vd){margin:0;font-size:.9rem;color:#14264a}.parse-error.svelte-1k5h6vd{font-size:.85rem;color:#ad3e3e;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.parse-warning.svelte-1k5h6vd{font-size:.85rem;color:#8a6d1a;background:#fff8e6;padding:.15rem .5rem;border-radius:4px;border:1px solid #f0d97a}.pane-body.svelte-1k5h6vd{display:grid;grid-template-columns:1fr 1fr;gap:0;min-height:18rem}.editor-col.svelte-1k5h6vd{border-right:1px solid #d8e1ee;display:flex;flex-direction:column}.editor-col.svelte-1k5h6vd textarea:where(.svelte-1k5h6vd){flex:1;width:100%;border:none;padding:.75rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;line-height:1.5;resize:vertical;outline:none;background:#fafbfc}.editor-col.svelte-1k5h6vd textarea.has-error:where(.svelte-1k5h6vd){background:#fff5f5}.preview-col.svelte-1k5h6vd{display:flex;align-items:center;justify-content:center;background:#fff;padding:.5rem;overflow:auto}.preview-empty.svelte-1k5h6vd{color:#888;font-size:.9rem;font-style:italic}.page-header.svelte-la3k1h{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-la3k1h{display:inline-block}.logo.svelte-la3k1h{height:2.5rem;width:auto;display:block}.page-header.svelte-la3k1h h1:where(.svelte-la3k1h){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-la3k1h{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.instructor-nav.svelte-la3k1h a:where(.svelte-la3k1h){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-la3k1h a:where(.svelte-la3k1h):hover{background:#f4f7fb}.page.svelte-la3k1h{padding:2rem;max-width:48rem;margin:0 auto;font-family:system-ui,sans-serif}.template-picker.svelte-la3k1h{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:.5rem 0 .75rem}.template-picker.svelte-la3k1h label:where(.svelte-la3k1h){margin-bottom:0;font-size:.9rem;color:#444}.template-picker.svelte-la3k1h select:where(.svelte-la3k1h){display:block;width:100%;padding:.4rem;font-size:.9rem;margin-top:.2rem;font-family:inherit}.data-library.svelte-la3k1h{border:1px solid #d4d4d4;border-radius:4px;padding:.75rem 1rem;margin-bottom:1rem}.data-library.svelte-la3k1h legend:where(.svelte-la3k1h){font-size:.9rem;color:#444;padding:0 .4rem}.data-library-grid.svelte-la3k1h{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem 1rem}.data-library-item.svelte-la3k1h{display:flex;align-items:center;gap:.5rem;margin-bottom:0;font-size:.9rem;cursor:pointer}.data-library-item.svelte-la3k1h input[type=checkbox]:where(.svelte-la3k1h){width:auto;margin:0}.data-library-item.svelte-la3k1h .name:where(.svelte-la3k1h){flex:1;font-family:ui-monospace,monospace}.data-library-item.svelte-la3k1h .size:where(.svelte-la3k1h){color:#888;font-size:.8rem}label.svelte-la3k1h{display:block;margin-bottom:1rem}label.svelte-la3k1h input:where(.svelte-la3k1h),label.svelte-la3k1h textarea:where(.svelte-la3k1h){display:block;width:100%;padding:.5rem;font-size:1rem;margin-top:.25rem;font-family:inherit}textarea.svelte-la3k1h{font-family:ui-monospace,monospace}.editor-field.svelte-la3k1h{margin-bottom:1rem}.field-label.svelte-la3k1h{margin:0 0 .25rem;font-weight:500;color:#333}.editor-wrap.svelte-la3k1h{border:1px solid #ccc;border-radius:4px;overflow:hidden;min-height:24rem;background:#fff}.editor-wrap.svelte-la3k1h .cm-editor{height:24rem}fieldset.svelte-la3k1h{border:1px solid #ddd;padding:.75rem;margin-bottom:1rem}.git-author-style.svelte-la3k1h{background:#fafbfc;border:1px solid #d8e1ee;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem}.git-author-style.svelte-la3k1h legend:where(.svelte-la3k1h){font-size:.85rem;color:#14264a;padding:0 .4rem;font-weight:600}.git-author-style.svelte-la3k1h .radio:where(.svelte-la3k1h){display:block;margin:.25rem 0;font-size:.95rem;color:#333;cursor:pointer}.git-author-style.svelte-la3k1h input[type=radio]:where(.svelte-la3k1h){margin-right:.4rem}legend.svelte-la3k1h{padding:0 .5rem;color:#555}.radio.svelte-la3k1h{display:inline-block;margin-right:1rem;margin-bottom:0}.hint.svelte-la3k1h{color:#666;font-size:.85rem;margin-top:-.5rem;margin-bottom:1rem}.muted.svelte-la3k1h{color:#666}.error.svelte-la3k1h{color:#c00}button.svelte-la3k1h{padding:.5rem 1rem;font-size:1rem;cursor:pointer}button.secondary.svelte-la3k1h{background:#fff;border:1px solid #999}button.svelte-la3k1h:disabled{opacity:.5;cursor:not-allowed}.actions.svelte-la3k1h{display:flex;gap:.75rem;margin-top:1rem}.url-row.svelte-la3k1h{display:flex;align-items:center;gap:.5rem}.url.svelte-la3k1h{font-family:ui-monospace,monospace;padding:.25rem .5rem;background:#f4f4f4;border-radius:4px;flex:1;overflow-wrap:anywhere}.badge.svelte-la3k1h{display:inline-block;padding:.125rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;margin-left:.25rem}.badge-high.svelte-la3k1h{background:#d4f4d4;color:#143}.badge-medium.svelte-la3k1h{background:#fff4cc;color:#663}.badge-low.svelte-la3k1h{background:#fdd;color:#633}.badge-unknown.svelte-la3k1h{background:#eee;color:#555}.library-trigger.svelte-la3k1h{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem;flex-wrap:wrap}.library-trigger.svelte-la3k1h .hint:where(.svelte-la3k1h){margin:0}.lib-overlay.svelte-la3k1h{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.lib-modal.svelte-la3k1h{background:#fff;padding:1.5rem;border-radius:8px;width:92%;max-width:48rem;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 10px 40px #00000040}.lib-header.svelte-la3k1h{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.lib-header.svelte-la3k1h h2:where(.svelte-la3k1h){margin:0;font-size:1.1rem}.lib-close.svelte-la3k1h{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:#666;line-height:1;padding:0 .5rem}.lib-search-row.svelte-la3k1h{display:flex;gap:.5rem;margin-bottom:.75rem}.lib-search.svelte-la3k1h{flex:1;padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}.lib-lang-filter.svelte-la3k1h{padding:.5rem;font-size:.95rem;border:1px solid #ccc;border-radius:4px;background:#fff}.lib-results.svelte-la3k1h{flex:1;overflow-y:auto}.lib-results.svelte-la3k1h ul:where(.svelte-la3k1h){list-style:none;padding:0;margin:0}.lib-result.svelte-la3k1h{padding:.75rem 0;border-bottom:1px solid #eee}.lib-result.svelte-la3k1h:last-child{border-bottom:none}.lib-meta.svelte-la3k1h{display:flex;gap:.5rem;align-items:center;font-size:.8rem;color:#666;margin-bottom:.25rem}.lib-source.svelte-la3k1h{background:#eef;color:#336;padding:.125rem .5rem;border-radius:4px;font-weight:600;text-transform:uppercase;font-size:.7rem}.lib-ref.svelte-la3k1h{font-family:ui-monospace,monospace}.lib-question.svelte-la3k1h{margin:.25rem 0;line-height:1.4}.lib-result.svelte-la3k1h button:where(.svelte-la3k1h){padding:.3rem .75rem;font-size:.85rem;cursor:pointer;background:#035;color:#fff;border:none;border-radius:4px}.lib-result.svelte-la3k1h button:where(.svelte-la3k1h):hover{background:#024}.page-header.svelte-1usocce{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-1usocce{display:inline-block}.logo.svelte-1usocce{height:2.5rem;width:auto;display:block}.page-header.svelte-1usocce h1:where(.svelte-1usocce){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-1usocce{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.page.svelte-1usocce{padding:2rem;max-width:60rem;margin:0 auto;font-family:system-ui,sans-serif}.top-actions.svelte-1usocce{display:flex;align-items:center;justify-content:space-between;gap:1rem;margin:0 0 1rem}.new-classroom-btn.svelte-1usocce{background:#14264a;color:#fff;padding:.5rem 1rem;border-radius:6px;font-weight:600;text-decoration:none;font-size:.95rem}.new-classroom-btn.svelte-1usocce:hover{background:#1a3060}.view-toggle.svelte-1usocce{margin:0}.view-toggle.svelte-1usocce a:where(.svelte-1usocce){color:#035;text-decoration:none}.view-toggle.svelte-1usocce a:where(.svelte-1usocce):hover{text-decoration:underline}.controls.svelte-1usocce{display:flex;gap:1rem;align-items:center;margin-bottom:.75rem}.controls.svelte-1usocce select:where(.svelte-1usocce){padding:.25rem;font:inherit}.muted.svelte-1usocce{color:#666}.error.svelte-1usocce{color:#c00}table.svelte-1usocce{width:100%;border-collapse:collapse}th.svelte-1usocce,td.svelte-1usocce{text-align:left;padding:.6rem .75rem;border-bottom:1px solid #eee}th.svelte-1usocce{background:#fafafa;font-weight:600}td.actions.svelte-1usocce{display:flex;gap:.5rem}td.actions.svelte-1usocce button:where(.svelte-1usocce){padding:.3rem .65rem;font-size:.85rem;border:1px solid #ccc;background:#fff;cursor:pointer;border-radius:4px}td.actions.svelte-1usocce button:where(.svelte-1usocce):hover{background:#fafafa}td.actions.svelte-1usocce button.danger:where(.svelte-1usocce){color:#fff;background:#c33;border-color:#a22}td.actions.svelte-1usocce button.danger:where(.svelte-1usocce):hover{background:#a22}a.svelte-1usocce{color:#035;text-decoration:none}a.svelte-1usocce:hover{text-decoration:underline}.pagination.svelte-1usocce{margin-top:1rem;display:flex;gap:1rem;align-items:center}.pagination.svelte-1usocce button:where(.svelte-1usocce){padding:.3rem .75rem;border:1px solid #ccc;background:#fff;cursor:pointer;border-radius:4px}.pagination.svelte-1usocce button:where(.svelte-1usocce):disabled{opacity:.4;cursor:not-allowed}.badge.svelte-1usocce{display:inline-block;padding:.125rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;margin-right:.5rem;vertical-align:middle}.badge-private.svelte-1usocce{background:#fee;color:#844;border:1px solid #ecc}.badge-demo.svelte-1usocce{background:#eef4fb;color:#2a5;border:1px solid #cde0f3}.stats-roll-up.svelte-1usocce{display:flex;gap:1rem;flex-wrap:wrap;padding:1rem;background:#fafbfd;border:1px solid #e0e4ec;border-radius:6px;margin-bottom:1.5rem}.stat.svelte-1usocce{display:flex;flex-direction:column;gap:.125rem;padding:.25rem .75rem;min-width:5rem}.stat-value.svelte-1usocce{font-size:1.4rem;font-weight:700;color:#222;font-variant-numeric:tabular-nums}.stat-label.svelte-1usocce{font-size:.75rem;color:#666;text-transform:uppercase;letter-spacing:.5px}.version-chip.svelte-1usocce{margin:3rem auto 1rem;padding:.4rem .85rem;width:fit-content;font-size:.78rem;color:#555;background:#f6f7fa;border:1px solid #e2e5ec;border-radius:999px;display:flex;gap:.45rem;align-items:center;font-family:system-ui,sans-serif}.version-chip.svelte-1usocce .dim:where(.svelte-1usocce){color:#888}.version-chip.svelte-1usocce .sep:where(.svelte-1usocce){color:#bbb}.version-chip.svelte-1usocce .commit:where(.svelte-1usocce){color:#035;text-decoration:none;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.version-chip.svelte-1usocce .commit:where(.svelte-1usocce):hover{text-decoration:underline}.page-header.svelte-x7yv8b{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-x7yv8b{display:inline-block}.logo.svelte-x7yv8b{height:2.5rem;width:auto;display:block}.page-header.svelte-x7yv8b h1:where(.svelte-x7yv8b){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-x7yv8b{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.instructor-nav.svelte-x7yv8b a:where(.svelte-x7yv8b){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-x7yv8b a:where(.svelte-x7yv8b):hover{background:#f4f7fb}.page.svelte-x7yv8b{padding:2rem;max-width:60rem;margin:0 auto;font-family:system-ui,sans-serif}.breadcrumb.svelte-x7yv8b{margin:0 0 1rem}.edit-link.svelte-x7yv8b{padding:.2rem .55rem;font-size:.85rem;background:#fff;border:1px solid #d8e1ee;border-radius:4px;color:#035;text-decoration:none;font-weight:600}.edit-link.svelte-x7yv8b:hover{background:#eaf0f8;text-decoration:none}h2.svelte-x7yv8b .slug:where(.svelte-x7yv8b){color:#777;font-weight:400;font-size:.85em;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.muted.svelte-x7yv8b{color:#666}.student-url-row.svelte-x7yv8b{display:flex;align-items:center;gap:.6rem;background:#f4f7fb;border:1px solid #d8e1ee;border-radius:6px;padding:.5rem .75rem;margin:.5rem 0 1rem;flex-wrap:wrap}.student-url-label.svelte-x7yv8b{font-size:.85rem;color:#555;font-weight:600}.student-url.svelte-x7yv8b{font-size:.95rem}.student-url.svelte-x7yv8b code:where(.svelte-x7yv8b){background:#fff;padding:.2rem .5rem;border-radius:4px;border:1px solid #d8e1ee;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.copy-btn.svelte-x7yv8b{padding:.3rem .75rem;font-size:.85rem;background:#fff;border:1px solid #d8e1ee;border-radius:4px;cursor:pointer;color:#035;font-family:inherit;font-weight:600}.copy-btn.svelte-x7yv8b:hover{background:#eaf0f8}.actions-row.svelte-x7yv8b{margin:1rem 0}.new-exercise-link.svelte-x7yv8b{display:inline-block;padding:.5rem 1rem;background:#035;color:#fff;text-decoration:none;border-radius:4px;font-weight:600}.new-exercise-link.svelte-x7yv8b:hover{background:#024;text-decoration:none}.error.svelte-x7yv8b{color:#c00}table.svelte-x7yv8b{width:100%;border-collapse:collapse}th.svelte-x7yv8b,td.svelte-x7yv8b{text-align:left;padding:.6rem .75rem;border-bottom:1px solid #eee}th.svelte-x7yv8b{background:#fafafa;font-weight:600}a.svelte-x7yv8b{color:#035;text-decoration:none}a.svelte-x7yv8b:hover{text-decoration:underline}.order-col.svelte-x7yv8b{width:4.5rem;white-space:nowrap}.reorder-btn.svelte-x7yv8b{padding:.1rem .45rem;font-size:.85rem;background:#fff;border:1px solid #d8e1ee;border-radius:4px;color:#035;cursor:pointer;font-family:inherit}.reorder-btn.svelte-x7yv8b:disabled{opacity:.35;cursor:not-allowed}.reorder-btn.svelte-x7yv8b:not(:disabled):hover{background:#eaf0f8}.action-cell.svelte-x7yv8b{white-space:nowrap;display:flex;gap:.4rem;align-items:center}.action-btn.svelte-x7yv8b{padding:.2rem .55rem;font-size:.85rem;background:#fff;border:1px solid #d8e1ee;border-radius:4px;color:#035;cursor:pointer;font-family:inherit;font-weight:600}.action-btn.svelte-x7yv8b:hover{background:#eaf0f8}.action-btn.danger.svelte-x7yv8b{border-color:#e0b0b0;color:#933}.action-btn.danger.svelte-x7yv8b:hover{background:#fceaea}.archived-heading.svelte-x7yv8b{margin-top:2.5rem;color:#555}.archived-table.svelte-x7yv8b{opacity:.85}.small.svelte-x7yv8b{font-size:.85rem}.live.svelte-x7yv8b{margin:1.5rem 0 2rem;border:1px solid #d8e1ee;border-radius:6px;padding:1rem 1.25rem;background:#f8fbff}.live.svelte-x7yv8b h3:where(.svelte-x7yv8b){margin:0 0 .5rem;color:#14264a;font-size:1.05rem}.live-dot.svelte-x7yv8b{display:inline-block;width:.55rem;height:.55rem;border-radius:50%;background:#16a34a;margin-left:.25rem;box-shadow:0 0 #16a34a8c;animation:svelte-x7yv8b-pulse 2s ease-out infinite}@keyframes svelte-x7yv8b-pulse{0%{box-shadow:0 0 #16a34a8c}70%{box-shadow:0 0 0 .6rem #16a34a00}to{box-shadow:0 0 #16a34a00}}.live-window.svelte-x7yv8b{color:#6b7a8f;font-weight:400;font-size:.9rem}.live-table.svelte-x7yv8b{margin-top:.5rem}.live-table.svelte-x7yv8b th:where(.svelte-x7yv8b){background:transparent}.status-pill.svelte-x7yv8b{display:inline-block;padding:.1rem .6rem;border-radius:999px;font-size:.8rem;font-weight:600}.status-pass.svelte-x7yv8b{background:#e6f4ec;color:#2c7a3e}.status-needs-work.svelte-x7yv8b{background:#fdecea;color:#a3401d}.status-in-progress.svelte-x7yv8b{background:#fff6db;color:#8a6d11}.code-view.svelte-hkck74{position:relative;background:#fafbfc;border:1px solid #d0d7de;border-radius:6px;overflow:hidden}.code-view.big.svelte-hkck74{min-height:14rem}.copy.svelte-hkck74{position:absolute;top:.4rem;right:.4rem;z-index:1;padding:.25rem .6rem;font-size:.8rem;background:#fff;border:1px solid #d0d7de;border-radius:4px;cursor:pointer;color:#444;font-family:system-ui,sans-serif}.copy.svelte-hkck74:hover{background:#f4f6f8}.code-host.svelte-hkck74 .cm-editor{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;line-height:1.5}.big.svelte-hkck74 .code-host:where(.svelte-hkck74) .cm-editor{font-size:1.25rem;line-height:1.6}.code-host.svelte-hkck74 .cm-scroller{padding:.75rem .5rem .75rem 0}.code-host.svelte-hkck74 .cm-content{color:#1a1a1a;caret-color:transparent}.code-host.svelte-hkck74 .cm-gutters{background:#f0f3f6;color:#8a94a3;border-right:1px solid #e0e4e9}.code-host.svelte-hkck74 .cm-activeLine,.code-host.svelte-hkck74 .cm-activeLineGutter{background:transparent}.git-replay.svelte-1qpxsf1{outline:none;border:1px solid #d8e1ee;border-radius:6px;padding:1rem;background:#f8fbff}.git-replay.svelte-1qpxsf1:focus-visible{box-shadow:0 0 0 3px #14264a40}.controls.svelte-1qpxsf1{display:flex;align-items:center;gap:.6rem;margin-bottom:.75rem;font-size:.9rem}.controls.svelte-1qpxsf1 button:where(.svelte-1qpxsf1){padding:.3rem .7rem;border:1px solid #d8e1ee;background:#fff;border-radius:4px;cursor:pointer;font:inherit}.controls.svelte-1qpxsf1 button:where(.svelte-1qpxsf1):disabled{opacity:.4;cursor:not-allowed}.controls.svelte-1qpxsf1 button:where(.svelte-1qpxsf1):not(:disabled):hover{background:#eaf0f8}.progress.svelte-1qpxsf1{flex:1;text-align:center;color:#6b7a8f;font-weight:600}.panes.svelte-1qpxsf1{display:grid;grid-template-columns:minmax(15rem,1fr) 2fr;gap:1rem;align-items:start}.cmd-list.svelte-1qpxsf1{list-style:none;padding:0;margin:0;max-height:24rem;overflow-y:auto;border:1px solid #d8e1ee;border-radius:4px;background:#fff}.cmd-list.svelte-1qpxsf1 li:where(.svelte-1qpxsf1){border-bottom:1px solid #f0f4f9}.cmd-list.svelte-1qpxsf1 li:where(.svelte-1qpxsf1):last-child{border-bottom:none}.cmd-row.svelte-1qpxsf1{width:100%;text-align:left;background:transparent;border:none;padding:.4rem .6rem;cursor:pointer;display:flex;align-items:baseline;gap:.4rem;font:inherit}.cmd-row.svelte-1qpxsf1:hover{background:#f1f5f9}.cmd-marker.svelte-1qpxsf1{width:1rem;color:#6b7a8f;font-family:ui-monospace,monospace}.cmd-row.svelte-1qpxsf1 code:where(.svelte-1qpxsf1){flex:1;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;color:#14264a;word-break:break-all;font-size:.9rem}.current.svelte-1qpxsf1{background:#fff7d6}.current.svelte-1qpxsf1 .cmd-marker:where(.svelte-1qpxsf1){color:#b08600}.current.svelte-1qpxsf1 code:where(.svelte-1qpxsf1){font-weight:600}.done.svelte-1qpxsf1 code:where(.svelte-1qpxsf1){color:#5a6b80}.failed.svelte-1qpxsf1 code:where(.svelte-1qpxsf1){color:#a3401d}.cmd-fail.svelte-1qpxsf1{color:#a3401d;font-weight:700;cursor:help;margin-left:.3rem}.dag-pane.svelte-1qpxsf1{background:#fff;border:1px solid #d8e1ee;border-radius:4px;padding:.5rem;min-height:16rem}.muted.svelte-1qpxsf1{color:#6b7a8f;font-style:italic}.page-header.svelte-11vj399{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-11vj399{display:inline-block}.logo.svelte-11vj399{height:2.5rem;width:auto;display:block}.page-header.svelte-11vj399 h1:where(.svelte-11vj399){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-11vj399{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.instructor-nav.svelte-11vj399 a:where(.svelte-11vj399){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-11vj399 a:where(.svelte-11vj399):hover{background:#f4f7fb}.page.svelte-11vj399{padding:2rem;max-width:60rem;margin:0 auto;font-family:system-ui,sans-serif}.breadcrumb.svelte-11vj399{margin:0 0 1rem;color:#666}.breadcrumb.svelte-11vj399 a:where(.svelte-11vj399){color:#035;text-decoration:none}.breadcrumb.svelte-11vj399 a:where(.svelte-11vj399):hover{text-decoration:underline}.muted.svelte-11vj399{color:#666}.small.svelte-11vj399{font-size:.85rem}.error.svelte-11vj399{color:#c00}.sort-header.svelte-11vj399{display:flex;gap:1rem;align-items:center;padding:.5rem 0;border-bottom:2px solid #eee;margin-top:.75rem}.sort-btn.svelte-11vj399{background:transparent;border:none;padding:.2rem .4rem;font:inherit;cursor:pointer;color:#555;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;border-radius:4px}.sort-btn.svelte-11vj399:hover{background:#f1f5f9;color:#14264a}.sort-btn.active.svelte-11vj399{color:#14264a;background:#eaf0f8}.sort-btn.sort-name.svelte-11vj399{flex:0 0 12rem;text-align:left}.sort-btn.sort-status.svelte-11vj399{width:7rem;text-align:left}.sort-btn.sort-hints.svelte-11vj399{width:4.5rem;text-align:left}.sort-btn.sort-submitted.svelte-11vj399{flex:1;text-align:left}.submissions.svelte-11vj399{list-style:none;padding:0;margin:0}.submission.svelte-11vj399{border-bottom:1px solid #eee}.row-toggle.svelte-11vj399{width:100%;background:#fff;border:none;padding:.75rem .4rem;display:flex;align-items:center;gap:1rem;cursor:pointer;font:inherit;text-align:left}.row-toggle.svelte-11vj399:hover{background:#fafafa}.col-name.svelte-11vj399{font-weight:600;flex:0 0 12rem}.col-status.svelte-11vj399{width:7rem;flex-shrink:0}.col-hints.svelte-11vj399{width:4.5rem;flex-shrink:0}.col-submitted.svelte-11vj399{flex:1;white-space:nowrap}.badge.svelte-11vj399{display:inline-block;padding:.125rem .5rem;border-radius:4px;font-size:.75rem;font-weight:700;text-transform:uppercase}.badge-pass.svelte-11vj399{background:#d4f4d4;color:#143}.badge-needs-work.svelte-11vj399{background:#fdd;color:#633}.badge-pending.svelte-11vj399{background:#fff4cc;color:#663}.badge-no-submission.svelte-11vj399{background:#eee;color:#555}.caret.svelte-11vj399{margin-left:auto;color:#666}.detail.svelte-11vj399{padding:.5rem 0 1rem}.detail.svelte-11vj399 h3:where(.svelte-11vj399){font-size:.9rem;margin:.5rem 0 .25rem;color:#555}pre.svelte-11vj399{background:#f7f7f7;padding:.75rem;border-radius:4px;overflow-x:auto}code.svelte-11vj399{font-family:ui-monospace,monospace;font-size:.85rem}.exercise-meta.svelte-11vj399{border-left:3px solid #aac;padding:0 0 .5rem 1rem;margin-bottom:1.5rem;background:#fafbfd}.exercise-meta.svelte-11vj399 h2:where(.svelte-11vj399){margin:.5rem 0 .75rem;font-size:1.25rem}.exercise-meta.svelte-11vj399 h3:where(.svelte-11vj399){font-size:.9rem;margin:.75rem 0 .25rem;color:#555}.question.svelte-11vj399{white-space:pre-wrap;background:#fff;border:1px solid #ddd}.reference.svelte-11vj399{background:#fff;border:1px solid #ddd}.meta-badge.svelte-11vj399{display:inline-block;padding:.125rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;vertical-align:middle;margin-left:.5rem;text-transform:uppercase;letter-spacing:.5px}.meta-code.svelte-11vj399{background:#eef;color:#336}.meta-git.svelte-11vj399{background:#fee;color:#633}.meta-discussion.svelte-11vj399{background:#efe;color:#363}.meta-draft.svelte-11vj399{background:#fff4cc;color:#663}.submissions-heading.svelte-11vj399{font-size:1rem;margin-top:1.5rem;color:#333}.review-link-row.svelte-11vj399{margin:0 0 1rem}.notify-row.svelte-11vj399{background:#f4f7fb;border:1px solid #d8e1ee;border-radius:6px;padding:.6rem .8rem;margin:0 0 1rem}.notify-label.svelte-11vj399{display:block;font-size:.85rem;color:#555;font-weight:600;margin-bottom:.4rem}.notify-controls.svelte-11vj399{display:flex;gap:.5rem;align-items:center}.notify-controls.svelte-11vj399 input:where(.svelte-11vj399){flex:1;padding:.4rem .6rem;font-size:.95rem;border:1px solid #ccc;border-radius:4px;font-family:inherit}.notify-controls.svelte-11vj399 button:where(.svelte-11vj399){padding:.4rem 1rem;background:#14264a;color:#fff;border:none;border-radius:4px;font-size:.9rem;font-weight:600;cursor:pointer;font-family:inherit}.notify-controls.svelte-11vj399 button:where(.svelte-11vj399):hover:not(:disabled){background:#1a3060}.notify-controls.svelte-11vj399 button:where(.svelte-11vj399):disabled{opacity:.5;cursor:not-allowed}.notify-error.svelte-11vj399{color:#c00;font-size:.85rem;margin-top:.4rem;display:inline-block}.notify-ok.svelte-11vj399{color:#157;font-size:.85rem;margin-top:.4rem;display:inline-block}.review-link.svelte-11vj399{display:inline-block;padding:.4rem .8rem;background:#f4f7fb;border:1px solid #cce;border-radius:4px;color:#035;text-decoration:none;font-weight:600}.review-link.svelte-11vj399:hover{background:#e8eef8}.ai-review-md.svelte-11vj399{font-family:system-ui,sans-serif;line-height:1.55;color:#1a1a1a}.ai-review-md.svelte-11vj399 p{margin:.5rem 0}.ai-review-md.svelte-11vj399 ul,.ai-review-md.svelte-11vj399 ol{margin:.5rem 0;padding-left:1.5rem}.ai-review-md.svelte-11vj399 li{margin:.2rem 0}.ai-review-md.svelte-11vj399 code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;background:#eef1f4;padding:.05rem .3rem;border-radius:3px;font-size:.92em}.ai-review-md.svelte-11vj399 pre{background:#f5f7f9;border:1px solid #e0e4e9;border-radius:4px;padding:.75rem;overflow-x:auto;margin:.5rem 0}.ai-review-md.svelte-11vj399 pre code{background:transparent;padding:0;font-size:.9rem}.ai-review-md.svelte-11vj399 .inline-code-view{margin:.5rem 0;background:#fafbfc;border:1px solid #d0d7de;border-radius:6px;overflow:hidden}.ai-review-md.svelte-11vj399 .inline-code-view .cm-editor{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.95rem;line-height:1.5}.ai-review-md.svelte-11vj399 .inline-code-view .cm-scroller{padding:.75rem .5rem .75rem 0}.ai-review-md.svelte-11vj399 .inline-code-view .cm-content{color:#1a1a1a;caret-color:transparent}.ai-review-md.svelte-11vj399 .inline-code-view .cm-gutters{background:#f0f3f6;color:#8a94a3;border-right:1px solid #e0e4e9}.ai-review-md.svelte-11vj399 .inline-code-view .cm-activeLine,.ai-review-md.svelte-11vj399 .inline-code-view .cm-activeLineGutter{background:transparent}.page-header.svelte-kn4yw0{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-kn4yw0{display:inline-block}.logo.svelte-kn4yw0{height:2.5rem;width:auto;display:block}.page-header.svelte-kn4yw0 h1:where(.svelte-kn4yw0){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-kn4yw0{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.instructor-nav.svelte-kn4yw0 a:where(.svelte-kn4yw0){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-kn4yw0 a:where(.svelte-kn4yw0):hover{background:#f4f7fb}.page.svelte-kn4yw0{padding:2rem;max-width:72rem;margin:0 auto;font-family:system-ui,sans-serif}.breadcrumb.svelte-kn4yw0{margin:0 0 1rem;color:#666;font-size:.9rem}.breadcrumb.svelte-kn4yw0 a:where(.svelte-kn4yw0){color:#035;text-decoration:none}.breadcrumb.svelte-kn4yw0 a:where(.svelte-kn4yw0):hover{text-decoration:underline}.muted.svelte-kn4yw0{color:#666}.small.svelte-kn4yw0{font-size:.85rem}.error.svelte-kn4yw0{color:#c00}.exercise-title.svelte-kn4yw0{font-size:1.5rem;margin:.5rem 0 1.5rem}.controls.svelte-kn4yw0{display:flex;gap:.75rem;align-items:center;margin-bottom:1.5rem;padding:.5rem 0;border-bottom:1px solid #eee}.controls.svelte-kn4yw0 button:where(.svelte-kn4yw0){padding:.5rem 1rem;font-size:1rem;cursor:pointer;border:1px solid #ccc;background:#fff;border-radius:4px}.controls.svelte-kn4yw0 button:where(.svelte-kn4yw0):disabled{opacity:.4;cursor:not-allowed}.controls.svelte-kn4yw0 button:where(.svelte-kn4yw0):hover:not(:disabled){background:#fafafa}.progress.svelte-kn4yw0{font-weight:600}.anonymize-toggle.svelte-kn4yw0{background:#f4f7fb!important}.hint.svelte-kn4yw0{font-size:.85rem;margin-left:auto}.student-row.svelte-kn4yw0{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.student-name.svelte-kn4yw0{margin:0;font-size:1.75rem}.submitted-when.svelte-kn4yw0{white-space:nowrap;font-size:1rem}.badge.svelte-kn4yw0{display:inline-block;padding:.25rem .75rem;border-radius:4px;font-size:.85rem;font-weight:700;text-transform:uppercase}.badge-pass.svelte-kn4yw0{background:#d4f4d4;color:#143}.badge-needs-work.svelte-kn4yw0{background:#fdd;color:#633}.badge-pending.svelte-kn4yw0{background:#fff4cc;color:#663}.badge-no-submission.svelte-kn4yw0{background:#eee;color:#555}.code-section.svelte-kn4yw0 h4:where(.svelte-kn4yw0),.review-section.svelte-kn4yw0 h4:where(.svelte-kn4yw0){font-size:.9rem;margin:.5rem 0 .25rem;color:#555;text-transform:uppercase;letter-spacing:.5px}.review-md.svelte-kn4yw0{background:#f7f7f7;padding:1rem 1.25rem;border-radius:4px;font-family:system-ui,sans-serif;line-height:1.55;color:#1a1a1a;word-wrap:break-word;overflow-wrap:break-word}.review-md.svelte-kn4yw0 p{margin:.5rem 0}.review-md.svelte-kn4yw0 ul,.review-md.svelte-kn4yw0 ol{margin:.5rem 0;padding-left:1.5rem}.review-md.svelte-kn4yw0 li{margin:.2rem 0}.review-md.svelte-kn4yw0 code{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;background:#eef1f4;padding:.05rem .3rem;border-radius:3px;font-size:.92em}.review-md.svelte-kn4yw0 pre{background:#eef1f4;border:1px solid #d0d7de;border-radius:4px;padding:.75rem;overflow-x:auto;margin:.5rem 0}.review-md.svelte-kn4yw0 pre code{background:transparent;padding:0;font-size:.9rem}.review-md.svelte-kn4yw0 .inline-code-view{margin:.5rem 0;background:#fafbfc;border:1px solid #d0d7de;border-radius:6px;overflow:hidden}.review-md.svelte-kn4yw0 .inline-code-view .cm-editor{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:1rem;line-height:1.5}.review-md.svelte-kn4yw0 .inline-code-view .cm-scroller{padding:.75rem .5rem .75rem 0}.review-md.svelte-kn4yw0 .inline-code-view .cm-content{color:#1a1a1a;caret-color:transparent}.review-md.svelte-kn4yw0 .inline-code-view .cm-gutters{background:#f0f3f6;color:#8a94a3;border-right:1px solid #e0e4e9}.review-md.svelte-kn4yw0 .inline-code-view .cm-activeLine,.review-md.svelte-kn4yw0 .inline-code-view .cm-activeLineGutter{background:transparent}.filter-chips.svelte-kn4yw0{display:flex;gap:.5rem;flex-wrap:wrap;margin:0 0 1rem}.chip.svelte-kn4yw0{padding:.4rem .85rem;font-size:.95rem;background:#fff;border:1px solid #ccc;border-radius:999px;cursor:pointer;color:#444;font-family:inherit;transition:background .1s,border-color .1s}.chip.svelte-kn4yw0:hover{background:#f6f8fa}.chip.active.svelte-kn4yw0{background:#14264a;color:#fff;border-color:#14264a}.chip-needs-work.active.svelte-kn4yw0{background:#ad3e3e;border-color:#ad3e3e}.chip-pass.active.svelte-kn4yw0{background:#2c7a4b;border-color:#2c7a4b}.chip-pending.active.svelte-kn4yw0{background:#8a6d1a;border-color:#8a6d1a}.page-header.svelte-1ggl8di{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center;gap:1.5rem}.logo-link.svelte-1ggl8di{display:inline-block}.logo.svelte-1ggl8di{height:2.5rem;width:auto;display:block}.page-header.svelte-1ggl8di h1:where(.svelte-1ggl8di){font-size:1.15rem;margin:0;color:#333}.header-right.svelte-1ggl8di{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.instructor-nav.svelte-1ggl8di a:where(.svelte-1ggl8di){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-1ggl8di a:where(.svelte-1ggl8di):hover{background:#f4f7fb}.page.svelte-1ggl8di{padding:2rem;max-width:64rem;margin:0 auto;font-family:system-ui,sans-serif}.muted.svelte-1ggl8di{color:#666}.error.svelte-1ggl8di{color:#c00}.success.svelte-1ggl8di{color:#157;font-weight:600}.success.svelte-1ggl8di a:where(.svelte-1ggl8di){color:#035;margin-left:.5rem}.meta.svelte-1ggl8di{margin:0 0 1.5rem;color:#555}.meta.svelte-1ggl8di code:where(.svelte-1ggl8di){font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;background:#f4f6f8;padding:.1rem .35rem;border-radius:3px}.meta-tag.svelte-1ggl8di{margin-left:.5rem;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;background:#d4ecf7;color:#1a4d63}.meta-tag.draft.svelte-1ggl8di{background:#fff4cc;color:#663}form.svelte-1ggl8di label:where(.svelte-1ggl8di){display:block;margin-bottom:1rem;font-weight:600;color:#333}form.svelte-1ggl8di input[type=text]:where(.svelte-1ggl8di),form.svelte-1ggl8di textarea:where(.svelte-1ggl8di){display:block;width:100%;margin-top:.3rem;padding:.5rem .6rem;font-size:.95rem;font-family:inherit;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}form.svelte-1ggl8di textarea:where(.svelte-1ggl8di){font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9rem;line-height:1.5;resize:vertical}button[type=submit].svelte-1ggl8di{padding:.6rem 1.2rem;font-size:1rem;background:#14264a;color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:600}button[type=submit].svelte-1ggl8di:hover:not(:disabled){background:#1a3060}button[type=submit].svelte-1ggl8di:disabled{opacity:.5;cursor:not-allowed}.page-header.svelte-6tr2dc{padding:1rem 2rem;border-bottom:1px solid #eee;background:#fff;display:flex;align-items:center}.logo-link.svelte-6tr2dc{display:inline-block}.logo.svelte-6tr2dc{height:2.5rem;width:auto;display:block}.instructor-nav.svelte-6tr2dc{margin-left:auto}.instructor-nav.svelte-6tr2dc a:where(.svelte-6tr2dc){color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border:1px solid #cce;border-radius:4px}.instructor-nav.svelte-6tr2dc a:where(.svelte-6tr2dc):hover{background:#f4f7fb}.landing.svelte-6tr2dc{max-width:42rem;margin:0 auto;padding:3rem 1.5rem;font-family:system-ui,sans-serif;color:#222}.hero.svelte-6tr2dc h1:where(.svelte-6tr2dc){font-size:1.75rem;margin:0 0 .75rem;color:#035}.tagline.svelte-6tr2dc{font-size:1.05rem;line-height:1.5;color:#444;margin:0 0 1rem}.back-link.svelte-6tr2dc{margin:0 0 2.5rem;color:#555}.back-link.svelte-6tr2dc a:where(.svelte-6tr2dc){color:#035;font-weight:600;text-decoration:none}.back-link.svelte-6tr2dc a:where(.svelte-6tr2dc):hover{text-decoration:underline}.join.svelte-6tr2dc{border-top:1px solid #eee;padding-top:2rem}.join.svelte-6tr2dc h2:where(.svelte-6tr2dc){font-size:1.25rem;margin:0 0 .5rem;color:#035}.join-blurb.svelte-6tr2dc{color:#555;margin:0 0 1rem}.slug-label.svelte-6tr2dc{display:block;font-size:.85rem;color:#555;margin-bottom:.35rem}.slug-row.svelte-6tr2dc{display:flex;gap:.5rem;align-items:stretch;flex-wrap:wrap}.slug-row.svelte-6tr2dc input:where(.svelte-6tr2dc){flex:1 1 16rem;min-width:12rem;padding:.6rem .75rem;font-size:1rem;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border:1px solid #ccc;border-radius:4px}.slug-row.svelte-6tr2dc input:where(.svelte-6tr2dc):focus{outline:none;border-color:#035;box-shadow:0 0 0 2px #cce}.slug-row.svelte-6tr2dc button:where(.svelte-6tr2dc){padding:.6rem 1.25rem;font-size:1rem;font-weight:600;color:#fff;background:#035;border:none;border-radius:4px;cursor:pointer}.slug-row.svelte-6tr2dc button:where(.svelte-6tr2dc):disabled{background:#aab;cursor:not-allowed}.slug-row.svelte-6tr2dc button:where(.svelte-6tr2dc):not(:disabled):hover{background:#047}.error.svelte-6tr2dc{margin:.75rem 0 0;color:#c00;font-size:.95rem}.demo-inline.svelte-6tr2dc{color:#035;font-weight:600;text-decoration:underline}.demo.svelte-6tr2dc{margin-top:2.5rem;padding:1.5rem;background:#f4f7fb;border:1px solid #dde6f0;border-radius:6px}.demo.svelte-6tr2dc h2:where(.svelte-6tr2dc){font-size:1.15rem;margin:0 0 .5rem;color:#035}.demo-blurb.svelte-6tr2dc{color:#555;margin:0 0 1rem}.demo-cta.svelte-6tr2dc{display:inline-block;padding:.55rem 1.1rem;background:#fff;border:1px solid #035;border-radius:4px;color:#035;font-weight:600;text-decoration:none}.demo-cta.svelte-6tr2dc:hover{background:#035;color:#fff}
