:root{--bg: #1e1e2e;--bg-panel: #181825;--bg-elev: #232334;--fg: #cdd6f4;--muted: #7f849c;--accent: #89b4fa;--accent-2: #a6e3a1;--border: #313244;--rule: #45475a;--cell-box: #313244;--cell-uninit: #45324a;--arrow: #f38ba8;--value-ptr: #f9e2af;--danger: #f38ba8;--accent-fg: #11111b}:root[data-theme=light]{--bg: #eff1f5;--bg-panel: #e6e9ef;--bg-elev: #dce0e8;--fg: #4c4f69;--muted: #6c6f85;--accent: #1e66f5;--accent-2: #40a02b;--border: #ccd0da;--rule: #9ca0b0;--cell-box: #dce0e8;--cell-uninit: #f2d5e0;--arrow: #d20f39;--value-ptr: #df8e1d;--danger: #d20f39;--accent-fg: #ffffff}@media(prefers-color-scheme:light){:root:not([data-theme=dark]):not([data-theme=light]){--bg: #eff1f5;--bg-panel: #e6e9ef;--bg-elev: #dce0e8;--fg: #4c4f69;--muted: #6c6f85;--accent: #1e66f5;--accent-2: #40a02b;--border: #ccd0da;--rule: #9ca0b0;--cell-box: #dce0e8;--cell-uninit: #f2d5e0;--arrow: #d20f39;--value-ptr: #df8e1d;--danger: #d20f39;--accent-fg: #ffffff}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--fg);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.app{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:var(--bg-panel);border-bottom:1px solid var(--border)}.brand{font-weight:600;font-size:16px;display:flex;align-items:baseline;gap:8px}.logo{color:var(--accent)}.tagline{font-weight:400;font-size:12px;color:var(--muted)}.topbar-right{display:flex;align-items:center;gap:16px}.toggle{font-size:13px;color:var(--muted);display:flex;align-items:center;gap:6px;cursor:pointer}.sample-select{background:var(--bg-elev);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:4px 8px;font-size:13px}.challenge-picker{position:relative}.challenge-menu{position:absolute;top:calc(100% + 6px);right:0;width:340px;max-height:70vh;overflow-y:auto;background:var(--bg-elev);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 24px #0006;z-index:50;padding:6px}.challenge-menu-head{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px 8px}.challenge-item{display:block;width:100%;text-align:left;background:none;border:none;border-radius:6px;padding:8px;cursor:pointer;color:var(--fg)}.challenge-item:hover{background:var(--bg-panel)}.challenge-item-top{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:3px}.challenge-title{font-weight:600;font-size:13px}.challenge-diff{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:8px;font-weight:700}.diff-easy{color:var(--accent-2);background:#a6e3a126}.diff-medium{color:var(--value-ptr);background:#f9e2af26}.diff-hard{color:var(--danger);background:#f38ba826}.challenge-prompt{font-size:12px;color:var(--muted);line-height:1.35}.controls{display:flex;align-items:center;gap:14px;padding:8px 16px;background:var(--bg-elev);border-bottom:1px solid var(--border)}.btn{background:var(--bg-panel);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:5px 10px;font-size:13px;cursor:pointer}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:default}.btn.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);font-weight:600}.btn-icon{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;color:var(--fg)}.btn-icon .icon{display:block}.stepper{display:flex;gap:4px}.scrubber{flex:1;max-width:320px;accent-color:var(--accent)}.step-info{font-size:12px;display:flex;gap:10px;align-items:center;color:var(--muted)}.step-count{color:var(--fg)}.step-line{color:var(--accent)}.step-note{color:var(--accent-2);font-style:italic}.muted{color:var(--muted)}.panes{display:flex;flex:1;min-height:0}.pane{flex:1;min-width:0;overflow:hidden}.pane-editor{border-right:1px solid var(--border)}.pane-diagram{background:var(--bg-panel);display:flex;flex-direction:column;overflow:auto}.editor-wrap{height:100%;position:relative;display:flex;flex-direction:column}.current-line-hl{background:#89b4fa29}.breakpoint-glyph{cursor:pointer}.breakpoint-glyph:after{content:"";display:block;width:10px;height:10px;margin:4px auto 0;border-radius:50%;background:var(--danger);box-shadow:0 0 4px #f38ba8b3}.diagram-empty{padding:40px;color:var(--muted);text-align:center}.diagram-scroll{padding:12px 16px;overflow:auto}.diagram-svg text{font-family:JetBrains Mono,Menlo,monospace;font-size:13px;fill:var(--fg)}.diagram-header text{font-weight:700;fill:var(--fg)}.rule{stroke:var(--rule);stroke-width:1.5}.section-label{font-weight:700;fill:var(--accent)}.frame-label{font-weight:600;fill:var(--accent-2)}.frame-bracket{stroke:var(--accent-2);stroke-width:1.5;opacity:.7}.cell-box{fill:var(--cell-box);stroke:var(--rule);stroke-width:1}.cell-uninit{fill:var(--cell-uninit);stroke-dasharray:4 3}.cell-changed{fill:#89b4fa38;stroke:var(--accent);stroke-width:1.5}.cell-row{cursor:default}.row-highlight .cell-box{stroke:var(--accent-2);stroke-width:2}.row-highlight .var-label,.row-highlight .addr{fill:var(--accent-2)}.ident-highlight{background:#a6e3a138;border-radius:2px}.callstack{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:8px 16px 0;font-size:13px}.callstack-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-right:4px}.callstack-item{display:inline-flex;align-items:center;gap:6px}.callstack-sep{color:var(--muted)}.callstack-frame{background:var(--bg-elev);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:2px 10px;font-family:JetBrains Mono,Menlo,monospace;font-size:12px;cursor:pointer}.callstack-frame:hover,.callstack-frame.active{border-color:var(--accent-2);color:var(--accent-2)}.addr{fill:var(--muted)}.value{font-weight:600}.value-ptr{fill:var(--value-ptr)}.var-label{fill:var(--fg);font-style:italic}.sub-label{fill:var(--muted);font-size:11px}.value-dangling{fill:var(--danger)}.value-fn{fill:var(--accent-2);font-style:italic}.pointer-arrow{stroke:var(--arrow);stroke-width:1.5;opacity:.9}.diagram-area{display:flex;flex-direction:column;min-height:0}.diagram-toolbar{display:flex;justify-content:flex-end;gap:6px;padding:8px 16px 0}.btn.mini{font-size:11px;padding:3px 8px;color:var(--muted)}.btn.mini:hover{color:var(--fg)}.exam{padding:12px 16px;overflow:auto}.exam-toolbar{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.exam-hint{font-size:12px;color:var(--muted)}.exam-hint code{color:var(--fg);background:var(--bg-elev);padding:1px 4px;border-radius:3px}.exam-actions{display:flex;align-items:center;gap:8px}.exam-score{font-size:14px;font-weight:700;color:var(--danger);margin-left:8px}.exam-score-perfect{color:var(--accent-2)}.exam-table{border-collapse:collapse;font-family:JetBrains Mono,Menlo,monospace;font-size:13px}.exam-table th{text-align:left;padding:4px 14px 8px 4px;border-bottom:1.5px solid var(--rule)}.exam-table td{padding:3px 14px 3px 4px}.exam-group-row td{padding-top:14px;font-weight:700;color:var(--accent)}.exam-addr{color:var(--muted)}.exam-input{background:var(--cell-box);border:1px solid var(--rule);border-radius:4px;color:var(--fg);font-family:inherit;font-size:13px;padding:4px 8px;width:110px}.exam-input:focus{outline:none;border-color:var(--accent)}.exam-input-label{font-style:italic}.exam-ok{border-color:var(--accent-2);background:#a6e3a11f}.exam-bad{border-color:var(--danger);background:#f38ba81f}.exam-revealed{color:var(--value-ptr)}.exam-fixed-label{color:var(--muted);font-style:italic}.exam-wrap{position:relative;display:inline-block;padding-right:80px}.exam-arrow-overlay{position:absolute;top:0;color:var(--arrow);pointer-events:none;overflow:visible}.exam-arrow-line{stroke:var(--arrow);stroke-width:1.5}.exam-arrow-wrong{stroke:var(--danger);stroke-dasharray:5 3}.exam-arrow-th,.exam-arrow-td{text-align:center}.exam-arrow-handle{background:none;border:1px solid var(--rule);border-radius:50%;color:var(--muted);cursor:pointer;font-size:11px;width:24px;height:24px;line-height:1}.exam-arrow-handle:hover{border-color:var(--arrow);color:var(--arrow)}.exam-arrow-armed{border-color:var(--arrow);color:var(--arrow);background:#f38ba826;box-shadow:0 0 5px #f38ba880}.exam-arrow-chips{display:flex;flex-wrap:wrap;gap:6px}.exam-arrow-chip{font-family:JetBrains Mono,Menlo,monospace;font-size:12px;background:var(--bg-elev);border:1px solid var(--rule);border-radius:12px;padding:2px 8px;display:inline-flex;align-items:center;gap:6px}.exam-chip-bad{border-color:var(--danger);color:var(--danger)}.exam-chip-x{background:none;border:none;color:var(--muted);cursor:pointer;font-size:11px;padding:0}.exam-chip-x:hover{color:var(--danger)}.error-banner{background:#f38ba826;color:var(--danger);border:1px solid var(--danger);border-radius:6px;padding:8px 12px;margin:12px 16px 0;font-size:13px}.stdout{margin:12px 16px;border-top:1px solid var(--border);padding-top:8px}.stdout-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.stdout pre{font-family:JetBrains Mono,Menlo,monospace;font-size:13px;margin:0;white-space:pre-wrap;color:var(--accent-2)}.heap-report{margin:12px 16px;border-top:1px solid var(--border);padding-top:8px;font-size:13px}.heap-report-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}.heap-report-title{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.heap-badge{font-size:12px;padding:1px 8px;border-radius:10px;font-weight:600}.heap-ok{color:var(--accent-2);background:#a6e3a124}.heap-leak{color:var(--danger);background:#f38ba824}.heap-stats{display:flex;flex-wrap:wrap;gap:14px;color:var(--muted);font-family:JetBrains Mono,Menlo,monospace;font-size:12px}.heap-stats strong{color:var(--fg)}.heap-leaks{margin:8px 0 0;padding-left:18px;color:var(--danger)}.heap-leaks li{margin:2px 0}.heap-leaks code{font-family:JetBrains Mono,Menlo,monospace;color:var(--value-ptr)}.heap-leaks strong{color:var(--fg)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media(max-width:860px){.topbar{flex-wrap:wrap;gap:8px}.tagline{display:none}.controls{flex-wrap:wrap}.scrubber{max-width:none;flex-basis:100%;order:5}.panes{flex-direction:column}.pane-editor{border-right:none;border-bottom:1px solid var(--border);min-height:40vh;flex:none;height:45vh}.pane-diagram{flex:none;min-height:45vh}.challenge-menu{width:min(340px,90vw)}}@media print{.topbar,.controls,.pane-editor,.diagram-toolbar,.callstack{display:none!important}.app,.panes,.pane-diagram{display:block;height:auto;overflow:visible;background:#fff}.diagram-svg text{fill:#000}}.proctree{padding:8px 16px 0;font-size:13px}.proctree-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.proctree-list{display:flex;flex-direction:column;gap:4px;margin-top:6px}.proc-chip{align-self:flex-start;display:inline-flex;align-items:center;gap:8px;background:var(--bg-elev);color:var(--fg);border:1px solid var(--border);border-radius:6px;padding:3px 10px;font-family:JetBrains Mono,Menlo,monospace;font-size:12px;cursor:pointer}.proc-chip:hover{border-color:var(--accent)}.proc-chip.active{border-color:var(--accent);background:#89b4fa29}.proc-pid{font-weight:700;color:var(--accent)}.proc-tag{color:var(--fg)}.proc-tag.muted{color:var(--muted)}.proc-err{color:var(--danger)}.fdtable{margin:12px 16px 0;border-top:1px solid var(--border);padding-top:8px}.fdtable-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}.fdtable table{border-collapse:collapse;font-family:JetBrains Mono,Menlo,monospace;font-size:12px}.fdtable th{text-align:left;color:var(--muted);font-weight:600;padding:2px 16px 2px 0}.fdtable td{padding:2px 16px 2px 0}.fd-num{color:var(--accent);font-weight:700}.fd-file{color:var(--value-ptr)}.fd-pipe{color:var(--accent-2)}
