.app{--bg:#0f1117;--panel:#171a23;--border:#2a2f3d;--fg:#e6e8ee;--muted:#8a91a5;--accent:#4f8cff;--hit:#f5a524;--changed:#2bb673;--err:#ff5d5d;--filled:#3b4f7a;--font-mono:var(--font-geist-mono), ui-monospace, monospace;background:var(--bg);color:var(--fg);font-family:var(--font-geist-sans), system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}.app button,.app select,.app input{font:inherit;color:inherit}.app button,.app select{background:var(--panel);border:1px solid var(--border);cursor:pointer;border-radius:6px;padding:6px 10px}.app button:disabled{opacity:.4;cursor:default}.app button:focus-visible,.app select:focus-visible,.app input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app button.primary{background:var(--accent);border-color:var(--accent);color:#fff;font-weight:600}.app code,.app .cell,.app .matrix,.app .map,.app .out,.app .ptr,.app .label{font-family:var(--font-mono)}.app .muted{color:var(--muted)}.app{grid-template-columns:var(--left,minmax(380px, 45%)) 1fr;flex:1;min-height:0;display:grid}.app>.left{border-right:1px solid var(--border);flex-direction:column;gap:8px;min-height:0;padding:12px;display:flex;position:relative}.app>.left header{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.app>.left header>select:first-child,.app>.left header>.mode{margin-right:auto}.app>.left header>select:first-child:has(+.mode){margin-right:0}.app .visualize{min-width:150px}.app .editor{border:1px solid var(--border);border-radius:6px;flex:1;min-height:240px;position:relative;overflow:hidden}.app .editor.visualizing{border-color:var(--accent)}.app .mode{color:var(--accent);border:1px solid var(--accent);white-space:nowrap;cursor:help;border-radius:10px;padding:2px 8px;font-size:12px}.app .splitter{z-index:6;touch-action:none;flex:none;transition:background .15s}.app .splitter:hover,.app .splitter:focus-visible,.app .splitter:active{background:var(--accent);outline:none}.app .splitter.y{cursor:row-resize;border-radius:3px;height:6px;margin:-7px 0}.app .splitter.x{cursor:col-resize;width:6px;position:absolute;top:0;bottom:0;right:-3px}.app .controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.app .controls button{white-space:nowrap;padding:6px 8px}.app .controls .play{width:84px}.app .controls .speed{white-space:nowrap;align-items:center;gap:6px;margin-left:auto;display:flex}.app .controls .speed input{width:70px}.app .speed-val{font-variant-numeric:tabular-nums;width:5ch}.app .scrub{align-items:center;gap:10px;display:flex}.app .scrub input{flex:1;min-width:0}.app .step-n{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums;width:15ch}.app .out{height:var(--console,220px);background:var(--panel);border:1px solid var(--border);white-space:pre-wrap;border-radius:6px;flex:none;padding:8px;font-size:13px;overflow:auto}.app .err{color:var(--err);display:block}.app>.right{padding:12px;overflow:auto}.app .hint{text-align:center;margin-top:40px}.app .run-error{border:1px solid var(--err);background:#ff5d5d1a;border-left-width:4px;border-radius:8px;flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:10px;padding:10px 12px;font-size:14px;line-height:1.45;display:flex}.app .run-error strong{color:var(--err)}.app .rtree-frame{margin-bottom:10px}.app .rtree{max-height:360px;overflow:auto}.app .legend{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;font-size:12px;display:flex}.app .key{border:1px solid var(--muted);border-radius:3px;width:12px;height:12px;margin-left:6px;display:inline-block}.app .key.now,.app .rnode.now rect{fill:#f5a5244d;border-color:var(--hit);stroke:var(--hit);stroke-width:2.5px;background:#f5a5244d}.app .key.open,.app .rnode.open rect{border-color:var(--accent);stroke:var(--accent);stroke-width:2px}.app .key.done{opacity:.5}.app .rnode rect{fill:var(--bg);stroke:var(--muted);stroke-width:1.2px}.app .rnode.done{opacity:.5}.app .line-cur{background:#4f8cff47}.app .line-prev{background:#2bb6731f}.app .line-err{background:#ff5d5d4d}.app .frames{flex-direction:column;gap:10px;display:flex}.app .frame{border:1px solid var(--border);background:var(--panel);opacity:.75;border-radius:8px;padding:10px}.app .frame.active{opacity:1;border-color:var(--accent)}.app .frame h3{font-size:14px;font-family:var(--font-mono);border-bottom:1px solid var(--border);margin-bottom:4px;padding-bottom:6px}.app .console-title{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:-4px;font-size:12px;font-weight:600}.app .badge{font-size:11px;font-weight:400;font-family:var(--font-geist-sans), sans-serif;color:var(--muted);border:1px solid var(--border);border-radius:10px;margin-left:8px;padding:1px 7px}.app .badge.now{color:var(--accent);border-color:var(--accent)}.app .ret{color:var(--changed);font-weight:400;font-family:var(--font-mono)}.app .var{border-bottom:1px solid #ffffff0d;align-items:baseline;gap:10px;padding:6px;transition:background .3s;display:flex}.app .var:last-child{border-bottom:none}.app .var code,.app .var>.muted{font-size:13px}.app .var.big{flex-direction:column;align-items:flex-start;gap:6px}.app .var.changed{background:#2bb6731f}.app .var.changed>.name{color:var(--changed)}.app .name{font-family:var(--font-mono);color:#9cc0ff;min-width:80px;font-size:13px;font-weight:600}.app .var>div,.app .var>svg,.app .var>table{max-width:100%;overflow-x:auto}.app .array,.app .linked{align-items:flex-start;gap:2px;padding-bottom:4px;display:flex}.app .tag{color:var(--muted);align-self:center;margin-right:6px;font-size:11px}.app .cell-col{flex-direction:column;align-items:center;display:flex}.app .cell{border:1px solid var(--border);background:var(--bg);place-items:center;min-width:36px;height:36px;padding:0 6px;font-size:13px;display:grid}.app .cell.ghost{background:0 0;border-style:dashed}.app .cell.empty{color:var(--muted)}.app .idx{color:var(--muted);font-size:11px}.app .ptr{color:var(--hit);font-size:11px;font-weight:600}.app .hit>.cell{border-color:var(--hit);box-shadow:inset 0 0 0 1px var(--hit)}.app .ll-node{flex-direction:column;align-items:center;padding-right:22px;display:flex;position:relative}.app .ll-arrow{color:var(--muted);position:absolute;top:8px;right:4px}.app .linked>.muted{font-family:var(--font-mono);align-self:flex-start;margin-top:8px;font-size:13px}.app .matrix,.app .map{border-collapse:collapse;font-size:13px}.app .matrix td,.app .matrix th,.app .map td{border:1px solid var(--border);text-align:center;padding:4px 9px}.app .matrix th{color:var(--muted);border:none;font-weight:400}.app .matrix td.filled{background:var(--filled)}.app .matrix td.hit{outline:2px solid var(--hit);background:#f5a5244d}.app .map caption{text-align:left;color:var(--muted);font-size:12px}.app .node{fill:var(--bg);stroke:var(--muted);stroke-width:1.5px}.app .hit .node{stroke:var(--hit);stroke-width:3px}.app .filled .node{fill:var(--filled)}.app .edge{stroke:var(--muted);stroke-width:1.5px}.app .weight{fill:var(--hit);text-anchor:middle;dominant-baseline:central;font-size:11px;font-family:var(--font-mono)}.app .forest{flex-wrap:wrap;align-items:flex-start;gap:8px;display:flex}.app .card{border-left:2px solid var(--border);padding-left:8px}.app .arrowhead{fill:var(--muted)}.app .label{fill:var(--fg);text-anchor:middle;dominant-baseline:central;font-size:12px}.app .ptr-svg{fill:var(--hit);dominant-baseline:hanging;font-size:11px;font-weight:600;font-family:var(--font-mono)}@media (max-width:800px){.app{grid-template-columns:1fr;height:auto}.app .editor{flex:none;height:50vh}.app>.left{border-right:none;border-bottom:1px solid var(--border)}.app .splitter.x{display:none}}.app .key.dup{border:2px dashed #c792ea}.app .rnode.dup rect{stroke:#c792ea;stroke-dasharray:5 3;stroke-width:2px}.app .badge.dup{color:#c792ea;border-color:#c792ea}.app h2,.app h3{font-weight:600}
