.editor.svelte-1ctqrjb{border:1px solid #ddd;border-radius:4px;min-height:200px;font-family:ui-monospace,monospace}.cm-editor{height:100%}.cm-py-hover-doc{max-width:640px;max-height:320px;padding:.5rem .7rem;font-family:ui-sans-serif,system-ui,sans-serif;font-size:.85rem;line-height:1.4;color:#222;background:#fdfdf5;border:1px solid #d8d4b2;border-radius:4px;box-shadow:0 2px 6px #00000014;overflow:hidden;display:flex;flex-direction:column}.cm-py-hover-doc-head{font-family:ui-monospace,monospace;font-weight:600;color:#1a4d63;padding-bottom:.3rem;margin-bottom:.3rem;border-bottom:1px solid #ecebd8;white-space:pre-wrap;word-break:break-word}.cm-py-hover-doc-body{margin:0;padding:0;font-family:ui-monospace,monospace;font-size:.8rem;white-space:pre-wrap;word-break:break-word;overflow-y:auto}.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}.code-under-test-banner.svelte-a57psi{background:#fff3cd;border-bottom:1px solid #fcd34d;padding:.45rem .75rem;color:#78350f;font-size:.85rem;line-height:1.35}.code-under-test-banner.svelte-a57psi code:where(.svelte-a57psi){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#92400e14;border-radius:3px;padding:0 .25rem}.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}.pytest-panel.svelte-1pvg12f{font-family:system-ui,sans-serif;border:1px solid #ddd;border-radius:6px;background:#fff;overflow:hidden}.pytest-panel.empty.svelte-1pvg12f,.pytest-panel.running.svelte-1pvg12f{padding:1.5rem;color:#555;text-align:center}.summary.svelte-1pvg12f{display:flex;justify-content:space-between;align-items:center;padding:.6rem 1rem;background:#f6f7fa;border-bottom:1px solid #e2e5ec;font-size:.92rem}.counts.svelte-1pvg12f{font-weight:600;color:#222}.coverage-chip.svelte-1pvg12f{padding:.15rem .6rem;border-radius:999px;font-size:.8rem;background:#eef;color:#036;border:1px solid #cce}.coverage-chip.below-threshold.svelte-1pvg12f{background:#fff3cd;color:#92400e;border-color:#fcd34d}.coverage-chip.at-threshold.svelte-1pvg12f{background:#d1fae5;color:#065f46;border-color:#6ee7b7}.test-rows.svelte-1pvg12f{list-style:none;margin:0;padding:0}.test-row.svelte-1pvg12f{padding:.5rem 1rem;border-bottom:1px solid #f1f2f6;display:grid;grid-template-columns:1.5rem 1fr;gap:.5rem}.test-row.svelte-1pvg12f .icon:where(.svelte-1pvg12f){font-weight:700}.test-row.passed.svelte-1pvg12f .icon:where(.svelte-1pvg12f){color:#10b981}.test-row.failed.svelte-1pvg12f .icon:where(.svelte-1pvg12f),.test-row.error.svelte-1pvg12f .icon:where(.svelte-1pvg12f){color:#dc2626}.test-row.failed.svelte-1pvg12f{background:#fff5f5}.test-row.svelte-1pvg12f .name:where(.svelte-1pvg12f){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#222}.test-row.svelte-1pvg12f .message:where(.svelte-1pvg12f){grid-column:2;margin:.5rem 0 0;padding:.5rem .75rem;background:#fff;border:1px solid #fcc;border-radius:4px;font-size:.85rem;white-space:pre-wrap;color:#7c2d12}.jump-to-line.svelte-1pvg12f{grid-column:2;margin-top:.35rem;background:none;border:1px solid #ddd;border-radius:4px;color:#036;cursor:pointer;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.8rem;padding:.15rem .5rem;width:fit-content}.jump-to-line.svelte-1pvg12f:hover{background:#f4f7fb}.uncovered.svelte-1pvg12f{padding:.6rem 1rem;font-size:.85rem;background:#fffbeb;border-top:1px solid #fcd34d;color:#78350f}.muted.svelte-12z8kft{color:#888;font-style:italic;padding:.5rem}.sql-error.svelte-12z8kft{color:#b91c1c;background:#fef2f2;border:1px solid #fca5a5;border-radius:4px;padding:.6rem .9rem;margin:.5rem 0;font-family:ui-monospace,monospace;white-space:pre-wrap}.result-wrap.svelte-12z8kft{overflow-x:auto}table.svelte-12z8kft{border-collapse:collapse;font-family:ui-monospace,monospace;font-size:.85rem}th.svelte-12z8kft,td.svelte-12z8kft{border:1px solid #d4d4d4;padding:.3rem .6rem;text-align:left}th.svelte-12z8kft{background:#f5f5f5;font-weight:600}tbody.svelte-12z8kft tr:where(.svelte-12z8kft):nth-child(2n) td:where(.svelte-12z8kft){background:#fafafa}.row-cap-footer.svelte-12z8kft{color:#6b7280;font-size:.85rem;margin:.4rem 0 0}.result-stats.svelte-12z8kft{color:#6b7280;font-size:.8rem;margin:.2rem 0 0}.sql-mode.svelte-1fmdiwv{display:flex;flex-direction:column;gap:.5rem}.editor-wrap.svelte-1fmdiwv{border:1px solid #d4d4d4;border-radius:4px;overflow:hidden}.pane-header.svelte-1fmdiwv{background:#00003c;color:#fff;padding:.4rem .75rem;font-size:.85rem;display:flex;align-items:baseline;justify-content:space-between}.pane-label.svelte-1fmdiwv{font-weight:700;letter-spacing:.05em}.pane-hint.svelte-1fmdiwv{color:#fbbf24;font-size:.75rem}.run-row.svelte-1fmdiwv{display:flex;align-items:center;gap:.75rem}.run-btn.svelte-1fmdiwv{background:#fbbf24;color:#00003c;border:none;border-radius:4px;padding:.5rem 1.1rem;font-size:.95rem;font-weight:700;cursor:pointer;font-family:inherit}.run-btn.svelte-1fmdiwv:hover:not(:disabled){background:#f59e0b}.run-btn.svelte-1fmdiwv:disabled{opacity:.5;cursor:not-allowed;background:#d4d4d4;color:#555}.reset-db-btn.svelte-1fmdiwv{background:#fff;color:#333;border:1px solid #d4d4d4;border-radius:4px;padding:.45rem .9rem;font-size:.9rem;cursor:pointer;font-family:inherit}.reset-db-btn.svelte-1fmdiwv:hover:not(:disabled){background:#f0f4fa}.reset-db-btn.svelte-1fmdiwv:disabled{opacity:.5;cursor:not-allowed}.reset-toast.svelte-1fmdiwv{color:#064e3b;font-size:.85rem;font-style:italic}.runtime-error.svelte-1fmdiwv{background:#fef2f2;border:1px solid #fca5a5;border-radius:4px;padding:.6rem .9rem;color:#7f1d1d;font-size:.9rem}.result-panel.svelte-1fmdiwv{background:#fafafa;border:1px solid #e5e5e5;border-radius:4px;padding:.5rem;min-height:4rem}.mypy-mode.svelte-u70x4y{display:flex;flex-direction:column;gap:.5rem}.editor-wrap.svelte-u70x4y{border:1px solid #d4d4d4;border-radius:4px;overflow:hidden}.pane-header.svelte-u70x4y{background:#00003c;color:#fff;padding:.4rem .75rem;font-size:.85rem;display:flex;align-items:baseline;justify-content:space-between}.pane-label.svelte-u70x4y{font-weight:700;letter-spacing:.05em}.pane-hint.svelte-u70x4y{color:#fbbf24;font-size:.75rem}.run-row.svelte-u70x4y{display:flex;align-items:center;gap:.75rem}.run-btn.svelte-u70x4y{background:#fbbf24;color:#00003c;border:none;border-radius:4px;padding:.5rem 1.1rem;font-size:.95rem;font-weight:700;cursor:pointer;font-family:inherit}.run-btn.svelte-u70x4y:hover:not(:disabled){background:#f59e0b}.run-btn.svelte-u70x4y:disabled{opacity:.5;cursor:not-allowed;background:#d4d4d4;color:#555}.mypy-badge.svelte-u70x4y{display:inline-block;padding:.2rem .6rem;border-radius:999px;font-size:.85rem;font-weight:700;border:1px solid transparent}.mypy-badge--ok.svelte-u70x4y{background:#d4edda;color:#2c5e1a;border-color:#b9d3a9}.mypy-badge--err.svelte-u70x4y{background:#fde2e2;color:#7f1d1d;border-color:#fca5a5}.runtime-error.svelte-u70x4y{background:#fef2f2;border:1px solid #fca5a5;border-radius:4px;padding:.6rem .9rem;color:#7f1d1d;font-size:.9rem}.output-panel.svelte-u70x4y{background:#1f2937;color:#f3f4f6;border-radius:4px;padding:.75rem 1rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem;min-height:4rem;white-space:pre-wrap;word-break:break-word;margin:0}.tutor.svelte-1vsh67e{display:flex;flex-direction:column;flex:1 1 0;min-height:0;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}.sender-label.svelte-1vsh67e{font-size:11px;font-weight:600;letter-spacing:.5px;text-transform:uppercase;opacity:.65;margin-bottom:6px;padding:0 4px}.sender-label-user.svelte-1vsh67e{text-align:right}.sender-label-assistant.svelte-1vsh67e{text-align:left}.pair-chat.svelte-1byfrua{display:flex;flex-direction:column;border:1px solid #c7d2e6;background:#eef2fb;border-radius:4px;min-height:0;height:100%}.pair-chat-header.svelte-1byfrua{padding:.4rem .75rem;background:#14264a;color:#cfe0ff;border-radius:4px 4px 0 0;display:flex;align-items:baseline;gap:.75rem}.pair-chat-label.svelte-1byfrua{font-size:.7rem;font-weight:700;letter-spacing:.6px}.pair-chat-hint.svelte-1byfrua{font-size:.72rem;opacity:.7;font-style:italic}.pair-chat-list.svelte-1byfrua{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.35rem}.pair-chat-empty.svelte-1byfrua{color:#6b7280;font-size:.85rem;font-style:italic;margin:auto;text-align:center}.pair-chat-msg.svelte-1byfrua{display:flex;flex-direction:column;align-items:flex-start;max-width:85%}.pair-chat-msg.mine.svelte-1byfrua{align-self:flex-end;align-items:flex-end}.pair-chat-sender.svelte-1byfrua{font-size:.7rem;font-weight:600;color:#14264a;opacity:.7;padding:0 4px;margin-bottom:2px}.pair-chat-bubble.svelte-1byfrua{background:#fff;border:1px solid #cbd5e6;padding:.4rem .65rem;border-radius:8px;font-size:.9rem;line-height:1.3;white-space:pre-wrap;word-wrap:break-word}.pair-chat-msg.mine.svelte-1byfrua .pair-chat-bubble:where(.svelte-1byfrua){background:#14264a;color:#fff;border-color:#14264a}.pair-chat-input-row.svelte-1byfrua{display:flex;gap:.4rem;padding:.4rem;border-top:1px solid #c7d2e6}.pair-chat-input.svelte-1byfrua{flex:1;resize:none;border:1px solid #c7d2e6;border-radius:4px;padding:.4rem .5rem;font:inherit;font-size:.9rem}.pair-chat-send.svelte-1byfrua{background:#14264a;color:#fff;border:none;border-radius:4px;padding:0 1rem;font-weight:600;cursor:pointer}.pair-chat-send.svelte-1byfrua:disabled{background:#9ca3af;cursor:not-allowed}.ai-lang-hint.svelte-tee2c3{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:#f4f8fd;border-bottom:1px solid #cdd9ea;font-size:.9rem;color:#035;line-height:1.35}.flag.svelte-tee2c3{font-size:1.3rem;line-height:1;flex-shrink:0}.msg.svelte-tee2c3{flex:1}.dismiss.svelte-tee2c3{flex-shrink:0;background:transparent;border:none;cursor:pointer;color:#557;font-size:1.3rem;line-height:1;padding:.1rem .45rem;border-radius:3px}.dismiss.svelte-tee2c3:hover{background:#dde6f0;color:#035}.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}.pair-chip.svelte-1u1l6kd{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#ffffffe6;flex-wrap:wrap}.pair-chip-label.svelte-1u1l6kd{opacity:.75;font-weight:400}.pair-member.svelte-1u1l6kd{display:inline-flex;align-items:center;gap:4px}.presence-dot.svelte-1u1l6kd{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0}.member-name.svelte-1u1l6kd{font-weight:500}.lock-indicator.svelte-1u1l6kd{font-size:11px;padding:1px 6px;border-radius:3px;font-style:italic}.run-lock.svelte-1u1l6kd{background:#fbbf2433;color:#fbbf24}.ai-lock.svelte-1u1l6kd{background:#818cf833;color:#818cf8}.proposal-backdrop.svelte-98zcak{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:10001}.proposal-modal.svelte-98zcak{background:#fff;border-radius:8px;padding:24px 28px;max-width:420px;width:90%;box-shadow:0 8px 32px #0000002e}.modal-title.svelte-98zcak{margin:0 0 12px;font-size:17px;font-weight:700;color:#00003c}.modal-body.svelte-98zcak{margin:0 0 20px;font-size:14px;line-height:1.5;color:#1a1a1a}.modal-body.svelte-98zcak strong:where(.svelte-98zcak){color:#00003c}.modal-hint.svelte-98zcak{display:block;margin-top:6px;font-size:12px;color:#666}.modal-actions.svelte-98zcak{display:flex;gap:10px;justify-content:flex-end}.btn-cancel.svelte-98zcak{background:#fff;border:1px solid #ccc;color:#444;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-family:inherit}.btn-cancel.svelte-98zcak:hover{background:#f5f5f5}.btn-send.svelte-98zcak{background:#00003c;border:none;color:#fff;padding:8px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-family:inherit;font-weight:600}.btn-send.svelte-98zcak:hover{background:#005}.waiting-indicator.svelte-98zcak{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#1e3a5f;color:#bfdbfe;font-size:13px;padding:6px 16px}.waiting-text.svelte-98zcak{display:flex;align-items:center;gap:6px}.countdown.svelte-98zcak{font-variant-numeric:tabular-nums;opacity:.8}.vote-list.svelte-98zcak{list-style:none;margin:0;padding:0;display:flex;gap:10px;flex-wrap:wrap}.vote-item.svelte-98zcak{font-size:12px}.vote-accepted.svelte-98zcak{color:#86efac}.vote-declined.svelte-98zcak{color:#fca5a5}.vote-pending.svelte-98zcak{opacity:.75}.btn-withdraw.svelte-98zcak{background:#ffffff1f;border:1px solid rgba(255,255,255,.3);color:#bfdbfe;padding:3px 12px;border-radius:4px;cursor:pointer;font-size:12px;font-family:inherit;margin-left:auto}.btn-withdraw.svelte-98zcak:hover{background:#fff3}.nav-banner.svelte-10iks4{background:#1e40af;color:#bfdbfe;font-size:13px;padding:7px 16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.banner-text.svelte-10iks4{flex-shrink:0}.proposer-name.svelte-10iks4,.target-title.svelte-10iks4{color:#fff}.other-votes.svelte-10iks4{display:flex;gap:8px;flex-wrap:wrap;font-size:12px}.vote-chip.svelte-10iks4{opacity:.85}.vote-accepted.svelte-10iks4{color:#86efac;opacity:1}.vote-declined.svelte-10iks4{color:#fca5a5;opacity:1}.banner-actions.svelte-10iks4{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.btn-accept.svelte-10iks4{background:#22c55e;border:none;color:#fff;padding:4px 14px;border-radius:4px;cursor:pointer;font-size:12px;font-family:inherit;font-weight:600}.btn-accept.svelte-10iks4:hover{background:#16a34a}.btn-decline.svelte-10iks4{background:#ffffff1f;border:1px solid rgba(255,255,255,.3);color:#bfdbfe;padding:4px 14px;border-radius:4px;cursor:pointer;font-size:12px;font-family:inherit}.btn-decline.svelte-10iks4:hover{background:#fff3}.auto-decline-note.svelte-10iks4{font-size:11px;opacity:.75;white-space:nowrap}.countdown.svelte-10iks4{font-variant-numeric:tabular-nums}.modal-backdrop.svelte-191oqln{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-191oqln{background:#fff;border-radius:8px;padding:2rem;max-width:560px;width:100%;font-family:system-ui,sans-serif;display:flex;flex-direction:column;gap:.75rem}h2.svelte-191oqln{margin:0}form.svelte-191oqln{display:flex;flex-direction:column;gap:.75rem}label.svelte-191oqln{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}textarea.svelte-191oqln{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border:1px solid #ccc;border-radius:4px;padding:.5rem;resize:vertical;min-height:8rem}.counter.svelte-191oqln{color:#888;font-size:.85em;margin:0;text-align:right}.error.svelte-191oqln{color:#b00020;margin:0}.button-row.svelte-191oqln{display:flex;gap:.75rem;justify-content:flex-end}.button-row.svelte-191oqln button:where(.svelte-191oqln){padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font:inherit;background:#fff}.button-row.svelte-191oqln button.primary:where(.svelte-191oqln){background:#14264a;color:#fff;border-color:#14264a}.button-row.svelte-191oqln button.primary:where(.svelte-191oqln):hover:not(:disabled){background:#1a3060}.button-row.svelte-191oqln button:where(.svelte-191oqln):disabled{opacity:.5;cursor:not-allowed}.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)}}.copy-button.svelte-1kw4msz{display:inline-flex;align-items:center;gap:.3em;padding:.2em .55em;font-size:.85em;line-height:1.2;border:1px solid #c8c8c8;border-radius:4px;background:#f8f8f8;color:#333;cursor:pointer}.copy-button.svelte-1kw4msz:hover{background:#eee}.copy-button.copied.svelte-1kw4msz{background:#e0f3e0;border-color:#6aaf6a;color:#245524}.copy-button.failed.svelte-1kw4msz{background:#fbe7e7;border-color:#c97070;color:#8a2929}.icon.svelte-1kw4msz{font-size:.95em}.pair-git-file-editor.svelte-v4d8mm{display:flex;flex-direction:column;border:1px solid #e5e7eb;border-radius:4px;background:#fff;min-height:200px;max-height:400px;overflow:hidden}.editor-header.svelte-v4d8mm{padding:6px 10px;background:#f3f4f6;border-bottom:1px solid #e5e7eb;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;color:#374151}.path.svelte-v4d8mm{font-weight:600}.editor-container.svelte-v4d8mm{flex:1;min-height:0;overflow:auto}.editor-container.svelte-v4d8mm .cm-editor{height:100%}.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}.terminal-header.svelte-mpyybe{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:#1e1e1e;color:#d4d4d4;border-radius:4px 4px 0 0;font-size:12px}.terminal-label.svelte-mpyybe{font-weight:700;letter-spacing:1px}.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}.git-pair-observer.svelte-8q64tt{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-8q64tt h2:where(.svelte-8q64tt){margin:0 0 8px;font-size:18px}.markdown.svelte-8q64tt{font-size:14px;color:#374151}.observer-banner.svelte-8q64tt{padding:8px 12px;background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:4px;font-size:13px}.workspace.svelte-8q64tt{display:grid;grid-template-columns:1.1fr 1.2fr 1fr;gap:12px}.bottom-row.svelte-8q64tt{display:grid;grid-template-columns:1fr;gap:12px;height:55vh;min-height:280px;max-height:600px}.terminal-pane.svelte-8q64tt{min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.terminal-header.svelte-8q64tt{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;background:#1e1e1e;color:#d4d4d4;border-radius:4px 4px 0 0;font-size:12px}.terminal-label.svelte-8q64tt{font-weight:700;letter-spacing:1px}.three-trees-pane.svelte-8q64tt,.student-dag-pane.svelte-8q64tt,.target-dag-pane.svelte-8q64tt{border:1px solid #e5e7eb;border-radius:4px;padding:10px;background:#f9fafb}h3.svelte-8q64tt{margin:0 0 8px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:#6b7280}.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}.pair-header-button.svelte-148ev8c{background:transparent;border:1px solid rgba(255,255,255,.4);color:#fff;font-size:11px;padding:3px 8px;border-radius:4px;cursor:pointer;font-family:inherit;line-height:normal}.pair-header-button.svelte-148ev8c:hover:not(:disabled){background:#ffffff14}.pair-header-button.svelte-148ev8c:disabled{opacity:.4;cursor:not-allowed}.pair-report-btn.svelte-148ev8c{border-color:#fca5a580;color:#fca5a5}.pair-solo-btn.svelte-148ev8c{border-color:#f6c23e80;color:#f6c23e}.pair-rejoin-btn.svelte-148ev8c{border-color:#d4f7d499;color:#d4f7d4;background:#d4f7d41a}.solo-banner.svelte-148ev8c{margin:0 0 .4rem;padding:.4rem .7rem;background:#fff8e1;border:1px solid #f0c040;border-radius:4px;color:#7a5c00;font-size:.85rem}.solo-banner.svelte-148ev8c strong:where(.svelte-148ev8c){color:#5a4300}.solo-banner.svelte-148ev8c em:where(.svelte-148ev8c){font-style:italic}.pair-report-btn.svelte-148ev8c:hover:not(:disabled){background:#fca5a514}.pair-invite-btn.svelte-148ev8c{border-color:#a7f3d080;color:#a7f3d0}.pair-invite-btn.svelte-148ev8c:hover:not(:disabled){background:#a7f3d014}.translate-btn.svelte-148ev8c{background:transparent;border:1px solid #d4d4d4;color:#333;font-size:.85rem;padding:.2rem .6rem;border-radius:4px;cursor:pointer;font-family:inherit}.translate-btn.svelte-148ev8c:hover:not(:disabled){background:#f0f4fa}.translate-btn.svelte-148ev8c:disabled{opacity:.5;cursor:not-allowed}.translate-error.svelte-148ev8c{color:#b91c1c;font-size:.85rem;margin:.25rem 0}.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}.pair-chat-wrap.svelte-148ev8c{flex:0 0 auto;max-height:35%;min-height:160px;display:flex;flex-direction:column}.question.svelte-148ev8c{padding:8px 12px;background:#eef2f7;border-left:3px solid #fbbf24;border-radius:4px}.question-header.svelte-148ev8c{display:flex;align-items:center;justify-content:space-between;gap:8px}.question.svelte-148ev8c h2:where(.svelte-148ev8c){margin:0 0 4px;font-size:16px}.pane-labels.svelte-148ev8c{display:inline-flex;gap:8px;align-items:baseline}.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}.pair-blank-slate-banner.svelte-148ev8c{background:#1e40af;color:#bfdbfe;font-size:13px;padding:6px 16px;display:flex;align-items:center;gap:12px}.pair-blank-slate-banner.svelte-148ev8c button:where(.svelte-148ev8c){background:#ffffff26;border:none;color:#bfdbfe;padding:2px 10px;border-radius:4px;cursor:pointer;font-size:12px}.auto-redeem-error.svelte-148ev8c{background:#fef2f2;border:1px solid #fca5a5;color:#7f1d1d;font-size:13px;padding:8px 16px;display:flex;align-items:center;gap:12px}.auto-redeem-error.svelte-148ev8c .dismiss-btn:where(.svelte-148ev8c){background:none;border:none;color:#7f1d1d;cursor:pointer;font-size:16px;padding:0 4px;margin-left:auto;line-height:1}.auto-redeem-error.svelte-148ev8c .dismiss-btn:where(.svelte-148ev8c):hover{color:#450a0a}.run-wrap.svelte-148ev8c{display:inline-flex;flex-direction:column;align-items:flex-start;gap:2px}.run-lock-subtitle.svelte-148ev8c{font-size:11px;color:#92400e;font-style:italic}.ai-lock-notice.svelte-148ev8c{background:#818cf826;color:#4338ca;font-size:12px;font-style:italic;padding:4px 8px;border-radius:4px;border:1px solid rgba(129,140,248,.3)}.ai-lock-error.svelte-148ev8c{background:#ef44441a;color:#b91c1c;border-color:#ef44444d;font-style:normal}.nav-cancelled-toast.svelte-148ev8c{position:fixed;top:1rem;right:1rem;z-index:10002;background:#92400e;color:#fff;padding:.6rem 1rem;border-radius:6px;box-shadow:0 2px 8px #00000026;max-width:26rem;font-size:13px}.nav-rejected-toast.svelte-148ev8c{position:fixed;top:1rem;right:1rem;z-index:10002;background:#b91c1c;color:#fff;padding:.6rem 1rem;border-radius:6px;box-shadow:0 2px 8px #00000026;max-width:26rem;font-size:13px}.pair-git-banner.svelte-148ev8c{margin:8px 16px 0;padding:8px 12px;background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:4px;font-size:13px}.pick-exercise-backdrop.svelte-148ev8c{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:10001}.pick-exercise-modal.svelte-148ev8c{background:#fff;border-radius:8px;padding:20px 24px;max-width:440px;width:90%;max-height:70vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0000002e}.pick-exercise-modal.svelte-148ev8c .modal-title:where(.svelte-148ev8c){margin:0 0 12px;font-size:16px;font-weight:700;color:#00003c}.pick-loading.svelte-148ev8c{color:#666;font-size:13px;margin:0 0 12px}.pick-list.svelte-148ev8c{list-style:none;margin:0 0 12px;padding:0;overflow-y:auto;flex:1}.pick-item.svelte-148ev8c{display:block;width:100%;text-align:left;background:none;border:none;border-bottom:1px solid #eee;padding:8px 0;font-size:13px;color:#00003c;cursor:pointer;font-family:inherit}.pick-item.svelte-148ev8c:hover{background:#eef2f7;padding-left:4px}.pick-actions.svelte-148ev8c{display:flex;justify-content:flex-end}.pick-exercise-modal.svelte-148ev8c .btn-cancel:where(.svelte-148ev8c){background:#fff;border:1px solid #ccc;color:#444;padding:7px 16px;border-radius:4px;cursor:pointer;font-size:13px;font-family:inherit}.toast-notification.svelte-148ev8c{position:fixed;bottom:20px;right:20px;background:#10b981;color:#fff;padding:.75rem 1rem;border-radius:6px;font-size:14px;font-family:system-ui,sans-serif;box-shadow:0 4px 12px #00000026;z-index:999;animation:svelte-148ev8c-toast-slide-in .3s ease-out}@keyframes svelte-148ev8c-toast-slide-in{0%{transform:translate(400px);opacity:0}to{transform:translate(0);opacity:1}}.overlay-school-chip.svelte-148ev8c{position:absolute;top:.5rem;left:.5rem;z-index:100;width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:#555;background:#ffffffd9;border-radius:4px;border:1px solid #e0e0e0}.overlay-school-chip.svelte-148ev8c:hover{background:#fff}.logo-mini.svelte-148ev8c{width:20px;height:20px;object-fit:contain}.wordmark-mini.svelte-148ev8c{font-size:.6rem;font-weight:700}.page-header.svelte-vrqk87{display:flex;align-items:center;justify-content:space-between;padding:.5rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.brand.svelte-vrqk87{display:flex;align-items:center;gap:.75rem}.logo.svelte-vrqk87{height:32px;width:auto;max-width:200px}.wordmark.svelte-vrqk87{font-weight:600;color:#333;text-decoration:none}.wordmark.svelte-vrqk87:hover{text-decoration:underline}h1.svelte-vrqk87{font-size:1.15rem;margin:0;color:#333}.back-to-school.svelte-vrqk87{font-size:.85rem;color:#555;text-decoration:none}.back-to-school.svelte-vrqk87:hover{text-decoration:underline}.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}.hint.svelte-lc91xz{display:block;font-size:.78rem;color:#666;margin-top:.25rem}.privacy.svelte-lc91xz{margin-top:1.5rem;font-size:.8rem;color:#666;border-top:1px solid #eee;padding-top:.75rem}.modal-backdrop.svelte-cvc2v8{position:fixed;inset:0;background:#00000073;display:flex;align-items:center;justify-content:center;z-index:1000;padding:1.5rem}.modal.svelte-cvc2v8{background:#fff;border-radius:8px;padding:2rem;max-width:480px;width:100%;font-family:system-ui,sans-serif;display:flex;flex-direction:column;gap:1rem;box-shadow:0 8px 40px #00000040}h2.svelte-cvc2v8{margin:0;font-size:1.25rem;color:#14264a}.subtitle.svelte-cvc2v8{margin:0;color:#555;font-size:.9rem;line-height:1.4}.existing-pair.svelte-cvc2v8{background:#fffaeb;border:1px solid #f3d28e;border-radius:6px;padding:1rem;display:flex;flex-direction:column;gap:.75rem}.existing-pair.svelte-cvc2v8 p:where(.svelte-cvc2v8){margin:0;color:#5a4500;line-height:1.4}.tabs.svelte-cvc2v8{display:flex;gap:0;border-bottom:2px solid #e0e4ea}.tabs.svelte-cvc2v8 button:where(.svelte-cvc2v8){background:none;border:none;padding:.6rem 1rem;cursor:pointer;font:inherit;font-size:.9rem;color:#555;border-bottom:2px solid transparent;margin-bottom:-2px;transition:color .15s}.tabs.svelte-cvc2v8 button:where(.svelte-cvc2v8):hover{color:#14264a}.tabs.svelte-cvc2v8 button.active:where(.svelte-cvc2v8){color:#14264a;font-weight:600;border-bottom-color:#14264a}.tab-panel.svelte-cvc2v8{display:flex;flex-direction:column;gap:.75rem;min-height:6rem}.primary-action.svelte-cvc2v8{padding:.6rem 1.4rem;background:#14264a;color:#fff;border:none;border-radius:6px;cursor:pointer;font:inherit;font-size:.95rem;font-weight:600;align-self:flex-start}.primary-action.svelte-cvc2v8:hover:not(:disabled){background:#1a3060}.primary-action.svelte-cvc2v8:disabled{opacity:.5;cursor:not-allowed}.primary-action.inline.svelte-cvc2v8{align-self:auto}.code-display.svelte-cvc2v8{display:flex;align-items:center;gap:1rem;background:#f4f7fb;border:1px solid #c8d8ee;border-radius:6px;padding:.75rem 1rem}.code-text.svelte-cvc2v8{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.75rem;font-weight:700;letter-spacing:.1em;color:#14264a;flex:1;-webkit-user-select:all;user-select:all}.copy-btn.svelte-cvc2v8{padding:.35rem .9rem;border:1px solid #14264a;background:#fff;color:#14264a;border-radius:4px;cursor:pointer;font:inherit;font-size:.85rem;font-weight:600;white-space:nowrap}.copy-btn.svelte-cvc2v8:hover{background:#f0f4fa}.countdown.svelte-cvc2v8{margin:0;color:#555;font-size:.9rem}.countdown.svelte-cvc2v8 strong:where(.svelte-cvc2v8){color:#c05000}.share-hint.svelte-cvc2v8{margin:0;color:#555;font-size:.875rem;line-height:1.4;font-style:italic}.expired-notice.svelte-cvc2v8{margin:0;color:#c05000;font-weight:600}.enter-label.svelte-cvc2v8{font-size:.9rem;color:#333}.enter-row.svelte-cvc2v8{display:flex;gap:.75rem;align-items:stretch}.code-input.svelte-cvc2v8{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:1.1rem;font-weight:600;letter-spacing:.08em;padding:.5rem .75rem;border:1px solid #ccc;border-radius:6px;width:9rem;text-transform:uppercase}.code-input.svelte-cvc2v8:focus{outline:2px solid #14264a;border-color:#14264a}.code-input.svelte-cvc2v8:disabled{opacity:.5}.error.svelte-cvc2v8{margin:0;color:#b00020;font-size:.9rem}.button-row.svelte-cvc2v8{display:flex;justify-content:flex-end;padding-top:.25rem;border-top:1px solid #eee}.cancel-btn.svelte-cvc2v8{padding:.45rem 1rem;border:1px solid #ccc;border-radius:4px;background:#fff;cursor:pointer;font:inherit;color:#444}.cancel-btn.svelte-cvc2v8:hover:not(:disabled){background:#f5f5f5}.cancel-btn.svelte-cvc2v8:disabled{opacity:.5;cursor:not-allowed}.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-nav.svelte-1qo5zp5{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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 .email-reminder:where(.svelte-1qo5zp5){color:#777}.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}.pair-guidance-banner.svelte-1qo5zp5{display:flex;align-items:center;justify-content:space-between;background:#ecfdf5;border:1px solid #6ee7b7;border-left:4px solid #059669;border-radius:4px;padding:.75rem 1rem;margin:0 0 1.25rem;font-size:.95rem;color:#065f46}.pair-guidance-banner.svelte-1qo5zp5 .dismiss-btn:where(.svelte-1qo5zp5){background:none;border:none;cursor:pointer;font-size:1.2rem;color:#065f46;line-height:1;padding:0 .25rem;margin-left:1rem}.pair-guidance-banner.svelte-1qo5zp5 .dismiss-btn:where(.svelte-1qo5zp5):hover{color:#064e3b}.auto-redeem-error.svelte-1qo5zp5{display:flex;align-items:center;justify-content:space-between;background:#fef2f2;border:1px solid #fca5a5;border-left:4px solid #b91c1c;border-radius:4px;padding:.75rem 1rem;margin:0 0 1.25rem;font-size:.95rem;color:#7f1d1d}.auto-redeem-error.svelte-1qo5zp5 .dismiss-btn:where(.svelte-1qo5zp5){background:none;border:none;cursor:pointer;font-size:1.2rem;color:#7f1d1d;line-height:1;padding:0 .25rem;margin-left:1rem}.auto-redeem-error.svelte-1qo5zp5 .dismiss-btn:where(.svelte-1qo5zp5):hover{color:#450a0a}.active-pair-banner.svelte-1qo5zp5{display:flex;align-items:center;justify-content:space-between;gap:1rem;background:#fef3c7;border:1px solid #fbbf24;border-left:4px solid #d97706;border-radius:4px;padding:.75rem 1rem;margin:0 0 1.25rem;font-size:.95rem;color:#78350f;flex-wrap:wrap}.active-pair-banner.svelte-1qo5zp5 .resume-pair-btn:where(.svelte-1qo5zp5){background:#fbbf24;color:#451a03;border:1px solid #d97706;border-radius:4px;padding:.4rem .9rem;font-size:.9rem;font-weight:700;cursor:pointer;font-family:inherit}.active-pair-banner.svelte-1qo5zp5 .resume-pair-btn:where(.svelte-1qo5zp5):hover{background:#f59e0b}.active-pair-banner.svelte-1qo5zp5 .leave-pair-btn:where(.svelte-1qo5zp5){background:#fff;border:1px solid #d97706;color:#78350f;border-radius:4px;padding:.4rem .9rem;font-size:.9rem;cursor:pointer}.active-pair-banner.svelte-1qo5zp5 .leave-pair-btn:where(.svelte-1qo5zp5):hover:not(:disabled){background:#fbbf24;color:#451a03}.active-pair-banner.svelte-1qo5zp5 .leave-pair-btn:where(.svelte-1qo5zp5):disabled{opacity:.6;cursor:not-allowed}.active-pair-banner.svelte-1qo5zp5 .pair-error:where(.svelte-1qo5zp5){color:#b91c1c;flex-basis:100%;font-size:.85rem}.course-intro.svelte-1qo5zp5{background:#f5f8fc;border-left:3px solid #2563eb;padding:1rem 1.25rem;margin:0 0 1.5rem;border-radius:4px;line-height:1.5}.course-intro.svelte-1qo5zp5 p:first-child{margin-top:0}.course-intro.svelte-1qo5zp5 p:last-child{margin-bottom:0}.course-intro.svelte-1qo5zp5 a{color:#1a3d8f;text-decoration:underline}.pagination.svelte-1qo5zp5{display:flex;align-items:center;justify-content:center;gap:1rem;margin:1.5rem 0 .5rem;padding-top:1rem;border-top:1px solid #eee}.pagination.svelte-1qo5zp5 button:where(.svelte-1qo5zp5){padding:.4rem .85rem;font-size:.9rem;border:1px solid #ccc;background:#fafafa;border-radius:4px;cursor:pointer}.pagination.svelte-1qo5zp5 button:where(.svelte-1qo5zp5):hover:not(:disabled){background:#eef}.pagination.svelte-1qo5zp5 button:where(.svelte-1qo5zp5):disabled{opacity:.4;cursor:not-allowed}.pagination.svelte-1qo5zp5 .page-indicator:where(.svelte-1qo5zp5){color:#555;font-size:.95rem}.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}.pair-btn.svelte-1qo5zp5{display:inline-block;margin-left:1rem;padding:.3rem 1rem;font-size:.85rem;font-weight:600;background:#14264a;color:#fff;border:none;border-radius:6px;cursor:pointer;vertical-align:middle;font-family:system-ui,sans-serif}.pair-btn.svelte-1qo5zp5:hover{background:#1a3060}.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}.multi-file-editor.svelte-1h9szzu{display:flex;flex-direction:column;gap:.75rem}.tab-strip.svelte-1h9szzu{display:flex;gap:.25rem;border-bottom:1px solid #ccc}.tab-strip.svelte-1h9szzu button[role=tab]:where(.svelte-1h9szzu){padding:.4rem .7rem;background:#f5f5f5;border:1px solid transparent;border-bottom:none;cursor:pointer}.tab-strip.svelte-1h9szzu button[role=tab].active:where(.svelte-1h9szzu){background:#fff;border-color:#ccc}.add-file.svelte-1h9szzu{margin-left:.5rem}.tab-toolbar.svelte-1h9szzu{display:flex;align-items:center;gap:.75rem;flex-wrap:wrap}.editor-pair.svelte-1h9szzu{display:flex;flex-direction:column;gap:.75rem}.editor-label.svelte-1h9szzu{font-weight:600;font-size:.9em}.error.svelte-1h9szzu{color:#b00020;font-weight:600;margin:0}.empty.svelte-1h9szzu{color:#777}.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}.overlay.svelte-1hmws8q{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.modal.svelte-1hmws8q{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}.modal-header.svelte-1hmws8q{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.modal-header.svelte-1hmws8q h2:where(.svelte-1hmws8q){margin:0;font-size:1.1rem}.close-btn.svelte-1hmws8q{background:transparent;border:none;font-size:1.5rem;cursor:pointer;color:#666;line-height:1;padding:0 .5rem}.search-row.svelte-1hmws8q{margin-bottom:.75rem}.search-input.svelte-1hmws8q{width:100%;padding:.5rem;font-size:1rem;border:1px solid #ccc;border-radius:4px;box-sizing:border-box}.results.svelte-1hmws8q{flex:1;overflow-y:auto}.results.svelte-1hmws8q ul:where(.svelte-1hmws8q){list-style:none;padding:0;margin:0}.result-item.svelte-1hmws8q{padding:.75rem 0;border-bottom:1px solid #eee}.result-item.svelte-1hmws8q:last-child{border-bottom:none}.badges.svelte-1hmws8q{margin-bottom:.25rem}.badge.svelte-1hmws8q{display:inline-block;font-size:.7rem;font-weight:600;padding:.1rem .5rem;border-radius:10px;text-transform:uppercase;letter-spacing:.04em}.badge--corpus.svelte-1hmws8q{background:#e8efff;color:#14264a}.badge--school.svelte-1hmws8q{background:#fff3d6;color:#6b4a00}.result-title.svelte-1hmws8q{font-weight:600;color:#14264a;margin-bottom:.25rem}.result-snippet.svelte-1hmws8q{font-size:.9rem;color:#555;margin-bottom:.25rem;line-height:1.4}.result-snippet.svelte-1hmws8q b{font-weight:700;color:#14264a}.result-id.svelte-1hmws8q{font-size:.75rem;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;color:#888;margin-bottom:.4rem}.use-btn.svelte-1hmws8q{padding:.3rem .75rem;font-size:.85rem;cursor:pointer;background:#035;color:#fff;border:none;border-radius:4px;font-family:inherit}.use-btn.svelte-1hmws8q:hover{background:#024}.muted.svelte-1hmws8q{color:#666;padding:.5rem 0}.placeholder-hint.svelte-1hmws8q{padding:1rem 0}.error.svelte-1hmws8q{color:#c00;padding:.5rem 0}.page-nav.svelte-la3k1h{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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}.checkbox-label.svelte-la3k1h{display:flex;align-items:center;gap:.5rem;margin-bottom:1rem}.checkbox-label.svelte-la3k1h input[type=checkbox]:where(.svelte-la3k1h){display:inline;width:auto;margin:0}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}.done-nav.svelte-la3k1h{display:flex;gap:1rem;align-items:center;margin-top:1rem;flex-wrap:wrap}.back-to-course.svelte-la3k1h{color:#035;font-weight:600;text-decoration:none}.back-to-course.svelte-la3k1h:hover{text-decoration:underline}.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}.extra-packages-field.svelte-la3k1h{border:1px solid #ddd;border-radius:6px;padding:.75rem 1rem 1rem;margin:.75rem 0;background:#fafbfc}.extra-packages-field.svelte-la3k1h legend:where(.svelte-la3k1h){font-weight:600;padding:0 .4rem;font-size:.9rem}.pypi-row.svelte-la3k1h{display:flex;align-items:center;gap:.5rem;margin:.4rem 0}.pypi-name.svelte-la3k1h{flex:0 0 16rem;padding:.35rem .55rem;font-size:.9rem;border:1px solid #d0d0d0;border-radius:4px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace}.pypi-test-btn.svelte-la3k1h{background:#fff;color:#333;border:1px solid #c0c8d4;border-radius:4px;padding:.3rem .7rem;font-size:.85rem;cursor:pointer;font-family:inherit}.pypi-test-btn.svelte-la3k1h:hover:not(:disabled){background:#f0f4fa}.pypi-test-btn.svelte-la3k1h:disabled{opacity:.55;cursor:not-allowed}.pypi-ok.svelte-la3k1h{color:#2c5e1a;font-weight:600;font-size:.85rem}.pypi-fail.svelte-la3k1h{color:#7f1d1d;font-weight:600;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:26rem}.pypi-remove-btn.svelte-la3k1h{background:transparent;border:none;color:#888;font-size:1.2rem;line-height:1;cursor:pointer;padding:.1rem .4rem}.pypi-remove-btn.svelte-la3k1h:hover{color:#b91c1c}.pypi-add-btn.svelte-la3k1h{background:transparent;color:#035;border:1px dashed #c0c8d4;border-radius:4px;padding:.35rem .75rem;font-size:.85rem;cursor:pointer;font-family:inherit;margin-top:.5rem}.pypi-add-btn.svelte-la3k1h:hover{background:#eef3f9}.slug-row.svelte-la3k1h{display:flex;gap:.5rem;align-items:center}.slug-row.svelte-la3k1h input:where(.svelte-la3k1h){flex:1;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9rem}.slug-row.svelte-la3k1h button:where(.svelte-la3k1h){padding:.35rem .8rem;border:1px solid #cce;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;font-weight:600;color:#035}.slug-row.svelte-la3k1h button:where(.svelte-la3k1h):hover:not(:disabled){background:#f0f4fa}.slug-row.svelte-la3k1h button:where(.svelte-la3k1h):disabled{opacity:.55;cursor:not-allowed}.modal-backdrop.svelte-df59zb{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-df59zb{background:#fff;border-radius:8px;padding:2rem;max-width:420px;width:100%;font-family:system-ui,sans-serif}h2.svelte-df59zb{margin-top:0}form.svelte-df59zb{display:flex;flex-direction:column;gap:.75rem}label.svelte-df59zb{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}.error.svelte-df59zb{color:#b00020}.button-row.svelte-df59zb{display:flex;gap:.75rem;justify-content:flex-end}.button-row.svelte-df59zb button:where(.svelte-df59zb){padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font:inherit}.button-row.svelte-df59zb button[type=submit]:where(.svelte-df59zb){background:#14264a;color:#fff;border-color:#14264a}.button-row.svelte-df59zb button[type=submit]:where(.svelte-df59zb):hover{background:#1a3060}.page-nav.svelte-1usocce{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.header-right.svelte-1usocce{margin-left:auto;display:inline-flex;align-items:center;gap:1rem}.header-link.svelte-1usocce{color:#035;text-decoration:none;font-weight:600;padding:.35rem .8rem;border:1px solid #cce;border-radius:4px}.header-link.svelte-1usocce:hover{background:#f0f4fa}.header-link.reports-badge.svelte-1usocce{background:#fef2f2;border-color:#fca5a5;color:#dc2626;font-weight:700}.header-link.reports-badge.svelte-1usocce:hover{background:#fee2e2}.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}.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}.state-badge.svelte-1usocce{padding:.15rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1px solid transparent;cursor:pointer;font-family:inherit;white-space:nowrap}.state-badge.state-on.svelte-1usocce{background:#d4ecf7;color:#1a4d63;border-color:#b6d8e8}.state-badge.state-off.svelte-1usocce{background:#fff4cc;color:#663;border-color:#f0d97a}.state-badge.svelte-1usocce:hover:not(:disabled){filter:brightness(.96)}.pin-btn.svelte-1usocce{background:none;border:none;padding:0 .35rem 0 0;cursor:pointer;font-size:1rem;opacity:.25;transition:opacity .15s ease;vertical-align:middle}.pin-btn.svelte-1usocce:hover{opacity:.7}.pin-btn.pinned.svelte-1usocce{opacity:1;filter:drop-shadow(0 0 2px #f6c23e)}tr.pinned-row.svelte-1usocce{background:#fffbe6}tr.pinned-row.svelte-1usocce td:where(.svelte-1usocce):first-child{border-left:3px solid #f6c23e}.error-tile.svelte-1usocce{margin:1rem 0;padding:.5rem .8rem;background:#fafbfd;border:1px solid #e0e4ec;border-radius:4px}.error-tile--hot.svelte-1usocce{background:#fff8e1;border-color:#f0c040}.error-tile-toggle.svelte-1usocce{background:none;border:none;padding:0;margin:0;font:inherit;cursor:pointer;color:#333;text-align:left;display:block;width:100%}.error-tile-toggle.svelte-1usocce strong:where(.svelte-1usocce){color:#7a2020}.error-tile--hot.svelte-1usocce .error-tile-toggle:where(.svelte-1usocce) strong:where(.svelte-1usocce){color:#a63a00}.error-table.svelte-1usocce{width:100%;margin-top:.6rem;border-collapse:collapse}.error-table.svelte-1usocce th:where(.svelte-1usocce),.error-table.svelte-1usocce td:where(.svelte-1usocce){padding:.3rem .5rem;border-bottom:1px solid #eee;text-align:left;vertical-align:top}.error-table.svelte-1usocce th:where(.svelte-1usocce){font-weight:600;color:#666;font-size:.8rem;background:#fafbfd}.error-table.svelte-1usocce .mono:where(.svelte-1usocce){font-family:ui-monospace,monospace}.error-table.svelte-1usocce .small:where(.svelte-1usocce){font-size:.8rem}.error-table.svelte-1usocce .dim:where(.svelte-1usocce){color:#666}.error-table.svelte-1usocce .ua:where(.svelte-1usocce){max-width:20rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.err-status.svelte-1usocce{display:inline-block;padding:.05rem .4rem;border-radius:4px;font-weight:600;font-size:.8rem}.err-status-4xx.svelte-1usocce{background:#fbe6c9;color:#6b4700}.err-status-5xx.svelte-1usocce{background:#f7d4d4;color:#7a2020}.stats-roll-up.svelte-1usocce{display:flex;gap:1rem;flex-wrap:wrap;align-items:flex-end;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}.empty-state.svelte-1usocce{padding:2rem;background:#f9fbff;border:1px solid #d8e4f8;border-radius:8px;margin:1.5rem 0}.empty-state.svelte-1usocce h2:where(.svelte-1usocce){margin-top:0;color:#14264a}.section-heading.svelte-1usocce{margin:2rem 0 .25rem;font-size:1.15rem;color:#14264a;border-bottom:1px solid #dbe6f2;padding-bottom:.35rem}.filter-label.svelte-1usocce{display:inline-flex;align-items:center;gap:.5rem}.filter-label.svelte-1usocce input[type=search]:where(.svelte-1usocce){padding:.35rem .55rem;font-size:.9rem;border:1px solid #ccc;border-radius:4px;min-width:12rem}.sort-header.svelte-1usocce{background:none;border:none;padding:0;font:inherit;color:inherit;cursor:pointer;font-weight:inherit;text-align:left}.sort-header.svelte-1usocce:hover{color:#035}.link-btn.svelte-1usocce{background:none;border:none;color:#557;text-decoration:underline;cursor:pointer;font-size:.85rem;padding:0}.link-btn.svelte-1usocce:hover{color:#335}.cta-row.svelte-1usocce{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1rem}.cta.svelte-1usocce{padding:.6rem 1.25rem;border-radius:6px;font-weight:600;font-size:.95rem;text-decoration:none;cursor:pointer;background:#14264a;color:#fff;border:none;font-family:system-ui,sans-serif}.cta.svelte-1usocce:hover{background:#1a3060}.cta.secondary.svelte-1usocce{background:#fff;color:#14264a;border:2px solid #14264a}.cta.secondary.svelte-1usocce:hover{background:#eef4fb}.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}.modal-backdrop.svelte-1bndha6{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-1bndha6{background:#fff;border-radius:8px;padding:2rem;max-width:560px;width:100%;font-family:system-ui,sans-serif;display:flex;flex-direction:column;gap:.75rem}h2.svelte-1bndha6{margin:0}.hint.svelte-1bndha6{color:#555;margin:0;font-size:.95em}form.svelte-1bndha6{display:flex;flex-direction:column;gap:.75rem}label.svelte-1bndha6{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}textarea.svelte-1bndha6{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border:1px solid #ccc;border-radius:4px;padding:.5rem;resize:vertical;min-height:8rem}.counter.svelte-1bndha6{color:#888;font-size:.85em;margin:0;text-align:right}.error.svelte-1bndha6{color:#b00020;margin:0}.button-row.svelte-1bndha6{display:flex;gap:.75rem;justify-content:flex-end}.button-row.svelte-1bndha6 button:where(.svelte-1bndha6){padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font:inherit;background:#fff}.button-row.svelte-1bndha6 button.primary:where(.svelte-1bndha6){background:#14264a;color:#fff;border-color:#14264a}.button-row.svelte-1bndha6 button.primary:where(.svelte-1bndha6):hover:not(:disabled){background:#1a3060}.button-row.svelte-1bndha6 button:where(.svelte-1bndha6):disabled{opacity:.5;cursor:not-allowed}.modal-backdrop.svelte-4w6bu7{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-4w6bu7{background:#fff;border-radius:8px;padding:2rem;max-width:500px;width:100%;font-family:system-ui,sans-serif;display:flex;flex-direction:column;gap:.75rem}h2.svelte-4w6bu7{margin:0}.hint.svelte-4w6bu7{color:#444;margin:0;font-size:.95em;line-height:1.5}form.svelte-4w6bu7{display:flex;flex-direction:column;gap:.75rem}label.svelte-4w6bu7{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}input.svelte-4w6bu7{padding:.5rem;font:inherit;border:1px solid #ccc;border-radius:4px}.muted.svelte-4w6bu7{color:#888;font-size:.85em;margin:0}.error.svelte-4w6bu7{color:#b00020;margin:0}.button-row.svelte-4w6bu7{display:flex;gap:.75rem;justify-content:flex-end}.button-row.svelte-4w6bu7 button:where(.svelte-4w6bu7){padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font:inherit;background:#fff}.button-row.svelte-4w6bu7 button.primary:where(.svelte-4w6bu7){background:#14264a;color:#fff;border-color:#14264a}.button-row.svelte-4w6bu7 button.primary:where(.svelte-4w6bu7):hover:not(:disabled){background:#1a3060}.button-row.svelte-4w6bu7 button:where(.svelte-4w6bu7):disabled{opacity:.5;cursor:not-allowed}.overlay.svelte-gie02u{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;z-index:100;padding:4rem 1rem}.modal.svelte-gie02u{background:#fff;padding:1.5rem 2rem;border-radius:8px;max-width:40rem;width:100%;font-family:system-ui,sans-serif;max-height:80vh;overflow-y:auto}h2.svelte-gie02u{margin:0 0 .5rem;font-size:1.25rem}h3.svelte-gie02u{margin:1rem 0 .5rem;font-size:1rem}.muted.svelte-gie02u{color:#666}.small.svelte-gie02u{font-size:.85em}.error.svelte-gie02u{color:#b00020}.file-row.svelte-gie02u{display:block;margin:1rem 0}.actions.svelte-gie02u{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1rem;padding-top:1rem;border-top:1px solid #eee}.primary.svelte-gie02u{padding:.5rem 1.2rem;background:#14264a;color:#fff;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit}.primary.svelte-gie02u:disabled{opacity:.5;cursor:not-allowed}.secondary.svelte-gie02u{padding:.5rem 1.2rem;background:#fff;color:#14264a;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit}ul.created.svelte-gie02u,ul.errors.svelte-gie02u{padding-left:1.25rem}ul.errors.svelte-gie02u .reason:where(.svelte-gie02u){color:#b00020}.overlay.svelte-q71inj{position:fixed;inset:0;background:#00000080;display:flex;align-items:flex-start;justify-content:center;z-index:200;padding:3rem 1rem}.modal.svelte-q71inj{background:#fff;padding:1.5rem 2rem;border-radius:8px;max-width:48rem;width:100%;font-family:system-ui,sans-serif;max-height:85vh;overflow-y:auto}h2.svelte-q71inj{margin:0 0 1rem;font-size:1.25rem;color:#14264a}.section-heading.svelte-q71inj{font-size:1rem;margin:1rem 0 .4rem;color:#333}.hint.svelte-q71inj{font-size:.85rem;color:#666;margin:0 0 .6rem}.muted.svelte-q71inj{color:#666}.roster-section.svelte-q71inj{margin-bottom:1rem}.roster.svelte-q71inj{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(12rem,1fr));gap:.25rem 1rem}.roster-label.svelte-q71inj{display:flex;align-items:center;gap:.4rem;font-size:.9rem;cursor:pointer}.active-badge.svelte-q71inj{font-size:.7rem;background:#e6f4ec;color:#2c7a3e;border-radius:999px;padding:.05rem .45rem;font-weight:600}.controls-row.svelte-q71inj{display:flex;align-items:center;gap:1rem;margin:1rem 0}.group-size-label.svelte-q71inj{font-size:.9rem;display:flex;align-items:center;gap:.4rem}.group-size-label.svelte-q71inj select:where(.svelte-q71inj){padding:.3rem .5rem;border:1px solid #d8e1ee;border-radius:4px;font:inherit}.shuffle-btn.svelte-q71inj{padding:.4rem 1rem;background:#14264a;color:#fff;border:none;border-radius:4px;font:inherit;font-weight:600;cursor:pointer}.shuffle-btn.svelte-q71inj:hover:not(:disabled){background:#1a3565}.shuffle-btn.svelte-q71inj:disabled{opacity:.45;cursor:not-allowed}.groups-section.svelte-q71inj{margin:1rem 0}.group-row.svelte-q71inj{display:flex;align-items:flex-start;gap:.75rem;padding:.6rem .75rem;border:1px solid #d8e1ee;border-radius:6px;margin-bottom:.5rem;background:#f8fbff}.group-label.svelte-q71inj{font-weight:600;font-size:.9rem;min-width:5rem;color:#14264a}.group-members.svelte-q71inj{list-style:none;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:.5rem}.member-item.svelte-q71inj{display:flex;align-items:center;gap:.3rem;background:#fff;border:1px solid #d8e1ee;border-radius:4px;padding:.2rem .5rem}.member-name.svelte-q71inj{font-size:.9rem}.swap-label.svelte-q71inj{display:inline-flex;align-items:center}.swap-label.svelte-q71inj select:where(.svelte-q71inj){font-size:.8rem;border:none;background:transparent;color:#035;cursor:pointer;padding:0;max-width:8rem}.swap-label.svelte-q71inj select:where(.svelte-q71inj):focus{outline:1px solid #14264a;border-radius:2px}.sr-only.svelte-q71inj{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.error.svelte-q71inj{color:#b00020;font-size:.9rem;margin:.5rem 0}.actions.svelte-q71inj{display:flex;gap:.75rem;justify-content:flex-end;margin-top:1.25rem;padding-top:1rem;border-top:1px solid #eee}.primary.svelte-q71inj{padding:.5rem 1.2rem;background:#14264a;color:#fff;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit;font-weight:600}.primary.svelte-q71inj:disabled{opacity:.5;cursor:not-allowed}.primary.svelte-q71inj:hover:not(:disabled){background:#1a3565}.secondary.svelte-q71inj{padding:.5rem 1.2rem;background:#fff;color:#14264a;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit}.secondary.svelte-q71inj:hover{background:#eaf0f8}.modal-backdrop.svelte-gwehv1{position:fixed;inset:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000}.modal.svelte-gwehv1{background:#fff;border-radius:8px;padding:2rem;max-width:560px;width:100%;font-family:system-ui,sans-serif;display:flex;flex-direction:column;gap:.75rem}h2.svelte-gwehv1{margin:0}.subtitle.svelte-gwehv1{margin:0;color:#333}.warn.svelte-gwehv1{background:#fef3c7;color:#92400e;border:1px solid #fcd34d;border-radius:4px;padding:.6rem .75rem;font-size:.9em;margin:0}.warn.svelte-gwehv1 code:where(.svelte-gwehv1){background:#0000000d;padding:0 3px;border-radius:2px}form.svelte-gwehv1{display:flex;flex-direction:column;gap:.5rem}label.svelte-gwehv1{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}input.svelte-gwehv1{font:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;border:1px solid #ccc;border-radius:4px;padding:.5rem}.hint.svelte-gwehv1{color:#555;margin:0;font-size:.85em}.hint.error.svelte-gwehv1{color:#b00020}.error.svelte-gwehv1{color:#b00020;margin:0}.button-row.svelte-gwehv1{display:flex;gap:.75rem;justify-content:flex-end}.button-row.svelte-gwehv1 button:where(.svelte-gwehv1){padding:.5rem 1rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font:inherit;background:#fff}.button-row.svelte-gwehv1 button.primary:where(.svelte-gwehv1){background:#14264a;color:#fff;border-color:#14264a}.button-row.svelte-gwehv1 button.primary:where(.svelte-gwehv1):hover:not(:disabled){background:#1a3060}.button-row.svelte-gwehv1 button:where(.svelte-gwehv1):disabled{opacity:.5;cursor:not-allowed}.page-nav.svelte-x7yv8b{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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}.rename-slug-btn.svelte-x7yv8b{background:transparent;border:1px solid #ccc;border-radius:4px;color:#555;font-size:.7em;padding:2px 8px;margin-left:6px;cursor:pointer;vertical-align:middle;font-family:system-ui,sans-serif}.rename-slug-btn.svelte-x7yv8b:hover{background:#f4f7fb;color:#14264a;border-color:#14264a}.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;display:flex;gap:.75rem;flex-wrap:wrap}.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}.edit-intro-btn.svelte-x7yv8b{padding:.5rem 1rem;background:#fff;color:#035;border:1px solid #035;border-radius:4px;font-weight:600;font:inherit;cursor:pointer}.edit-intro-btn.svelte-x7yv8b:hover{background:#eaf0f8}.template-link.svelte-x7yv8b{align-self:center;color:#035;font-size:.9rem}.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}.sort-header.svelte-x7yv8b{background:none;border:none;padding:0;margin:0;font:inherit;font-weight:600;color:inherit;cursor:pointer;text-align:left}.sort-header.svelte-x7yv8b:hover{color:#035}.last-activity.svelte-x7yv8b{white-space:nowrap;color:#555;font-size:.85rem}.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.svelte-x7yv8b:disabled{opacity:.55;cursor:not-allowed}.action-btn.danger.svelte-x7yv8b{border-color:#e0b0b0;color:#933}.action-btn.danger.svelte-x7yv8b:hover{background:#fceaea}.finalize-btn.svelte-x7yv8b{border-color:#b9d3a9;color:#2c5e1a;background:#f1f9ec}.finalize-btn.svelte-x7yv8b:hover{background:#e0f1d7}.state-pill.svelte-x7yv8b{display:inline-block;padding:.15rem .55rem;font-size:.8rem;font-weight:600;border-radius:999px;border:1px solid transparent;line-height:1.4;text-align:center;min-width:12rem}.state-pill--live.svelte-x7yv8b{background:#d4edda;color:#2c5e1a;border-color:#b9d3a9}.state-pill--awaiting.svelte-x7yv8b{background:#fff3cd;color:#8a6d3b;border-color:#f0e0a8}.state-pill--hidden.svelte-x7yv8b{background:#eaedf2;color:#555;border-color:#d0d6df}.state-pill--button.svelte-x7yv8b{cursor:pointer;font-family:inherit}.state-pill--button.svelte-x7yv8b:hover{filter:brightness(.95)}.state-pill--button.svelte-x7yv8b:disabled{opacity:.55;cursor:not-allowed}.bulk-finalize-row.svelte-x7yv8b,.bulk-release-row.svelte-x7yv8b{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.5rem 0 1rem}.pagination.svelte-x7yv8b{display:flex;align-items:center;justify-content:center;gap:1rem;margin:1rem 0 1.5rem;padding-top:.75rem;border-top:1px solid #eee}.pagination.svelte-x7yv8b button:where(.svelte-x7yv8b){padding:.4rem .85rem;font-size:.9rem;border:1px solid #ccc;background:#fafafa;border-radius:4px;cursor:pointer}.pagination.svelte-x7yv8b button:where(.svelte-x7yv8b):hover:not(:disabled){background:#eef}.pagination.svelte-x7yv8b button:where(.svelte-x7yv8b):disabled{opacity:.4;cursor:not-allowed}.pagination.svelte-x7yv8b .page-indicator:where(.svelte-x7yv8b){color:#555;font-size:.95rem}.bulk-finalize-report.svelte-x7yv8b{position:relative;margin:.5rem 0 1rem;padding:.75rem 2.5rem .75rem 1rem;background:#f1f9ec;border:1px solid #b9d3a9;border-radius:6px}.bulk-finalize-report.svelte-x7yv8b p:where(.svelte-x7yv8b){margin:0 0 .25rem}.bulk-finalize-report.svelte-x7yv8b ul:where(.svelte-x7yv8b){margin:.25rem 0 0;padding-left:1.25rem;font-size:.9rem;color:#6a3a3a}.bulk-finalize-report.svelte-x7yv8b code:where(.svelte-x7yv8b){font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.85rem}.dismiss-btn.svelte-x7yv8b{position:absolute;top:.4rem;right:.6rem;background:transparent;border:none;font-size:1.25rem;cursor:pointer;color:#666;line-height:1}.dismiss-btn.svelte-x7yv8b:hover{color:#000}.archived-heading.svelte-x7yv8b{margin-top:2.5rem;color:#555}.archived-table.svelte-x7yv8b{opacity:.85}.roster-section.svelte-x7yv8b{margin-top:2.5rem}.roster-toggle.svelte-x7yv8b{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:1.1rem;font-weight:600;color:#444}.roster-toggle.svelte-x7yv8b:hover{color:#035}.roster-body.svelte-x7yv8b{margin-top:.8rem}.roster-filter.svelte-x7yv8b{width:100%;max-width:28rem;padding:.35rem .55rem;font-size:.9rem;border:1px solid #ccc;border-radius:4px;margin-bottom:.6rem}.roster-table.svelte-x7yv8b{width:100%;border-collapse:collapse}.roster-table.svelte-x7yv8b th:where(.svelte-x7yv8b),.roster-table.svelte-x7yv8b td:where(.svelte-x7yv8b){padding:.35rem .6rem;border-bottom:1px solid #eee;text-align:left}.roster-table.svelte-x7yv8b th:where(.svelte-x7yv8b){font-weight:600;color:#666;font-size:.85rem;background:#fafbfd}.roster-table.svelte-x7yv8b a:where(.svelte-x7yv8b){color:#035;text-decoration:none;font-weight:600}.roster-table.svelte-x7yv8b a:where(.svelte-x7yv8b):hover{text-decoration:underline}.muted.small.svelte-x7yv8b{color:#888;font-size:.8rem;font-weight:400}.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}.pair-btn.svelte-x7yv8b{background:#edf4ff;border-color:#14264a;color:#14264a}.pair-btn.svelte-x7yv8b:hover{background:#d8eaff}.pairs-section.svelte-x7yv8b{margin:1.5rem 0 2rem;border:1px solid #d8e1ee;border-radius:6px;padding:1rem 1.25rem;background:#f8fbff}.pairs-section.svelte-x7yv8b h3:where(.svelte-x7yv8b){margin:0 0 .5rem;color:#14264a;font-size:1.05rem}.pairs-list.svelte-x7yv8b{list-style:none;padding:0;margin:0}.pair-row.svelte-x7yv8b{padding:.5rem 0;font-size:.95rem;display:flex;gap:1rem;align-items:center;flex-wrap:wrap}.pair-id.svelte-x7yv8b{font-weight:600;color:#14264a;min-width:max-content}.pair-members.svelte-x7yv8b{color:#444;font-weight:500}.pair-exercise.svelte-x7yv8b{color:#666;font-size:.85rem;font-family:monospace;background:#e8eef8;padding:.2rem .4rem;border-radius:3px}.pair-age.svelte-x7yv8b{color:#999;font-size:.85rem;margin-left:auto;white-space:nowrap}.end-pair-btn.svelte-x7yv8b{background:#fff;border:1px solid #c44;color:#a22;border-radius:3px;padding:.25rem .6rem;font-size:.85rem;cursor:pointer}.end-pair-btn.svelte-x7yv8b:hover:not(:disabled){background:#fee}.end-pair-btn.svelte-x7yv8b:disabled{opacity:.6;cursor:not-allowed}.join-pair-btn.svelte-x7yv8b{background:#fbbf24;border:1px solid #d97706;color:#451a03;border-radius:3px;padding:.25rem .7rem;font-size:.85rem;font-weight:700;cursor:pointer;font-family:inherit}.join-pair-btn.svelte-x7yv8b:hover:not(:disabled){background:#f59e0b}.join-pair-btn.svelte-x7yv8b:disabled{opacity:.6;cursor:not-allowed}.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-nav.svelte-11vj399{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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-submitted.svelte-11vj399{flex:1;text-align:left}.col-header.svelte-11vj399{padding:.2rem .4rem;color:#555;font-weight:600;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.col-header.col-hints.svelte-11vj399{width:4.5rem;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 18rem}.col-name.svelte-11vj399 .student-link:where(.svelte-11vj399){color:#666;text-decoration:none;margin-left:.3rem;font-weight:400;display:inline-block;padding:0 .25rem}.col-name.svelte-11vj399 .student-link:where(.svelte-11vj399):hover{color:#035;text-decoration:none}.col-name.svelte-11vj399 .email:where(.svelte-11vj399){font-weight:400;font-size:.85em;color:#666;margin-left:.25rem}.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-code-run.svelte-11vj399{background:#dbeafe;color:#1e3a5f}.badge-chatting.svelte-11vj399{background:#ede9fe;color:#4c1d95}.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}.common-mistakes.svelte-11vj399{margin:1.5rem 0 .5rem;padding:.75rem 1rem;background:#f7faff;border:1px solid #dbe6f2;border-radius:6px}.common-mistakes-row.svelte-11vj399{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem}.common-mistakes-body.svelte-11vj399{margin-top:.75rem;padding-top:.75rem;border-top:1px solid #dbe6f2}.link-btn.svelte-11vj399{background:none;border:none;color:#557;text-decoration:underline;cursor:pointer;font-size:.9rem;padding:0}.link-btn.svelte-11vj399:hover{color:#335}.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}button.review-link.copy-btn.svelte-11vj399{font:inherit;font-weight:600;cursor:pointer;margin-left:.5rem}.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}.convo-toggle-row.svelte-11vj399{margin:.75rem 0 .25rem;display:flex;align-items:center;gap:.5rem}.convo-btn.svelte-11vj399{background:#f4f7fb;border:1px solid #cce;border-radius:4px;color:#035;font-size:.85rem;font-weight:600;padding:.3rem .7rem;cursor:pointer;font-family:inherit}.convo-btn.svelte-11vj399:hover{background:#e8eef8}.convo-list.svelte-11vj399{margin:.5rem 0;border-left:2px solid #d0d7de;padding-left:.75rem}.convo-turn.svelte-11vj399{margin-bottom:.75rem}.convo-header.svelte-11vj399{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.82rem;color:#444;margin-bottom:.15rem;display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.convo-ts.svelte-11vj399{color:#888}.convo-label.svelte-11vj399{font-weight:700}.convo-message.svelte-11vj399{color:#222;white-space:pre-wrap;font-size:.82rem}.convo-verdict.svelte-11vj399{font-weight:700}.convo-verdict-pass.svelte-11vj399{color:#143}.convo-verdict-needs_work.svelte-11vj399{color:#633}.convo-verdict-null.svelte-11vj399{color:#666}.convo-response.svelte-11vj399{font-family:system-ui,sans-serif;font-size:.9rem;color:#1a1a1a;line-height:1.5;padding-left:.5rem;border-left:1px solid #e8e8e8;margin-left:.5rem}.filter.svelte-11vj399{display:inline-flex;align-items:center;gap:.4rem;font-size:.9rem;color:#444;margin-bottom:.75rem;cursor:pointer}.sort-btn.sort-last-activity.svelte-11vj399{flex:1;text-align:left}.col-last-activity.svelte-11vj399{flex:1;white-space:nowrap}.pagination.svelte-11vj399{display:flex;align-items:center;gap:1rem;padding:.75rem 0;margin-top:.5rem;border-top:1px solid #eee;font-size:.9rem}.pagination.svelte-11vj399 button:where(.svelte-11vj399){padding:.3rem .7rem;border:1px solid #cce;border-radius:4px;background:#f4f7fb;color:#035;font-weight:600;cursor:pointer;font-family:inherit;font-size:.9rem}.pagination.svelte-11vj399 button:where(.svelte-11vj399):hover:not(:disabled){background:#e8eef8}.pagination.svelte-11vj399 button:where(.svelte-11vj399):disabled{opacity:.4;cursor:not-allowed}.pagination.svelte-11vj399 label:where(.svelte-11vj399){display:inline-flex;align-items:center;gap:.4rem;color:#555}.pagination.svelte-11vj399 select:where(.svelte-11vj399){font-size:.9rem;padding:.2rem .4rem;border-radius:4px;border:1px solid #ccc}.page-nav.svelte-kn4yw0{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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-nav.svelte-1ggl8di{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.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-btn.svelte-1ggl8di{margin-left:.5rem;padding:.1rem .5rem;border-radius:999px;font-size:.8rem;font-weight:600;border:1px solid transparent;cursor:pointer;font-family:inherit}.meta-tag-btn.finalized.svelte-1ggl8di{background:#d4ecf7;color:#1a4d63;border-color:#b6d8e8}.meta-tag-btn.draft.svelte-1ggl8di{background:#fff4cc;color:#663;border-color:#f0d97a}.meta-tag-btn.svelte-1ggl8di:hover:not(:disabled){filter:brightness(.96)}.meta-tag-btn.svelte-1ggl8di:disabled{opacity:.6;cursor:not-allowed}.extra-packages-field.svelte-1ggl8di{border:1px solid #e0e0e0;border-radius:6px;padding:.75rem 1rem .85rem;margin-bottom:1rem}.extra-packages-field.svelte-1ggl8di legend:where(.svelte-1ggl8di){font-weight:600;padding:0 .4rem;font-size:.9rem}.field-hint.svelte-1ggl8di{font-size:.85rem;color:#555;margin:.15rem 0 .6rem}.pypi-row.svelte-1ggl8di{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.pypi-name.svelte-1ggl8di{flex:0 1 18rem;padding:.3rem .5rem;border:1px solid #ccd;border-radius:4px;font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.9rem}.pypi-test-btn.svelte-1ggl8di{padding:.3rem .8rem;border:1px solid #cce;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;font-weight:600;color:#035}.pypi-test-btn.svelte-1ggl8di:hover:not(:disabled){background:#f0f4fa}.pypi-test-btn.svelte-1ggl8di:disabled{opacity:.55;cursor:not-allowed}.pypi-ok.svelte-1ggl8di{color:#2c5e1a;font-weight:600;font-size:.85rem}.pypi-fail.svelte-1ggl8di{color:#8a1c1c;font-weight:600;font-size:.85rem;max-width:28rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pypi-remove-btn.svelte-1ggl8di{margin-left:auto;background:transparent;border:none;cursor:pointer;color:#999;font-size:1.1rem;line-height:1;padding:0 .35rem}.pypi-remove-btn.svelte-1ggl8di:hover{color:#b91c1c}.pypi-add-btn.svelte-1ggl8di{margin-top:.25rem;padding:.35rem .8rem;border:1px dashed #aac;border-radius:4px;background:#f6f9fc;cursor:pointer;font-size:.85rem;color:#035}.pypi-add-btn.svelte-1ggl8di:hover:not(:disabled){background:#eef3f9}.pypi-add-btn.svelte-1ggl8di:disabled{opacity:.55;cursor:not-allowed}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}.data-library.svelte-1ggl8di{border:1px solid #d4d4d4;border-radius:4px;padding:.75rem 1rem;margin-bottom:1rem}.data-library.svelte-1ggl8di legend:where(.svelte-1ggl8di){font-size:.9rem;color:#444;padding:0 .4rem}.data-library-grid.svelte-1ggl8di{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.25rem 1rem}.data-library-item.svelte-1ggl8di{display:flex;align-items:center;gap:.5rem;margin-bottom:0;font-size:.9rem;cursor:pointer}.data-library-item.svelte-1ggl8di input[type=checkbox]:where(.svelte-1ggl8di){width:auto;margin:0}.data-library-item.svelte-1ggl8di .name:where(.svelte-1ggl8di){flex:1;font-family:ui-monospace,monospace}.data-library-item.svelte-1ggl8di .size:where(.svelte-1ggl8di){color:#888;font-size:.8rem}.hint.svelte-1ggl8di{color:#666;font-size:.85rem;margin:-.5rem 0 1rem}.rename-link.svelte-1ggl8di{background:none;border:none;color:#035;text-decoration:underline;cursor:pointer;font-size:.85rem;padding:0 .25rem}.rename-link.svelte-1ggl8di:hover{color:#048}.rename-input.svelte-1ggl8di{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;padding:.15rem .4rem;font-size:.9rem;border:1px solid #aac;border-radius:3px;width:16rem}.rename-save.svelte-1ggl8di{padding:.2rem .6rem;border:1px solid #cce;border-radius:4px;background:#fff;cursor:pointer;font-size:.85rem;font-weight:600;color:#035;margin:0 .25rem}.rename-save.svelte-1ggl8di:hover:not(:disabled){background:#f0f4fa}.rename-warn.svelte-1ggl8di{font-size:.85rem;color:#5a4a14;margin:.25rem 0 0;background:#fff8e6;padding:.4rem .6rem;border-radius:4px;border:1px solid #f0d97a}.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}form.svelte-q1v986{display:flex;flex-direction:column;gap:.75rem;max-width:320px;margin:2rem auto}label.svelte-q1v986{font-size:.9em;margin-bottom:-.5rem}.error.svelte-q1v986{color:#b00020}form.svelte-jceovd{display:flex;flex-direction:column;gap:.75rem;max-width:400px;margin:2rem auto;font-family:system-ui,sans-serif}label.svelte-jceovd{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}.error.svelte-jceovd{color:#b00020}form.svelte-yw4nsr{display:flex;flex-direction:column;gap:.75rem;max-width:400px;margin:2rem auto;font-family:system-ui,sans-serif}label.svelte-yw4nsr{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}.error.svelte-yw4nsr{color:#b00020}.success.svelte-yw4nsr{max-width:400px;margin:2rem auto;padding:1.5rem;background:#f0f8ee;border-left:3px solid #4a7;border-radius:4px;font-family:system-ui,sans-serif}form.svelte-b6vc4l{display:flex;flex-direction:column;gap:.75rem;max-width:400px;margin:2rem auto;font-family:system-ui,sans-serif}label.svelte-b6vc4l{display:flex;flex-direction:column;gap:.25rem;font-size:.9em}.error.svelte-b6vc4l{color:#b00020}.page-nav.svelte-1rfqam7{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.back-nav.svelte-1rfqam7{margin-left:auto}.back-nav.svelte-1rfqam7 a:where(.svelte-1rfqam7){color:#035;font-weight:600;text-decoration:none}.back-nav.svelte-1rfqam7 a:where(.svelte-1rfqam7):hover{text-decoration:underline}.page.svelte-1rfqam7{max-width:60rem;margin:0 auto;padding:2rem 1.5rem;font-family:system-ui,sans-serif;color:#222}.muted.svelte-1rfqam7{color:#555}.error.svelte-1rfqam7{color:#b00020}.intro.svelte-1rfqam7{color:#444;line-height:1.5;margin-bottom:1.5rem}.intro.svelte-1rfqam7 code:where(.svelte-1rfqam7){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;background:#f4f4f4;padding:.05rem .3rem;border-radius:3px;font-size:.95em;word-break:break-word}section.svelte-1rfqam7{margin:1.5rem 0}h2.svelte-1rfqam7{font-size:1.1rem;color:#035;margin-bottom:.5rem}.hint.svelte-1rfqam7{color:#555;margin-bottom:.5rem;font-size:.95em}.upload-control.svelte-1rfqam7{display:flex;gap:.75rem;align-items:center;padding:.75rem;background:#f7f9fc;border:1px solid #dde6f0;border-radius:4px}.upload-control.svelte-1rfqam7 .status:where(.svelte-1rfqam7){color:#035;font-size:.95em}table.svelte-1rfqam7{width:100%;border-collapse:collapse}th.svelte-1rfqam7{text-align:left;padding:.5rem .75rem;border-bottom:2px solid #ccc;background:#f7f9fc;color:#035}td.svelte-1rfqam7{padding:.5rem .75rem;border-bottom:1px solid #eee}td.num.svelte-1rfqam7,th.num.svelte-1rfqam7{text-align:right;font-variant-numeric:tabular-nums}td.svelte-1rfqam7 code:where(.svelte-1rfqam7){font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.delete-btn.svelte-1rfqam7{padding:.3rem .7rem;border:1px solid #b00020;background:#fff;color:#b00020;border-radius:4px;cursor:pointer;font:inherit}.delete-btn.svelte-1rfqam7:hover:not(:disabled){background:#b00020;color:#fff}.delete-btn.svelte-1rfqam7:disabled{opacity:.5;cursor:not-allowed}.in-use-chip.svelte-1rfqam7{display:inline-block;background:#e8f0fe;color:#1a56db;border-radius:10px;padding:.1rem .5rem;font-size:.85em;font-weight:600;cursor:default}.page-nav.svelte-1dp7x6i{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.back-nav.svelte-1dp7x6i{margin-left:auto}.back-nav.svelte-1dp7x6i a:where(.svelte-1dp7x6i){color:#035;font-weight:600;text-decoration:none}.back-nav.svelte-1dp7x6i a:where(.svelte-1dp7x6i):hover{text-decoration:underline}.page.svelte-1dp7x6i{max-width:42rem;margin:0 auto;padding:2rem 1.5rem;font-family:system-ui,sans-serif;color:#222}.muted.svelte-1dp7x6i{color:#555}.small.svelte-1dp7x6i{font-size:.85em}.error.svelte-1dp7x6i{color:#b00020}.card.svelte-1dp7x6i{background:#fff;border:1px solid #dde6f0;border-radius:6px;padding:1.25rem 1.5rem;margin-bottom:1rem}.card.svelte-1dp7x6i h2:where(.svelte-1dp7x6i){font-size:1.1rem;color:#035;margin:0 0 .75rem}.meta.svelte-1dp7x6i{display:grid;grid-template-columns:max-content 1fr;gap:.4rem 1rem;margin:0 0 .75rem}.meta.svelte-1dp7x6i dt:where(.svelte-1dp7x6i){font-weight:600;color:#555}.meta.svelte-1dp7x6i dd:where(.svelte-1dp7x6i){margin:0}.meta.svelte-1dp7x6i code:where(.svelte-1dp7x6i){font-family:ui-monospace,SFMono-Regular,Menlo,monospace;background:#f4f4f4;padding:.05rem .3rem;border-radius:3px;font-size:.95em}label.svelte-1dp7x6i{display:flex;flex-direction:column;gap:.25rem;font-size:.9em;margin-bottom:.75rem}label.checkbox.svelte-1dp7x6i{flex-direction:row;align-items:center;flex-wrap:wrap}label.checkbox.svelte-1dp7x6i .field-hint:where(.svelte-1dp7x6i){flex-basis:100%;padding-left:1.5rem}input[type=text].svelte-1dp7x6i,input[type=url].svelte-1dp7x6i,select.svelte-1dp7x6i{padding:.5rem;font:inherit;border:1px solid #ccc;border-radius:4px;max-width:22rem}.subsection-title.svelte-1dp7x6i{font-size:1rem;color:#222;margin:1rem 0 .5rem}.hint.svelte-1dp7x6i{color:#777;font-size:.85em;margin:.25rem 0}.logo-preview.svelte-1dp7x6i{max-width:200px;max-height:80px;object-fit:contain;display:block;margin:.5rem 0}.remove-logo.svelte-1dp7x6i{padding:.4rem 1rem;background:#c00;color:#fff;border:none;border-radius:4px;cursor:pointer;font:inherit;margin-bottom:.75rem}.remove-logo.svelte-1dp7x6i:hover{background:#a00}.upload.svelte-1dp7x6i{flex-direction:column;gap:.25rem;cursor:pointer;margin-top:.5rem}.field-hint.svelte-1dp7x6i{color:#777;font-size:.85em}.save-row.svelte-1dp7x6i{display:flex;align-items:center;gap:1rem;margin-top:1.5rem;padding-top:1rem;border-top:1px solid #eee}.save-row.svelte-1dp7x6i .primary:where(.svelte-1dp7x6i){padding:.6rem 1.4rem;background:#14264a;color:#fff;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit;font-weight:600}.save-row.svelte-1dp7x6i .primary:where(.svelte-1dp7x6i):hover:not(:disabled){background:#1a3060}.save-row.svelte-1dp7x6i .primary:where(.svelte-1dp7x6i):disabled{opacity:.5;cursor:not-allowed}.save-row.svelte-1dp7x6i .saved:where(.svelte-1dp7x6i){color:#1a7a1a;font-weight:600}.page-nav.svelte-ea3v4{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.back-nav.svelte-ea3v4{margin-left:auto}.back-nav.svelte-ea3v4 a:where(.svelte-ea3v4){color:#035;font-weight:600;text-decoration:none}.back-nav.svelte-ea3v4 a:where(.svelte-ea3v4):hover{text-decoration:underline}.page.svelte-ea3v4{max-width:56rem;margin:0 auto;padding:2rem 1.5rem;font-family:system-ui,sans-serif;color:#222}.muted.svelte-ea3v4{color:#555}.small.svelte-ea3v4{font-size:.85em}.error.svelte-ea3v4{color:#b00020}.actions-row.svelte-ea3v4{display:flex;align-items:center;gap:1rem;margin-bottom:1rem}.actions-row.svelte-ea3v4 .primary:where(.svelte-ea3v4){padding:.55rem 1.2rem;background:#14264a;color:#fff;border:1px solid #14264a;border-radius:4px;cursor:pointer;font:inherit;font-weight:600}.actions-row.svelte-ea3v4 .primary:where(.svelte-ea3v4):hover{background:#1a3060}.card.svelte-ea3v4{background:#fff;border:1px solid #dde6f0;border-radius:6px;padding:1.25rem 1.5rem;margin-bottom:1rem}.card.svelte-ea3v4 h2:where(.svelte-ea3v4){font-size:1.1rem;color:#035;margin:0 0 .75rem}table.svelte-ea3v4{width:100%;border-collapse:collapse}th.svelte-ea3v4,td.svelte-ea3v4{padding:.5rem .6rem;text-align:left;border-bottom:1px solid #eee}th.svelte-ea3v4{font-size:.85em;color:#555;font-weight:600}tbody.svelte-ea3v4 tr.dim:where(.svelte-ea3v4){opacity:.7;background:#fafafa}td.action-col.svelte-ea3v4,th.action-col.svelte-ea3v4{text-align:right;white-space:nowrap}.role.svelte-ea3v4{font-size:.8em;padding:.1rem .5rem;border-radius:3px;background:#eef;color:#035;font-weight:600}.role-school_admin.svelte-ea3v4{background:#fde4b3;color:#6a4a0a}.danger.svelte-ea3v4{padding:.35rem .85rem;background:#fff;color:#b00020;border:1px solid #b00020;border-radius:4px;cursor:pointer;font:inherit}.danger.svelte-ea3v4:hover:not(:disabled){background:#b00020;color:#fff}.danger.svelte-ea3v4:disabled{opacity:.5;cursor:not-allowed}.abuse-report-list-page.svelte-1mnd34j{font-family:inherit}.page-nav.svelte-1mnd34j{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.back-link.svelte-1mnd34j{color:#6b7280;text-decoration:none;font-size:.9rem}.back-link.svelte-1mnd34j:hover{color:#374151}.page.svelte-1mnd34j{max-width:800px;margin:2rem auto;padding:0 1.5rem}.muted.svelte-1mnd34j{color:#6b7280}.error.svelte-1mnd34j{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:.75rem 1rem}.empty-state.svelte-1mnd34j{color:#6b7280;font-style:italic;text-align:center;padding:3rem 0}.report-list.svelte-1mnd34j{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.75rem}.report-card.svelte-1mnd34j{border:1px solid #e5e7eb;border-radius:8px;background:#fff;transition:box-shadow .15s}.report-card.svelte-1mnd34j:hover{box-shadow:0 2px 8px #00000014}.report-card-link.svelte-1mnd34j{display:block;padding:1rem 1.25rem;text-decoration:none;color:inherit}.report-card-header.svelte-1mnd34j{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.report-id.svelte-1mnd34j{font-weight:600;color:#1d4ed8;font-size:.95rem}.report-time.svelte-1mnd34j{font-size:.8rem;color:#9ca3af}.report-meta.svelte-1mnd34j{font-size:.85rem;color:#374151;margin-bottom:.5rem;display:flex;gap:.4rem;flex-wrap:wrap}.meta-label.svelte-1mnd34j{color:#6b7280}.meta-sep.svelte-1mnd34j{color:#d1d5db}.report-note.svelte-1mnd34j{font-size:.875rem;color:#4b5563;line-height:1.4}.abuse-report-detail-page.svelte-159skn2{font-family:inherit}.page-nav.svelte-159skn2{display:flex;align-items:center;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.back-link.svelte-159skn2{color:#6b7280;text-decoration:none;font-size:.9rem}.back-link.svelte-159skn2:hover{color:#374151}h2.svelte-159skn2{font-size:1rem;font-weight:600;color:#374151;margin:0 0 .75rem}.page.svelte-159skn2{max-width:800px;margin:2rem auto;padding:0 1.5rem;display:flex;flex-direction:column;gap:1.5rem}.muted.svelte-159skn2{color:#6b7280}.error.svelte-159skn2{color:#dc2626;background:#fef2f2;border:1px solid #fecaca;border-radius:6px;padding:.75rem 1rem;margin:0}section.svelte-159skn2{border:1px solid #e5e7eb;border-radius:8px;padding:1.25rem;background:#fff}.meta-row.svelte-159skn2{display:flex;gap:.5rem;font-size:.875rem;margin-bottom:.4rem}.meta-label.svelte-159skn2{color:#6b7280;min-width:80px}.meta-value.svelte-159skn2{color:#111827;font-weight:500}.reporter-note.svelte-159skn2{white-space:pre-wrap;color:#374151;line-height:1.5;margin:0}.code-snapshot.svelte-159skn2{background:#1e293b;color:#e2e8f0;padding:1rem;border-radius:6px;overflow-x:auto;font-size:.85rem;line-height:1.5;white-space:pre;margin:0}.chat-messages.svelte-159skn2{display:flex;flex-direction:column;gap:.75rem}.chat-message.svelte-159skn2{border-radius:8px;padding:.75rem 1rem;max-width:85%}.chat-message.user.svelte-159skn2{background:#eff6ff;align-self:flex-start;border:1px solid #bfdbfe}.chat-message.assistant.svelte-159skn2{background:#f0fdf4;align-self:flex-end;border:1px solid #bbf7d0}.chat-sender.svelte-159skn2{font-size:.75rem;font-weight:600;color:#6b7280;margin-bottom:.25rem}.chat-content.svelte-159skn2{font-size:.875rem;color:#111827;line-height:1.5;white-space:pre-wrap}.chat-time.svelte-159skn2{font-size:.7rem;color:#9ca3af;margin-top:.25rem;text-align:right}.action-radios.svelte-159skn2{display:flex;flex-direction:column;gap:.6rem;margin-bottom:1rem}.radio-label.svelte-159skn2{display:flex;align-items:center;gap:.5rem;font-size:.9rem;cursor:pointer;color:#374151}.remove-option.svelte-159skn2{color:#dc2626;font-weight:500}.reviewer-notes-field.svelte-159skn2{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.reviewer-notes-field.svelte-159skn2 label:where(.svelte-159skn2){font-size:.875rem;color:#374151;font-weight:500}.reviewer-notes-field.svelte-159skn2 textarea:where(.svelte-159skn2){width:100%;padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:6px;font-size:.875rem;font-family:inherit;resize:vertical;box-sizing:border-box}.action-buttons.svelte-159skn2{display:flex;gap:.75rem;align-items:center}.cancel-btn.svelte-159skn2{padding:.5rem 1.25rem;border:1px solid #d1d5db;border-radius:6px;font-size:.9rem;color:#374151;text-decoration:none;background:#fff}.cancel-btn.svelte-159skn2:hover{background:#f9fafb}.submit-btn.svelte-159skn2{padding:.5rem 1.25rem;background:#1d4ed8;color:#fff;border:none;border-radius:6px;font-size:.9rem;cursor:pointer;font-weight:500}.submit-btn.svelte-159skn2:hover:not(:disabled){background:#1e40af}.submit-btn.svelte-159skn2:disabled{opacity:.5;cursor:not-allowed}.toast.svelte-159skn2{background:#059669;color:#fff;padding:.75rem 1.25rem;border-radius:8px;font-weight:500;text-align:center;animation:svelte-159skn2-fade-in .2s ease}@keyframes svelte-159skn2-fade-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.page-nav.svelte-mkqxnv{display:flex;align-items:center;gap:1rem;padding:.4rem 1rem;background:#f8f9fa;border-bottom:1px solid #e0e0e0}.header-link.svelte-mkqxnv{color:#035;text-decoration:none;font-weight:600;padding:.4rem .8rem;border-radius:4px}.header-link.svelte-mkqxnv:hover{background:#eef}.page.svelte-mkqxnv{padding:2rem;max-width:84rem;margin:0 auto;font-family:system-ui,sans-serif}.header-block.svelte-mkqxnv{margin-bottom:1.5rem}.header-block.svelte-mkqxnv h2:where(.svelte-mkqxnv){margin:0 0 .3rem}.student-id-row.svelte-mkqxnv{color:#666;margin-bottom:.5rem}.student-id-row.svelte-mkqxnv .email:where(.svelte-mkqxnv){margin-left:.4rem}.stats-row.svelte-mkqxnv{display:flex;gap:1.5rem;flex-wrap:wrap;color:#333;font-size:.9rem;padding:.6rem .8rem;background:#fafbfd;border:1px solid #e0e4ec;border-radius:4px}.stats-row.svelte-mkqxnv strong:where(.svelte-mkqxnv){color:#1a4d63}.dim.svelte-mkqxnv{color:#888}.small.svelte-mkqxnv{font-size:.8rem}.mono.svelte-mkqxnv{font-family:ui-monospace,monospace}.muted.svelte-mkqxnv{color:#666;font-style:italic}.error.svelte-mkqxnv{color:#a33}table.svelte-mkqxnv{width:100%;border-collapse:collapse}th.svelte-mkqxnv,td.svelte-mkqxnv{padding:.5rem .6rem;border-bottom:1px solid #eee;text-align:left;vertical-align:top}th.svelte-mkqxnv{font-weight:600;color:#666;font-size:.85rem;background:#fafbfd}a.svelte-mkqxnv{color:#035;text-decoration:none;font-weight:600}a.svelte-mkqxnv:hover{text-decoration:underline}.type-tag.svelte-mkqxnv{display:inline-block;margin-left:.4rem;padding:.05rem .35rem;font-size:.7rem;font-weight:600;background:#d4ecf7;color:#1a4d63;border-radius:4px}.type-tag.type-lp.svelte-mkqxnv{background:#fbe6c9;color:#6b4700}.verdict.svelte-mkqxnv{display:inline-block;padding:.05rem .4rem;border-radius:4px;font-size:.8rem;font-weight:600}.verdict.pass.svelte-mkqxnv{background:#d4f7d4;color:#1a6320}.verdict.fail.svelte-mkqxnv{background:#f7d4d4;color:#7a2020}.verdict.none.svelte-mkqxnv{background:#eee;color:#555}.expand-btn.svelte-mkqxnv{background:none;border:1px solid #ccc;padding:.15rem .5rem;border-radius:4px;cursor:pointer;font:inherit;font-size:.8rem}.expand-btn.svelte-mkqxnv:hover{background:#f4f7fb}.conv-row.svelte-mkqxnv td:where(.svelte-mkqxnv){background:#fbfaf3;padding:.75rem 1rem}.turns.svelte-mkqxnv{margin:0;padding-left:1.2rem}.turn.svelte-mkqxnv{margin-bottom:.8rem}.turn-head.svelte-mkqxnv{display:flex;gap:.6rem;align-items:center;margin-bottom:.25rem}.turn-kind.svelte-mkqxnv{display:inline-block;padding:.05rem .4rem;font-size:.75rem;font-weight:600;border-radius:4px;background:#eee;color:#333;font-family:ui-monospace,monospace}.turn-kind.kind-review.svelte-mkqxnv{background:#d4ecf7;color:#1a4d63}.turn-kind.kind-socratic.svelte-mkqxnv{background:#e6d4f7;color:#4a1a63}.turn-kind.kind-hint.svelte-mkqxnv{background:#fbe6c9;color:#6b4700}.turn-kind.kind-run.svelte-mkqxnv{background:#d4f7d4;color:#1a6320}.turn-msg.svelte-mkqxnv,.turn-resp.svelte-mkqxnv{margin:.15rem 0}.turn-msg.svelte-mkqxnv pre:where(.svelte-mkqxnv),.turn-resp.svelte-mkqxnv pre:where(.svelte-mkqxnv){margin:.1rem 0 0 1.2rem;padding:.4rem .6rem;background:#fff;border:1px solid #ecebd8;border-radius:4px;font-family:ui-monospace,monospace;font-size:.8rem;white-space:pre-wrap;word-break:break-word;max-height:300px;overflow-y:auto}.session-expired-banner.svelte-2ghsvt{position:fixed;top:12px;left:50%;transform:translate(-50%);z-index:9999;background:#fef3c7;border:1px solid #d97706;color:#78350f;padding:10px 16px;border-radius:8px;box-shadow:0 4px 12px #00000026;display:flex;align-items:center;gap:12px;font-size:14px;max-width:90vw}.msg.svelte-2ghsvt{font-weight:500}button.svelte-2ghsvt{background:#d97706;color:#fff;border:none;padding:6px 14px;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer}button.svelte-2ghsvt:hover{background:#b45309}
