.app-header[data-v-48a13218]{display:flex;align-items:center;gap:16px;min-height:58px;padding:10px 28px;background:#fffffff0;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand[data-v-48a13218]{font-weight:750;font-size:16px;color:var(--ink);text-decoration:none;white-space:nowrap;letter-spacing:-.2px}.nav[data-v-48a13218]{display:flex;gap:4px;margin-left:auto}.nav-item[data-v-48a13218]{padding:6px 12px;border-radius:7px;font-size:14px;color:var(--ink-2);text-decoration:none;white-space:nowrap}.nav-item[data-v-48a13218]:hover{color:var(--brand);background:var(--brand-soft)}.nav-item.active[data-v-48a13218]{color:var(--brand);background:var(--brand-soft);font-weight:600}@media(max-width:420px){.app-header[data-v-48a13218]{padding:10px 12px;gap:8px}.brand[data-v-48a13218]{font-size:14px}.nav-item[data-v-48a13218]{padding:5px 9px;font-size:13px}}.app-shell[data-v-7a7a37b1]{display:flex;flex-direction:column;height:100vh}.app-content[data-v-7a7a37b1]{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.md[data-v-110744f9] h2{font-size:20px;margin:4px 0 10px}.md[data-v-110744f9] p{margin:8px 0}.md[data-v-110744f9] code{background:var(--brand-soft);color:var(--brand);padding:1px 6px;border-radius:5px;font-size:14.5px}.md[data-v-110744f9] pre{background:var(--code-bg);color:var(--code-ink);padding:14px 16px;border-radius:10px;overflow-x:auto}.md[data-v-110744f9] pre code{background:none;color:inherit;padding:0}.caption[data-v-8e251e54]{font-weight:600;margin-bottom:10px;color:var(--ink-2);font-size:15px}.actions[data-v-8e251e54]{margin-top:10px;display:flex;gap:8px}.teacher-agent[data-v-ad4fd2a0]{margin-top:12px}.teacher-toggle[data-v-ad4fd2a0]{border:1px solid var(--line);border-radius:999px;background:var(--brand-soft);color:var(--brand);padding:6px 14px;font-size:13px;cursor:pointer}.teacher-toggle[data-v-ad4fd2a0]:hover{border-color:var(--brand)}.teacher-panel[data-v-ad4fd2a0]{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:12px 14px;background:#fff}.teacher-empty[data-v-ad4fd2a0]{margin:0 0 8px;color:var(--ink-2);font-size:13px;line-height:1.6}.teacher-turns[data-v-ad4fd2a0]{display:grid;gap:8px}.teacher-turn[data-v-ad4fd2a0]{display:grid;gap:2px}.teacher-turn .teacher-role[data-v-ad4fd2a0]{font-size:11px;color:var(--ink-2)}.teacher-turn p[data-v-ad4fd2a0]{margin:0;font-size:13.5px;line-height:1.6}.teacher-turn.student p[data-v-ad4fd2a0]{color:var(--ink)}.teacher-turn.teacher p[data-v-ad4fd2a0]{color:var(--brand)}.teacher-loading[data-v-ad4fd2a0]{margin:0;color:var(--ink-2);font-size:12.5px}.teacher-error[data-v-ad4fd2a0]{margin:0;color:#b91c1c;font-size:12.5px}.teacher-input-row[data-v-ad4fd2a0]{display:flex;gap:8px;margin-top:10px}.teacher-input-row input[data-v-ad4fd2a0]{flex:1;border:1px solid var(--line);border-radius:8px;padding:7px 10px;font-size:13.5px}.teacher-direct[data-v-ad4fd2a0]{margin-top:8px;border:none;background:none;color:var(--ink-2);font-size:12.5px;text-decoration:underline;cursor:pointer;padding:0}.teacher-direct[data-v-ad4fd2a0]:hover{color:var(--brand)}h3[data-v-bdd49e30]{margin:0 0 12px;font-size:17px}.opt-btn.picked[data-v-bdd49e30]{border-color:var(--brand);background:var(--brand-soft)}.explain[data-v-bdd49e30]{margin-top:8px;color:var(--ink-2)}.explain[data-v-bdd49e30] code{background:var(--brand-soft);color:var(--brand);padding:1px 6px;border-radius:4px}.pred-badge[data-v-22d1094c]{display:inline-block;font-size:13px;font-weight:600;background:var(--warn-soft);color:#92400e;padding:2px 12px;border-radius:99px;margin-bottom:10px}h3[data-v-22d1094c]{margin:12px 0;font-size:17px}.codeblock.small[data-v-22d1094c]{font-size:14px;padding:12px 14px}.explain[data-v-22d1094c]{margin-top:8px;color:var(--ink-2)}.explain[data-v-22d1094c] code{background:var(--brand-soft);color:var(--brand);padding:1px 6px;border-radius:4px}h3[data-v-0f74a8d1]{margin:0 0 14px;font-size:17px}.zones[data-v-0f74a8d1]{display:flex;gap:12px;align-items:stretch;flex-wrap:wrap}.zone[data-v-0f74a8d1]{flex:1;min-width:240px;min-height:120px;border:2px dashed var(--line);border-radius:10px;padding:10px}.zone.answer[data-v-0f74a8d1]{border-color:var(--brand);background:var(--brand-soft)}.zone-title[data-v-0f74a8d1]{font-size:13px;color:var(--ink-2);margin-bottom:8px}.arrow[data-v-0f74a8d1]{align-self:center;font-size:22px;color:var(--ink-2)}.pblock[data-v-0f74a8d1]{background:var(--code-bg);color:var(--code-ink);font-family:monospace;font-size:13.5px;border-radius:7px;padding:7px 12px;margin:6px 0;cursor:grab;-webkit-user-select:none;user-select:none;display:flex;gap:8px;align-items:baseline}.pblock[data-v-0f74a8d1]:active{cursor:grabbing}.pblock .idx[data-v-0f74a8d1]{color:var(--ink-2);font-size:12px}.pblock.good[data-v-0f74a8d1]{outline:2px solid var(--ok);background:#052e16}.pblock.bad[data-v-0f74a8d1]{outline:2px solid var(--bad);background:#450a0a}.empty[data-v-0f74a8d1]{color:var(--ink-2);font-size:13px;text-align:center;padding:18px 0}.controls[data-v-0f74a8d1]{margin-top:14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.done-badge[data-v-0f74a8d1]{color:var(--ok);font-weight:600}.wrong-badge[data-v-0f74a8d1]{color:var(--bad)}.hint[data-v-0f74a8d1]{margin-top:10px;background:var(--warn-soft);padding:10px 14px;border-radius:8px}.caption[data-v-8df78248]{font-weight:600;margin-bottom:10px;color:var(--ink-2);font-size:15px}.codeblock.small[data-v-8df78248]{font-size:14px;padding:12px 14px}.viz-row[data-v-8df78248]{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch;margin:14px 0}.phase-chip[data-v-8df78248]{color:#fff;font-weight:600;font-size:14px;padding:8px 16px;border-radius:8px;align-self:center}.i-box[data-v-8df78248]{display:flex;flex-direction:column;align-items:center;justify-content:center;border:2px solid var(--brand);border-radius:10px;min-width:76px;padding:6px 12px}.i-label[data-v-8df78248]{font-size:13px;color:var(--brand);font-weight:700}.i-val[data-v-8df78248]{font-size:26px;font-weight:700;font-family:monospace}.output-box[data-v-8df78248]{flex:1;min-width:160px;border:1.5px dashed var(--line);border-radius:10px;padding:8px 12px}.out-title[data-v-8df78248]{font-size:12.5px;color:var(--ink-2);margin-bottom:4px}.out-body[data-v-8df78248]{display:flex;flex-wrap:wrap;gap:6px;min-height:30px;align-items:center}.out-item[data-v-8df78248]{background:var(--ok-soft);color:var(--ok);font-weight:700;font-family:monospace;padding:2px 10px;border-radius:6px;font-size:16px}.out-empty[data-v-8df78248]{color:var(--ink-2);font-size:13px}.desc[data-v-8df78248]{background:var(--brand-soft);border-radius:8px;padding:10px 14px;font-size:15px}.controls[data-v-8df78248]{margin-top:14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.counter[data-v-8df78248]{color:var(--ink-2);font-size:14px;font-family:monospace}.done-badge[data-v-8df78248]{color:var(--ok);font-weight:600}.placeholder[data-v-8df78248]{color:var(--ink-2);text-align:center;padding:30px}.box-code[data-v-8df78248]{margin-bottom:12px}.box-code .hl[data-v-8df78248]{background:#facc1540;border-radius:3px}.box-row[data-v-8df78248]{display:flex;flex-wrap:wrap;gap:14px;margin:14px 0}.var-box[data-v-8df78248]{min-width:96px;border:2px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;transition:border-color .3s,box-shadow .3s,transform .3s}.var-box.changed[data-v-8df78248]{border-color:var(--brand);box-shadow:0 0 0 3px #2563eb2e;transform:translateY(-2px)}.var-box-name[data-v-8df78248]{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;padding:3px 8px;background:var(--bg-soft);color:var(--ink-2);text-align:center}.var-box-val[data-v-8df78248]{font-size:22px;font-weight:600;text-align:center;padding:12px 10px;font-family:ui-monospace,Consolas,monospace}.var-box-empty[data-v-8df78248]{color:#cbd5e1}.trace-code[data-v-1235bdad]{background:var(--code-bg);color:var(--code-ink);border-radius:10px;padding:12px 0;font-family:JetBrains Mono,Consolas,monospace;font-size:13.5px;line-height:1.7;overflow-x:auto;margin:0}.line[data-v-1235bdad]{display:flex;padding:0 12px}.line.exec[data-v-1235bdad]{background:#facc154d}.ln[data-v-1235bdad]{width:34px;flex-shrink:0;text-align:right;margin-right:14px;color:#64748b;-webkit-user-select:none;user-select:none}.line.exec .ln[data-v-1235bdad]{color:#facc15;font-weight:700}.src[data-v-1235bdad]{white-space:pre}.vars[data-v-c8df5542]{min-width:0}.panel-title[data-v-c8df5542]{font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:8px;letter-spacing:.5px}.var-row[data-v-c8df5542]{margin-bottom:10px}.var-cell[data-v-c8df5542]{display:flex;align-items:center;gap:10px;border:1.5px solid var(--line);border-radius:8px;padding:6px 12px;background:#fff}.var-name[data-v-c8df5542]{font-weight:700;font-family:monospace;color:var(--brand);min-width:18px}.var-val[data-v-c8df5542]{font-family:monospace;font-size:16px;font-weight:600}.var-val.uninit[data-v-c8df5542]{color:#9ca3af;font-style:italic;font-weight:400}.var-val.ptr[data-v-c8df5542]{color:#7c3aed}.var-meta[data-v-c8df5542]{font-size:11.5px;color:#9ca3af;margin-top:2px;padding-left:4px;font-family:monospace}.empty[data-v-c8df5542]{color:var(--ink-2);font-size:13px}.panel-title[data-v-ee453eb7]{font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:8px}.empty[data-v-ee453eb7]{color:var(--ink-2);font-size:13px}.heap-obj[data-v-ee453eb7]{border:1.5px solid var(--brand);border-radius:10px;padding:10px 12px;margin-bottom:10px;background:#fff;display:inline-block;margin-right:10px;vertical-align:top}.obj-addr[data-v-ee453eb7]{font-family:monospace;font-size:11.5px;color:var(--brand);margin-bottom:6px}.arr-row[data-v-ee453eb7]{display:flex;gap:4px}.arr-cell[data-v-ee453eb7]{text-align:center}.cell-val[data-v-ee453eb7]{border:1.5px solid var(--line);border-radius:6px;min-width:40px;padding:4px 8px;font-family:monospace;font-weight:700;font-size:15px;background:var(--brand-soft)}.cell-addr[data-v-ee453eb7]{font-family:monospace;font-size:10.5px;color:#9ca3af;margin-top:2px}.struct-type[data-v-ee453eb7]{font-size:12px;color:var(--ink-2);margin-bottom:4px}.member[data-v-ee453eb7]{font-family:monospace;font-size:13.5px;padding:2px 0}.panel-title[data-v-124ff00e]{font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:8px}.diagram[data-v-124ff00e]{position:relative}.row[data-v-124ff00e]{position:absolute;left:0;display:flex;align-items:center;gap:10px;background:#fff;border:1.5px solid var(--line);border-radius:8px;padding:5px 14px;min-width:170px}.vname[data-v-124ff00e]{font-family:monospace;font-weight:700;color:var(--brand)}.veq[data-v-124ff00e]{color:var(--ink-2)}.vval[data-v-124ff00e]{font-family:monospace;font-size:16px;font-weight:600}.vval.ptr[data-v-124ff00e]{color:#7c3aed;background:#f5f3ff;border-radius:5px;padding:0 8px;font-size:14px}.arrows[data-v-124ff00e]{position:absolute;left:190px;top:0;pointer-events:none}.legend[data-v-124ff00e]{font-size:13px;color:var(--ink-2);margin-top:6px}.legend-line[data-v-124ff00e]{display:inline-block;width:36px;height:2px;background:#7c3aed;vertical-align:middle;margin-right:6px;position:relative}.legend-line[data-v-124ff00e]:after{content:"";position:absolute;right:-1px;top:-3px;border:4px solid transparent;border-left-color:#7c3aed}.arr-view[data-v-c119bc85]{margin:6px 0}.arr-name[data-v-c119bc85]{font-family:ui-monospace,Consolas,monospace;font-size:13px;font-weight:700;color:var(--brand, #2563eb);margin-bottom:4px}.arr-cells[data-v-c119bc85]{display:inline-flex;gap:4px}.arr-cell[data-v-c119bc85]{width:44px;border:1.5px solid var(--border, #d1d5db);border-radius:6px;overflow:hidden;background:#fff;transition:border-color .2s,box-shadow .2s}.arr-cell.active[data-v-c119bc85]{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b4d}.arr-idx[data-v-c119bc85]{font-size:10px;text-align:center;color:var(--ink-2, #6b7280);background:var(--bg, #f3f4f6);font-family:ui-monospace,Consolas,monospace}.arr-val[data-v-c119bc85]{font-size:14.5px;font-weight:600;text-align:center;padding:5px 2px;font-family:ui-monospace,Consolas,monospace}.arr-active-note[data-v-c119bc85]{margin-top:4px;font-size:12px;color:#b45309}.pv[data-v-d5569563]{display:flex;flex-direction:column;gap:10px}.pv-rel[data-v-d5569563]{display:flex;align-items:center;gap:4px;flex-wrap:wrap}.pv-node[data-v-d5569563]{border:2px solid var(--border, #d1d5db);border-radius:8px;background:#fff;text-align:center;min-width:86px;overflow:hidden}.pv-ptr[data-v-d5569563]{border-color:#8b5cf6}.pv-role[data-v-d5569563]{font-size:10px;color:var(--ink-2, #6b7280);background:var(--bg, #f3f4f6);padding:1px 4px}.pv-name[data-v-d5569563]{font-family:ui-monospace,Consolas,monospace;font-size:14px;font-weight:700;color:var(--brand, #2563eb)}.pv-ptr .pv-name[data-v-d5569563]{color:#8b5cf6}.pv-addr[data-v-d5569563]{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;color:var(--ink-2, #6b7280);padding-bottom:3px}.pv-arrow[data-v-d5569563]{display:flex;flex-direction:column;align-items:center}.pv-dangling[data-v-d5569563]{font-size:11px;color:#dc2626}.pv-note[data-v-d5569563]{font-size:12px;color:var(--ink-2, #6b7280)}.pv-vars[data-v-d5569563]{display:flex;flex-wrap:wrap;gap:6px}.pv-var-chip[data-v-d5569563]{border:1px solid var(--border, #d1d5db);border-radius:6px;background:#fff;padding:3px 8px;font-family:ui-monospace,Consolas,monospace;font-size:12.5px}.pv-var-chip-name[data-v-d5569563]{color:var(--brand, #2563eb);font-weight:700;margin-right:5px}.pv-empty[data-v-d5569563]{color:#cbd5e1;font-size:13px}.tv[data-v-3d23c6c6]{display:flex;flex-direction:column;gap:16px}.tv-actions[data-v-3d23c6c6]{display:flex;gap:10px;align-items:center;margin-top:12px;flex-wrap:wrap}.counter[data-v-3d23c6c6]{color:var(--ink-2);font-family:monospace;font-size:14px}.loading-hint[data-v-3d23c6c6]{color:var(--brand);font-size:14px}.code-editor[data-v-3d23c6c6]{width:100%;background:var(--code-bg);color:var(--code-ink);border:none;border-radius:10px;padding:14px 16px;font-family:monospace;font-size:14px;line-height:1.7;resize:vertical}.tv-viz[data-v-3d23c6c6]{display:flex;flex-direction:column;gap:14px}.tv-grid[data-v-3d23c6c6]{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.tv-col[data-v-3d23c6c6]{display:flex;flex-direction:column;gap:14px}.panel[data-v-3d23c6c6]{border:1px solid var(--border, #e5e7eb);border-radius:10px;padding:10px 12px;background:#fff}.exception[data-v-3d23c6c6]{font-family:monospace;font-size:13px;white-space:pre-wrap}.tv-stdout[data-v-3d23c6c6]{background:#0b1220;border-radius:10px;padding:12px 16px}.tv-stdout .panel-title[data-v-3d23c6c6]{color:#94a3b8}.stdout[data-v-3d23c6c6]{margin:0;font-family:monospace;font-size:15px;color:#4ade80;white-space:pre-wrap}.empty[data-v-3d23c6c6]{color:#64748b;font-size:13px}.panel-title[data-v-3d23c6c6]{font-size:12.5px;font-weight:700;color:var(--ink-2);margin-bottom:8px;letter-spacing:.5px}.caption[data-v-fd92d968]{font-weight:600;margin-bottom:12px;color:var(--ink-2);font-size:15px}.stdin-note[data-v-fd92d968]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px;padding:7px 12px;background:var(--warn-soft);border-radius:8px;font-size:13px}.stdin-label[data-v-fd92d968]{color:#92400e}.stdin-note code[data-v-fd92d968]{font-family:ui-monospace,Consolas,monospace;color:var(--ink)}h3[data-v-1dbb3910]{margin:0 0 10px;font-size:17px}.code-editor[data-v-1dbb3910]{width:100%;background:var(--code-bg);color:var(--code-ink);border:none;border-radius:10px;padding:14px 16px;font-family:monospace;font-size:14px;line-height:1.7;resize:vertical;margin-top:12px}.submit-row[data-v-1dbb3910]{display:flex;gap:12px;align-items:center;margin-top:12px}.hint[data-v-1dbb3910]{color:var(--ink-2);font-size:14px}.detail[data-v-1dbb3910]{background:#000000d9;color:#fca5a5;padding:10px 12px;border-radius:8px;font-size:12.5px;margin-top:8px;white-space:pre-wrap;max-height:200px;overflow:auto}h3[data-v-85745131]{margin:0 0 12px}ul[data-v-85745131]{padding-left:20px;margin:0}li[data-v-85745131]{margin:6px 0}li[data-v-85745131] code{background:var(--brand-soft);color:var(--brand);padding:1px 6px;border-radius:4px}.complete-banner[data-v-85745131]{margin-top:16px;background:var(--ok-soft);color:var(--ok);font-weight:700;text-align:center;padding:12px;border-radius:10px}.vlab[data-v-e9370cf0]{border:1px solid var(--border, #e5e7eb);border-radius:12px;padding:16px;background:var(--bg-soft, #fafafa)}.vlab-grid[data-v-e9370cf0]{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:640px){.vlab-grid[data-v-e9370cf0]{grid-template-columns:1fr}}.vlab-code textarea[data-v-e9370cf0]{width:100%;box-sizing:border-box;font-family:ui-monospace,Cascadia Code,Consolas,monospace;font-size:14px;padding:10px 12px;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:#fff;resize:vertical;line-height:1.6}.vlab-actions[data-v-e9370cf0]{display:flex;gap:8px;margin-top:10px}.vlab-err[data-v-e9370cf0]{color:#dc2626;font-size:13px;margin:8px 0 0}.vlab-boxes[data-v-e9370cf0]{display:flex;flex-wrap:wrap;gap:14px;align-content:flex-start}.var-box[data-v-e9370cf0]{width:110px;border:2px solid var(--border, #d1d5db);border-radius:10px;overflow:hidden;background:#fff;transition:border-color .25s,box-shadow .25s;position:relative}.var-box.flash[data-v-e9370cf0]{border-color:var(--brand, #2563eb);box-shadow:0 0 0 3px #2563eb2e}.var-name[data-v-e9370cf0]{font-family:ui-monospace,Consolas,monospace;font-size:12.5px;padding:4px 8px;background:var(--bg, #f3f4f6);color:var(--ink-2, #6b7280);text-align:center}.var-value[data-v-e9370cf0]{font-size:22px;font-weight:600;text-align:center;padding:14px 8px;font-family:ui-monospace,Consolas,monospace}.var-empty[data-v-e9370cf0]{color:#cbd5e1}.var-delta[data-v-e9370cf0]{position:absolute;bottom:100%;left:50%;transform:translate(-50%);background:var(--brand, #2563eb);color:#fff;font-size:11.5px;padding:2px 8px;border-radius:999px;white-space:nowrap;margin-bottom:4px}.fade-enter-active[data-v-e9370cf0],.fade-leave-active[data-v-e9370cf0]{transition:opacity .3s}.fade-enter-from[data-v-e9370cf0],.fade-leave-to[data-v-e9370cf0]{opacity:0}.vlab-tasks[data-v-e9370cf0]{margin-top:14px;padding-top:12px;border-top:1px dashed var(--border, #e5e7eb)}.vlab-task[data-v-e9370cf0]{margin:0 0 6px;font-size:14px}.vlab-task.done[data-v-e9370cf0]{color:#16a34a}.vlab-hint[data-v-e9370cf0]{margin:0 0 8px;font-size:13px;color:var(--ink-2, #6b7280)}.btn.small[data-v-e9370cf0]{font-size:13px;padding:4px 10px}.alab[data-v-5163d7d1]{border:1px solid var(--border, #e5e7eb);border-radius:12px;padding:16px;background:var(--bg-soft, #fafafa)}.alab-strip-wrap[data-v-5163d7d1]{position:relative;overflow-x:auto;padding-bottom:30px}.alab-strip[data-v-5163d7d1]{display:inline-flex;align-items:stretch;gap:6px;min-width:max-content}.alab-name[data-v-5163d7d1]{display:flex;align-items:center;padding:0 10px;font-family:ui-monospace,Consolas,monospace;font-size:15px;font-weight:600;color:var(--brand, #2563eb)}.alab-cell[data-v-5163d7d1]{width:58px;border:2px solid var(--border, #d1d5db);border-radius:8px;overflow:hidden;background:#fff;transition:border-color .25s,box-shadow .25s}.alab-cell.cur[data-v-5163d7d1]{border-color:var(--brand, #2563eb);box-shadow:0 0 0 3px #2563eb33}.alab-cell.changed[data-v-5163d7d1]{border-color:#16a34a}.alab-cell.changed .alab-val[data-v-5163d7d1]{color:#16a34a}.alab-idx[data-v-5163d7d1]{font-size:11px;text-align:center;color:var(--ink-2, #6b7280);background:var(--bg, #f3f4f6);padding:2px 0;font-family:ui-monospace,Consolas,monospace}.alab-val[data-v-5163d7d1]{font-size:19px;font-weight:600;text-align:center;padding:10px 4px;font-family:ui-monospace,Consolas,monospace}.alab-pointer[data-v-5163d7d1]{position:relative;height:22px;margin-top:-26px;color:var(--brand, #2563eb);font-size:13px;font-weight:700;transition:left .3s ease}.alab-controls[data-v-5163d7d1]{display:flex;gap:8px;margin-top:10px}.alab-output[data-v-5163d7d1]{margin-top:12px;border:1px solid var(--border, #e5e7eb);border-radius:8px;background:#0f172a;padding:8px 12px}.alab-out-title[data-v-5163d7d1]{font-size:11.5px;color:#94a3b8}.alab-out-body[data-v-5163d7d1]{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.alab-out-item[data-v-5163d7d1]{color:#4ade80;font-family:ui-monospace,Consolas,monospace;font-size:15px}.alab-out-empty[data-v-5163d7d1]{color:#475569;font-size:13px}.alab-hint[data-v-5163d7d1]{margin-top:10px;font-size:13.5px;color:var(--ink-2, #6b7280)}.btn[data-v-5163d7d1]:disabled{opacity:.5;cursor:not-allowed}.pop-enter-active[data-v-5163d7d1]{transition:transform .25s ease}.pop-enter-from[data-v-5163d7d1]{transform:scale(1.35);color:var(--brand, #2563eb)}.mfl[data-v-de2be7cb]{border:1px solid var(--border, #e5e7eb);border-radius:12px;padding:16px;background:var(--bg-soft, #fafafa)}.mfl-strip-wrap[data-v-de2be7cb]{overflow-x:auto}.mfl-strip[data-v-de2be7cb]{display:inline-flex;gap:6px;min-width:max-content}.mfl-name[data-v-de2be7cb]{display:flex;align-items:center;padding:0 10px;font-family:ui-monospace,Consolas,monospace;font-size:15px;font-weight:600;color:var(--brand, #2563eb)}.mfl-cell[data-v-de2be7cb]{width:58px;border:2px solid var(--border, #d1d5db);border-radius:8px;overflow:hidden;background:#fff;transition:border-color .25s,box-shadow .25s}.mfl-cell.cur[data-v-de2be7cb]{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b40}.mfl-cell.max[data-v-de2be7cb]{border-color:#16a34a;box-shadow:0 0 0 3px #16a34a33}.mfl-cell.max .mfl-val[data-v-de2be7cb]{color:#16a34a}.mfl-idx[data-v-de2be7cb]{font-size:11px;text-align:center;color:var(--ink-2, #6b7280);background:var(--bg, #f3f4f6);padding:2px 0;font-family:ui-monospace,Consolas,monospace}.mfl-val[data-v-de2be7cb]{font-size:19px;font-weight:600;text-align:center;padding:10px 4px;font-family:ui-monospace,Consolas,monospace}.mfl-state[data-v-de2be7cb]{display:flex;align-items:center;gap:16px;margin-top:14px;flex-wrap:wrap}.mfl-max[data-v-de2be7cb]{border:2px solid #16a34a;border-radius:10px;overflow:hidden;background:#fff;min-width:84px}.mfl-max-label[data-v-de2be7cb]{font-size:11.5px;text-align:center;background:#f0fdf4;color:#15803d;padding:2px 0;font-family:ui-monospace,Consolas,monospace}.mfl-max-val[data-v-de2be7cb]{font-size:24px;font-weight:700;text-align:center;padding:8px;font-family:ui-monospace,Consolas,monospace;color:#15803d}.mfl-max.bump[data-v-de2be7cb]{animation:bump-de2be7cb .35s ease}@keyframes bump-de2be7cb{0%{transform:scale(1)}40%{transform:scale(1.15)}to{transform:scale(1)}}.mfl-compare[data-v-de2be7cb]{font-size:14.5px;padding:8px 14px;border-radius:8px}.mfl-compare code[data-v-de2be7cb]{font-size:14px;margin-right:8px}.mfl-compare.yes[data-v-de2be7cb]{background:#f0fdf4;color:#15803d}.mfl-compare.no[data-v-de2be7cb]{background:#fffbeb;color:#b45309}.mfl-controls[data-v-de2be7cb]{display:flex;gap:8px;margin-top:12px;align-items:center;flex-wrap:wrap}.mfl-done[data-v-de2be7cb]{color:#16a34a;font-weight:600;font-size:14px}.btn[data-v-de2be7cb]:disabled{opacity:.5;cursor:not-allowed}.plab[data-v-3f1e9333]{border:1px solid var(--border, #e5e7eb);border-radius:12px;padding:16px;background:var(--bg-soft, #fafafa)}.plab-scene[data-v-3f1e9333]{position:relative;display:flex;flex-direction:column;align-items:center;gap:14px;padding:8px 4px 4px}.plab-svg[data-v-3f1e9333]{position:absolute;left:0;top:0;width:100%;pointer-events:none;z-index:1;overflow:visible}.plab-node[data-v-3f1e9333]{position:relative;z-index:2;width:150px;border:2px solid var(--border, #d1d5db);border-radius:10px;background:#fff;text-align:center;transition:border-color .25s,box-shadow .25s,transform .25s;cursor:default;-webkit-user-select:none;user-select:none}.plab-ptr[data-v-3f1e9333]{border-color:#8b5cf6}.plab-ptr.pending[data-v-3f1e9333]{border-color:#f59e0b;box-shadow:0 0 0 3px #f59e0b4d;cursor:pointer}.plab-ptr.linked[data-v-3f1e9333],.plab-var[data-v-3f1e9333]{cursor:pointer}.plab-node.highlight[data-v-3f1e9333]{border-color:#f59e0b;box-shadow:0 0 0 4px #f59e0b59;transform:translateY(-2px)}.plab-node-role[data-v-3f1e9333]{font-size:11px;color:var(--ink-2, #6b7280);background:var(--bg, #f3f4f6);padding:2px 6px;border-radius:6px 6px 0 0}.plab-node-name[data-v-3f1e9333]{font-family:ui-monospace,Consolas,monospace;font-size:15px;font-weight:700;color:var(--brand, #2563eb);margin-top:4px}.plab-node-val[data-v-3f1e9333]{font-family:ui-monospace,Consolas,monospace;font-size:19px;font-weight:600;padding:8px 6px 10px}.plab-empty[data-v-3f1e9333]{color:#cbd5e1}.plab-addr[data-v-3f1e9333]{font-size:13px;color:#8b5cf6}.plab-addr-teach[data-v-3f1e9333]{font-size:12px;color:#8b5cf6;font-weight:600}.plab-addr-inline[data-v-3f1e9333]{font-family:ui-monospace,Consolas,monospace;color:#8b5cf6;font-size:11px}.plab-real[data-v-3f1e9333]{font-size:11px;color:var(--ink-2, #6b7280);padding-bottom:6px;font-family:ui-monospace,Consolas,monospace}.plab-arrow.flowing path[data-v-3f1e9333]{animation:plab-flow-3f1e9333 .9s linear infinite}@keyframes plab-flow-3f1e9333{to{stroke-dashoffset:-26}}@media(prefers-reduced-motion:reduce){.plab-arrow.flowing path[data-v-3f1e9333]{animation:none}.plab-node[data-v-3f1e9333],.plab-node-val[data-v-3f1e9333]{transition:none!important}}.plab-desc[data-v-3f1e9333]{margin-top:12px;background:var(--brand-soft, #eff6ff);border-radius:8px;padding:10px 14px;font-size:14.5px}.plab-err[data-v-3f1e9333]{margin-top:10px;background:#fef2f2;color:#b91c1c;border-radius:8px;padding:8px 12px;font-size:13.5px}.plab-controls[data-v-3f1e9333]{display:flex;gap:10px;margin-top:12px;align-items:center;flex-wrap:wrap}.plab-real-toggle[data-v-3f1e9333]{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--ink-2, #6b7280);cursor:pointer}.btn[data-v-3f1e9333]:disabled{opacity:.5;cursor:not-allowed}.plab-pop-enter-active[data-v-3f1e9333]{transition:transform .25s ease,color .25s ease}.plab-pop-enter-from[data-v-3f1e9333]{transform:scale(1.4);color:#dc2626}.block-card[data-v-320f829b]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-cap[data-v-320f829b]{margin:0 0 12px;font-size:15px}.block-card[data-v-dd12b897]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-cap[data-v-dd12b897]{margin:0 0 8px;font-size:15px}.tm-tip[data-v-dd12b897]{margin:0 0 12px;font-size:13.5px;color:var(--ink-2, #6b7280)}.tm-items[data-v-dd12b897]{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:14px}.tm-item[data-v-dd12b897]{font-family:ui-monospace,Consolas,monospace;font-size:15px;padding:8px 14px;border:1.5px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;transition:border-color .15s,transform .15s}.tm-item.pending[data-v-dd12b897]{border-color:var(--brand, #2563eb);transform:translateY(-2px);box-shadow:0 2px 8px #2563eb40}.tm-boxes[data-v-dd12b897]{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}@media(max-width:640px){.tm-boxes[data-v-dd12b897]{grid-template-columns:1fr}}.tm-box[data-v-dd12b897]{border:2px dashed var(--line);border-radius:10px;padding:10px 12px;cursor:pointer;transition:border-color .15s;background:var(--bg-soft)}.tm-box[data-v-dd12b897]:hover{border-color:var(--brand, #2563eb)}.tm-box-head[data-v-dd12b897]{display:flex;align-items:baseline;gap:8px}.tm-box-type[data-v-dd12b897]{font-size:14px;font-weight:700;color:var(--brand, #2563eb)}.tm-box-desc[data-v-dd12b897]{font-size:12px;color:var(--ink-2, #6b7280)}.tm-box-example[data-v-dd12b897]{margin-top:4px;font-size:12px;color:var(--ink-2, #6b7280)}.tm-box-placed[data-v-dd12b897]{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;min-height:26px}.tm-placed[data-v-dd12b897]{font-family:ui-monospace,Consolas,monospace;font-size:13px;background:#fff;border:1px solid var(--line);border-radius:6px;padding:2px 8px}.tm-placed.bad[data-v-dd12b897]{border-color:#f87171;color:#dc2626}.tm-fb[data-v-dd12b897]{margin-top:8px;font-size:13.5px;padding:8px 12px;border-radius:8px}.tm-fb.good[data-v-dd12b897]{background:#f0fdf4;color:#15803d}.tm-fb.bad[data-v-dd12b897]{background:#fef2f2;color:#b91c1c}.tm-fb-literal[data-v-dd12b897]{font-family:ui-monospace,Consolas,monospace}.tm-done[data-v-dd12b897]{margin-top:10px;color:#16a34a;font-weight:600}.btn.small[data-v-dd12b897]{margin-top:10px;font-size:13px;padding:4px 10px}.block-card[data-v-e7863861]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-q[data-v-e7863861]{margin:0 0 12px;font-size:15px}.bh-code[data-v-e7863861]{margin:0 0 12px;padding:12px 14px;border-radius:8px;overflow-x:auto;background:#0f172a;color:#e2e8f0;font-family:ui-monospace,Consolas,monospace;font-size:13.5px;line-height:1.6}.bh-code.ok[data-v-e7863861]{background:#f0fdf4;color:#14532d;border:1px solid #bbf7d0}.bh-opts[data-v-e7863861]{display:grid;gap:8px}.bh-opt[data-v-e7863861]{text-align:left;padding:10px 14px;border:1.5px solid var(--line);border-radius:8px;background:#fff;cursor:pointer;font-size:14px;transition:border-color .15s}.bh-opt[data-v-e7863861]:hover{border-color:var(--brand, #2563eb)}.bh-opt.correct[data-v-e7863861]{border-color:#16a34a;background:#f0fdf4}.bh-opt.wrong[data-v-e7863861]{border-color:#dc2626;background:#fef2f2}.bh-explain[data-v-e7863861]{margin-top:10px;padding:10px 14px;border-radius:8px;font-size:14px;line-height:1.7}.bh-explain.good[data-v-e7863861]{background:#f0fdf4;color:#15803d}.bh-explain.bad[data-v-e7863861]{background:#fef2f2;color:#b91c1c}.bh-explain[data-v-e7863861] code{background:#0000000f;padding:1px 6px;border-radius:4px}.bh-fixed[data-v-e7863861]{margin-top:12px}.bh-fixed-t[data-v-e7863861]{margin:0 0 6px;font-size:13.5px;color:#15803d;font-weight:600}.block-card[data-v-bce69fdb]{border:1px solid var(--line);border-radius:12px;padding:16px;background:var(--bg-soft)}.rf-q[data-v-bce69fdb]{margin:0 0 10px;font-size:15px}.rf-input[data-v-bce69fdb]{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:8px;padding:10px 12px;font-size:14px;font-family:inherit;resize:vertical;background:#fff}.rf-warn[data-v-bce69fdb]{margin:6px 0 0;font-size:12.5px;color:#d97706}.rf-done[data-v-bce69fdb]{margin:8px 0 0;color:#16a34a;font-weight:600;font-size:14px}.btn[data-v-bce69fdb]{margin-top:10px}.btn[data-v-bce69fdb]:disabled{opacity:.5;cursor:not-allowed}.block-card[data-v-22c5a6f4]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-cap[data-v-22c5a6f4]{margin:0 0 12px;font-size:15px}.block-card[data-v-3be820f2]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-cap[data-v-3be820f2]{margin:0 0 12px;font-size:15px}.block-card[data-v-c2eae4be]{border:1px solid var(--line);border-radius:12px;padding:16px}.blk-cap[data-v-c2eae4be]{margin:0 0 12px;font-size:15px}.lesson[data-v-9f5dc7cd]{max-width:780px;margin:0 auto;padding:24px 16px 80px}.lesson-head[data-v-9f5dc7cd]{margin-bottom:24px}.lesson-head h1[data-v-9f5dc7cd]{font-size:26px;margin:10px 0 6px}.objective[data-v-9f5dc7cd]{color:var(--ink-2);font-size:15px}.lab-entry[data-v-9f5dc7cd]{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}.lab-entry-label[data-v-9f5dc7cd]{color:var(--ink-2);font-size:13px}.lab-chip[data-v-9f5dc7cd]{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;color:var(--brand);text-decoration:none;background:var(--brand-soft)}.lab-chip[data-v-9f5dc7cd]:hover{border-color:var(--brand)}.lab-chip small[data-v-9f5dc7cd]{color:var(--ink-2);font-size:11px}.step-no[data-v-9f5dc7cd]{font-size:12.5px;font-weight:600;color:var(--brand);letter-spacing:1px;margin-bottom:6px}.lesson-foot[data-v-9f5dc7cd]{text-align:center;color:var(--ink-2);margin-top:40px}.notfound[data-v-9f5dc7cd]{text-align:center;padding:100px 20px}.progress-rail[data-v-9f5dc7cd]{position:fixed;right:18px;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:7px;max-height:70vh;overflow-y:auto;padding:4px}.rail-dot[data-v-9f5dc7cd]{width:7px;height:7px;border-radius:999px;border:none;padding:0;background:#c7ccd4;cursor:pointer;flex-shrink:0;transition:all .15s}.rail-dot[data-v-9f5dc7cd]:hover{background:var(--brand)}.rail-dot.active[data-v-9f5dc7cd]{background:var(--brand);width:9px;height:9px}@media(max-width:1080px){.progress-rail[data-v-9f5dc7cd]{display:none}}.home[data-v-2d1117dc]{max-width:980px;margin:0 auto;padding:44px 16px 60px}.hero[data-v-2d1117dc]{text-align:center;margin-bottom:36px}.hero h1[data-v-2d1117dc]{font-size:32px;margin:0 0 8px}.hero p[data-v-2d1117dc]{color:var(--ink-2);margin:0 0 20px}.hero-actions[data-v-2d1117dc]{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.modules[data-v-2d1117dc]{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.module[data-v-2d1117dc]{display:block;text-decoration:none;color:inherit;margin:0;transition:border-color .15s,transform .15s}a.module[data-v-2d1117dc]:hover{border-color:var(--brand);transform:translateY(-2px)}.module-static[data-v-2d1117dc]{background:var(--bg-soft)}.module-book[data-v-2d1117dc]{background:linear-gradient(135deg,#fffdf8,#fff 60%);box-shadow:inset 4px 0 #d9a441}.module-icon[data-v-2d1117dc]{font-size:24px}.module h3[data-v-2d1117dc]{margin:8px 0 6px;font-size:18px}.module p[data-v-2d1117dc]{color:var(--ink-2);font-size:14.5px;margin:0 0 12px;line-height:1.65}.module-stat[data-v-2d1117dc]{color:var(--brand);font-size:13px}.module-static .module-stat[data-v-2d1117dc]{color:var(--ink-2)}.foot[data-v-2d1117dc]{text-align:center;margin-top:40px}.foot-link[data-v-2d1117dc]{color:var(--ink-2);font-size:13px}.sep[data-v-2d1117dc]{color:var(--line);margin:0 8px}:root{--bg: #f7f8f5;--card: #ffffff;--ink: #13283b;--ink-2: #5a6b78;--line: #dce5e5;--bg-soft: #f1f6f5;--brand: #0f7490;--brand-soft: #e5f4f6;--ok: #16836c;--ok-soft: #e8f7f1;--bad: #dc2626;--bad-soft: #fef2f2;--warn-soft: #fffbeb;--code-bg: #0f172a;--code-ink: #e2e8f0;--radius: 10px}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,system-ui,sans-serif;font-size:16px;line-height:1.7}#app{min-height:100vh}.app-content>*{width:100%}.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px 24px;margin-bottom:20px}.btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:8px;padding:8px 18px;font-size:15px;cursor:pointer;transition:all .15s}.btn:hover{border-color:var(--brand);color:var(--brand)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{opacity:.88;color:#fff}.btn.ok{background:var(--ok);border-color:var(--ok);color:#fff}.tag{display:inline-block;font-size:13px;padding:2px 10px;border-radius:99px;background:var(--brand-soft);color:var(--brand)}pre.codeblock{background:var(--code-bg);color:var(--code-ink);border-radius:var(--radius);padding:16px 18px;overflow-x:auto;font-family:JetBrains Mono,Consolas,Courier New,monospace;font-size:14.5px;line-height:1.75;margin:0}pre.codeblock .hl{background:#facc1540;border-radius:3px}.opt-btn{display:block;width:100%;text-align:left;padding:12px 18px;margin:8px 0;border:1.5px solid var(--line);border-radius:10px;background:var(--card);font-size:16px;cursor:pointer;transition:all .15s}.opt-btn:hover{border-color:var(--brand)}.opt-btn.correct{background:var(--ok-soft);border-color:var(--ok)}.opt-btn.wrong{background:var(--bad-soft);border-color:var(--bad)}.feedback{margin-top:10px;padding:12px 16px;border-radius:10px;font-size:15px}.feedback.ok{background:var(--ok-soft);color:#14532d}.feedback.bad{background:var(--bad-soft);color:#7f1d1d}
