:root{--bg:#f5f6f8;--panel:#fff;--panel-2:#f0f2f5;--border:#dde1e7;--text:#1d2330;--muted:#677085;--accent:#3b5bdb;--accent-soft:#e5eaff;--true:#2b8a3e;--false:#c92a2a;--back:#e67700;--jump:#8c3fd1;--step-line:#fff3bf;--step-span:#ffe066;--err-line:#fff0f0;--warn:#e67700;--code-bg:#fbfbfc;--flash:#ffd43b;--hl-kw:#7c3aed;--hl-str:#2b8a3e;--hl-num:#c2410c;--hl-com:#8a94a6;--hl-fn:#1c63d6;--hl-type:#0b7285;--shadow:0 1px 2px #141e320f, 0 2px 8px #141e320a;--mono:ui-monospace, "JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--radius:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}:root[data-theme=dark]{--bg:#14171d;--panel:#1c2028;--panel-2:#242a34;--border:#323946;--text:#e3e7ee;--muted:#9aa3b5;--accent:#7c97ff;--accent-soft:#263055;--true:#69db7c;--false:#ff8787;--back:#ffa94d;--jump:#c08cff;--step-line:#3b3517;--step-span:#6b5a12;--err-line:#3a1e22;--warn:#ffa94d;--code-bg:#191d24;--flash:#8f7414;--hl-kw:#c4a7ff;--hl-str:#8ce99a;--hl-num:#ffb38a;--hl-com:#7d8799;--hl-fn:#8ab4ff;--hl-type:#66d9e8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#14171d;--panel:#1c2028;--panel-2:#242a34;--border:#323946;--text:#e3e7ee;--muted:#9aa3b5;--accent:#7c97ff;--accent-soft:#263055;--true:#69db7c;--false:#ff8787;--back:#ffa94d;--jump:#c08cff;--step-line:#3b3517;--step-span:#6b5a12;--err-line:#3a1e22;--warn:#ffa94d;--code-bg:#191d24;--flash:#8f7414;--hl-kw:#c4a7ff;--hl-str:#8ce99a;--hl-num:#ffb38a;--hl-com:#7d8799;--hl-fn:#8ab4ff;--hl-type:#66d9e8;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);margin:0;font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}code,pre{font-family:var(--mono)}button{font:inherit;color:inherit}.topbar{background:var(--panel);border-bottom:1px solid var(--border);z-index:20;align-items:center;gap:16px;padding:10px 20px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;min-width:0;display:flex}.brand strong{letter-spacing:-.01em;font-size:1.15rem}.logo{fill:none;width:28px;height:28px;stroke:var(--accent);stroke-width:2.4px;stroke-linecap:round}.logo .logo-arrow{stroke:var(--back)}.tagline{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.top-right{gap:8px;margin-left:auto;display:flex}.picker{position:relative}.picker-btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:999px;align-items:center;gap:8px;min-width:120px;padding:5px 10px 5px 6px;display:flex}.picker-btn:hover,.picker.open .picker-btn{border-color:var(--accent)}.picker-badge{width:28px;height:22px;font:600 11px/1 var(--mono);background:var(--accent-soft);color:var(--accent);border-radius:999px;place-items:center;display:inline-grid}.picker-badge[data-id=python]{color:#6b4e00;background:#ffe8a3}.picker-badge[data-id=csharp]{color:#5f3dc4;background:#e5dbff}.picker-badge[data-id=dart]{color:#0b7285;background:#c5f6fa}.picker-label{text-align:left;flex:1}.caret{fill:none;width:10px;height:6px;stroke:var(--muted);stroke-width:1.6px}.picker-menu{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);z-index:30;min-width:100%;margin:0;padding:4px;list-style:none;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 8px 24px #00000026}.picker-menu li{cursor:pointer;white-space:nowrap;border-radius:8px;align-items:center;gap:8px;padding:6px 10px 6px 6px;display:flex}.picker-menu li:hover{background:var(--panel-2)}.picker-menu li.selected{font-weight:600}.layout{grid-template-columns:minmax(0, var(--split,40%)) 16px minmax(0, 1fr);gap:0;max-width:1500px;margin:0 auto;padding:16px 20px 96px;display:grid}.col-code,.col-trace{flex-direction:column;gap:16px;min-width:0;display:flex}.splitter{cursor:col-resize;touch-action:none;outline:none;position:relative}.splitter:before{content:"";background:0 0;border-radius:2px;width:2px;margin-left:-1px;transition:background .15s;position:absolute;top:0;bottom:0;left:50%}.splitter:after{content:"";background:var(--border);border-radius:3px;width:6px;height:36px;margin-left:-3px;transition:background .15s;position:absolute;top:120px;left:50%}.splitter:hover:before,.splitter:focus-visible:before,.layout.dragging .splitter:before,.splitter:hover:after,.splitter:focus-visible:after,.layout.dragging .splitter:after{background:var(--accent)}.layout.dragging{cursor:col-resize;-webkit-user-select:none;user-select:none}.app.embed .layout{gap:0;padding:8px}.app.embed .col-code,.app.embed .col-trace{gap:8px}@media (width<=900px){.layout{grid-template-columns:1fr;gap:16px;padding:12px 16px}.splitter,.tagline{display:none}.topbar{padding:8px 16px}.picker-btn{min-width:0}.picker-label{display:none}}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:12px 14px}.panel h2{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:.78rem}.empty{color:var(--muted);margin:0;font-style:italic}.code-panel{padding:0;overflow:visible}.code-toolbar{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 10px;display:flex}.code-toolbar .spacer{flex:1}.tool-btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;color:var(--text);white-space:nowrap;border-radius:8px;align-items:center;gap:6px;padding:5px 10px;text-decoration:none;display:inline-flex}.tool-btn:hover{border-color:var(--accent)}.tool-btn svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;width:16px;height:16px}.tool-btn em{color:var(--muted);text-overflow:ellipsis;max-width:220px;font-style:normal;overflow:hidden}.lang-chip{padding:0 4px;font-weight:600}.examples{position:relative}.examples-menu{z-index:25;background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:6px 14px;width:min(640px,92vw);padding:12px;display:grid;position:absolute;top:calc(100% + 6px);left:0;box-shadow:0 8px 24px #00000026}.ex-group h3{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:4px 0;font-size:.75rem}.ex-group button{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:6px;width:100%;padding:3px 8px;display:block}.ex-group button:hover{background:var(--panel-2)}.ex-group button.selected{background:var(--accent-soft);color:var(--accent);font-weight:600}.editor-wrap{position:relative}.code-editor .cm-editor{background:var(--code-bg);max-height:60vh;font-size:15px}.app.embed .code-editor .cm-editor{max-height:420px}.code-editor .cm-scroller{font-family:var(--mono);line-height:1.6}.code-editor .cm-editor.cm-focused{outline:none}.code-editor .cm-gutters{background:var(--code-bg);color:var(--muted);border-right:0}.code-editor .cm-content{caret-color:var(--text)}.cm-step-line{transition:background .2s;background:var(--step-line)!important}.cm-step-error{background:var(--err-line)!important}.cm-ret-note{color:var(--hl-com);margin-left:2ch;font-style:italic;animation:.35s ease-out note-in}@keyframes note-in{0%{opacity:0;transform:translate(-6px)}}.cm-step-span{background:var(--step-span);box-shadow:0 0 0 1px var(--step-span);border-radius:3px}.cm-err{-webkit-text-decoration:wavy underline var(--false);text-decoration:wavy underline var(--false);text-underline-offset:3px}.cm-warn{-webkit-text-decoration:wavy underline var(--warn);text-decoration:wavy underline var(--warn);text-underline-offset:3px}.cm-err-line{background:var(--err-line)}.flow-overlay{pointer-events:none;position:absolute;left:0;overflow:hidden}.flow-overlay path{stroke:var(--muted);stroke-width:1.4px;stroke-dasharray:3 3;opacity:.55}.flow-overlay text{fill:var(--muted);opacity:.8;font:600 9px/1 system-ui,sans-serif}.flow-overlay .active path{stroke-width:2.4px;stroke-dasharray:6 4;opacity:1;animation:.9s linear infinite dash}.flow-overlay .active text{opacity:1}.flow-overlay .arc-true.active path{stroke:var(--true)}.flow-overlay .arc-true.active text{fill:var(--true)}.flow-overlay .arc-false.active path,.flow-overlay .arc-skip.active path{stroke:var(--false)}.flow-overlay .arc-false.active text,.flow-overlay .arc-skip.active text{fill:var(--false)}.flow-overlay .arc-back.active path{stroke:var(--back)}.flow-overlay .arc-back.active text{fill:var(--back)}.flow-overlay .arc-jump path{stroke:var(--jump)}.flow-overlay .arc-jump text{fill:var(--jump)}.ah{fill:var(--muted)}.ah-idle{fill:var(--muted);opacity:.55}.ah-true{fill:var(--true)}.ah-false,.ah-skip{fill:var(--false)}.ah-back{fill:var(--back)}.ah-jump{fill:var(--jump)}@keyframes dash{to{stroke-dashoffset:-20px}}.controls{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px 18px;padding:10px;display:flex}.controls .buttons{gap:6px;display:flex}.controls button{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:8px;justify-content:center;align-items:center;gap:6px;min-width:36px;height:36px;padding:0 8px;display:inline-flex}.controls button:hover:not(:disabled){border-color:var(--accent)}.controls button.primary{background:var(--accent);border-color:var(--accent);color:#fff}.controls button.step{padding:0 12px;font-weight:600}.controls button:disabled{opacity:.4;cursor:default}.controls svg{fill:currentColor;stroke:currentColor;stroke-width:1.6px;stroke-linejoin:round;stroke-linecap:round;width:16px;height:16px}.speed{color:var(--muted);align-items:center;gap:8px;font-size:.85rem;display:flex}.speed input{width:110px;accent-color:var(--accent)}.speed output{font-variant-numeric:tabular-nums;min-width:70px}.progress{align-items:center;gap:10px;margin-left:auto;font-size:.85rem;display:flex}.counter{color:var(--muted);font-variant-numeric:tabular-nums}.status{background:var(--panel-2);border-radius:999px;padding:2px 8px}.status.good{color:var(--true)}.status.bad{color:var(--false)}.status.run{color:var(--accent)}.explain-main{margin:0;font-size:1.02rem}.explain code,.errors code,.explain-error code{background:var(--panel-2);border-radius:4px;padding:1px 5px;font-size:.92em}.explain.is-error{border-color:var(--false)}.concept{border-top:1px dashed var(--border);align-items:flex-start;gap:14px;margin-top:12px;padding-top:12px;display:flex}.concept h3{color:var(--accent);margin:0 0 4px;font-size:.8rem}.concept p{color:var(--text);margin:0}.flow-figure{flex:0 0 210px;width:210px;height:auto}@media (width<=520px){.concept{flex-direction:column}}.fig-box,.fig-cond,.fig-callsite{fill:var(--panel-2);stroke:var(--border);stroke-width:1.4px}.fig-cond{fill:var(--accent-soft);stroke:var(--accent)}.fig-box.on{stroke:var(--back);stroke-width:2.2px}.fig-after{stroke-dasharray:3 2}.fig-t{text-anchor:middle;fill:var(--text);font:600 10px/1 system-ui,sans-serif}.fig-mono{font-family:var(--mono)}.fig-l{fill:var(--muted);font:9px/1 system-ui,sans-serif}.fig-edge{fill:none;stroke:var(--muted);stroke-width:1.4px}.fig-edge.on{stroke:var(--back);stroke-width:2.6px;stroke-dasharray:6 4;animation:.9s linear infinite dash}.fig-ah{fill:var(--muted)}.fig-ah-on{fill:var(--back)}.explain-error .real-msg,.errors .real-msg{color:#ffc9c9;white-space:pre-wrap;background:#1d2330;border-radius:6px;margin:8px 0;padding:8px 10px;font-size:.82rem}.hint{margin:6px 0 0}.note{color:var(--muted);margin:8px 0 0;font-size:.9rem}.frames{flex-direction:column;gap:8px;display:flex}.frame{--c:hsl(var(--hue) 65% 50%);border:1px solid var(--border);border-left:5px solid var(--c);background:var(--panel);opacity:.72;border-radius:8px;padding:6px 10px 8px;transition:opacity .25s,box-shadow .25s}.frame.top{opacity:1;box-shadow:0 2px 10px color-mix(in srgb, var(--c) 25%, transparent)}.frame header{align-items:baseline;gap:8px;margin-bottom:4px;display:flex}.frame .fn{font:600 .95rem var(--mono);color:var(--c)}.frame .called{color:var(--muted);font-size:.8rem}.badge-top{background:color-mix(in srgb, var(--c) 18%, transparent);color:var(--c);border-radius:999px;margin-left:auto;padding:1px 6px;font-size:.7rem}.frame table{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:.9rem}.frame td{border-top:1px solid var(--panel-2);vertical-align:middle;padding:3px 6px}.vtype{color:var(--muted);white-space:nowrap;width:1%}.vname{white-space:nowrap;width:1%;font-weight:600}.val{background:var(--panel-2);border-radius:5px;padding:1px 6px;display:inline-block}.val.unset{color:var(--muted);font-family:system-ui,sans-serif;font-size:.8rem;font-style:italic}.val.flash{animation:1.1s ease-out flash}@keyframes flash{0%,35%{background:var(--flash);transform:scale(1.12)}to{background:var(--panel-2);transform:scale(1)}}tr.changed .vname{color:var(--back)}.rtype{color:var(--muted);margin-left:6px;font-size:.72rem}.list{flex-wrap:wrap;gap:2px;display:inline-flex}.cell{border:1px solid var(--border);background:var(--panel);border-radius:4px;flex-direction:column;align-items:center;min-width:26px;padding:0 4px;line-height:1.2;display:inline-flex}.cell small{color:var(--muted);font-size:.62rem}.empty-cell{color:var(--muted)}.ret{color:var(--jump);margin-top:6px;font-size:.85rem}.ret code{font-weight:700}.frame-enter-active,.frame-leave-active{transition:all .35s}.frame-enter-from{opacity:0;transform:translateY(-14px)scale(.97)}.frame-leave-to{opacity:0;transform:translate(30px)}.trace-scroll{border:1px solid var(--border);border-radius:8px;min-height:120px;max-height:calc(100vh - 190px);overflow:auto}.app.embed .trace-scroll{max-height:480px}.trace-table{border-collapse:separate;border-spacing:0;width:100%;font:.88rem/1.35 var(--mono);font-variant-numeric:tabular-nums}.trace-table th{z-index:1;background:var(--panel-2);color:var(--muted);text-transform:uppercase;letter-spacing:.04em;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:6px 8px;font:600 .72rem/1.2 system-ui,sans-serif;position:sticky;top:0}.trace-table tr.groups th{text-transform:none;letter-spacing:0;font:600 .78rem var(--mono);border-bottom:0}.trace-table tr.groups+tr th{top:25px}.trace-table th.group{color:var(--jump);border-left:1px solid var(--border)}.trace-table th.group.global{color:var(--muted)}.trace-table th.c-var{color:var(--text);font:700 .86rem var(--mono);text-transform:none;letter-spacing:0;border-left:1px solid var(--border)}.trace-table td{border-bottom:1px solid var(--panel-2);white-space:nowrap;vertical-align:baseline;padding:3px 8px}.trace-table tbody tr{cursor:pointer}.trace-table tbody tr:hover td{background:var(--panel-2)}.trace-table tr.current td{background:var(--step-line)}.trace-table .c-num,.trace-table .c-ln{color:var(--muted);width:1%;font-size:.76rem}.trace-table td.c-ctx{color:hsl(var(--hue) 60% 50%);border-left:3px solid hsl(var(--hue) 60% 50%);font-size:.8rem}.trace-table td.c-var{border-left:1px solid var(--panel-2);min-width:52px}.trace-table td.c-var.same{color:var(--muted);opacity:.45}.trace-table td.c-var.new{color:var(--text);font-weight:700}.trace-table td.c-var.new span{border-radius:4px;margin:0 -5px;padding:0 5px;display:inline-block}.trace-table td.c-var .flash{animation:1.1s ease-out flash}.trace-table .c-note{color:var(--muted);text-overflow:ellipsis;max-width:220px;font-size:.8rem;overflow:hidden}.trace-table tr.k-cond .c-note{color:var(--accent)}.trace-table tr.k-call .c-note,.trace-table tr.k-return .c-note{color:var(--jump);font-weight:600}.trace-table tr.k-loopBack .c-note{color:var(--back)}.trace-table tr.k-error .c-note{color:var(--false);font-weight:600}.trace-table .c-out{color:var(--true);font-weight:600}.trace-table tr.more td{color:var(--muted);cursor:default;font-style:italic}.fabs{z-index:40;gap:8px;display:flex;position:fixed;bottom:16px;right:16px}.vibed{z-index:30;color:var(--muted);pointer-events:none;margin:0;font-size:12px;position:fixed;bottom:12px;left:16px}.embed .vibed{padding-top:6px;position:static}.fab{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:999px;align-items:center;gap:6px;height:42px;padding:0 14px 0 12px;display:inline-flex;position:relative;box-shadow:0 4px 16px #0000002e}.fab:hover{border-color:var(--accent)}.fab.on{background:var(--accent);border-color:var(--accent);color:#fff}.fab svg{fill:none;stroke:currentColor;stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;width:18px;height:18px}.fab.dot:after,.fab.alert:after{content:"";background:var(--true);border-radius:50%;width:8px;height:8px;position:absolute;top:6px;right:8px}.fab.alert:after{background:var(--false)}.dock{z-index:39;flex-direction:column;gap:10px;width:min(460px,100vw - 32px);max-height:calc(100vh - 150px);padding:2px;display:flex;position:fixed;bottom:70px;right:16px;overflow-y:auto}.dock .panel{box-shadow:0 10px 30px #00000038}@media (width<=600px){.fab span{display:none}.fab{padding:0 12px}}.theme-btn{border:1px solid var(--border);background:var(--panel);cursor:pointer;border-radius:999px;place-items:center;width:36px;height:34px;display:grid}.theme-btn:hover{border-color:var(--accent)}.theme-btn svg{fill:none;width:18px;height:18px;stroke:var(--text);stroke-width:1.6px;stroke-linecap:round}.console-box{color:#e9ecef;white-space:pre-wrap;background:#1d2330;border-radius:8px;min-height:70px;max-height:220px;margin:0;padding:10px 12px;font-size:.9rem;overflow:auto}.console-box .empty{color:#868e96}.console-err{color:#ff8787}.errors.blocking{border-color:var(--false)}.blocking-msg{color:var(--false);margin:0 0 8px;font-weight:600}.errors ul{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.errors li{background:var(--panel-2);border-left:4px solid var(--false);cursor:pointer;border-radius:8px;padding:8px 10px}.errors li.warning{border-left-color:var(--warn)}.errors li p{margin:2px 0}.err-head{color:var(--muted);gap:10px;font-size:.8rem;display:flex}.err-head .sev{color:var(--false);font-weight:700}.warning .err-head .sev{color:var(--warn)}.fly{z-index:100;pointer-events:none;background:var(--flash);color:#1d2330;font:700 14px/1.5 var(--mono);white-space:nowrap;border-radius:6px;padding:1px 7px;position:fixed;box-shadow:0 4px 14px #00000040}.modal-back{z-index:50;background:#0a0e1673;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:min(680px,100%);max-height:90vh;padding:18px 20px;overflow:auto;box-shadow:0 20px 60px #0000004d}.modal header{align-items:center;display:flex}.modal h2{margin:0;font-size:1.1rem}.modal .close{cursor:pointer;color:var(--muted);background:0 0;border:0;margin-left:auto;font-size:1.6rem}.opts{flex-wrap:wrap;gap:6px 18px;margin:12px 0;display:flex}.share-field h3{margin:12px 0 4px;font-size:.85rem}.copy-row{align-items:flex-start;gap:8px;display:flex}.copy-row input,.copy-row textarea{border:1px solid var(--border);background:var(--panel-2);min-width:0;color:var(--text);font:12px/1.4 var(--mono);resize:vertical;border-radius:6px;flex:1;padding:6px 8px}.copy-row button{background:var(--accent);color:#fff;cursor:pointer;white-space:nowrap;border:0;border-radius:6px;padding:6px 12px}
