:root{--bg: #0d1117;--panel: #161b22;--panel2: #1c2129;--border: #30363d;--text: #e6edf3;--dim: #8b949e;--accent: #58a6ff;--good: #3fb950;--bad: #f85149;--warn: #d29922;--mono: ui-monospace, "SF Mono", Menlo, Consolas, monospace}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:14px/1.5 -apple-system,Segoe UI,Roboto,sans-serif}#app{display:flex;flex-direction:column;height:100vh}header{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--border)}.logo{font-weight:700;letter-spacing:.5px}.spacer{flex:1}.points{color:var(--accent);font-family:var(--mono);font-size:13px}#layout{display:flex;flex:1;min-height:0}#sidebar{width:280px;padding:12px;overflow-y:auto;background:var(--panel);border-right:1px solid var(--border)}#sidebar h2{margin:14px 4px 6px;font-size:12px;text-transform:uppercase;color:var(--dim);letter-spacing:1px}button.lesson{display:block;width:100%;text-align:left;margin-bottom:4px;padding:8px 10px;border-radius:6px;cursor:pointer;background:var(--panel2);color:var(--text);border:1px solid var(--border);font-size:13px}button.lesson:hover:not(.locked){border-color:var(--accent)}button.lesson.locked{opacity:.45;cursor:not-allowed}button.lesson.done{border-left:3px solid var(--good)}#main{flex:1;padding:20px;overflow-y:auto}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:18px 20px;margin-bottom:16px}h1{margin:0 0 8px;font-size:20px}h2{margin:0 0 8px;font-size:16px}.dim{color:var(--dim)}.warn{color:var(--warn)}.kind{color:var(--accent);font-size:11px;border:1px solid var(--border);padding:1px 6px;border-radius:4px}.controls{display:flex;gap:10px;margin:12px 0;align-items:center}select,input,button{background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:7px 10px;font-size:13px}input:focus{outline:none;border-color:var(--accent)}button.primary{background:#1f3a5f;border-color:#264a78;cursor:pointer}button.primary:hover{filter:brightness(1.15)}button:disabled{opacity:.5;cursor:wait}.console{background:#010409;border:1px solid var(--border);border-radius:6px;font-family:var(--mono);font-size:12.5px;line-height:1.55;padding:10px 12px;height:300px;overflow-y:auto;white-space:pre-wrap}.console .hdr{color:var(--accent)}.console .prompt{color:var(--dim)}.console .err{color:var(--bad)}.console .dim{color:var(--dim)}.console-host{margin-top:6px}.console-xterm{padding:6px 8px;overflow:hidden;white-space:normal}.console-xterm .xterm,.console-xterm .xterm-viewport{height:100%!important}.flag{border-top:1px dashed var(--border);margin-top:14px;padding-top:12px;display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center}.flag .prompt{font-size:13px;color:var(--dim)}.flag .pts{color:var(--warn);font-family:var(--mono);font-size:12px;text-align:right}.flag .row{display:flex;gap:8px;grid-column:1 / -1}.flag input{flex:1;font-family:var(--mono)}.flag input.bad{border-color:var(--bad)}.flag button.good{color:var(--good);border-color:var(--good)}input.cmd{width:100%;font-family:var(--mono);margin-top:6px}.code-editor{width:100%;min-height:320px;font-family:var(--mono);background:#010409;color:var(--text);border:1px solid var(--border);padding:12px;tab-size:4;resize:vertical}.compile-status{margin:8px 0}.compile-status .err{color:var(--bad)}.compile-status .good{color:var(--good)}.analyzer-controls{display:flex;gap:8px;align-items:center;margin:10px 0;flex-wrap:wrap}.analyzer-controls input,.analyzer-controls select{max-width:240px}.analyzer-out .line{padding:2px 0}.analyzer-out .err{color:#ff6b6b}.analyzer-out .warn{color:#ffd43b}.analyzer-out .ok{color:#69db7c}.analyzer-out .section{border:1px solid #333;border-radius:6px;padding:8px 12px;margin:10px 0}.analyzer-out .section h3{margin:4px 0;font-size:.95em}.kv{display:flex;gap:8px;font-size:.9em;padding:1px 0}.kv .k{color:#888;min-width:160px}.mono{font-family:ui-monospace,monospace;font-size:.85em;word-break:break-all}.report{margin-top:12px}button.tool{width:100%;text-align:left;margin-bottom:8px}.lesson-body{font-size:14px;line-height:1.65;max-width:78ch}.lesson-body h2{margin:18px 0 8px;font-size:16px;color:var(--accent)}.lesson-body p,.lesson-body li{margin:6px 0}.lesson-body ul,.lesson-body ol{padding-left:22px;margin:8px 0}.lesson-body code{font-family:var(--mono);font-size:12.5px;background:#010409;border:1px solid var(--border);border-radius:4px;padding:1px 5px}.lesson-body pre{background:#010409;border:1px solid var(--border);border-radius:6px;padding:10px 12px;overflow-x:auto;margin:10px 0}.fence-editor{position:relative;margin:10px 0;background:#010409;border:1px solid var(--border);border-radius:6px;overflow:hidden}.fence-editor .code-editor{min-height:320px}.lesson-body pre code{border:none;padding:0;background:none}.lesson-body table{border-collapse:collapse;margin:10px 0;font-size:13px}.lesson-body th,.lesson-body td{border:1px solid var(--border);padding:5px 10px;text-align:left}.lesson-body th{color:var(--accent);background:var(--panel2)}.lesson-body blockquote{margin:8px 0;padding:4px 14px;border-left:3px solid var(--accent);color:var(--dim)}.term{border-bottom:1px dotted var(--accent);cursor:help}span.term{border-radius:2px}.term:hover,.term:focus{background:var(--panel2);outline:none;border-bottom-style:solid}code.term{cursor:help}.term-popover{position:fixed;z-index:1000;display:none;max-width:360px;padding:10px 12px;margin:0;background:var(--panel2);color:var(--text);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #00000073;font-size:13px;line-height:1.5}.term-popover.open{display:block}.term-popover-name{font-family:var(--mono);font-size:12.5px;font-weight:700;color:var(--accent);margin-bottom:2px}.term-popover-full{font-style:italic;color:var(--dim);margin-bottom:4px}.term-popover-def{margin:0}.dbg-shell{position:relative;display:flex;flex-direction:column;min-height:420px;max-height:640px;background:var(--panel, #161b22);border:1px solid #21262d;border-left:2px solid #30363d;border-radius:8px;font-family:var(--mono, ui-monospace, monospace);font-size:12px;color:var(--fg, #e6edf3)}.dbg-grip{position:absolute;inset-block:0;left:-4px;width:7px;cursor:col-resize;z-index:5}.dbg-grip:hover{background:#58a6ff33}.dbg-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:6px 8px;border-bottom:1px solid #21262d}.dbg-title{margin-right:8px;font-weight:600}.dbg-btn{background:#21262d;color:inherit;border:1px solid #30363d;border-radius:5px;padding:3px 9px;font-size:12px;line-height:1.4;cursor:pointer}.dbg-btn:hover:not(:disabled){background:#30363d}.dbg-btn:disabled{opacity:.45;cursor:default}.dbg-input,.dbg-select{background:#0d1117;border:1px solid #30363d;border-radius:5px;color:inherit;padding:3px 6px;font-size:11.5px}.dbg-input:focus{outline:none;border-color:#58a6ff}.mono{font-family:var(--mono, ui-monospace, monospace)}.dbg-tabbar{display:flex;flex-wrap:wrap;gap:2px;padding:4px 6px;border-bottom:1px solid #21262d}.dbg-tab{background:transparent;color:#8b949e;border:none;border-radius:5px;padding:3px 10px;font-size:11.5px;cursor:pointer}.dbg-tab:hover{color:inherit;background:#21262d}.dbg-tab.active{color:#e6edf3;background:#21262d}.dbg-content{flex:1;min-height:0;display:flex}.dbg-content>*{flex:1;min-height:0}.dbg-status{padding:4px 10px;border-top:1px solid #21262d;color:#8b949e;font-size:11px}.dbg-panel{display:flex;flex-direction:column;overflow:auto}.dbg-panel-head{padding:6px 10px;font-weight:600;color:#8b949e;border-bottom:1px solid #21262d;position:sticky;top:0;background:inherit}.dbg-list-row{display:flex;justify-content:space-between;gap:12px;padding:3px 10px;border-bottom:1px solid #21262d66}.dbg-list-row.followable{cursor:pointer}.dbg-list-row.followable:hover{background:#161b22cc}.dbg-list-row.active{background:#21262d}.dbg-list-row.reg span:first-child{min-width:64px}.dbg-note.pad{padding:12px}.dim{color:#8b949e}.dbg-link.danger{color:#f85149}.dbg-disasm{display:flex;flex-direction:column;min-height:0}.dbg-disasm-viewport{position:relative;flex:1;overflow-y:auto;overflow-x:hidden}.dbg-spacer{position:absolute;inset-inline:0;top:0;pointer-events:none}.dbg-disasm-viewport>.dbg-spacer{height:0}.dbg-row{position:absolute;inset-inline:0;height:20px;display:flex;align-items:center;gap:8px;padding-inline:6px;white-space:pre;font-size:11.5px}.dbg-row.current{background:#1f3a5f55;box-shadow:inset 2px 0 #58a6ff}.dbg-bp-dot{width:11px;height:11px;flex:none;border-radius:50%;border:1px solid #6e768180;background:transparent;cursor:pointer;padding:0}.dbg-bp-dot.set{border-color:#f85149;background:#f85149}.dbg-addr{width:118px;flex:none;color:#8b949e}.dbg-addr.current{color:#58a6ff}.dbg-mnem{width:76px;flex:none;font-weight:600}.dbg-ops{flex:1;overflow:hidden;text-overflow:ellipsis}.dbg-branch{color:#79c0ff;background:none;border:none;cursor:pointer;padding:0;font:inherit}.dbg-branch:hover{text-decoration:underline}.dbg-symbol{color:#8b949e;margin-left:8px}.dbg-hex{display:flex;flex-direction:column;min-height:0}.dbg-hex-bar{display:flex;gap:6px;padding:6px 8px;border-bottom:1px solid #21262d}.dbg-hex-viewport{position:relative;flex:1;overflow:auto}.dbg-row.hex{height:18px;font-size:11px;gap:14px}.dbg-row.hex>span:first-child{width:110px;flex:none;color:#8b949e}.dbg-ascii{color:#8b949e}.dbg-pseudocode{display:flex;flex-direction:column;min-height:0}.kf-monaco-host{flex:1;min-height:320px}.dbg-pseudo-fallback{height:100%}.dbg-console-host{display:flex;flex-direction:column;min-height:0}.dbg-console-host>.console-host,.dbg-console-host .console,.dbg-console-host .console-xterm{flex:1;min-height:0}.kf-ws{position:fixed;display:flex;flex-direction:column;min-width:520px;min-height:320px;background:#0d1117;border:1px solid #30363d;border-radius:10px;box-shadow:0 18px 48px #0000008c;font-family:var(--mono, ui-monospace, monospace);font-size:12px;color:#e6edf3;overflow:hidden}.kf-ws:focus{outline:none;border-color:#58a6ff66}.kf-ws.minimized{display:none}.kf-ws-head{display:flex;align-items:center;gap:8px;padding:6px 10px;background:#161b22;border-bottom:1px solid #21262d;cursor:move;user-select:none}.kf-ws-title{font-weight:600;color:#e6edf3}.kf-ws-head-btns{margin-left:auto;display:flex;gap:4px}.kf-ws-head-btns button{background:transparent;border:0;color:#8b949e;width:22px;height:20px;border-radius:5px;cursor:pointer;font-size:13px;line-height:1}.kf-ws-head-btns button:hover{background:#21262d;color:#e6edf3}.kf-ws-toolbar{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid #21262d;background:#0d1117}.kf-ws-engine.warn{color:#d29922}.kf-ws-toolbar .dbg-input{max-width:260px}.kf-ws-body{flex:1;display:flex;min-height:0}.kf-ws-side{width:230px;flex:none;display:flex;flex-direction:column;border-right:1px solid #21262d;background:#010409;min-height:0}.kf-ws-side-head{padding:6px 10px;font-weight:600;color:#8b949e;border-bottom:1px solid #21262d}.kf-ws-funcs{flex:1;overflow:auto}.kf-ws-func{display:flex;justify-content:space-between;gap:8px;width:100%;text-align:left;background:transparent;border:0;color:#a5d6ff;font-family:inherit;font-size:11.5px;padding:3px 10px;cursor:pointer}.kf-ws-func:hover{background:#161b22}.kf-ws-func.active{background:#21262d;color:#e6edf3}.kf-ws-func-addr{color:inherit}.kf-ws-func-size{color:#6e7681}.kf-ws-main{flex:1;display:flex;flex-direction:column;min-width:0}.kf-ws-content{flex:1;min-height:0}.kf-ws-status{border-top:1px solid #21262d}.kf-ws-grip-se{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;z-index:6}.kf-ws-grip-se:hover{background:#58a6ff33}.kf-ws-chip{position:fixed;right:14px;bottom:14px;z-index:4999;background:#161b22;border:1px solid #30363d;color:#e6edf3;border-radius:999px;padding:6px 14px;font-family:var(--mono, ui-monospace, monospace);font-size:12px;cursor:pointer;box-shadow:0 8px 24px #00000073}.kf-ws-chip:hover{border-color:#58a6ff88}.dbg-cfg{display:flex;flex-direction:column;min-height:0}.dbg-cfg-viewport{flex:1;min-height:320px;overflow:hidden;cursor:grab;background:radial-gradient(circle,#21262d 1px,transparent 1px) 0 0 / 22px 22px}.dbg-cfg-viewport:active{cursor:grabbing}.dbg-cfg-svg{width:100%;height:100%}.dbg-cfg-hint{padding:4px 10px;font-size:11px}.cfg-block>rect{fill:#161b22;stroke:#30363d;stroke-width:1}.cfg-block:hover>rect{stroke:#58a6ff88}.cfg-block.current>rect{stroke:#3fb950;stroke-width:2}.cfg-title{fill:#ffa657;font-size:11px;font-weight:700}.cfg-insns{fill:#c9d1d9;font-size:10.5px}.cfg-edge{stroke:#6e7681;fill:none;stroke-width:1.2}.cfg-edge-cond{stroke:#d29922;stroke-dasharray:none}.dbg-script{display:flex;flex-direction:column;min-height:0}.dbg-script-bar{display:flex;gap:6px;padding:6px 8px;border-bottom:1px solid #21262d;align-items:center}.dbg-script-bar select{max-width:160px}.dbg-script-bar input{max-width:140px}.dbg-script-editor{flex:1.4;min-height:200px}.dbg-script-out{flex:1;min-height:120px;overflow:auto;border-top:1px solid #21262d;background:#010409;padding:6px 10px;font-size:11.5px;color:#c9d1d9;white-space:pre-wrap}
