*,*:before,*:after{box-sizing:border-box}:root{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#e2e8f0;background-color:#0f1117;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-height:100vh}button{font-family:inherit}button:focus-visible{outline:2px solid #6366f1;outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#1e293b;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#334155}.loading-screen{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--bg-base);display:flex;align-items:center;justify-content:center;z-index:100}.loading-content{display:flex;flex-direction:column;align-items:center;gap:2rem;width:340px}.loading-logo{text-align:center}.loading-logo h1{font-size:2.5rem;font-weight:700;color:var(--text-primary);margin:.25rem 0 0;letter-spacing:-.5px}.tagline{color:var(--text-3);font-size:.95rem;margin:.25rem 0 0}.progress-container{width:100%}.progress-bar{width:100%;height:6px;background:var(--border);border-radius:999px;overflow:hidden}.progress-fill{height:100%;background:linear-gradient(90deg,var(--accent),#8b5cf6);border-radius:999px;transition:width .4s ease}.progress-info{display:flex;justify-content:space-between;margin-top:.5rem;font-size:.8rem}.stage-label{color:var(--text-2)}.percent-label{color:var(--accent);font-weight:600}.once-notice{color:var(--text-muted);font-size:.78rem;text-align:center;margin:0}.examples-panel{display:flex;align-items:center;justify-content:space-between;padding:0 1rem;flex:1;height:100%;gap:.75rem}.examples-left{display:flex;align-items:center;gap:.5rem}.examples-right{display:flex;align-items:center;gap:.4rem}.examples-label{font-size:.78rem;color:var(--text-muted)}.examples-select{background:var(--bg-surface);color:var(--text-primary);border:1px solid var(--border-strong);border-radius:6px;padding:.28rem .6rem;font-size:.82rem;cursor:pointer;outline:0;transition:border-color .12s}.examples-select:hover,.examples-select:focus{border-color:var(--accent)}.view-toggle{background:var(--bg-surface);color:var(--text-3);border:1px solid var(--border-strong);border-radius:6px;padding:.28rem .75rem;font-size:.78rem;cursor:pointer;transition:all .12s}.view-toggle:hover{border-color:var(--accent);color:var(--text-primary)}.view-toggle.active{background:var(--bg-accent);border-color:var(--accent);color:var(--accent-text)}.theme-btn{background:var(--bg-surface);color:var(--text-3);border:1px solid var(--border-strong);border-radius:6px;width:30px;height:26px;font-size:.85rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .12s;padding:0;line-height:1}.theme-btn:hover{border-color:var(--accent);color:var(--text-primary)}.editor-wrapper{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg-base)}.editor-toolbar{display:flex;align-items:center;gap:.75rem;padding:.45rem 1rem;background:var(--bg-base);border-bottom:1px solid var(--border);flex-shrink:0}.run-btn{background:var(--accent-dim);color:#fff;border:0;border-radius:6px;padding:.32rem 1rem;font-size:.82rem;font-weight:600;cursor:pointer;transition:background .12s;letter-spacing:.01em}.run-btn:hover:not(:disabled){background:var(--accent)}.run-btn:disabled{background:var(--border);color:var(--text-muted);cursor:not-allowed}@keyframes badge-pop{0%{transform:scale(.82);opacity:.5}60%{transform:scale(1.06)}to{transform:scale(1);opacity:1}}.status-badge{font-size:.75rem;padding:.18rem .6rem;border-radius:999px;font-weight:500;animation:badge-pop .3s ease-out}.status-complete{background:var(--green-bg);color:var(--green-text)}.status-running{background:var(--blue-bg);color:var(--blue-text)}.status-error,.status-overflow{background:var(--red-bg);color:var(--red)}.hint{margin-left:auto;font-size:.72rem;color:var(--border-strong)}.editor-container{flex:1;overflow:hidden}.editor-container .cm-editor{height:100%}.callstack-panel{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg-base);border-left:1px solid var(--border);border-right:1px solid var(--border)}.panel-header{display:flex;align-items:center;gap:.5rem;padding:.55rem 1rem;border-bottom:1px solid var(--border);flex-shrink:0}.panel-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-muted)}.overflow-badge{background:var(--red-dim);color:var(--red);font-size:.68rem;padding:.12rem .5rem;border-radius:999px}.frame-counter{margin-left:auto;font-size:.7rem;color:var(--text-muted)}.callstack-list{flex:1;overflow-y:auto;padding:.5rem;display:flex;flex-direction:column;gap:.35rem;-webkit-mask-image:linear-gradient(to bottom,black calc(100% - 28px),transparent 100%);mask-image:linear-gradient(to bottom,black calc(100% - 28px),transparent 100%)}.callstack-list::-webkit-scrollbar{width:4px}.callstack-list::-webkit-scrollbar-track{background:transparent}.callstack-list::-webkit-scrollbar-thumb{background:var(--scrollbar);border-radius:2px}.empty-state{color:var(--text-5);font-size:.82rem;text-align:center;padding:2rem 1rem}.stack-frame{background:var(--bg-panel);border:1px solid var(--border);border-radius:8px;padding:.55rem .75rem;transition:border-color .15s}.stack-frame.frame-active{border-color:var(--accent);background:var(--bg-frame-active)}.frame-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.3rem}.frame-name{font-size:.83rem;font-weight:600;color:var(--accent-text);font-family:JetBrains Mono,Fira Code,ui-monospace,monospace}.frame-line{font-size:.7rem;color:var(--text-muted)}.frame-locals{margin-top:.35rem}.locals-label{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-5);margin-bottom:.3rem}.local-row{display:flex;align-items:baseline;gap:.35rem;font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.77rem;line-height:1.65}.local-key{color:var(--blue-text)}.local-eq{color:var(--text-muted)}.local-val{color:var(--green-text);word-break:break-all}.stdout-section{border-top:1px solid var(--border);padding:.5rem;flex-shrink:0;max-height:110px;overflow-y:auto}.stdout-label{font-size:.66rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-5);margin-bottom:.2rem}.stdout-content{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.77rem;color:var(--text-2);margin:0;white-space:pre-wrap;word-break:break-word}.inspect-header{background:var(--bg-accent);border-bottom-color:var(--accent)}.back-btn{margin-left:auto;background:transparent;border:1px solid var(--border-ring);border-radius:4px;color:var(--accent-sub);font-size:.7rem;padding:.1rem .5rem;cursor:pointer;transition:background .12s}.back-btn:hover{background:var(--bg-accent)}.inspect-body{padding:.85rem .9rem;display:flex;flex-direction:column;gap:.65rem;overflow-y:auto;flex:1}.inspect-row{display:grid;grid-template-columns:88px 1fr;align-items:baseline;gap:.5rem}.inspect-row-col{grid-template-columns:1fr;gap:.25rem}.inspect-label{font-size:.68rem;text-transform:uppercase;letter-spacing:.07em;color:var(--text-muted)}.inspect-value{font-size:.83rem;color:var(--text-primary)}.inspect-value.mono{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.8rem;word-break:break-all}.inspect-value.return-val{color:var(--green);font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;font-size:.8rem;font-weight:600}.inspect-value.status-active{color:var(--accent-text)}.inspect-value.status-completed{color:var(--text-3)}.inspect-value.status-overflow{color:var(--red)}.calltree-panel{display:flex;flex-direction:column;height:100%;overflow:hidden;background:var(--bg-base);border-left:1px solid var(--border)}.calltree-container{flex:1;overflow:hidden;position:relative}.empty-state{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--text-5);font-size:.82rem;pointer-events:none}.calltree-svg{display:block;width:100%;height:100%}.node-name,.node-sub{font-family:JetBrains Mono,Fira Code,ui-monospace,monospace;pointer-events:none}.node-name{font-size:12px;font-weight:600}.node-sub{font-size:11px}.fit-btn{margin-left:auto;background:0;border:1px solid var(--border);border-radius:4px;color:var(--text-muted);font-size:.7rem;padding:.1rem .45rem;cursor:pointer;transition:all .15s}.fit-btn:hover{border-color:var(--accent);color:var(--accent-text)}.controls-bar{display:flex;align-items:center;gap:.85rem;padding:.5rem 1rem;background:var(--bg-controls);border-top:1px solid var(--border);flex-shrink:0;flex-wrap:wrap;min-height:48px}.playback-buttons{display:flex;align-items:center;gap:.2rem}.ctrl-btn{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:6px;color:var(--text-3);width:32px;height:32px;font-size:.82rem;cursor:pointer;transition:all .12s;display:flex;align-items:center;justify-content:center}.ctrl-btn:hover:not(:disabled){background:var(--border);color:var(--text-primary);border-color:var(--border-hover)}.ctrl-btn:disabled{opacity:.25;cursor:not-allowed}.play-btn{background:var(--bg-accent);border-color:var(--accent-dim);color:var(--accent-text);font-size:.95rem;width:36px;height:36px}.play-btn:hover:not(:disabled){background:var(--accent-darker);color:var(--accent-text-hover);border-color:var(--accent)}.scrubber-container{display:flex;align-items:center;gap:.5rem;flex:1;min-width:80px}.scrubber{flex:1;accent-color:var(--accent);height:4px;cursor:pointer}.scrubber-label{font-size:.7rem;color:var(--text-muted);white-space:nowrap;min-width:52px;font-variant-numeric:tabular-nums}.speed-buttons{display:flex;align-items:center;gap:.2rem}.speed-label{font-size:.72rem;color:var(--text-muted);margin-right:.15rem}.speed-btn{background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:5px;color:var(--text-muted);padding:.18rem .42rem;font-size:.7rem;cursor:pointer;transition:all .1s}.speed-btn:hover{color:var(--text-primary);border-color:var(--border-hover)}.speed-btn.active{background:var(--bg-accent);border-color:var(--accent);color:var(--accent-text)}.overflow-notice{background:var(--red-notice-bg);border:1px solid var(--red-border);border-radius:6px;color:var(--red);font-size:.76rem;padding:.3rem .7rem;flex:1;min-width:180px}.keyboard-hints{display:flex;gap:.75rem;margin-left:auto;align-items:center}.keyboard-hints span{font-size:.68rem;color:var(--text-muted);display:flex;align-items:center;gap:.3rem}.key-hint{display:inline-block;background:var(--bg-surface);border:1px solid var(--border-strong);border-radius:3px;padding:0 5px;font-size:.65rem;font-family:inherit;color:var(--text-3);line-height:1.7}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{color-scheme:dark;--bg-base:#0c0f18;--bg-panel:#0f1420;--bg-surface:#141926;--bg-controls:#090d16;--bg-accent:#1e1b4b;--bg-frame-active:#10152a;--bg-exec-line:#1a2540;--bg-selection:#1a2d50;--bg-node-completed:#0d1520;--bg-node-overflow:#1a0a0a;--border:#1e2d45;--border-strong:#263550;--border-hover:#334155;--border-ring:#312e81;--border-completed:#1e3d6f;--border-overflow:#7f1d1d;--accent:#6366f1;--accent-dim:#4f46e5;--accent-darker:#3730a3;--accent-text:#a5b4fc;--accent-text-hover:#e0e7ff;--accent-sub:#818cf8;--text-primary:#e2e8f0;--text-1:#cbd5e1;--text-2:#94a3b8;--text-3:#64748b;--text-muted:#4b5975;--text-5:#2d3f5a;--green:#4ade80;--green-text:#86efac;--green-bg:#052212;--blue-text:#93c5fd;--blue-bg:#051829;--red:#f87171;--red-light:#fca5a5;--red-bg:#120404;--red-dim:#450a0a;--red-border:#7f1d1d;--red-notice-bg:#130505;--scrollbar:#1e2d45;--dim-opacity:.22}[data-theme=light]{color-scheme:light;--bg-base:#f8fafc;--bg-panel:#fff;--bg-surface:#f1f5f9;--bg-controls:#e8edf5;--bg-accent:#eef2ff;--bg-frame-active:#e8eeff;--bg-exec-line:#eef2ff;--bg-selection:#dbeafe;--bg-node-completed:#f8fafc;--bg-node-overflow:#fff1f2;--border:#e2e8f0;--border-strong:#cbd5e1;--border-hover:#94a3b8;--border-ring:#c7d2fe;--border-completed:#bfdbfe;--border-overflow:#fca5a5;--accent:#6366f1;--accent-dim:#4f46e5;--accent-darker:#4338ca;--accent-text:#4338ca;--accent-text-hover:#312e81;--accent-sub:#6366f1;--text-primary:#0f172a;--text-1:#1e293b;--text-2:#334155;--text-3:#475569;--text-muted:#64748b;--text-5:#94a3b8;--green:#16a34a;--green-text:#15803d;--green-bg:#dcfce7;--blue-text:#1d4ed8;--blue-bg:#dbeafe;--red:#dc2626;--red-light:#ef4444;--red-bg:#fef2f2;--red-dim:#fee2e2;--red-border:#fca5a5;--red-notice-bg:#fff5f5;--scrollbar:#e2e8f0;--dim-opacity:.35}html,body,#root{height:100%;overflow:hidden;background:var(--bg-base);color:var(--text-primary);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Inter,sans-serif;font-size:14px;-webkit-font-smoothing:antialiased}.app{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-header{display:flex;align-items:center;background:var(--bg-base);border-bottom:1px solid var(--border);flex-shrink:0;height:44px;padding:0 1rem}.logo{display:flex;align-items:center;gap:.45rem;padding-right:1rem;border-right:1px solid var(--border);flex-shrink:0;height:100%}.logo-icon{font-size:1.15rem}.logo-text{font-size:1rem;font-weight:700;color:var(--text-primary);letter-spacing:-.4px}.app-main{display:flex;flex:1;overflow:hidden}.pane-editor{flex-shrink:0;overflow:hidden}.pane-callstack{flex-shrink:0;overflow:hidden;border-left:0}.pane-calltree{flex:1;min-width:0;overflow:hidden}.resizer{flex-shrink:0;width:4px;cursor:col-resize;background:var(--border);position:relative;transition:background .15s;z-index:10}.resizer:after{content:"";position:absolute;top:-4px;right:0;bottom:-4px;left:0}.resizer:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:4px;height:28px;background:repeating-linear-gradient(to bottom,var(--text-5) 0px,var(--text-5) 3px,transparent 3px,transparent 6px);border-radius:2px;opacity:.35;transition:opacity .15s}.resizer:hover,.resizer:active{background:var(--accent)}.resizer:hover:before{opacity:0}.error-screen{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--red);font-size:.9rem}@media(max-width:700px){.app-main{flex-direction:column}.pane-editor{flex:none;width:100%!important;height:40%;border-bottom:1px solid var(--border)}.pane-callstack{flex:none;width:100%!important;height:30%;border-bottom:1px solid var(--border)}.pane-calltree{flex:1;width:100%!important}.resizer{display:none}}