:root{--bg:#0f1115;--panel:#161a21;--panel-2:#1b212a;--border:#262c36;--text:#d7dce3;--muted:#8891a0;--accent:#6aa9ff;--accent-dim:#2f4a6d;--amber:#e0b050;--green:#4fbf7f;--red:#ef6b6b;--border-soft:#ffffff0d;--mono:ui-monospace, "Cascadia Code", "JetBrains Mono", Consolas, monospace;--run-text:#06101f;--run-hover-border:#38414f;--pill-ok-bg:#12261b;--pill-ok-border:#22412f;--pill-err-bg:#2a1616;--pill-err-border:#4a2626;--pill-warn-bg:#262016;--pill-warn-border:#4a3f22}.theme-light{--bg:#f5f7fa;--panel:#fff;--panel-2:#f0f2f5;--border:#e1e4e8;--text:#24292e;--muted:#6a737d;--accent:#0366d6;--accent-dim:#f1f8ff;--amber:#b07010;--green:#22863a;--red:#d73a49;--border-soft:#0000000d;--run-text:#fff;--run-hover-border:#024b9e;--pill-ok-bg:#e6f6ec;--pill-ok-border:#b8e0c8;--pill-err-bg:#fdeaea;--pill-err-border:#f8b8b8;--pill-warn-bg:#fcf1d9;--pill-warn-border:#f1d184}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font:13px/1.5 system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}.app{height:100%;color:var(--text);background:var(--bg);flex-direction:column;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--border);flex:none;align-items:center;gap:12px;padding:8px 14px;display:flex}.brand{letter-spacing:.2px;align-items:baseline;gap:8px;font-weight:650;display:flex}.brand-sub{color:var(--muted);font-size:11px;font-weight:400}.sample-select,.run{background:var(--panel-2);color:var(--text);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:5px 10px;font-size:12px}.sample-select:hover,.run:hover{border-color:var(--run-hover-border)}.run{background:var(--accent);color:var(--run-text);border-color:#0000;font-weight:600}.run:disabled{opacity:.55;cursor:default}.pill{border:1px solid var(--border);color:var(--muted);text-transform:lowercase;border-radius:999px;margin-left:auto;padding:3px 9px;font-size:11px}.tabs .pill{margin-bottom:6px;margin-right:4px}.pill-ok{color:var(--green);border-color:var(--pill-ok-border);background:var(--pill-ok-bg)}.pill-compile_error,.pill-runtime_error{color:var(--red);border-color:var(--pill-err-border);background:var(--pill-err-bg)}.pill-limit_exceeded{color:var(--amber);border-color:var(--pill-warn-border);background:var(--pill-warn-bg)}.split{flex:auto;min-height:0}.pane{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex}.pane-views{background:var(--bg)}.split-resizer:hover .resizer-visible,.split-resizer:active .resizer-visible{background:var(--accent)}.resizer-visible{background:var(--border);transition:background .2s}.split-pane-vertical>.split-resizer>.resizer-visible{width:1px;height:100%}.split-pane-horizontal>.split-resizer>.resizer-visible{width:100%;height:1px}.editor-container{flex-direction:column;flex:auto;min-height:0;display:flex}.terminal-container{background:var(--panel-2);flex-direction:column;flex:auto;min-height:0;display:flex}.tabs{border-bottom:1px solid var(--border);background:var(--panel);flex:none;align-items:flex-end;gap:2px;padding:6px 8px 0;display:flex}.tab{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;align-items:center;gap:6px;padding:6px 12px;font-size:12px;display:flex}.tab:hover{color:var(--text)}.tab-active{background:var(--bg);border-color:var(--border);color:var(--text)}.tab-count{color:#e79b9b;background:#3a2a2a;border-radius:999px;padding:0 6px;font-size:10px}.view{flex:auto;min-height:0;position:relative;overflow:hidden}.empty-pane{color:var(--muted);padding:24px;font-size:12.5px}.banner{padding:10px 14px;font-size:12px}.banner-error{color:#ef8b8b;background:#2a1616;border-bottom:1px solid #4a2626}.node{background:var(--panel);border:1px solid var(--border);width:250px;font-family:var(--mono);border-radius:8px;font-size:11.5px;overflow:hidden;box-shadow:0 1px 3px #0006}.node-header{background:var(--panel-2);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;padding:6px 9px;font-size:11px;display:flex}.frame-node{border-color:#2f3a4a}.frame-top{border-color:var(--accent);box-shadow:0 0 0 1px #6aa9ff40}.frame-method{color:var(--accent);font-weight:600}.badge{text-transform:uppercase;letter-spacing:.5px;color:#06101f;background:var(--accent);border-radius:3px;padding:1px 5px;font-size:9px}.heap-node{border-color:#3a3524}.heap-type{color:var(--amber);font-weight:600}.heap-id{color:var(--muted);font-size:10px}.node-changed{animation:.7s ease-out flash}@keyframes flash{0%{box-shadow:0 0 0 2px var(--green)}to{box-shadow:0 1px 3px #0006}}.node-body{padding:3px 0}.row{align-items:center;gap:8px;height:24px;padding:0 9px;display:flex;position:relative}.row-out{opacity:.38}.row-empty{color:var(--muted);font-style:italic}.row-key{color:var(--muted);flex:none;align-items:center;gap:5px;display:flex}.row-val{text-align:right;text-overflow:ellipsis;white-space:nowrap;margin-left:auto;overflow:hidden}.param-tag{text-transform:uppercase;color:#7d8ba0;border:1px solid #333c49;border-radius:3px;padding:0 3px;font-size:8.5px}.val-int,.val-long,.val-short,.val-byte,.val-double,.val-float,.val-decimal{color:#b6d38a}.val-string,.val-char{color:#d99a6c}.val-bool{color:#c39ae0}.val-null{color:#6f7a8a;font-style:italic}.val-unset{color:#55606f;font-style:italic}.val-ref{color:var(--accent)}.val-struct{border:1px dashed #4a4530;border-radius:4px;align-items:center;gap:5px;padding:0 4px;display:inline-flex}.struct-tag{color:var(--amber);font-size:9.5px}.struct-field{gap:3px;display:inline-flex}.struct-key{color:var(--muted)}.ref-handle{background:var(--accent)!important;border:none!important;width:7px!important;height:7px!important;right:-4px!important}.target-handle{background:var(--amber)!important;border:none!important;width:7px!important;height:7px!important;left:-4px!important}.react-flow__edge.edge-stack .react-flow__edge-path{stroke:var(--accent);stroke-width:1.6px}.heap-array-node{width:auto;min-width:150px}.heap-array-grid{flex-direction:column;gap:2px;padding:8px 12px 12px;display:flex}.heap-array-indices,.heap-array-values{flex-direction:row;display:flex}.heap-array-cell{text-align:center;justify-content:center;align-items:center;width:44px;min-width:44px;display:flex;position:relative}.index-cell{color:var(--muted);border-bottom:1px solid var(--border-soft);height:16px;font-size:10px}.value-cell{background:var(--bg);border:1px solid var(--border);border-right:none;height:30px}.value-cell:last-child{border-right:1px solid var(--border)}.value-cell .ref-handle{top:50%!important;right:-4px!important;transform:translateY(-50%)!important}.heap-dict-node{width:auto;min-width:220px}.heap-dict-table{border-collapse:collapse;width:100%;margin:6px 0;font-size:11.5px}.heap-dict-table th{text-align:left;color:var(--muted);text-transform:uppercase;border-bottom:1px solid var(--border-soft);padding:4px 12px;font-size:10px;font-weight:500}.heap-dict-table td{border-bottom:1px solid var(--border-soft);padding:6px 12px;position:relative}.heap-dict-table tr:last-child td{border-bottom:none}.dict-key{color:var(--muted);border-right:1px solid var(--border-soft)}.dict-val{text-align:right}.dict-val .ref-handle{top:50%!important;right:-4px!important;transform:translateY(-50%)!important}.react-flow__edge.edge-heap .react-flow__edge-path{stroke:#8a7a4a;stroke-width:1.6px}.react-flow__background{opacity:.5}.stdout{font-family:var(--mono);white-space:pre-wrap;height:100%;margin:0;padding:14px 16px;font-size:12px;overflow:auto}.diagnostics{height:100%;margin:0;padding:8px;list-style:none;overflow:auto}.diag{border-radius:6px;align-items:baseline;gap:10px;padding:7px 10px;font-size:12px;display:flex}.diag+.diag{margin-top:3px}.diag-error{background:#2a1616}.diag-warn{background:#23200f}.diag-loc{font-family:var(--mono);color:var(--muted);flex:none}.diag-id{font-family:var(--mono);color:#7d8ba0;flex:none;font-size:10.5px}.diag-msg{color:var(--text)}.bottombar{background:var(--panel);border-top:1px solid var(--border);flex:none;padding:8px 14px}.transport{align-items:center;gap:12px;display:flex}.transport-buttons{gap:4px;display:flex}.transport-buttons button{background:var(--panel-2);border:1px solid var(--border);color:var(--text);cursor:pointer;border-radius:6px;justify-content:center;align-items:center;width:32px;height:28px;font-size:11px;display:flex}.transport-buttons button:hover:not(:disabled){border-color:#38414f}.transport-buttons button:disabled{opacity:.35;cursor:default}.transport-buttons .play{background:var(--accent);color:#06101f;border-color:#0000}.scrubber{accent-color:var(--accent);flex:auto;height:4px}.step-count{font-family:var(--mono);color:var(--muted);text-align:right;min-width:120px;font-size:11.5px}.line-executed{background:#6aa9ff24}.glyph-executed{background:var(--accent);margin-left:4px;width:3px!important}.analysis-pane{flex-direction:column;height:100%;min-height:0;display:flex}.analysis-bar{border-bottom:1px solid var(--border);background:var(--panel);flex:none;align-items:center;gap:10px;padding:8px 12px;display:flex}.analysis-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:11px}.analysis-select{background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:6px;max-width:260px;padding:4px 8px;font-family:inherit;font-size:12px}.analysis-reset{color:var(--accent);border:1px solid var(--border);cursor:pointer;background:0 0;border-radius:6px;padding:4px 8px;font-size:11px}.analysis-reset:hover{border-color:var(--accent)}.analysis-hint{color:var(--muted);margin-left:auto;font-size:11px}.analysis-canvas{flex:auto;min-height:0}.cfg-node{color:var(--text);justify-content:center;align-items:center;padding:12px 16px;display:flex;position:relative}.cfg-content{text-align:center;z-index:1;flex-direction:column;gap:6px;display:flex}.cfg-explanation{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;background:var(--panel);border:1px solid var(--border);border-radius:4px;align-self:center;padding:2px 6px;font-size:9px}.cfg-node:before,.cfg-node:after{content:"";z-index:0;position:absolute}.cfg-node:before{opacity:calc(.5 + var(--heat,0) * .5);transition:opacity .3s;inset:0}.cfg-node:after{background-color:var(--bg);inset:2px}.cfg-node-unreachable{opacity:.4}.cfg-node-current{filter:drop-shadow(0 0 2px #fbbc05)drop-shadow(0 0 6px #fbbc0599)}.shape-pill:before,.shape-pill:after{border-radius:9999px}.shape-rect:before,.shape-rect:after{border-radius:6px}.shape-diamond{padding:24px 30px}.shape-diamond:before,.shape-diamond:after{clip-path:polygon(50% 0%,100% 50%,50% 100%,0% 50%)}.shape-para{padding:12px 24px}.shape-para:before,.shape-para:after{clip-path:polygon(10% 0%,100% 0%,90% 100%,0% 100%)}.color-green:before{background-color:#34a853}.color-red:before{background-color:#ea4335}.color-blue:before{background-color:#4285f4}.color-yellow:before{background-color:#fbbc05}.color-purple:before{background-color:#a142f4}.color-maroon:before{background-color:#a0315c}.cfg-handle{opacity:0;background:0 0;border:none}.cfg-code{font-family:var(--mono);white-space:pre-wrap;word-break:break-word;color:var(--text);margin:0;font-size:13px;font-weight:500;line-height:1.35}.cfg-count{color:#ffffffb3;letter-spacing:.04em;font-size:10px}.react-flow__edge.cfg-edge .react-flow__edge-path{stroke:#38445c;stroke-width:1.5px}.react-flow__edge.cfg-edge-hot .react-flow__edge-path{stroke:var(--accent);stroke-width:2px}.react-flow__edge.cfg-edge .react-flow__edge-text{fill:var(--muted);font-size:10px}.react-flow__edge.cfg-edge .react-flow__edge-textbg{fill:var(--panel)}.recursion-hud{z-index:10;background:var(--panel-2);border:1px solid var(--border);font-family:var(--mono);border-radius:8px;padding:12px;font-size:11px;position:absolute;box-shadow:0 4px 12px #0000004d}.legend-hud{flex-direction:column;gap:8px;display:flex;bottom:20px;left:20px}.stats-hud{flex-direction:column;gap:6px;min-width:150px;display:flex;bottom:20px;right:20px}.stats-hud h4{color:var(--muted);letter-spacing:1px;margin:0 0 4px;font-size:10px;font-weight:500}.stat-line{color:var(--text);justify-content:space-between;display:flex}.stat-val{color:var(--accent);font-weight:600}.legend-item{color:var(--muted);align-items:center;gap:8px;display:flex}.legend-box{border:2px solid;border-radius:2px;width:12px;height:12px}.legend-box.active{background:#0a84ff33;border-color:#0a84ff}.legend-box.waiting{background:#a142f41a;border-color:#a142f4}.legend-box.base{background:#34a8531a;border-color:#34a853}.legend-box.recursive{background:#a142f44d;border-color:#a142f4}.recursion-node{background:var(--panel);text-align:center;width:100%;height:100%;font-family:var(--mono);color:var(--text);cursor:pointer;border:2px solid;border-radius:4px;flex-direction:column;justify-content:center;align-items:center;padding:10px;font-size:13px;transition:all .2s;display:flex}.recursion-node-inner{width:100%}.recursion-node:hover{filter:brightness(1.2)}.state-active{background:#0a84ff33;border-color:#0a84ff;box-shadow:0 0 10px #0a84ff66}.state-waiting{background:#a142f41a;border-color:#a142f4}.state-base{background:#34a8531a;border-color:#34a853}.state-recursive{background:#a142f44d;border-color:#a142f4}.state-future{border-color:var(--border);opacity:.3}.recursion-step{color:var(--muted);margin-top:4px;font-size:10px}.recursion-return{border-top:1px dashed var(--border);color:var(--amber);margin-top:6px;padding-top:6px;font-size:14px;font-weight:600}.react-flow__edge.recursion-edge path{stroke:var(--border);stroke-width:2px}.react-flow__edge.recursion-edge-hot path{stroke:#0a84ff;stroke-width:3px}.recursion-handle{opacity:0}.dataflow-scroll{flex:auto;min-height:0;padding:14px;overflow:auto}.df-cards{flex-direction:column;gap:12px;display:flex}.df-card{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:10px;padding:12px;transition:all .2s;display:flex}.df-card:hover{border-color:var(--border-soft);box-shadow:0 4px 12px #0003}.df-card-active{background:#f5a5241a;border-color:#f5a524;box-shadow:0 0 0 1px #f5a524,0 4px 12px #f5a52426}.df-card-header{border-bottom:1px dashed var(--border);align-items:center;gap:8px;padding-bottom:8px;font-size:13px;display:flex}.df-equals{color:var(--muted)}.df-card-body{color:var(--muted);flex-direction:column;gap:6px;font-size:12px;display:flex}.df-event{align-items:center;gap:8px;display:flex}.df-event-icon{opacity:.8;font-size:14px}.df-event-arrow{color:var(--border-soft);margin-left:14px;font-size:14px}.df-var{font-family:var(--mono);color:var(--accent)}.df-link{color:var(--text);font-family:var(--mono);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.df-link:hover{color:var(--accent);text-decoration:underline}.df-step{color:var(--muted);font-size:10px}.df-value{font-family:var(--mono)}.react-flow__controls{box-shadow:none;border:1px solid var(--border);border-radius:6px;overflow:hidden}.react-flow__controls-button{background:var(--panel);border-bottom:1px solid var(--border);color:var(--text);width:24px;height:24px}.react-flow__controls-button:hover{background:var(--panel-2)}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls-button svg{fill:var(--text)}.ai-bubble-container{z-index:1000;flex-direction:column;align-items:flex-end;display:flex;position:fixed;bottom:80px;right:24px}.ai-bubble-btn{background:var(--accent);color:#fff;cursor:pointer;border:none;border-radius:28px;justify-content:center;align-items:center;width:56px;height:56px;font-size:24px;transition:transform .2s cubic-bezier(.175,.885,.32,1.275);display:flex;box-shadow:0 4px 12px #0006}.ai-bubble-btn:hover{transform:scale(1.1)}.ai-floating-panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;flex-direction:column;width:380px;height:600px;max-height:calc(100vh - 160px);margin-bottom:16px;animation:.3s cubic-bezier(.16,1,.3,1) slideUp;display:flex;overflow:hidden;box-shadow:0 12px 32px #0009}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.ai-pane{flex-direction:column;height:100%;min-height:0;display:flex}.ai-scroll{flex:auto;min-height:0;padding:14px;overflow:auto}.ai-button{background:var(--accent-dim);color:var(--text);border:1px solid var(--accent);cursor:pointer;border-radius:6px;padding:4px 10px;font-family:inherit;font-size:12px}.ai-button:hover:not(:disabled){background:var(--accent);color:var(--run-text)}.ai-button:disabled{opacity:.5;cursor:default}.ai-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;margin-bottom:12px;padding:12px 14px}.ai-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 6px;font-size:11px;font-weight:600}.ai-text{margin:0 0 10px;font-size:13px;line-height:1.6}.ai-text:last-child{margin-bottom:0}.ai-label{color:var(--muted)}.ai-cite{color:var(--accent);margin-right:8px}.ai-warn{color:var(--amber);margin:0 0 10px;font-size:12px}.ai-code{background:var(--bg);border:1px solid var(--border);font-family:var(--mono);white-space:pre;border-radius:6px;margin:0;padding:8px 10px;font-size:12px;overflow-x:auto}.ai-reason{color:var(--muted);margin-top:6px;font-size:12px}.diagnostics-pane{height:100%;overflow:auto}.support{border-top:1px solid var(--border);margin-top:8px}.support-toggle{text-align:left;width:100%;color:var(--muted);cursor:pointer;background:0 0;border:none;padding:10px 14px;font-family:inherit;font-size:12px;display:block}.support-toggle:hover{color:var(--text)}.support-loading{color:var(--muted);padding:0 14px 12px;font-size:12px}.support-body{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px;padding:0 14px 16px;display:grid}.support-group{min-width:0}.support-title{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:0 0 4px;font-size:10px;font-weight:600}.support-title-off{color:var(--muted)}.support-list{color:var(--text);margin:0;padding-left:16px;font-size:12px;line-height:1.55}.support-list-off{color:var(--muted)}@media (width<=800px){.split,.split-pane-vertical{flex-direction:column!important}.split-pane-vertical>.split-resizer{cursor:row-resize!important;flex:0 0 10px!important;margin:-5px 0!important}.split-pane-vertical>.split-resizer>.resizer-visible{width:100%;height:2px}.topbar{flex-wrap:wrap;gap:10px 12px;padding:10px 14px}.brand{flex:100%;margin-bottom:2px}.tabs{-webkit-overflow-scrolling:touch;scrollbar-width:none;padding-bottom:2px;overflow-x:auto}.tabs::-webkit-scrollbar{display:none}.tab{white-space:nowrap;padding:10px 16px}.tabs .pill{margin-bottom:10px}.bottombar{-webkit-overflow-scrolling:touch;scrollbar-width:none;overflow-x:auto}.bottombar::-webkit-scrollbar{display:none}.transport{min-width:min-content}.ai-bubble-container{bottom:70px;right:16px}.ai-floating-panel{width:calc(100vw - 32px);max-height:calc(100vh - 120px)}}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.view:focus-visible{outline:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
