.page.svelte-100nfr7{flex-direction:column;max-width:min(1440px,100%);min-height:calc(100vh - 48px);margin:0 auto;padding:48px 32px 64px;display:flex}.player-wrap.svelte-100nfr7{flex:1;justify-content:center;align-items:center;min-height:0;margin-top:32px;margin-bottom:32px;display:flex}.section-header.svelte-100nfr7{margin-bottom:32px}.section-label.svelte-100nfr7{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--color-ink-3);align-items:center;gap:12px;margin-bottom:16px;font-size:11px;display:flex}.section-label.svelte-100nfr7:before{content:"";background:var(--color-line-regular);width:24px;height:1px}.section-num.svelte-100nfr7{color:var(--color-accent);font-weight:500}.section-num.badge.svelte-100nfr7{border-radius:var(--radius-sm);background:var(--color-academic);color:#fff;justify-content:center;align-items:center;width:22px;height:22px;font-size:11px;font-weight:600;display:inline-flex}.section-name.svelte-100nfr7{font-weight:500}.page-title.svelte-100nfr7{font-family:var(--font-display);letter-spacing:-.02em;color:var(--color-ink);margin:0 0 8px;font-size:32px;font-weight:500;line-height:1.15}.page-desc.svelte-100nfr7{color:var(--color-ink-2);max-width:620px;margin:0;font-size:14px;line-height:1.7}.pseudocode.svelte-91iz7z{justify-content:center;align-items:center;width:100%;height:100%;display:flex;overflow:hidden}pre.svelte-91iz7z{font-family:var(--font-mono);tab-size:2;flex:1;margin:0;font-size:12px;line-height:0;overflow-x:auto}code.svelte-91iz7z{font-family:inherit;display:block}.line.svelte-91iz7z{white-space:pre;border-left:2px solid #0000;align-items:center;gap:8px;padding:0 20px 0 12px;transition:background-color .12s ease-out;display:flex}.line-num.svelte-91iz7z{color:var(--color-ink-3);text-align:right;-webkit-user-select:none;user-select:none;vertical-align:top;flex-shrink:0;min-width:20px;font-size:11px;line-height:1.5}.line-text.svelte-91iz7z{color:var(--color-ink-2);vertical-align:top;flex:1;line-height:1.5}.bp-dot.svelte-91iz7z{border:1.5px solid var(--color-ink-3);cursor:pointer;opacity:.5;background:0 0;border-radius:999px;flex-shrink:0;width:10px;height:10px;padding:0;transition:background-color .12s ease-out,border-color .12s ease-out}.bp-dot.svelte-91iz7z:hover{opacity:1;border-color:var(--color-danger)}.bp-dot.on.svelte-91iz7z{background:var(--color-danger);border-color:var(--color-danger);opacity:1}.line.breakpoint.svelte-91iz7z{background:#9b22260f}.line.active.svelte-91iz7z{border-left-color:var(--color-accent);background:#d977061a;padding-left:10px}.line.active.svelte-91iz7z .line-num:where(.svelte-91iz7z){color:var(--color-accent);font-weight:600}.line.active.svelte-91iz7z .line-text:where(.svelte-91iz7z){color:var(--color-ink);font-weight:500}.control-bar.svelte-1vj5fh4{background:var(--color-surface);flex-direction:column;gap:10px;padding:14px 20px;display:flex}.progress-row.svelte-1vj5fh4{align-items:center;gap:10px;display:flex}.progress-track.svelte-1vj5fh4{background:var(--color-subtle);cursor:pointer;border-radius:2px;flex:1;height:3px;transition:height .12s ease-out;position:relative}.progress-track.svelte-1vj5fh4:hover{height:5px}.progress-fill.svelte-1vj5fh4{background:var(--color-accent);border-radius:2px;height:100%;transition:width .12s ease-out;position:absolute;top:0;left:0}.step-count.svelte-1vj5fh4{font-family:var(--font-mono);flex-shrink:0;align-items:baseline;gap:2px;font-size:11px;display:flex}.step-count.svelte-1vj5fh4 .current:where(.svelte-1vj5fh4){color:var(--color-accent);font-weight:600}.step-count.svelte-1vj5fh4 .sep:where(.svelte-1vj5fh4),.step-count.svelte-1vj5fh4 .total:where(.svelte-1vj5fh4){color:var(--color-ink-3)}.controls-row.svelte-1vj5fh4{justify-content:space-between;align-items:center;gap:8px;display:flex}.ctrl-buttons.svelte-1vj5fh4{align-items:center;gap:2px;display:flex}.icon-btn.svelte-1vj5fh4{border:1px solid var(--color-line-regular);background:var(--color-surface);width:28px;height:28px;color:var(--color-ink-2);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;transition:border-color .12s ease-out,color .12s ease-out;display:flex}.icon-btn.svelte-1vj5fh4:hover{border-color:var(--color-ink);color:var(--color-ink)}.icon-btn.svelte-1vj5fh4 svg:where(.svelte-1vj5fh4){width:13px;height:13px}.play-btn.svelte-1vj5fh4{background:var(--color-ink);width:34px;height:34px;color:var(--color-ink-inverse);cursor:pointer;border:none;border-radius:50%;justify-content:center;align-items:center;margin:0 2px;transition:background-color .15s ease-out,transform .15s ease-out;display:flex}.play-btn.svelte-1vj5fh4:hover{background:var(--color-accent);transform:scale(1.05)}.play-btn.svelte-1vj5fh4:active{transform:scale(.97)}.play-btn.svelte-1vj5fh4 svg:where(.svelte-1vj5fh4){width:14px;height:14px}.speed-group.svelte-1vj5fh4{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.speed-label.svelte-1vj5fh4{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-3);font-size:9px}.speed-opts.svelte-1vj5fh4{background:var(--color-subtle);border-radius:4px;gap:1px;padding:2px;display:flex}.speed-opt.svelte-1vj5fh4{font-family:var(--font-mono);color:var(--color-ink-2);cursor:pointer;background:0 0;border:none;border-radius:2px;padding:2px 6px;font-size:10px;transition:color .12s ease-out}.speed-opt.svelte-1vj5fh4:hover{color:var(--color-ink)}.speed-opt.active.svelte-1vj5fh4{background:var(--color-surface);color:var(--color-ink);font-weight:500;box-shadow:0 1px 2px #0000000d}.algo-player.svelte-1m3a4xc{background:var(--color-surface);border:1px solid var(--color-line-regular);border-radius:var(--radius-lg);-webkit-backdrop-filter:blur(14px)saturate(1.5);backdrop-filter:blur(14px)saturate(1.5);width:100%;overflow:hidden;box-shadow:0 1px 2px #0000000a,0 8px 32px #0000000a}.workspace.svelte-1m3a4xc{grid-template-columns:1fr 380px;height:max(480px,min(640px,100vh - 160px));display:grid}.canvas-area.svelte-1m3a4xc{background:var(--color-surface);border-right:1px solid var(--color-line-hair);flex-direction:column;display:flex}.canvas-header.svelte-1m3a4xc{border-bottom:1px solid var(--color-line-hair);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 24px;display:flex}.canvas-title.svelte-1m3a4xc{font-family:var(--font-display);color:var(--color-ink);letter-spacing:-.01em;font-size:18px;font-weight:500}.title-area.svelte-1m3a4xc{align-items:center;gap:14px;min-width:0;display:flex}.title-actions.svelte-1m3a4xc{flex-shrink:0;align-items:center;gap:4px;display:flex}.title-btn.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-2);background:var(--color-surface);border:1px solid var(--color-line-regular);cursor:pointer;transition:border-color .12s var(--ease-out), color .12s var(--ease-out), background-color .12s var(--ease-out);border-radius:6px;align-items:center;gap:6px;padding:4px 12px;font-size:11px;display:inline-flex}.title-btn.svelte-1m3a4xc:hover{border-color:var(--color-ink);color:var(--color-ink)}.title-btn.active.svelte-1m3a4xc{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-ink-inverse)}.title-btn.svelte-1m3a4xc .caret:where(.svelte-1m3a4xc){opacity:.7;border-top:5px solid;border-left:4px solid #0000;border-right:4px solid #0000;width:0;height:0;margin-left:6px;display:inline-block}.share-msg.svelte-1m3a4xc{font-family:var(--font-body);color:var(--color-success);white-space:nowrap;font-size:12px}.pj-entry.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-accent);border:1px solid var(--color-accent);cursor:pointer;transition:background-color .12s var(--ease-out), color .12s var(--ease-out);background:0 0;border-radius:6px;padding:4px 12px;font-size:11px}.pj-entry.svelte-1m3a4xc:hover,.pj-entry.active.svelte-1m3a4xc{background:var(--color-accent);color:var(--color-paper)}.script-menu-wrap.svelte-1m3a4xc{position:relative}.script-menu.svelte-1m3a4xc{z-index:40;background:var(--color-surface);border:1px solid var(--color-line-regular);border-radius:var(--radius-md);flex-direction:column;gap:2px;min-width:200px;padding:6px;display:flex;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 1px 2px #0000000a,0 8px 32px #00000014}.script-menu.svelte-1m3a4xc button:where(.svelte-1m3a4xc){text-align:left;color:var(--color-ink-2);border-radius:var(--radius-sm);cursor:pointer;transition:background .12s var(--ease-out);background:0 0;border:none;padding:8px 10px;font-size:13px}.script-menu.svelte-1m3a4xc button:where(.svelte-1m3a4xc):hover{background:var(--color-subtle);color:var(--color-ink)}.script-menu.svelte-1m3a4xc .hidden-file:where(.svelte-1m3a4xc){display:none}.script-msg.svelte-1m3a4xc{color:var(--color-success);padding:6px 10px;font-size:12px}.script-err.svelte-1m3a4xc{color:var(--color-danger);padding:6px 10px;font-size:12px}.header-right.svelte-1m3a4xc{align-items:center;gap:16px;display:flex}.mode-switch.svelte-1m3a4xc{background:var(--color-surface);border:1px solid var(--color-line-regular);border-radius:6px;gap:2px;padding:2px;display:flex}.mode-btn.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 10px;font-size:11px;transition:color .15s,background .15s}.mode-btn.svelte-1m3a4xc:hover{color:var(--color-ink)}.mode-btn.active.svelte-1m3a4xc{background:var(--color-ink);color:var(--color-paper)}.canvas-meta.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-3);font-size:11px}.meta-step.svelte-1m3a4xc .current-num:where(.svelte-1m3a4xc){color:var(--color-accent);font-weight:600}.meta-step.svelte-1m3a4xc .total-num:where(.svelte-1m3a4xc){color:var(--color-ink-3)}.canvas-body.svelte-1m3a4xc{flex:1;justify-content:center;align-items:center;padding:20px;display:flex;position:relative;overflow:auto}.status-bar.svelte-1m3a4xc{border-top:1px solid var(--color-line-hair);background:var(--color-paper);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:10px 24px;display:flex}.status-text.svelte-1m3a4xc{color:var(--color-ink-2);font-size:13px;line-height:1.5}.op-count.svelte-1m3a4xc{font-family:var(--font-mono);color:var(--color-ink-3);letter-spacing:.04em;flex-shrink:0;font-size:11px}.predict-bar.svelte-1m3a4xc{border-top:1px solid var(--color-line-hair);color:var(--color-ink);background:#d977060d;flex-shrink:0;justify-content:space-between;align-items:center;gap:12px;padding:10px 24px;font-size:13px;display:flex}.predict-bar.correct.svelte-1m3a4xc{background:#2d6a4f14}.predict-bar.wrong.svelte-1m3a4xc{background:#9b22260f}.predict-msg.svelte-1m3a4xc{line-height:1.5}.predict-actions.svelte-1m3a4xc{flex-shrink:0;gap:8px;display:flex}.predict-options.svelte-1m3a4xc{flex-wrap:wrap;flex-shrink:0;gap:8px;display:flex}.predict-opt-selected.svelte-1m3a4xc{border-color:var(--color-accent)!important;color:var(--color-accent)!important}.engine-error.svelte-1m3a4xc{color:var(--color-danger);border-radius:var(--radius-sm);background:#9b22260f;border:1px solid #9b222640;padding:12px 16px;font-size:13px}.right-panel.svelte-1m3a4xc{background:var(--color-paper);flex-direction:column;display:flex;overflow:hidden}.panel-header.svelte-1m3a4xc{border-bottom:1px solid var(--color-line-hair);flex-shrink:0;padding:14px 20px}.panel-title.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--color-ink-3);font-size:11px}.panel-body.svelte-1m3a4xc{flex:1;justify-content:center;align-items:center;min-height:0;display:flex;overflow-y:auto}.panel-controls.svelte-1m3a4xc{border-top:1px solid var(--color-line-hair);background:var(--color-surface);flex-shrink:0}.modal-root.svelte-1m3a4xc{z-index:70;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal-overlay.svelte-1m3a4xc{z-index:70;background:var(--color-scrim);cursor:default;border:none;padding:0;position:fixed;inset:0}.modal-card.svelte-1m3a4xc{z-index:71;overscroll-behavior:contain;background:var(--color-surface);border:1px solid var(--color-line-regular);border-radius:var(--radius-lg);width:100%;max-width:520px;max-height:min(560px,100vh - 96px);padding:16px 24px;position:relative;overflow-y:auto;box-shadow:0 1px 2px #0000000a,0 8px 32px #0000000f}.modal-header.svelte-1m3a4xc{border-bottom:1px solid var(--color-line-hair);justify-content:space-between;align-items:center;margin-bottom:12px;padding-bottom:12px;display:flex}.modal-title.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.12em;color:var(--color-ink-3);font-size:11px}.modal-close.svelte-1m3a4xc{color:var(--color-ink-3);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:4px 6px;font-size:13px;transition:color .12s}.modal-close.svelte-1m3a4xc:hover{color:var(--color-ink)}.preset-list.svelte-1m3a4xc{flex-direction:column;gap:6px;display:flex}.preset-item.svelte-1m3a4xc{text-align:left;background:var(--color-surface);border:1px solid var(--color-line-regular);border-radius:var(--radius-sm);border-left:3px solid var(--color-line-regular);cursor:pointer;width:100%;transition:border-color .12s var(--ease-out), border-left-color .12s var(--ease-out), background-color .12s var(--ease-out);flex-direction:column;align-items:flex-start;gap:2px;padding:10px 14px;display:flex}.preset-item.svelte-1m3a4xc:hover{border-color:var(--color-ink);border-left-color:var(--color-ink)}.preset-item.active.svelte-1m3a4xc{border-color:var(--color-accent);border-left-color:var(--color-accent);background:#d977060d}.preset-item.active.svelte-1m3a4xc .preset-name:where(.svelte-1m3a4xc){color:var(--color-accent)}.preset-name.svelte-1m3a4xc{color:var(--color-ink);font-size:14px;font-weight:500}.preset-desc.svelte-1m3a4xc{color:var(--color-ink-2);font-size:12px;line-height:1.5}.custom-fields.svelte-1m3a4xc{flex-direction:column;gap:14px;margin-bottom:18px;display:flex}.custom-field.svelte-1m3a4xc{flex-direction:column;gap:6px;display:flex}.custom-label.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.08em;color:var(--color-ink-3);font-size:11px}.custom-control.svelte-1m3a4xc{font-family:var(--font-mono);border:1px solid var(--color-line-regular);border-radius:var(--radius-sm);background:var(--color-paper);color:var(--color-ink);transition:border-color .12s var(--ease-out);outline:none;padding:8px 12px;font-size:13px}.custom-control.svelte-1m3a4xc:focus{border-color:var(--color-ink)}.custom-error.svelte-1m3a4xc{color:var(--color-danger);border-radius:var(--radius-sm);background:#9b22260f;border:1px solid #9b222640;margin-bottom:16px;padding:10px 12px;font-size:12px}.modal-actions.svelte-1m3a4xc{justify-content:flex-end;gap:8px;display:flex}.projector.svelte-1m3a4xc{z-index:60;background:var(--color-surface);flex-direction:column;display:flex;position:fixed;inset:0}.projector-header.svelte-1m3a4xc{border-bottom:1px solid var(--color-line-hair);flex-shrink:0;justify-content:space-between;align-items:center;gap:16px;padding:18px 32px;display:flex}.projector-title.svelte-1m3a4xc{font-family:var(--font-display);color:var(--color-ink);letter-spacing:-.01em;font-size:26px;font-weight:600}.projector-step.svelte-1m3a4xc{font-family:var(--font-mono);color:var(--color-ink-3);letter-spacing:.04em;white-space:nowrap;font-size:15px}.projector-step.svelte-1m3a4xc .pj-num:where(.svelte-1m3a4xc){color:var(--color-accent);font-weight:600}.projector-btns.svelte-1m3a4xc{align-items:center;gap:8px;display:flex}.pj-btn.svelte-1m3a4xc{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--color-ink-2);background:var(--color-surface);border:1px solid var(--color-line-regular);cursor:pointer;transition:border-color .12s var(--ease-out), color .12s var(--ease-out);border-radius:6px;padding:6px 14px;font-size:12px}.pj-btn.svelte-1m3a4xc:hover{border-color:var(--color-ink);color:var(--color-ink)}.pj-exit.svelte-1m3a4xc{color:var(--color-danger)}.pj-exit.svelte-1m3a4xc:hover{border-color:var(--color-danger);color:var(--color-danger)}.pj-on.svelte-1m3a4xc{border-color:var(--color-accent);color:var(--color-accent);background:#d9770614}.pj-on.svelte-1m3a4xc:hover{border-color:var(--color-accent);color:var(--color-accent)}.projector-body.svelte-1m3a4xc{flex:1;justify-content:center;align-items:center;min-height:0;padding:24px;display:flex;overflow:auto}.projector-footer.svelte-1m3a4xc{border-top:1px solid var(--color-line-hair);background:var(--color-paper);flex-direction:column;flex-shrink:0;align-items:center;gap:16px;padding:20px 32px;display:flex}.pj-narration.svelte-1m3a4xc{text-align:center;max-width:860px;color:var(--color-ink);font-size:21px;font-weight:500;line-height:1.65}.pj-actions.svelte-1m3a4xc{align-items:center;gap:10px;display:flex}.pj-ctrl.svelte-1m3a4xc{border:1px solid var(--color-line-regular);background:var(--color-surface);min-width:46px;height:46px;color:var(--color-ink);cursor:pointer;transition:border-color .12s var(--ease-out), transform .12s var(--ease-out);border-radius:8px;justify-content:center;align-items:center;padding:0 16px;font-size:16px;display:flex}.pj-ctrl.svelte-1m3a4xc svg:where(.svelte-1m3a4xc){width:16px;height:16px}.pj-ctrl.svelte-1m3a4xc:hover{border-color:var(--color-ink);transform:translateY(-1px)}.pj-play.svelte-1m3a4xc{background:var(--color-ink);border-color:var(--color-ink);color:var(--color-ink-inverse)}.pj-play.svelte-1m3a4xc:hover{background:var(--color-accent);border-color:var(--color-accent)}.pj-hints.svelte-1m3a4xc{font-family:var(--font-mono);letter-spacing:.06em;color:var(--color-ink-3);font-size:12px}@media (width<=900px){.workspace.svelte-1m3a4xc{grid-template-columns:1fr;height:auto}.canvas-area.svelte-1m3a4xc{border-right:none;border-bottom:1px solid var(--color-line-hair);height:min(62vh,480px)}.right-panel.svelte-1m3a4xc{height:min(38vh,340px)}.panel-body.svelte-1m3a4xc{justify-content:flex-start;align-items:flex-start;padding:12px 0;overflow-x:auto}.projector-header.svelte-1m3a4xc{flex-wrap:wrap;gap:8px;padding:10px 16px}.projector-title.svelte-1m3a4xc{font-size:18px}.projector-step.svelte-1m3a4xc{font-size:12px}.projector-btns.svelte-1m3a4xc{gap:4px}.projector-body.svelte-1m3a4xc{padding:8px}.pj-narration.svelte-1m3a4xc{padding:0 8px;font-size:16px;line-height:1.55}.projector-footer.svelte-1m3a4xc{gap:10px;padding:12px 16px}}
