:root{color-scheme:dark;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;--bg: #080c10;--bg-raised: #0e141a;--panel: #10161d;--panel-2: #0c1117;--panel-3: #151b23;--line: #2a333f;--line-soft: #1c2631;--text: #edf2f7;--muted: #8e98a7;--dim: #647181;--accent: #27929c;--accent-2: #61c7ce;--green: #35d48b;--amber: #f4bd2d;--red: #ff6370;--shadow: 0 12px 34px rgba(0, 0, 0, .34);--body-bg: radial-gradient(circle at 18% -8%, rgba(39, 146, 156, .12), transparent 30rem), linear-gradient(180deg, #0b1016 0%, #070a0e 100%);--surface: rgba(14, 20, 26, .94);--control-bg: #0b1118;--control-bg-2: #111820;--gutter-bg: #0b1016;--cell-bg: #151c25;--track-bg: #30363d;--tree-line: #3b4451;--code-text: #f5f7fb;--code-keyword: #61c7ce;--code-string: #8fd694;--code-number: #f4bd2d;--code-comment: #647181;--primary: #21858f;--primary-hover: #27929c;--active-gutter-text: #101318;--panel-heading: #d5dbe4;--code-line-active: rgba(244, 189, 45, .14);--code-line-error: rgba(255, 99, 112, .16);--active-arrow: #0f1722;--accent-soft: rgba(39, 146, 156, .14);--accent-outline: rgba(97, 199, 206, .5);--amber-soft: rgba(244, 189, 45, .14);--amber-outline: rgba(244, 189, 45, .56);--range-border: #4b535c;--log-index-bg: #2b3441;--scrollbar-track: #0d131a;--scrollbar-thumb: #536071;--scrollbar-thumb-hover: #647386}[data-theme=light]{color-scheme:light;--bg: #f5f7fb;--bg-raised: #ffffff;--panel: #ffffff;--panel-2: #f8fafc;--panel-3: #eef3f8;--line: #cbd5e1;--line-soft: #dfe6ef;--text: #172033;--muted: #64748b;--dim: #7c8798;--accent: #167d88;--accent-2: #0f6b75;--green: #128052;--amber: #b77900;--red: #c7364a;--shadow: 0 8px 22px rgba(15, 23, 42, .08);--body-bg: radial-gradient(circle at 16% -10%, rgba(39, 146, 156, .14), transparent 30rem), linear-gradient(180deg, #f8fbff 0%, #eef3f8 100%);--surface: rgba(255, 255, 255, .96);--control-bg: #ffffff;--control-bg-2: #f1f5f9;--gutter-bg: #eef3f8;--cell-bg: #f1f5f9;--track-bg: #d7dee9;--tree-line: #8b9aac;--code-text: #172033;--code-keyword: #0f6b75;--code-string: #247a43;--code-number: #936100;--code-comment: #708097;--primary: #167d88;--primary-hover: #126a73;--active-gutter-text: #111827;--panel-heading: #334155;--code-line-active: rgba(183, 121, 0, .13);--code-line-error: rgba(199, 54, 74, .12);--active-arrow: #111827;--accent-soft: rgba(22, 125, 136, .11);--accent-outline: rgba(15, 107, 117, .42);--amber-soft: rgba(183, 121, 0, .12);--amber-outline: rgba(183, 121, 0, .52);--range-border: #aeb8c6;--log-index-bg: #dbe4ef;--scrollbar-track: #e8eef6;--scrollbar-thumb: #a6b2c2;--scrollbar-thumb-hover: #7f8da0}*{box-sizing:border-box;scrollbar-color:var(--scrollbar-thumb) var(--scrollbar-track);scrollbar-width:thin}*::-webkit-scrollbar{width:7px;height:7px}*::-webkit-scrollbar-track{background:var(--scrollbar-track)}*::-webkit-scrollbar-thumb{border-radius:999px;background:var(--scrollbar-thumb)}*::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}html,body,#root{height:100%;margin:0;overflow:hidden}body{background:var(--body-bg);color:var(--text)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.45}svg{width:18px;height:18px;fill:currentColor}.app-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:0;height:100vh;min-height:0;overflow:hidden;padding:0}.topbar,.status-bar,.panel{border:1px solid var(--line);background:var(--surface);box-shadow:var(--shadow)}.topbar{display:grid;grid-template-columns:minmax(210px,1fr) minmax(190px,360px) auto auto auto auto auto;align-items:center;gap:8px;min-height:48px;padding:6px 10px;border-radius:0}.brand{display:flex;align-items:center;gap:8px;min-width:0}.brand strong{overflow:hidden;font-size:13px;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;color:#fff;font-weight:800;background:linear-gradient(135deg,transparent 48%,var(--accent-2) 49% 61%,transparent 62%),conic-gradient(from 45deg,#f6b73c,#f6b73c 30%,transparent 31% 54%,#f6b73c 55% 77%,transparent 78%)}.problem-select,.preset-select,.language-select{display:inline-flex;align-items:center;gap:6px}.problem-select span,.preset-select span,.language-select span{color:var(--dim);font-size:11px;font-weight:700;line-height:1;text-transform:uppercase}.problem-select input,.preset-select select,.language-select select{height:32px;border:1px solid var(--line);border-radius:0;background:var(--control-bg);color:var(--text);outline:none;padding:0 12px;font-size:13px}.preset-select select{width:100%;min-width:220px}.language-select select{width:112px}.language-select select{appearance:none}.primary-button,.secondary-button,.github-button,.play-button,.icon-button,.speed-group button,.log-row{border:1px solid transparent;color:var(--text)}.primary-button,.secondary-button,.github-button{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:32px;border-radius:0;padding:0 11px;font-size:13px;text-decoration:none;white-space:nowrap}.primary-button{background:var(--primary);box-shadow:0 8px 20px #27929c38;font-weight:700}.primary-button:hover{background:var(--primary-hover)}.secondary-button{background:var(--control-bg-2);border-color:var(--line);color:var(--muted)}.github-button{border:1px solid var(--line);background:var(--control-bg);color:var(--text);font-weight:700}.github-button:hover{border-color:var(--accent-outline);background:var(--accent-soft);color:var(--accent-2)}.workspace{display:grid;grid-template-columns:minmax(360px,.42fr) minmax(520px,.58fr);gap:0;min-height:0;overflow:hidden}.workspace>*{min-width:0}.left-column{display:grid;grid-template-rows:minmax(0,1fr) 132px 72px auto;gap:0;height:100%;min-height:0;min-width:0;overflow:hidden}.right-column{display:grid;grid-template-rows:auto auto minmax(0,1fr);height:100%;min-height:0;min-width:0;overflow-y:auto;overflow-x:hidden}.panel{overflow:hidden;border-radius:0;min-width:0}.panel.right-column{overflow-y:auto;overflow-x:hidden}.panel-header{display:flex;align-items:center;justify-content:space-between;min-height:30px;border-bottom:1px solid var(--line-soft);padding:0 12px;color:var(--panel-heading);font-size:11.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.panel-body{padding:9px 12px}.file-status,.trace-meta,.optional-label{color:var(--muted);font-size:12px;font-weight:600;letter-spacing:0;text-transform:none}.raw-log-shortcut{border:1px solid var(--line-soft);background:var(--control-bg);color:var(--accent-2);font-size:12px;font-weight:800;padding:4px 9px}.file-status span{display:inline-block;width:8px;height:8px;margin-left:8px;border-radius:50%;background:var(--green)}.tab-label{border-radius:0;background:var(--accent-soft);color:var(--accent-2);font-size:12px;font-weight:800;letter-spacing:0;padding:5px 10px;text-transform:none}.editor-shell{display:grid;grid-template-columns:56px minmax(0,1fr);min-height:0;height:calc(100% - 30px);background:var(--panel-2)}.line-gutter{padding-top:10px;border-right:1px solid var(--line-soft);background:var(--gutter-bg);color:var(--muted);font:12px/1.48 JetBrains Mono,SFMono-Regular,Consolas,monospace;overflow:hidden;text-align:right}.line-gutter div{height:18px;padding-right:13px}.line-gutter .active-line{position:relative;color:var(--active-gutter-text);background:var(--amber);font-weight:800}.line-gutter .error-line{position:relative;color:#fff;background:var(--red);font-weight:800}.line-gutter .active-line:before{position:absolute;left:8px;content:"";border-top:6px solid transparent;border-bottom:6px solid transparent;border-left:9px solid var(--active-arrow);top:3px}.line-gutter .error-line:before{position:absolute;left:8px;content:"!";border:0;color:#fff;font:900 11px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace;top:4px}.code-input-wrap{position:relative;min-width:0;min-height:0;overflow:hidden}.line-highlight-layer{position:absolute;inset:0;z-index:0;padding:10px 14px;overflow:hidden;pointer-events:none}.line-highlight-layer div{height:18.5px}.line-highlight-layer .active-code-line{background:var(--code-line-active);box-shadow:inset 3px 0 0 var(--amber)}.line-highlight-layer .error-code-line{background:var(--code-line-error);box-shadow:inset 3px 0 0 var(--red)}.syntax-layer{position:absolute;inset:0;z-index:1;margin:0;padding:10px 14px;overflow:hidden;color:var(--code-text);font:12.5px/1.48 JetBrains Mono,SFMono-Regular,Consolas,monospace;pointer-events:none;tab-size:4;white-space:pre}.syntax-keyword{color:var(--code-keyword);font-weight:800}.syntax-string{color:var(--code-string)}.syntax-number{color:var(--code-number)}.syntax-comment{color:var(--code-comment);font-style:italic}.code-panel textarea,.input-textarea{width:100%;border:0;outline:none;resize:none;background:transparent;color:var(--code-text);font:12.5px/1.48 JetBrains Mono,SFMono-Regular,Consolas,monospace}.code-panel textarea{position:relative;z-index:2;min-height:100%;padding:10px 14px;overflow:auto;tab-size:4;white-space:pre}.code-input-wrap textarea{color:transparent;caret-color:var(--code-text)}.input-panel{background:var(--panel)}.input-panel .input-textarea{display:block;height:calc(100% - 30px);padding:10px 14px 12px 52px;background:linear-gradient(90deg,var(--gutter-bg) 0 42px,var(--line-soft) 42px 43px,transparent 43px),var(--panel-2);color:var(--code-text)}.playback{display:grid;grid-template-columns:30px 36px 30px auto auto minmax(96px,1fr);align-items:center;gap:10px;min-height:66px;padding:8px 16px;border-bottom:1px solid var(--line-soft)}.icon-button,.play-button{display:grid;place-items:center;border-radius:0;background:transparent;color:#a5afbf}.icon-button{width:34px;height:30px}.play-button{width:36px;height:36px;background:var(--primary);color:#fff}.speed-group{display:grid;grid-template-columns:repeat(3,42px);overflow:hidden;border:1px solid var(--line);border-radius:0}.speed-group button{height:30px;background:var(--control-bg);color:var(--muted);font-weight:700}.speed-group button+button{border-left:1px solid var(--line-soft)}.speed-group .selected{background:var(--accent-soft);color:var(--accent-2)}.mode-group{display:grid;grid-template-columns:repeat(3,auto);overflow:hidden;border:1px solid var(--line)}.mode-group button{height:30px;border:0;border-left:1px solid var(--line-soft);background:var(--control-bg);color:var(--muted);font-size:12px;font-weight:800;padding:0 10px}.mode-group button:first-child{border-left:0}.mode-group .selected{background:var(--accent-soft);color:var(--accent-2)}.step-count{display:flex;align-items:center;gap:8px;justify-self:end;color:var(--accent-2);font-size:12px;font-weight:800}.step-count small{color:var(--muted);font-size:11px}.timeline{grid-column:1 / -1;width:100%;height:14px;accent-color:var(--accent);appearance:none;background:transparent;cursor:pointer;min-width:0}.timeline::-webkit-slider-runnable-track{height:6px;border:1px solid var(--range-border);border-radius:999px;background:var(--track-bg)}.timeline::-webkit-slider-thumb{width:16px;height:16px;margin-top:-6px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #27929c29;appearance:none}.timeline::-moz-range-track{height:6px;border:1px solid var(--range-border);border-radius:999px;background:var(--track-bg)}.timeline::-moz-range-progress{height:6px;border-radius:999px;background:var(--accent)}.timeline::-moz-range-thumb{width:16px;height:16px;border:0;border-radius:50%;background:var(--accent);box-shadow:0 0 0 3px #27929c29}.visual-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(260px,.82fr);grid-template-rows:auto auto minmax(138px,1.1fr) minmax(104px,.72fr);gap:0;min-height:0;min-width:0;overflow:hidden;padding:0}.visual-grid>*{min-width:0}.active-flow-strip{grid-column:1 / -1;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:34px;padding:5px 10px;border:1px solid var(--line-soft);border-radius:0;background:var(--panel-2);color:var(--muted);font-size:12px}.active-flow-strip>span{color:var(--dim);font-size:11px;font-weight:800;text-transform:uppercase;white-space:nowrap}.active-flow-stack{display:flex;align-items:center;gap:6px;min-width:0;overflow-x:auto}.active-flow-stack code{max-width:420px;overflow:hidden;border:1px solid var(--line);background:var(--control-bg);color:var(--muted);font:11.5px/1.25 JetBrains Mono,SFMono-Regular,Consolas,monospace;padding:4px 7px;text-overflow:ellipsis;white-space:nowrap}.active-flow-stack code.current{border-color:var(--accent-outline);background:var(--accent-soft);color:var(--accent-2)}.guided-panel{grid-column:1 / -1;min-height:0;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft);background:var(--panel-2)}.visual-controls{display:flex;align-items:center;flex-wrap:wrap;gap:8px;min-height:36px;padding:5px 10px}.role-select{display:inline-flex;align-items:center;gap:6px;min-width:0}.role-select span{color:var(--dim);font-size:11px;font-weight:800;text-transform:uppercase}.role-select select{max-width:160px;height:26px;border:1px solid var(--line);border-radius:0;background:var(--control-bg);color:var(--text);font-size:12px;outline:none;padding:0 8px}.visual-type-select select{min-width:124px}.guided-render{max-height:260px;overflow:auto;padding:8px 10px 10px;border-top:1px solid var(--line-soft)}.guided-cells{display:flex;align-items:end;flex-wrap:wrap;gap:8px}.guided-cell-wrap{display:grid;gap:5px;justify-items:center;padding:3px;border:1px solid transparent}.guided-cell-wrap.in-window{border-color:var(--accent-outline);background:var(--accent-soft)}.pointer-tags{display:flex;justify-content:center;gap:4px;min-height:18px}.pointer-tags span{border:1px solid var(--accent-outline);background:var(--accent-soft);color:var(--accent-2);font:800 10.5px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace;padding:3px 5px}.guided-cell{display:grid;place-items:center;min-width:48px;height:34px;border:1px solid var(--tree-line);background:var(--cell-bg);color:var(--code-text);font:800 13px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.guided-cell.pointed{border-color:var(--accent-2);box-shadow:inset 0 0 0 1px var(--accent-outline)}.guidance-message{color:var(--muted);font:12px/1.4 JetBrains Mono,SFMono-Regular,Consolas,monospace;font-style:italic}.tree-render{max-height:320px}.tree-render svg{display:block;width:100%;min-width:420px;height:auto}.tree-render line{stroke:var(--tree-line);stroke-width:2}.tree-render circle{fill:var(--cell-bg);stroke:var(--accent-2);stroke-width:2;transition:fill .15s,stroke .15s}.tree-render circle.active{fill:var(--amber-soft);stroke:var(--amber);stroke-width:2.5}.tree-render text{fill:var(--code-text);font:800 12px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace;transition:fill .15s}.tree-node-active text{fill:var(--amber)}.graph-render{display:grid;gap:0}.graph-row{display:grid;grid-template-columns:minmax(42px,auto) minmax(0,1fr);align-items:center;min-height:28px;border-bottom:1px solid var(--line-soft);color:var(--muted);font:12px/1.3 JetBrains Mono,SFMono-Regular,Consolas,monospace}.graph-row.active{background:var(--amber-soft);color:var(--amber)}.graph-row strong{overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:nowrap}.dp-render{display:grid;gap:3px}.dp-row{display:flex;gap:3px}.dp-cell{display:grid;place-items:center;min-width:42px;height:30px;border:1px solid var(--tree-line);background:var(--cell-bg);color:var(--code-text);font:800 12px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.dp-cell small{color:var(--muted);font-size:9px;font-weight:700}.dp-cell.active-row,.dp-cell.active-col{background:var(--accent-soft);border-color:var(--accent-outline)}.dp-cell.active-cell{background:var(--amber-soft);border-color:var(--amber);color:var(--amber)}.data-panel{min-height:0;background:var(--panel-2)}.data-panel .panel-body{height:calc(100% - 30px);overflow:auto}.array-block,.tree-block,.map-block{border-radius:0}.tree-block+.array-block,.array-block+.tree-block,.tree-block+.tree-block{margin-top:12px}.tree-summary{display:inline-grid;grid-template-columns:auto auto;align-items:center;gap:8px;min-height:34px;border:1px solid var(--tree-line);background:var(--cell-bg);color:var(--muted);padding:0 10px;font:12px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.tree-summary strong{color:var(--code-text);font-weight:800}.variable-title{display:flex;justify-content:space-between;gap:12px;margin-bottom:8px}.variable-title span{color:var(--text);font:700 12.5px/1.3 JetBrains Mono,SFMono-Regular,Consolas,monospace}.variable-title small{color:var(--muted);font-size:12px}.array-cells{display:flex;flex-wrap:wrap;gap:7px}.matrix-cells{display:grid;gap:8px;overflow:auto}.matrix-row{display:flex;align-items:center;gap:7px}.matrix-row>.array-index{min-width:32px;text-align:right}.array-cell-wrap{display:grid;gap:6px;justify-items:center}.array-cell{display:grid;place-items:center;min-width:56px;height:40px;border:1px solid var(--tree-line);background:var(--cell-bg);color:var(--code-text);font:800 15px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.array-cell.active-cell,.map-entry.active-entry{border-color:var(--accent-2);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent-outline)}.array-cell.changed-cell{border-color:var(--amber-outline);background:var(--amber-soft)}.array-index{color:var(--muted);font:12px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.cycle-note{margin-top:10px;color:var(--amber);font-size:12px}.value-list,.map-stack{display:grid;gap:0}.value-row,.map-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:25px;border-bottom:1px solid var(--line-soft);color:var(--muted);font:12.5px/1.25 JetBrains Mono,SFMono-Regular,Consolas,monospace}.value-row strong,.map-entry strong{color:var(--text);font-weight:800}.changed .array-cell,.value-row.changed,.map-block.changed{border-color:var(--amber-outline);background:var(--amber-soft)}.empty-state,.empty-log{color:var(--muted);font:13px/1.4 JetBrains Mono,SFMono-Regular,Consolas,monospace;font-style:italic}.trace-log{margin:0;min-height:0;background:var(--panel-2)}.trace-log.expanded{display:grid;grid-template-rows:auto minmax(0,1fr);max-height:220px}.trace-log-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:34px;border:0;background:transparent;color:var(--panel-heading);padding:0 12px;text-align:left}.trace-log-toggle span{font-size:11.5px;font-weight:800;letter-spacing:.11em;text-transform:uppercase}.trace-log-toggle strong{color:var(--accent-2);font-size:12px}.trace-log.expanded .trace-log-toggle{border-bottom:1px solid var(--line-soft)}.log-list{overflow:auto;padding:6px}.log-row{display:grid;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;min-height:32px;border-radius:0;background:transparent;color:var(--panel-heading);padding:0 8px;text-align:left}.log-row:hover,.log-row.selected{background:var(--accent-soft)}.log-row.selected{box-shadow:inset 3px 0 0 var(--amber)}.log-index{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--log-index-bg);color:var(--text);font-size:12px;font-weight:800}.log-message{overflow:hidden;font:12px/1.25 JetBrains Mono,SFMono-Regular,Consolas,monospace;text-overflow:ellipsis;white-space:nowrap}.log-row code{color:var(--muted);font:12px/1 JetBrains Mono,SFMono-Regular,Consolas,monospace}.status-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:34px;padding:0 14px;border-radius:0;color:var(--muted);font-size:13px}.status-bar strong{color:var(--text)}.status-bar.success{color:var(--green)}.status-bar.error{color:var(--red)}@media(max-width:980px){.app-shell{height:auto;min-height:100vh;overflow:auto}.topbar{grid-template-columns:1fr}.brand{min-width:0}.workspace{grid-template-columns:1fr}.left-column,.right-column{grid-template-rows:auto}.code-panel{min-height:520px}.visual-grid{grid-template-columns:1fr;grid-template-rows:auto}.active-flow-strip{grid-template-columns:1fr;padding:12px}.playback{grid-template-columns:repeat(3,36px) 1fr}.speed-group,.mode-group,.step-count{grid-column:1 / -1;justify-self:stretch}.status-bar{align-items:flex-start;flex-direction:column;padding:10px 16px}}@media(max-width:1220px){.topbar{grid-template-columns:minmax(180px,1fr) minmax(180px,300px) auto auto auto auto auto;gap:8px}.language-select{justify-self:end}.workspace{grid-template-columns:minmax(300px,.44fr) minmax(420px,.56fr)}.brand strong{font-size:13px}.preset-select select{min-width:180px}}@media(max-width:1080px){html,body,#root{overflow:auto}.app-shell{height:auto;min-height:100vh;overflow:visible}.topbar{grid-template-columns:minmax(220px,1fr) minmax(260px,1fr) auto auto}.language-select{justify-self:stretch}.workspace{grid-template-columns:1fr;overflow:visible}.left-column,.right-column{height:auto;min-height:0;overflow:visible}.left-column{grid-template-rows:minmax(360px,48vh) 132px 72px auto}.right-column{grid-template-rows:auto auto auto}}@media(max-width:980px){.topbar{grid-template-columns:1fr}.language-select{justify-self:stretch}.visual-grid{grid-template-columns:1fr;grid-template-rows:auto}.active-flow-strip{grid-template-columns:1fr;padding:12px}.playback{grid-template-columns:repeat(3,36px) 1fr}.speed-group,.mode-group,.step-count{grid-column:1 / -1;justify-self:stretch}.status-bar{align-items:flex-start;flex-direction:column;padding:10px 16px}}
