.ws-sidebar{width:240px;height:100%;background:var(--bg);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:14px;gap:14px;flex-shrink:0;overflow-y:auto;box-sizing:border-box}@media(max-width:1023px){.ws-sidebar{width:min(300px,88vw);box-shadow:0 10px 50px #00000080}}.ws-sidebar--collapsed{width:44px;padding:14px 8px;align-items:center}.ws-sidebar-expand{width:28px;height:28px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--surface);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;transition:all var(--transition)}.ws-sidebar-expand:hover{color:var(--accent);border-color:var(--accent)}.ws-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:2px 4px}.ws-sidebar-logo{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-weight:600;font-size:13.5px;color:var(--text);letter-spacing:-.01em;text-decoration:none}.ws-sidebar-logo-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 6px var(--accent)}.ws-sidebar-collapse{width:22px;height:22px;display:grid;place-items:center;border:none;background:transparent;border-radius:4px;color:var(--text-faint);cursor:pointer;transition:all var(--transition)}.ws-sidebar-collapse:hover{background:var(--surface);color:var(--text)}.ws-sidebar-tabs{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm)}.ws-sidebar-tab{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:6px 8px;font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--text-faint);background:transparent;border:none;border-radius:4px;cursor:pointer;transition:all var(--transition)}.ws-sidebar-tab:hover{color:var(--text)}.ws-sidebar-tab--active{background:var(--bg);color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ws-sidebar-cta{display:flex;align-items:center;gap:10px;padding:9px 12px;background:var(--accent-bg);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-family:var(--sans);font-size:13px;font-weight:500;text-decoration:none;transition:all var(--transition)}.ws-sidebar-cta:hover{background:var(--accent);color:var(--accent-ink)}.ws-sidebar-section{display:flex;flex-direction:column;gap:8px}.ws-sidebar-section-hd,.ws-style-section-hd{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint);padding:0 4px;font-weight:500}.ws-sidebar-plugins{display:grid;grid-template-columns:1fr 1fr;gap:6px}.ws-plugin-chip{display:inline-flex;align-items:center;gap:6px;padding:9px 10px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--sans);font-size:12px;font-weight:500;cursor:pointer;transition:all var(--transition)}.ws-plugin-chip:hover{background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.ws-plugin-icon{color:var(--text-faint);flex-shrink:0;transition:color var(--transition)}.ws-plugin-chip:hover .ws-plugin-icon{color:var(--accent)}.ws-style-content{display:flex;flex-direction:column;gap:16px}.ws-style-section{display:flex;flex-direction:column;gap:8px}.ws-color-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;padding:0 4px}.ws-swatch{width:28px;height:28px;border-radius:6px;border:1.5px solid transparent;background:var(--surface);cursor:pointer;transition:all var(--transition);display:grid;place-items:center;color:var(--text-faint)}.ws-swatch:hover{transform:scale(1.06)}.ws-swatch--active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ws-swatch--none{background:var(--surface);border:1.5px solid var(--border-strong);position:relative}.ws-swatch--none:after{content:"";position:absolute;inset:4px;border-radius:50%;border:1.5px solid var(--text-faint);background:linear-gradient(to bottom right,transparent calc(50% - 1px),var(--text-faint) calc(50% - 1px),var(--text-faint) calc(50% + 1px),transparent calc(50% + 1px))}.ws-swatch--none svg{display:none}.ws-pill-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;padding:0 4px}.ws-pill{height:36px;display:grid;place-items:center;background:var(--surface);border:1.5px solid transparent;border-radius:var(--radius-sm);cursor:pointer;color:var(--text-dim);transition:all var(--transition)}.ws-pill:hover{background:var(--surface-2)}.ws-pill--active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.ws-pill-mark{width:22px;background:currentColor;border-radius:1px}.ws-sidebar-bottom{margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.ws-sidebar-bottom-btn{width:100%;display:flex;align-items:center;gap:10px;padding:8px 12px;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--sans);font-size:12.5px;font-weight:500;cursor:pointer;transition:all var(--transition);text-align:left}.ws-sidebar-bottom-btn:hover{background:var(--surface);color:var(--text)}.ws-toolbar{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.ws-toolbar-group{display:flex;gap:2px;padding:2px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm)}.ws-tool{width:30px;height:30px;display:grid;place-items:center;background:transparent;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;transition:all var(--transition)}.ws-tool:hover:not(:disabled){background:var(--surface);color:var(--text)}.ws-tool:disabled{opacity:.35;cursor:not-allowed}.ws-tool--soon{opacity:.35;cursor:not-allowed;position:relative}.ws-tool--soon:hover:not(:disabled){background:transparent;color:var(--text-dim)}.ws-tool--active{background:var(--accent-bg);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.ws-tool--active:hover:not(:disabled){background:var(--accent-bg);color:var(--accent)}.ws-toolbar-divider{width:1px;height:22px;background:var(--border);margin:0 2px}.ws-toolbar-spacer{flex:1}.ws-toolbar-hint{font-family:var(--mono);font-size:11px;color:var(--text-faint);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:900px){.ws-toolbar-hint{display:none}}@media(max-width:1023px){.ws-toolbar{padding:8px 12px;gap:6px}.ws-tool,.ws-toolbar-menu{width:36px;height:36px}.ws-toolbar-divider{display:none}}@media(max-width:639px){.ws-toolbar-group{gap:0}}.ws-export-wrap{position:relative}.ws-export-backdrop{position:fixed;inset:0;z-index:40}.ws-export-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:50;display:flex;flex-direction:column;min-width:150px;padding:5px;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 12px 36px #0006}.ws-export-item{padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-family:var(--sans);font-size:13px;text-align:left;cursor:pointer}.ws-export-item:hover{background:var(--accent-bg);color:var(--accent)}.ws-tool:disabled{opacity:.5;cursor:progress}.react-flow{direction:ltr;--xy-edge-stroke-default: #b1b1b7;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #555;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(255, 255, 255, .5);--xy-minimap-background-color-default: #fff;--xy-minimap-mask-background-color-default: rgba(240, 240, 240, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #e2e2e2;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: transparent;--xy-background-pattern-dots-color-default: #91919a;--xy-background-pattern-lines-color-default: #eee;--xy-background-pattern-cross-color-default: #e2e2e2;background-color:var(--xy-background-color, var(--xy-background-color-default));--xy-node-color-default: inherit;--xy-node-border-default: 1px solid #1a192b;--xy-node-background-color-default: #fff;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(0, 0, 0, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #1a192b;--xy-node-border-radius-default: 3px;--xy-handle-background-color-default: #1a192b;--xy-handle-border-color-default: #fff;--xy-selection-background-color-default: rgba(0, 89, 220, .08);--xy-selection-border-default: 1px dotted rgba(0, 89, 220, .8);--xy-controls-button-background-color-default: #fefefe;--xy-controls-button-background-color-hover-default: #f4f4f4;--xy-controls-button-color-default: inherit;--xy-controls-button-color-hover-default: inherit;--xy-controls-button-border-color-default: #eee;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #ffffff;--xy-edge-label-color-default: inherit;--xy-resize-background-color-default: #3367d9}.react-flow.dark{--xy-edge-stroke-default: #3e3e3e;--xy-edge-stroke-width-default: 1;--xy-edge-stroke-selected-default: #727272;--xy-connectionline-stroke-default: #b1b1b7;--xy-connectionline-stroke-width-default: 1;--xy-attribution-background-color-default: rgba(150, 150, 150, .25);--xy-minimap-background-color-default: #141414;--xy-minimap-mask-background-color-default: rgba(60, 60, 60, .6);--xy-minimap-mask-stroke-color-default: transparent;--xy-minimap-mask-stroke-width-default: 1;--xy-minimap-node-background-color-default: #2b2b2b;--xy-minimap-node-stroke-color-default: transparent;--xy-minimap-node-stroke-width-default: 2;--xy-background-color-default: #141414;--xy-background-pattern-dots-color-default: #777;--xy-background-pattern-lines-color-default: #777;--xy-background-pattern-cross-color-default: #777;--xy-node-color-default: #f8f8f8;--xy-node-border-default: 1px solid #3c3c3c;--xy-node-background-color-default: #1e1e1e;--xy-node-group-background-color-default: rgba(240, 240, 240, .25);--xy-node-boxshadow-hover-default: 0 1px 4px 1px rgba(255, 255, 255, .08);--xy-node-boxshadow-selected-default: 0 0 0 .5px #999;--xy-handle-background-color-default: #bebebe;--xy-handle-border-color-default: #1e1e1e;--xy-selection-background-color-default: rgba(200, 200, 220, .08);--xy-selection-border-default: 1px dotted rgba(200, 200, 220, .8);--xy-controls-button-background-color-default: #2b2b2b;--xy-controls-button-background-color-hover-default: #3e3e3e;--xy-controls-button-color-default: #f8f8f8;--xy-controls-button-color-hover-default: #fff;--xy-controls-button-border-color-default: #5b5b5b;--xy-controls-box-shadow-default: 0 0 2px 1px rgba(0, 0, 0, .08);--xy-edge-label-background-color-default: #141414;--xy-edge-label-color-default: #f8f8f8}.react-flow__background{background-color:var(--xy-background-color-props, var(--xy-background-color, var(--xy-background-color-default)));pointer-events:none;z-index:-1}.react-flow__container{position:absolute;width:100%;height:100%;top:0;left:0}.react-flow__pane{z-index:1}.react-flow__pane.draggable{cursor:grab}.react-flow__pane.dragging{cursor:grabbing}.react-flow__pane.selection{cursor:pointer}.react-flow__viewport{transform-origin:0 0;z-index:2;pointer-events:none}.react-flow__renderer{z-index:4}.react-flow__selection{z-index:6}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible{outline:none}.react-flow__edge-path{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default));stroke-width:var(--xy-edge-stroke-width, var(--xy-edge-stroke-width-default));fill:none}.react-flow__connection-path{stroke:var(--xy-connectionline-stroke, var(--xy-connectionline-stroke-default));stroke-width:var(--xy-connectionline-stroke-width, var(--xy-connectionline-stroke-width-default));fill:none}.react-flow .react-flow__edges{position:absolute}.react-flow .react-flow__edges svg{overflow:visible;position:absolute;pointer-events:none}.react-flow__edge{pointer-events:visibleStroke}.react-flow__edge.selectable{cursor:pointer}.react-flow__edge.animated path{stroke-dasharray:5;animation:dashdraw .5s linear infinite}.react-flow__edge.animated path.react-flow__edge-interaction{stroke-dasharray:none;animation:none}.react-flow__edge.inactive{pointer-events:none}.react-flow__edge.selected,.react-flow__edge:focus,.react-flow__edge:focus-visible{outline:none}.react-flow__edge.selected .react-flow__edge-path,.react-flow__edge.selectable:focus .react-flow__edge-path,.react-flow__edge.selectable:focus-visible .react-flow__edge-path{stroke:var(--xy-edge-stroke-selected, var(--xy-edge-stroke-selected-default))}.react-flow__edge-textwrapper{pointer-events:all}.react-flow__edge .react-flow__edge-text{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__arrowhead polyline{stroke:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__arrowhead polyline.arrowclosed{fill:var(--xy-edge-stroke, var(--xy-edge-stroke-default))}.react-flow__connection{pointer-events:none}.react-flow__connection .animated{stroke-dasharray:5;animation:dashdraw .5s linear infinite}svg.react-flow__connectionline{z-index:1001;overflow:visible;position:absolute}.react-flow__nodes{pointer-events:none;transform-origin:0 0}.react-flow__node{position:absolute;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:all;transform-origin:0 0;box-sizing:border-box;cursor:default}.react-flow__node.selectable{cursor:pointer}.react-flow__node.draggable{cursor:grab;pointer-events:all}.react-flow__node.draggable.dragging{cursor:grabbing}.react-flow__nodesselection{z-index:3;transform-origin:left top;pointer-events:none}.react-flow__nodesselection-rect{position:absolute;pointer-events:all;cursor:grab}.react-flow__handle{position:absolute;pointer-events:none;min-width:5px;min-height:5px;width:6px;height:6px;background-color:var(--xy-handle-background-color, var(--xy-handle-background-color-default));border:1px solid var(--xy-handle-border-color, var(--xy-handle-border-color-default));border-radius:100%}.react-flow__handle.connectingfrom{pointer-events:all}.react-flow__handle.connectionindicator{pointer-events:all;cursor:crosshair}.react-flow__handle-bottom{top:auto;left:50%;bottom:0;transform:translate(-50%,50%)}.react-flow__handle-top{top:0;left:50%;transform:translate(-50%,-50%)}.react-flow__handle-left{top:50%;left:0;transform:translate(-50%,-50%)}.react-flow__handle-right{top:50%;right:0;transform:translate(50%,-50%)}.react-flow__edgeupdater{cursor:move;pointer-events:all}.react-flow__pane.selection .react-flow__panel{pointer-events:none}.react-flow__panel{position:absolute;z-index:5;margin:15px}.react-flow__panel.top{top:0}.react-flow__panel.bottom{bottom:0}.react-flow__panel.top.center,.react-flow__panel.bottom.center{left:50%;transform:translate(-15px) translate(-50%)}.react-flow__panel.left{left:0}.react-flow__panel.right{right:0}.react-flow__panel.left.center,.react-flow__panel.right.center{top:50%;transform:translateY(-15px) translateY(-50%)}.react-flow__attribution{font-size:10px;background:var(--xy-attribution-background-color, var(--xy-attribution-background-color-default));padding:2px 3px;margin:0}.react-flow__attribution a{text-decoration:none;color:#999}@keyframes dashdraw{0%{stroke-dashoffset:10}}.react-flow__edgelabel-renderer{position:absolute;width:100%;height:100%;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;left:0;top:0}.react-flow__viewport-portal{position:absolute;width:100%;height:100%;left:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__minimap{background:var( --xy-minimap-background-color-props, var(--xy-minimap-background-color, var(--xy-minimap-background-color-default)) )}.react-flow__minimap-svg{display:block}.react-flow__minimap-mask{fill:var( --xy-minimap-mask-background-color-props, var(--xy-minimap-mask-background-color, var(--xy-minimap-mask-background-color-default)) );stroke:var( --xy-minimap-mask-stroke-color-props, var(--xy-minimap-mask-stroke-color, var(--xy-minimap-mask-stroke-color-default)) );stroke-width:var( --xy-minimap-mask-stroke-width-props, var(--xy-minimap-mask-stroke-width, var(--xy-minimap-mask-stroke-width-default)) )}.react-flow__minimap-node{fill:var( --xy-minimap-node-background-color-props, var(--xy-minimap-node-background-color, var(--xy-minimap-node-background-color-default)) );stroke:var( --xy-minimap-node-stroke-color-props, var(--xy-minimap-node-stroke-color, var(--xy-minimap-node-stroke-color-default)) );stroke-width:var( --xy-minimap-node-stroke-width-props, var(--xy-minimap-node-stroke-width, var(--xy-minimap-node-stroke-width-default)) )}.react-flow__background-pattern.dots{fill:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-dots-color-default)) )}.react-flow__background-pattern.lines{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-lines-color-default)) )}.react-flow__background-pattern.cross{stroke:var( --xy-background-pattern-color-props, var(--xy-background-pattern-color, var(--xy-background-pattern-cross-color-default)) )}.react-flow__controls{display:flex;flex-direction:column;box-shadow:var(--xy-controls-box-shadow, var(--xy-controls-box-shadow-default))}.react-flow__controls.horizontal{flex-direction:row}.react-flow__controls-button{display:flex;justify-content:center;align-items:center;height:26px;width:26px;padding:4px;border:none;background:var(--xy-controls-button-background-color, var(--xy-controls-button-background-color-default));border-bottom:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) );color:var( --xy-controls-button-color-props, var(--xy-controls-button-color, var(--xy-controls-button-color-default)) );cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.react-flow__controls-button svg{width:100%;max-width:12px;max-height:12px;fill:currentColor}.react-flow__edge.updating .react-flow__edge-path{stroke:#777}.react-flow__edge-text{font-size:10px}.react-flow__node.selectable:focus,.react-flow__node.selectable:focus-visible{outline:none}.react-flow__node-input,.react-flow__node-default,.react-flow__node-output,.react-flow__node-group{padding:10px;border-radius:var(--xy-node-border-radius, var(--xy-node-border-radius-default));width:150px;font-size:12px;color:var(--xy-node-color, var(--xy-node-color-default));text-align:center;border:var(--xy-node-border, var(--xy-node-border-default));background-color:var(--xy-node-background-color, var(--xy-node-background-color-default))}.react-flow__node-input.selectable:hover,.react-flow__node-default.selectable:hover,.react-flow__node-output.selectable:hover,.react-flow__node-group.selectable:hover{box-shadow:var(--xy-node-boxshadow-hover, var(--xy-node-boxshadow-hover-default))}.react-flow__node-input.selectable.selected,.react-flow__node-input.selectable:focus,.react-flow__node-input.selectable:focus-visible,.react-flow__node-default.selectable.selected,.react-flow__node-default.selectable:focus,.react-flow__node-default.selectable:focus-visible,.react-flow__node-output.selectable.selected,.react-flow__node-output.selectable:focus,.react-flow__node-output.selectable:focus-visible,.react-flow__node-group.selectable.selected,.react-flow__node-group.selectable:focus,.react-flow__node-group.selectable:focus-visible{box-shadow:var(--xy-node-boxshadow-selected, var(--xy-node-boxshadow-selected-default))}.react-flow__node-group{background-color:var(--xy-node-group-background-color, var(--xy-node-group-background-color-default))}.react-flow__nodesselection-rect,.react-flow__selection{background:var(--xy-selection-background-color, var(--xy-selection-background-color-default));border:var(--xy-selection-border, var(--xy-selection-border-default))}.react-flow__nodesselection-rect:focus,.react-flow__nodesselection-rect:focus-visible,.react-flow__selection:focus,.react-flow__selection:focus-visible{outline:none}.react-flow__controls-button:hover{background:var( --xy-controls-button-background-color-hover-props, var(--xy-controls-button-background-color-hover, var(--xy-controls-button-background-color-hover-default)) );color:var( --xy-controls-button-color-hover-props, var(--xy-controls-button-color-hover, var(--xy-controls-button-color-hover-default)) )}.react-flow__controls-button:disabled{pointer-events:none}.react-flow__controls-button:disabled svg{fill-opacity:.4}.react-flow__controls-button:last-child{border-bottom:none}.react-flow__controls.horizontal .react-flow__controls-button{border-bottom:none;border-right:1px solid var( --xy-controls-button-border-color-props, var(--xy-controls-button-border-color, var(--xy-controls-button-border-color-default)) )}.react-flow__controls.horizontal .react-flow__controls-button:last-child{border-right:none}.react-flow__resize-control{position:absolute}.react-flow__resize-control.left,.react-flow__resize-control.right{cursor:ew-resize}.react-flow__resize-control.top,.react-flow__resize-control.bottom{cursor:ns-resize}.react-flow__resize-control.top.left,.react-flow__resize-control.bottom.right{cursor:nwse-resize}.react-flow__resize-control.bottom.left,.react-flow__resize-control.top.right{cursor:nesw-resize}.react-flow__resize-control.handle{width:5px;height:5px;border:1px solid #fff;border-radius:1px;background-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));translate:-50% -50%}.react-flow__resize-control.handle.left{left:0;top:50%}.react-flow__resize-control.handle.right{left:100%;top:50%}.react-flow__resize-control.handle.top{left:50%;top:0}.react-flow__resize-control.handle.bottom{left:50%;top:100%}.react-flow__resize-control.handle.top.left,.react-flow__resize-control.handle.bottom.left{left:0}.react-flow__resize-control.handle.top.right,.react-flow__resize-control.handle.bottom.right{left:100%}.react-flow__resize-control.line{border-color:var(--xy-resize-background-color, var(--xy-resize-background-color-default));border-width:0;border-style:solid}.react-flow__resize-control.line.left,.react-flow__resize-control.line.right{width:1px;transform:translate(-50%);top:0;height:100%}.react-flow__resize-control.line.left{left:0;border-left-width:1px}.react-flow__resize-control.line.right{left:100%;border-right-width:1px}.react-flow__resize-control.line.top,.react-flow__resize-control.line.bottom{height:1px;transform:translateY(-50%);left:0;width:100%}.react-flow__resize-control.line.top{top:0;border-top-width:1px}.react-flow__resize-control.line.bottom{border-bottom-width:1px;top:100%}.react-flow__edge-textbg{fill:var(--xy-edge-label-background-color, var(--xy-edge-label-background-color-default))}.react-flow__edge-text{fill:var(--xy-edge-label-color, var(--xy-edge-label-color-default))}.canvas-node{width:60px;height:60px;background:var(--bg);border:1.5px solid var(--border-strong);display:grid;place-items:center;font-family:var(--mono);font-size:13px;font-weight:500;color:var(--text);transition:all var(--transition);cursor:grab}.canvas-node--circle{border-radius:50%}.canvas-node--rect{border-radius:6px;width:80px}.canvas-node--ellipse{border-radius:50%;width:90px;height:54px}.canvas-node--diamond{border-radius:6px;transform:rotate(45deg);width:56px;height:56px}.canvas-node--diamond .canvas-node-label--upright{transform:rotate(-45deg)}.canvas-node:hover{border-color:var(--text-dim)}.canvas-node:active{cursor:grabbing}.canvas-node--selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 12px var(--accent-glow);color:var(--accent)}.canvas-node-label{pointer-events:none;user-select:none}.canvas-handle{width:8px!important;height:8px!important;background:var(--border-strong)!important;border:1.5px solid var(--bg)!important;transition:all var(--transition)}.canvas-node:hover .canvas-handle,.canvas-node--selected .canvas-handle{background:var(--accent)!important}.wcard{position:absolute;display:flex;flex-direction:column;min-width:320px;max-width:520px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:0 10px 30px #00000059;color:var(--text);font-family:var(--sans);user-select:none;transition:border-color var(--transition),box-shadow var(--transition)}.wcard:hover{border-color:var(--border-strong)}.wcard--editing{border-color:var(--accent);box-shadow:0 10px 30px #00000059,0 0 0 1px var(--accent)}.wcard--dragging{cursor:grabbing;border-color:var(--accent)}.wcard-header{display:flex;align-items:center;gap:8px;padding:10px 12px;background:var(--surface-2);border-bottom:1px solid var(--border);border-top-left-radius:var(--radius-md);border-top-right-radius:var(--radius-md);cursor:grab}.wcard-header:active{cursor:grabbing}.wcard-title{font-family:var(--mono);font-size:12.5px;font-weight:500;color:var(--text);letter-spacing:-.01em;margin-right:4px}.wcard-btn{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--sans);font-size:11px;font-weight:500;cursor:pointer;transition:all var(--transition)}.wcard-btn:hover{background:var(--bg);color:var(--text);border-color:var(--border-strong)}.wcard-btn--active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.wcard-tag{margin-left:auto;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--accent);letter-spacing:.08em;padding:3px 8px;border-radius:4px;background:var(--accent-bg);border:1px solid var(--accent)}.wcard-close{display:grid;place-items:center;width:22px;height:22px;border-radius:4px;background:transparent;border:none;color:var(--text-faint);cursor:pointer;transition:all var(--transition)}.wcard-close:hover{background:var(--bg);color:var(--text)}.wcard-body{flex:1;min-height:0;overflow:auto;padding:16px 16px 18px}.wcard-resize{position:absolute;right:0;bottom:0;width:16px;height:16px;cursor:nwse-resize;touch-action:none;z-index:5}.wcard-resize:after{content:"";position:absolute;right:3px;bottom:3px;width:8px;height:8px;border-right:2px solid var(--border-strong);border-bottom:2px solid var(--border-strong);border-bottom-right-radius:3px;opacity:.7;transition:border-color var(--transition)}.wcard:hover .wcard-resize:after{border-color:var(--accent);opacity:1}.wcard-resize-badge{position:absolute;right:8px;bottom:8px;padding:3px 7px;font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);border-radius:5px;pointer-events:none;z-index:6}.card-cell{min-width:38px;height:40px;padding:0 8px;display:grid;place-items:center;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:13px;font-weight:500}.card-cell--input{outline:none;text-align:center;width:44px}.card-cell--input:focus{border-color:var(--accent);color:var(--accent)}.card-cell--wide{width:140px}.card-empty-line{font-size:11.5px;color:var(--text-faint);font-family:var(--mono);padding:6px 4px}.card-empty-dot{font-family:var(--mono);color:var(--text-faint);padding:0 4px}.card-meta-row{margin-top:14px;font-family:var(--mono);font-size:11px;color:var(--text-faint);text-align:center;letter-spacing:.02em}.card-actions-row{display:flex;gap:8px;margin-top:12px;justify-content:center}.card-icon-btn{display:inline-flex;align-items:center;gap:5px;padding:5px 10px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--mono);font-size:11px;cursor:pointer;transition:all var(--transition)}.card-icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text);border-color:var(--border-strong)}.card-icon-btn:disabled{opacity:.4;cursor:not-allowed}.card-mini-input{height:30px;padding:0 10px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:12px;outline:none}.card-mini-input:focus{border-color:var(--accent)}.card-mini-input--small{width:70px}.card-meta-input{width:48px;height:22px;padding:0 6px;text-align:center;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--accent);font-family:var(--mono);font-size:11px;outline:none}.card-meta-input:focus{border-color:var(--accent)}.card-array{display:flex;flex-direction:column;gap:6px;align-items:center}.card-array-indices{display:flex;gap:6px;font-family:var(--mono);font-size:10.5px;color:var(--text-faint);padding:0 2px}.card-array-index{min-width:38px;text-align:center}.card-array-row{display:flex;gap:6px;align-items:center;flex-wrap:wrap;justify-content:center}.card-array-controls{display:flex;gap:4px;margin-left:6px}.card-stack{display:flex;flex-direction:column;align-items:center;gap:6px}.card-stack-label{font-family:var(--mono);font-size:11px;color:var(--text-faint);letter-spacing:.06em}.card-stack-label--top{color:var(--accent)}.card-stack-frame{display:flex;flex-direction:column;gap:6px;padding:10px 14px;border-left:1.5px solid var(--border-strong);border-right:1.5px solid var(--border-strong);border-bottom:1.5px solid var(--border-strong);border-top:1.5px solid transparent;border-radius:0 0 8px 8px;min-height:48px}.card-queue{display:flex;flex-direction:column;align-items:center}.card-queue-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.card-queue-cells{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.card-queue-tag{font-family:var(--mono);font-size:11px;color:var(--accent);padding:4px 8px;border-radius:4px;background:var(--accent-bg);border:1px solid var(--accent);letter-spacing:.04em}.card-hash{display:flex;flex-direction:column;gap:12px}.card-hash-meta{font-family:var(--mono);font-size:11.5px;color:var(--text-faint);letter-spacing:.04em;display:flex;align-items:center;gap:4px;flex-wrap:wrap}.card-hash-meta-num{color:var(--accent)}.card-hash-buckets{display:flex;flex-direction:column;gap:8px}.card-hash-bucket{display:grid;grid-template-columns:36px 1fr;gap:10px;align-items:center}.card-hash-bucket-idx{font-family:var(--mono);font-size:11px;color:var(--text-faint);text-align:right}.card-hash-bucket-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.card-kv-chip{display:inline-flex;align-items:center;gap:6px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:4px 8px;font-family:var(--mono);font-size:12px}.card-kv-key{color:var(--text)}.card-kv-val{color:var(--accent)}.card-kv-remove{display:grid;place-items:center;width:16px;height:16px;border-radius:3px;border:none;background:transparent;color:var(--text-faint);cursor:pointer;margin-left:2px}.card-kv-remove:hover{background:var(--surface-2);color:var(--text)}.card-hash-add{display:flex;gap:6px;align-items:center;padding-top:6px;border-top:1px solid var(--border)}.card-matrix{--m-cell: 60px;--m-gap: 10px;display:flex;flex-direction:column;gap:var(--m-gap);min-width:280px}.card-matrix-head{display:flex;align-items:center;gap:var(--m-gap)}.card-matrix-labels{display:grid;gap:var(--m-gap)}.card-matrix-collabel{position:relative;display:grid;place-items:center;height:22px;font-family:var(--mono);font-size:12px;color:var(--text-faint)}.card-matrix-coldel{position:absolute;top:-7px;right:2px;display:none;place-items:center;width:16px;height:16px;border:none;border-radius:4px;background:var(--surface-2);color:var(--text-faint);cursor:pointer}.card-matrix-collabel:hover .card-matrix-coldel{display:grid}.card-matrix-coldel:hover{color:var(--accent)}.card-matrix-addcol{display:grid;place-items:center;width:var(--m-cell);height:var(--m-cell);flex-shrink:0;background:transparent;border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-faint);cursor:pointer;transition:all var(--transition)}.card-matrix-rows{display:flex;flex-direction:column;gap:var(--m-gap)}.card-matrix-rowline{position:relative;display:flex;align-items:center;gap:var(--m-gap)}.card-matrix-cells{display:grid;gap:var(--m-gap)}.card-matrix-cell{width:var(--m-cell);height:var(--m-cell);display:grid;place-items:center;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-md);color:var(--text);font-family:var(--mono);font-size:17px;box-sizing:border-box}.card-matrix-cell--input{outline:none;text-align:center;padding:0}.card-matrix-cell--input:focus{border-color:var(--accent);color:var(--accent)}.card-matrix-rowdel{position:absolute;right:-28px;display:none;place-items:center;width:22px;height:22px;border:none;border-radius:4px;background:var(--surface-2);color:var(--text-faint);cursor:pointer}.card-matrix-rowline:hover .card-matrix-rowdel{display:grid}.card-matrix-rowdel:hover{color:var(--accent)}.card-matrix-addrow{display:grid;place-items:center;width:100%;height:38px;background:transparent;border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-faint);cursor:pointer;transition:all var(--transition)}.card-matrix-addcol:hover,.card-matrix-addrow:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.card-list-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:center}.card-list-node-wrap{display:flex;align-items:center;gap:6px}.card-list-arrow{color:var(--text-faint)}.card-list-tag{font-family:var(--mono);font-size:11px;color:var(--accent);padding:4px 8px;border-radius:4px;background:var(--accent-bg);border:1px solid var(--accent);letter-spacing:.04em}.card-list-tag--null{color:var(--text-faint);background:transparent;border-color:var(--border)}.card-tree,.card-heap{display:flex;flex-direction:column;align-items:center;gap:6px}.card-tree-svg{display:block}.card-tree-edge{stroke:var(--border-strong);stroke-width:1.4}.card-tree-node{fill:var(--bg);stroke:var(--border-strong);stroke-width:1.4}.card-tree-node--root{stroke:var(--accent);stroke-width:1.8}.card-tree-label{fill:var(--text);font-family:var(--mono);font-size:11px;font-weight:500;pointer-events:none}.card-heap-idx{fill:var(--text-faint);font-family:var(--mono);font-size:9.5px}.card-tree-edit-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:6px;padding-top:8px;border-top:1px solid var(--border);width:100%}.card-tree-edit-cell{display:flex;flex-direction:column;align-items:center;gap:2px}.card-tree-edit-idx{font-family:var(--mono);font-size:10px;color:var(--text-faint)}.card-tree-edit-input{width:44px}.card-segtree{display:flex;flex-direction:column;gap:8px;min-width:320px}.card-segtree-title{text-align:center;letter-spacing:.08em}.card-segtree-svg{width:100%;max-height:240px}.card-segtree-edge{stroke:var(--border-strong);stroke-width:1.25}.card-segtree-node{fill:var(--surface-2);stroke:var(--accent);stroke-width:1.5}.card-segtree-range{fill:var(--text-faint);font-family:var(--mono);font-size:9px}.card-segtree-val{fill:var(--text);font-family:var(--mono);font-size:11px;font-weight:600}.card-segtree-leaves{justify-content:center}.card-codeblock{display:flex;flex-direction:column;min-width:280px;height:100%;border-radius:var(--radius-sm);overflow:hidden;border:1px solid var(--border);background:#0d0d10}.card-codeblock-bar{flex-shrink:0}.card-codeblock-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:#ffffff08;border-bottom:1px solid var(--border)}.card-codeblock-dots{display:inline-flex;gap:5px}.cb-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.cb-dot--r{background:#ff5f57}.cb-dot--y{background:#febc2e}.cb-dot--g{background:#28c840}.card-codeblock-lines{font-family:var(--mono);font-size:11px;color:var(--text-faint);margin-left:4px}.card-codeblock-lang{margin-left:auto;background:var(--surface-2);color:var(--text-dim);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:11px;padding:3px 6px;cursor:pointer}.card-codeblock-copy{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:3px;border-radius:4px}.card-codeblock-copy:hover{color:var(--accent)}.card-codeblock-pre{margin:0;padding:10px 0;flex:1;min-height:0;overflow:auto;font-family:var(--mono);font-size:12px;line-height:1.55}.card-codeblock-line{display:flex;gap:14px;padding:0 14px}.card-codeblock-ln{color:var(--text-faint);text-align:right;width:20px;flex-shrink:0;user-select:none}.card-codeblock-line code{color:#d4d4d8;white-space:pre}.card-cell--compare{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 2px var(--accent) inset,0 0 12px var(--accent-glow);transition:all .15s ease}.card-cell--swap{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);box-shadow:0 0 16px var(--accent-glow);transform:translateY(-3px);transition:all .15s ease}.card-cell--sorted{border-color:#34d399;color:#34d399;background:#34d3991f}.card-tree-node--hot{fill:var(--accent);stroke:var(--accent)}.card-tree-node--sorted{fill:#34d3992e;stroke:#34d399}.card-matrix-cell--hot{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}.card-matrix-cell--compare{border-color:var(--accent);color:var(--accent)}.card-matrix-cell--visited{border-color:#34d399;color:#34d399}.card-hash-bucket--probe{background:var(--accent-bg);border-radius:var(--radius-sm)}.card-segtree-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.card-segtree-type{position:relative}.card-segtree-type-btn{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:12px;cursor:pointer}.card-segtree-type-btn:hover{border-color:var(--accent)}.card-segtree-type-tag{font-family:var(--mono);font-size:10px;color:var(--accent);border:1px solid var(--accent);border-radius:4px;padding:1px 5px}.card-segtree-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:20;min-width:220px;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 12px 36px #0006;padding:5px;display:flex;flex-direction:column;gap:2px}.card-segtree-menu-item{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:12.5px;cursor:pointer;text-align:left}.card-segtree-menu-item:hover{background:var(--surface-2)}.card-segtree-menu-item--active{background:var(--accent-bg);color:var(--accent)}.card-trie{display:flex;flex-direction:column;gap:10px;min-width:320px}.card-trie-head{text-align:left}.card-trie-svg{width:100%}.card-trie-edge{stroke:var(--border-strong);stroke-width:1.25}.card-trie-edge-label-bg{fill:var(--bg);stroke:var(--border)}.card-trie-edge-label{fill:var(--accent);font-family:var(--mono);font-size:9px}.card-trie-node{fill:var(--surface-2);stroke:var(--border-strong);stroke-width:1.5}.card-trie-node--root{fill:var(--bg);stroke:var(--text-dim)}.card-trie-node--terminal{stroke:var(--accent);stroke-width:2;stroke-dasharray:3 2}.card-trie-label{fill:var(--text);font-family:var(--mono);font-size:11px;font-weight:600}.card-trie-add{display:flex;gap:8px;align-items:center}.card-trie-add .card-mini-input{flex:1}.card-plane{display:flex;flex-direction:column;gap:10px;min-width:320px}.card-plane-head{text-align:left}.card-plane-svg{width:100%;max-height:320px}.card-plane-grid{stroke:var(--border);stroke-width:.75;opacity:.5}.card-plane-axis{stroke:var(--border-strong);stroke-width:1.25}.card-plane-point{fill:var(--accent)}.card-plane-label{fill:var(--text-dim);font-family:var(--mono);font-size:9px}.card-graph{display:flex;flex-direction:column;gap:8px;min-width:320px}.card-graph-head{text-align:left}.card-graph-svg{width:100%;max-height:320px}.cb-lang-wrap{position:relative;margin-left:auto}.cb-lang-btn{display:inline-flex;align-items:center;gap:6px;padding:4px 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);color:var(--text);font-family:var(--mono);font-size:11px;cursor:pointer}.cb-lang-btn:hover{border-color:var(--accent)}.cb-lang-backdrop{position:fixed;inset:0;z-index:30}.cb-lang-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:40;min-width:160px;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:0 12px 36px #00000073;padding:5px;display:flex;flex-direction:column;gap:2px}.cb-lang-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:13px;cursor:pointer;text-align:left}.cb-lang-item:hover{background:var(--surface-2)}.cb-lang-item--active{background:var(--accent-bg);color:var(--accent)}.card-codeblock-edit--on{background:var(--accent)!important;color:var(--accent-ink)!important}.card-codeblock-textarea{width:100%;flex:1;min-height:220px;border:none;background:#0d0d10;color:#d4d4d8;font-family:var(--mono);font-size:12px;line-height:1.55;padding:10px 14px;resize:none;outline:none}.card-op-bar{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}.card-op-input{flex:1;min-width:64px;height:32px;padding:0 12px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--mono);font-size:12.5px;outline:none}.card-op-input::placeholder{color:var(--text-faint)}.card-op-input:focus{border-color:var(--accent)}.card-op-btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 12px;background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--sans);font-size:12px;font-weight:500;cursor:pointer;white-space:nowrap;transition:all var(--transition)}.card-op-btn:hover:not(:disabled){background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.card-op-btn:disabled{opacity:.4;cursor:not-allowed}.card-table{display:flex;flex-direction:column;min-width:280px;gap:14px}.card-table-scroll{overflow:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.card-table-grid{border-collapse:collapse;width:100%;font-family:var(--mono);font-size:13px}.card-table-grid th,.card-table-grid td{border:1px solid var(--border);padding:0;text-align:left}.card-table-grid thead th{background:var(--surface-2);font-weight:600;color:var(--text)}.card-table-num-h,.card-table-num{width:46px;text-align:center;color:var(--text-faint);font-weight:500;user-select:none}.card-table-num,.card-table-num-h{padding:10px 0}.card-table-colh{position:relative}.card-table-colh-input{width:100%;min-width:90px;box-sizing:border-box;padding:10px 26px 10px 14px;background:transparent;border:none;color:var(--text);font-family:var(--mono);font-size:13px;font-weight:600;outline:none}.card-table-coldel{position:absolute;top:50%;right:6px;transform:translateY(-50%);display:none;place-items:center;width:18px;height:18px;border:none;border-radius:4px;background:transparent;color:var(--text-faint);cursor:pointer}.card-table-colh:hover .card-table-coldel{display:grid}.card-table-coldel:hover{color:var(--accent);background:var(--bg)}.card-table-addcol{width:44px;text-align:center}.card-table-addcol button{display:grid;place-items:center;width:100%;height:100%;min-height:40px;border:none;background:transparent;color:var(--text-faint);cursor:pointer;transition:color var(--transition)}.card-table-addcol button:hover{color:var(--accent)}.card-table-cell-input{width:100%;min-width:90px;box-sizing:border-box;padding:10px 14px;background:transparent;border:none;color:var(--text);font-family:var(--mono);font-size:13px;outline:none}.card-table-cell-input:focus{background:var(--accent-bg)}.card-table-rowdel-cell{width:30px;text-align:center}.card-table-rowdel{display:none;place-items:center;width:22px;height:22px;margin:0 auto;border:none;border-radius:4px;background:transparent;color:var(--text-faint);cursor:pointer}.card-table-grid tbody tr:hover .card-table-rowdel{display:grid}.card-table-rowdel:hover{color:var(--accent);background:var(--bg)}.card-table-foot{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-table-addrow{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;background:transparent;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--sans);font-size:12.5px;font-weight:500;cursor:pointer;transition:all var(--transition)}.card-table-addrow:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.card-table-meta{font-family:var(--mono);font-size:11.5px;color:var(--text-faint)}.card-graph-ops{display:flex;flex-direction:column;gap:8px}.card-hash-cap{display:flex;align-items:center;gap:7px;margin-top:12px}.card-hash-cap-label{font-family:var(--mono);font-size:11px;color:var(--text-faint);margin-right:2px}.card-cap-chip{min-width:30px;height:28px;padding:0 8px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);font-family:var(--mono);font-size:12px;cursor:pointer;transition:all var(--transition)}.card-cap-chip:hover{border-color:var(--border-strong);color:var(--text)}.card-cap-chip--active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent);font-weight:600}.editdata-backdrop{position:fixed;inset:0;z-index:1100;pointer-events:auto;display:flex;align-items:center;justify-content:center;background:#0000008c;backdrop-filter:blur(2px)}.editdata-panel{width:min(560px,92vw);background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 24px 80px #0000008c;padding:18px;display:flex;flex-direction:column;gap:12px}.editdata-head{display:flex;align-items:center;gap:12px}.editdata-icon{width:34px;height:34px;border-radius:var(--radius-sm);display:grid;place-items:center;background:var(--accent-bg);color:var(--accent);flex-shrink:0}.editdata-titles{display:flex;flex-direction:column;gap:1px;flex:1}.editdata-title{font-size:15px;font-weight:600;color:var(--text)}.editdata-kind{color:var(--accent)}.editdata-sub{font-family:var(--mono);font-size:11.5px;color:var(--text-faint)}.editdata-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:4px;border-radius:var(--radius-sm)}.editdata-x:hover{color:var(--text);background:var(--surface)}.editdata-hint{display:flex;align-items:center;gap:6px;font-family:var(--mono);font-size:11.5px;color:var(--text-dim)}.editdata-textarea{min-height:150px;font-family:var(--mono);font-size:13px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;resize:vertical;outline:none}.editdata-textarea:focus{border-color:var(--accent)}.editdata-textarea--error{border-color:#f87171}.editdata-meta{display:flex;align-items:center;justify-content:space-between}.editdata-count{font-family:var(--mono);font-size:11px;color:var(--text-faint)}.editdata-sample{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--text-dim);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:5px 10px;cursor:pointer}.editdata-sample:hover{color:var(--accent);border-color:var(--accent)}.editdata-foot{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);padding-top:12px}.editdata-keys{font-family:var(--mono);font-size:11px;color:var(--text-faint)}.editdata-actions{display:flex;gap:8px}.editdata-btn{display:inline-flex;align-items:center;gap:6px;font-size:13px;padding:8px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer}.editdata-btn:hover{border-color:var(--border-strong)}.editdata-btn--apply{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.editdata-btn--apply:hover{opacity:.9}.cardops-drawer{position:fixed;top:0;right:0;bottom:0;z-index:60;pointer-events:auto;width:280px;background:var(--bg);border-left:1px solid var(--border-strong);box-shadow:-8px 0 40px #00000059;padding:18px 16px;display:flex;flex-direction:column;gap:10px;overflow-y:auto}.cardops-head{display:flex;align-items:center;justify-content:space-between}.cardops-title{font-size:17px;font-weight:600;color:var(--text)}.cardops-x{background:transparent;border:none;color:var(--text-dim);cursor:pointer;padding:2px;border-radius:4px}.cardops-x:hover{color:var(--text)}.cardops-meta{font-family:var(--mono);font-size:11px;color:var(--text-faint);letter-spacing:.04em}.cardops-sub{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;letter-spacing:.12em;color:var(--text-dim);margin-top:8px}.cardops-sub svg{color:var(--accent)}.cardops-list{display:flex;flex-direction:column;gap:8px}.cardops-op{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;cursor:pointer}.cardops-op:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.cardops-op svg{color:var(--text-faint)}.cardops-op:hover svg{color:var(--accent)}.cardops-playback{position:fixed;bottom:22px;left:50%;transform:translate(-50%);z-index:60;pointer-events:auto;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 16px 48px #00000073;padding:10px 14px;display:flex;flex-direction:column;gap:8px;max-width:min(620px,92vw)}.cardops-pb-row{display:flex;align-items:center;gap:8px}.cardops-pb-label{font-family:var(--mono);font-size:12px;color:var(--text-dim);margin-right:6px;white-space:nowrap}.cardops-pb-btn{display:grid;place-items:center;width:30px;height:30px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-dim);cursor:pointer}.cardops-pb-btn:hover{color:var(--text);border-color:var(--border-strong)}.cardops-pb-play{display:grid;place-items:center;width:34px;height:34px;border:none;border-radius:50%;background:var(--accent);color:var(--accent-ink);cursor:pointer}.cardops-pb-play:hover{opacity:.9}.cardops-pb-count{font-family:var(--mono);font-size:12px;color:var(--text-faint);min-width:56px;text-align:center}.cardops-pb-close{display:grid;place-items:center;width:28px;height:28px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text-faint);cursor:pointer}.cardops-pb-close:hover{color:var(--text);background:var(--surface)}.cardops-pb-narration{font-family:var(--mono);font-size:12px;color:var(--text);border-top:1px solid var(--border);padding-top:8px}.cardops-advanced-toggle{display:flex;align-items:center;justify-content:space-between;margin-top:14px;padding:10px 0;border-top:1px solid var(--border);background:transparent;border-left:none;border-right:none;border-bottom:none;color:var(--text-dim);font-size:13px;cursor:pointer}.cardops-advanced-toggle:hover{color:var(--text)}.cardops-chev{transition:transform .15s ease}.cardops-chev--open{transform:rotate(180deg)}.cardops-advanced{display:flex;flex-direction:column;gap:8px}.cardops-toggle-row{display:flex;gap:8px}.cardops-toggle{flex:1;padding:8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-dim);font-family:var(--mono);font-size:12px;cursor:pointer}.cardops-toggle--active{border-color:var(--accent);color:var(--accent);background:var(--accent-bg)}.cardops-value-editor{display:flex;align-items:center;gap:10px;padding:10px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);cursor:pointer;text-align:left;width:100%}.cardops-value-editor:hover{background:var(--accent-bg)}.cardops-value-editor-icon{width:30px;height:30px;display:grid;place-items:center;border-radius:var(--radius-sm);background:var(--accent-bg);color:var(--accent);flex-shrink:0}.cardops-value-editor-text{display:flex;flex-direction:column}.cardops-value-editor-title{font-size:13px;font-weight:600}.cardops-value-editor-sub{font-size:11px;color:var(--text-faint)}.cardops-value-editor-box{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);overflow:hidden}.cardops-value-editor-hd{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:7px 10px;border-bottom:1px solid var(--border);font-family:var(--mono);font-size:10px;letter-spacing:.1em;color:var(--text-dim)}.cardops-value-editor-hd span{display:inline-flex;align-items:center;gap:6px}.cardops-value-x{background:transparent;border:none;color:var(--text-faint);cursor:pointer;padding:0}.cardops-value-x:hover{color:var(--text)}.cardops-value-cancel{padding:6px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:12.5px;cursor:pointer}.cardops-value-cancel:hover{border-color:var(--border-strong)}.cardops-value-textarea{width:100%;min-height:80px;border:none;background:transparent;color:var(--text);font-family:var(--mono);font-size:12.5px;padding:10px;resize:vertical;outline:none}.cardops-value-textarea--error{box-shadow:inset 0 0 0 1px #f87171}.cardops-value-foot{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:8px 10px;border-top:1px solid var(--border)}.cardops-value-err{font-size:11px;color:#f87171;margin-right:auto}.cardops-value-apply{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-size:12.5px;font-weight:600;cursor:pointer}.cardops-value-apply:hover{opacity:.9}.cardops-exchange{display:flex;gap:8px}.cardops-exchange-btn{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;cursor:pointer}.cardops-exchange-btn:hover{border-color:var(--accent);color:var(--accent)}.cardops-op-wrap{display:flex;flex-direction:column;gap:6px}.cardops-op--active{border-color:var(--accent);color:var(--accent)}.cardops-param{display:flex;gap:6px;padding:8px;border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-bg)}.cardops-param-input{flex:1;min-width:0;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);font-family:var(--mono);font-size:12.5px;padding:7px 9px;outline:none}.cardops-param-input:focus{border-color:var(--accent)}.cardops-param-go{display:inline-flex;align-items:center;gap:5px;padding:7px 11px;border:none;border-radius:var(--radius-sm);background:var(--accent);color:var(--accent-ink);font-size:12px;font-weight:600;cursor:pointer;white-space:nowrap}.cardops-param-go:hover{opacity:.9}.card-layer{position:absolute;inset:0;pointer-events:none;z-index:5}.card-layer>*{pointer-events:auto}.card-soon{font-family:var(--mono);font-size:12px;color:var(--text-faint);text-align:center;padding:20px}.drawing-overlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:6}.drawing-overlay--active{pointer-events:auto}.drawing-stroke{stroke:var(--accent);fill:none;stroke-linecap:round;stroke-linejoin:round}.drawing-stroke--live{stroke:var(--accent);opacity:.95}.drawing-text{font-family:var(--mono);fill:var(--text)}.drawing-text-input{width:100%;height:100%;padding:2px 4px;background:var(--surface);border:1px solid var(--accent);border-radius:4px;color:var(--accent);font-family:var(--mono);outline:none}.drawing-erasable{cursor:crosshair}.drawing-erasable:hover{opacity:.4}.drawing-shape--live{opacity:.9}.drawing-sel-frame{stroke:var(--accent);stroke-dasharray:5 4;opacity:.9}.drawing-sel-handle{fill:var(--surface, #18181b);stroke:var(--accent)}.drawing-hit{cursor:move}.drawing-eraser-cursor{fill:#f871711f;stroke:#f87171}.drawing-size-badge{position:absolute;z-index:8;pointer-events:none;padding:3px 8px;font-family:var(--mono);font-size:11px;font-weight:600;color:var(--accent-ink, #0b0b0d);background:var(--accent);border-radius:6px;white-space:nowrap;box-shadow:0 4px 12px #00000059}.workspace-canvas{position:relative;flex:1;background:var(--bg);min-height:0}.workspace-canvas--tool-add-rect .drawing-overlay,.workspace-canvas--tool-add-ellipse .drawing-overlay,.workspace-canvas--tool-add-diamond .drawing-overlay,.workspace-canvas--tool-add-line .drawing-overlay,.workspace-canvas--tool-add-arrow .drawing-overlay,.workspace-canvas--tool-text .drawing-overlay,.workspace-canvas--tool-pencil .drawing-overlay,.workspace-canvas--tool-add-rect .react-flow__pane,.workspace-canvas--tool-add-ellipse .react-flow__pane,.workspace-canvas--tool-add-diamond .react-flow__pane,.workspace-canvas--tool-add-line .react-flow__pane,.workspace-canvas--tool-add-arrow .react-flow__pane,.workspace-canvas--tool-text .react-flow__pane,.workspace-canvas--tool-pencil .react-flow__pane,.workspace-canvas--tool-eraser .drawing-overlay,.workspace-canvas--tool-eraser .react-flow__pane,.workspace-canvas--tool-eraser .react-flow__node{cursor:crosshair}.workspace-canvas .react-flow{background:var(--bg)}.workspace-canvas .react-flow__edge-path{stroke:var(--border-strong);stroke-width:1.5}.workspace-canvas .react-flow__edge.selected .react-flow__edge-path,.workspace-canvas .react-flow__edge:focus-visible .react-flow__edge-path{stroke:var(--accent);stroke-width:2}.workspace-canvas .react-flow__connectionline{stroke:var(--accent);stroke-width:2;stroke-dasharray:4 3}.workspace-canvas-controls{background:var(--surface)!important;border:1px solid var(--border)!important;border-radius:var(--radius-sm)!important;overflow:hidden;z-index:7!important}.workspace-canvas-controls .react-flow__controls-button{background:transparent!important;border:none!important;border-bottom:1px solid var(--border)!important;color:var(--text-dim)!important;width:28px!important;height:28px!important}.workspace-canvas-controls .react-flow__controls-button:hover{background:var(--surface-2)!important;color:var(--text)!important}.workspace-canvas-controls .react-flow__controls-button:last-child{border-bottom:none!important}.workspace-canvas-controls .react-flow__controls-button svg{fill:currentColor}.workspace-canvas-empty{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.workspace-canvas-empty-card{background:var(--surface);border:1px dashed var(--border-strong);border-radius:var(--radius-md);padding:22px 26px;max-width:340px;text-align:center;pointer-events:auto}.workspace-canvas-empty-card h3{font-size:14px;font-weight:600;color:var(--text);margin:0 0 6px}.workspace-canvas-empty-card p{font-size:12.5px;color:var(--text-dim);line-height:1.55;margin:0}.workspace-canvas-empty-card b{color:var(--accent);font-weight:500}.workspace-page{height:100vh;width:100vw;display:flex;background:var(--bg);overflow:hidden}.workspace-main{flex:1;display:flex;flex-direction:column;min-width:0;min-height:0}.workspace-sidebar-host{display:contents}.workspace-backdrop{display:none}@media(max-width:1023px){.workspace-sidebar-host{display:block;position:fixed;top:0;left:0;bottom:0;z-index:50;transform:translate(-105%);transition:transform .22s cubic-bezier(.34,1.56,.64,1)}.workspace-sidebar-host--open{transform:translate(0)}.workspace-backdrop{display:block;position:fixed;inset:0;background:#0000008c;z-index:40;animation:ws-backdrop-in .15s ease}@keyframes ws-backdrop-in{0%{opacity:0}to{opacity:1}}}.search-bar{position:relative;display:flex;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:0 12px;transition:border-color var(--transition)}.search-bar:focus-within{border-color:var(--accent)}.search-bar input{flex:1;border:none;background:transparent;padding:11px 8px;font-size:14px;font-family:var(--sans);color:var(--text);outline:none}.search-bar input::placeholder{color:var(--text-faint)}.search-icon{color:var(--text-dim);flex-shrink:0}.search-clear{display:grid;place-items:center;width:22px;height:22px;border-radius:4px;color:var(--text-dim);border:none;background:transparent;cursor:pointer;transition:all var(--transition)}.search-clear:hover{background:var(--surface-2);color:var(--text)}.ws-header{display:flex;flex-direction:column;gap:12px;padding:18px 28px 14px;border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0}.ws-header-row{display:flex;align-items:center;gap:18px}.ws-back-link{display:inline-flex;align-items:center;gap:4px;padding:6px 10px 6px 6px;margin-left:-6px;border-radius:var(--radius-sm);font-family:var(--sans);font-size:13px;font-weight:500;color:var(--text-dim);text-decoration:none;letter-spacing:-.01em;flex-shrink:0;transition:all var(--transition)}.ws-back-link:hover{color:var(--accent);background:var(--surface)}.ws-header-search{flex:1;max-width:440px;margin-left:auto}.ws-header-actions{display:flex;gap:6px;flex-shrink:0}.ws-header-row--title{align-items:baseline;gap:12px}.ws-title{font-size:22px;font-weight:600;color:var(--text);letter-spacing:-.015em;margin:0}.ws-count-badge{font-family:var(--mono);font-size:11px;color:var(--accent);padding:3px 9px;border-radius:4px;background:var(--accent-bg);border:1px solid var(--accent);letter-spacing:-.01em}@media(max-width:1023px){.ws-header{padding:14px 16px 12px;gap:10px}.ws-header-row{gap:10px;flex-wrap:wrap}.ws-back-link{padding:6px 8px;font-size:12px}.ws-header-search{order:3;flex-basis:100%;max-width:none;margin-left:0}.ws-header-actions{margin-left:auto}.ws-title{font-size:18px}.ws-count-badge{font-size:10.5px;padding:2px 7px}}@media(max-width:639px){.ws-back-link{font-size:0;padding:6px}.ws-back-link svg{display:block}}.cat-chips-wrap{border-bottom:1px solid var(--border);background:var(--bg);flex-shrink:0;overflow:hidden}.cat-chips{display:flex;gap:6px;padding:12px 28px;overflow-x:auto;scrollbar-width:none}.cat-chips::-webkit-scrollbar{display:none}.cat-chip{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border-radius:20px;background:transparent;border:1px solid var(--border);font-family:var(--sans);font-size:12.5px;font-weight:500;color:var(--text-dim);white-space:nowrap;cursor:pointer;transition:all var(--transition)}.cat-chip:hover{background:var(--surface);color:var(--text);border-color:var(--border-strong)}.cat-chip-icon{color:var(--text-faint);flex-shrink:0;transition:color var(--transition)}.cat-chip:hover .cat-chip-icon{color:var(--text-dim)}.cat-chip--active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.cat-chip--active:hover{background:var(--accent-bg);color:var(--accent)}.cat-chip--active .cat-chip-icon,.cat-chip--active:hover .cat-chip-icon{color:var(--accent)}.algo-sidebar{background:var(--bg);border-right:1px solid var(--border);overflow-y:auto;padding:18px 14px 32px;min-height:0}@media(max-width:1023px){.algo-sidebar-panel .algo-sidebar{flex:1;border-right:none;padding:10px 12px 32px}.algo-item{padding:12px}.algo-item-name{font-size:13.5px}}.algo-sidebar-empty{padding:22px 14px;color:var(--text-faint);font-size:12.5px;line-height:1.55;text-align:center}.algo-group{margin-bottom:22px}.algo-group-head{display:flex;align-items:center;justify-content:space-between;padding:6px 10px 10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-faint)}.algo-group-name{font-weight:500}.algo-group-count{font-size:10.5px;color:var(--accent);padding:2px 7px;border-radius:10px;background:var(--accent-bg);border:1px solid var(--accent)}.algo-group-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:4px}.algo-item{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border-radius:var(--radius-sm);text-decoration:none;background:transparent;border:1px solid transparent;color:var(--text);transition:all var(--transition)}.algo-item:hover{background:var(--surface)}.algo-item--active{background:var(--accent-bg);border-color:var(--accent)}.algo-item--active:hover{background:var(--accent-bg)}.algo-item--stub .algo-item-name{color:var(--text-dim)}.algo-item-name{font-size:13px;font-weight:500;color:var(--text);letter-spacing:-.01em;line-height:1.3}.algo-item--active .algo-item-name{color:var(--accent)}.algo-item-meta{display:flex;align-items:center;gap:8px}.algo-item-complexity{font-family:var(--mono);font-size:10.5px;color:var(--text-faint);letter-spacing:-.01em}.algo-item--active .algo-item-complexity{color:var(--accent);opacity:.85}.algo-item-soon{font-family:var(--mono);font-size:9.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;padding:1px 6px;border-radius:3px;border:1px solid var(--border)}.algo-item-viztag{font-family:var(--mono);font-size:9.5px;color:var(--text-faint);letter-spacing:.08em;margin-left:auto;text-transform:uppercase}.algo-item--active .algo-item-viztag{color:var(--accent);opacity:.75}.array-stage{display:flex;align-items:center;justify-content:center;padding:24px}.array-cells{display:flex;gap:6px;flex-wrap:wrap;justify-content:center}.array-cell-wrap{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:40px}.array-pointer{height:16px;display:flex;gap:4px;font-family:var(--mono);font-size:10px;color:var(--accent);letter-spacing:.04em;text-transform:lowercase}.array-cell{width:40px;height:48px;border-radius:var(--radius-sm);background:var(--surface);border:1.25px solid var(--border-strong);display:grid;place-items:center;font-family:var(--mono);font-size:14px;font-weight:500;color:var(--text);transition:all .2s ease}.array-cell--comparing{border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.array-cell--swapping{border-color:var(--node-frontier);border-style:dashed;color:var(--text)}.array-cell--sorted{border-color:var(--node-visited);color:var(--text-dim)}.array-cell--found{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.array-index{font-family:var(--mono);font-size:10px;color:var(--text-faint)}.list-stage{display:flex;flex-direction:column;min-height:0}.list-canvas{flex:1;display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:24px;justify-content:center;overflow:auto}.list-empty{font-family:var(--mono);color:var(--text-faint);font-size:12px}.list-node-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}.list-pointer{height:14px;font-family:var(--mono);font-size:10px;color:var(--accent);text-transform:lowercase;letter-spacing:.04em}.list-node{min-width:44px;height:44px;padding:0 10px;display:grid;place-items:center;background:var(--surface);border:1.5px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--mono);font-size:14px;font-weight:500;color:var(--text);transition:all .18s}.list-node--active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.list-node--removed{opacity:.35;text-decoration:line-through}.list-arrow{color:var(--text-faint);margin:0 2px;transition:transform .2s}.list-arrow--reversed{color:var(--accent)}.list-tag{font-family:var(--mono);font-size:11px;color:var(--accent);padding:4px 9px;border-radius:4px;background:var(--accent-bg);border:1px solid var(--accent);letter-spacing:.04em;align-self:center}.list-tag--null{color:var(--text-faint);background:transparent;border-color:var(--border)}.hash-stage{display:flex;flex-direction:column;min-height:0}.hash-canvas{flex:1;padding:22px 28px;overflow:auto;display:flex;flex-direction:column;gap:14px}.hash-meta{font-family:var(--mono);font-size:12px;color:var(--text-faint);letter-spacing:.04em}.hash-meta-num{color:var(--accent)}.hash-buckets{display:flex;flex-direction:column;gap:6px}.hash-bucket{display:grid;grid-template-columns:40px 1fr;gap:12px;align-items:center;padding:6px 8px;border-radius:var(--radius-sm);border:1px solid transparent;transition:all .15s}.hash-bucket--probed{background:var(--accent-bg);border-color:var(--accent)}.hash-bucket--found{background:var(--accent-bg);border-color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.hash-bucket-idx{font-family:var(--mono);font-size:12px;color:var(--text-faint);text-align:right}.hash-bucket-chips{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.hash-empty{font-family:var(--mono);color:var(--text-faint);font-size:12px}.hash-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 9px;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:12px}.hash-chip--match{border-color:var(--accent);background:var(--accent-bg)}.hash-chip-key{color:var(--text)}.hash-chip-val{color:var(--accent)}.str-stage{display:flex;flex-direction:column;min-height:0}.str-canvas{flex:1;padding:24px 28px;overflow:auto;display:flex;flex-direction:column;gap:28px;justify-content:center}.str-row{display:flex;gap:12px;align-items:flex-start}.str-row-label{font-family:var(--mono);font-size:11px;color:var(--accent);letter-spacing:.06em;text-transform:uppercase;padding-top:22px;min-width:36px}.str-row-cells{display:flex;flex-wrap:wrap;gap:4px;align-items:center}.str-empty{font-family:var(--mono);color:var(--text-faint);font-size:12px}.str-cell-wrap{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:32px}.str-pointer{height:14px;font-family:var(--mono);font-size:10px;color:var(--accent);letter-spacing:.04em}.str-cell{width:32px;height:36px;display:grid;place-items:center;background:var(--surface);border:1.25px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--mono);font-size:14px;font-weight:500;color:var(--text);transition:all .18s}.str-cell--compact{width:32px;height:28px;font-size:12px;color:var(--text-dim);background:transparent;border-style:dashed}.str-cell--active{border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.str-cell--match{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.str-cell--match-start{box-shadow:-1px 0 0 var(--accent),0 0 8px var(--accent-glow)}.str-index{font-family:var(--mono);font-size:10px;color:var(--text-faint)}.matrix-stage{display:flex;flex-direction:column;min-height:0}.matrix-canvas{flex:1;display:flex;align-items:center;justify-content:center;padding:22px;overflow:auto}.matrix-grid{border-collapse:separate;border-spacing:4px}.matrix-corner{width:28px;height:28px}.matrix-header{font-family:var(--mono);font-size:10.5px;color:var(--text-faint);font-weight:500;min-width:36px;height:28px;text-align:center;letter-spacing:.04em}.matrix-header--row{text-align:right;padding-right:6px}.matrix-cell{width:38px;height:38px;background:var(--surface);border:1.25px solid var(--border-strong);border-radius:var(--radius-sm);font-family:var(--mono);font-size:13px;font-weight:500;color:var(--text);text-align:center;transition:all .18s}.matrix-row{display:flex;gap:4px;align-items:center}.matrix-cell--current{border-color:var(--accent);color:var(--accent);box-shadow:0 0 8px var(--accent-glow)}.matrix-cell--visited{background:var(--accent-bg);color:var(--accent);border-color:var(--accent);opacity:.85}.matrix-cell--comparing{border-color:var(--accent);color:var(--accent)}.matrix-cell--path{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.trie-stage{display:flex;flex-direction:column;min-height:0}.trie-stage .viz-stage svg{width:100%;height:100%;display:block}.trie-edge{stroke:var(--border-strong);stroke-width:1.25;fill:none;transition:stroke .2s}.trie-edge--traversed{stroke:var(--accent);stroke-width:2}.trie-node{fill:var(--bg);stroke-width:1.75;transition:all .2s}.trie-node--idle{stroke:var(--node-idle)}.trie-node--visited{stroke:var(--node-visited)}.trie-node--new{stroke:var(--accent);filter:drop-shadow(0 0 6px var(--accent-glow))}.trie-node--current{stroke:var(--accent);stroke-width:2.5;filter:drop-shadow(0 0 10px var(--accent-glow))}.trie-node--root{stroke:var(--text-dim);stroke-width:1.5;fill:var(--surface)}.trie-node-terminal-ring{fill:none;stroke:var(--accent);stroke-width:1;stroke-dasharray:3 2;opacity:.55}.trie-node-label{fill:var(--text);font-family:var(--mono);font-size:13px;font-weight:600;text-anchor:middle;dominant-baseline:central}.placeholder-viz{height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:var(--canvas-bg);background-image:radial-gradient(circle at center,var(--canvas-grid) .75px,transparent .75px);background-size:24px 24px;border-radius:var(--radius-md);border:1px dashed var(--border-strong)}.placeholder-card{display:flex;flex-direction:column;align-items:center;gap:14px;max-width:380px;text-align:center}.placeholder-icon{width:44px;height:44px;border-radius:12px;background:var(--accent-bg);color:var(--accent);display:grid;place-items:center}.placeholder-title{font-size:15px;font-weight:600;color:var(--text);margin:0;letter-spacing:-.01em}.placeholder-text{font-size:13px;line-height:1.55;color:var(--text-dim);margin:0}.placeholder-name{color:var(--accent);font-family:var(--mono)}.placeholder-meta{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;margin-top:2px}.placeholder-pill{font-family:var(--mono);font-size:11px;color:var(--accent);padding:3px 9px;border-radius:4px;border:1px solid var(--accent);background:var(--accent-bg)}.placeholder-pill--muted{color:var(--text-dim);border-color:var(--border);background:transparent}.placeholder-cta{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-dim);text-decoration:none;padding:6px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);transition:all var(--transition);margin-top:4px}.placeholder-cta:hover{color:var(--text);border-color:var(--border-strong);background:var(--surface)}.input-editor{display:flex;flex-direction:column;gap:8px;padding:14px 16px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md)}.input-editor-head{display:flex;align-items:baseline;gap:10px}.input-editor-label{font-size:12.5px;font-weight:500;color:var(--text)}.input-editor-field{font-family:var(--mono);font-size:11px;color:var(--text-faint);text-transform:lowercase;letter-spacing:.02em}.input-editor-readonly{font-family:var(--mono);font-size:10.5px;color:var(--text-faint);text-transform:uppercase;letter-spacing:.06em;margin-left:auto;padding:2px 7px;border-radius:3px;border:1px solid var(--border)}.input-editor-input{font-family:var(--mono);font-size:13px;background:var(--bg);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;outline:none;transition:border-color var(--transition)}.input-editor-input:focus{border-color:var(--accent)}.input-editor-input--error{border-color:#f87171}.input-editor-error{font-size:11.5px;color:#f87171;padding-left:2px}.input-editor-preview{font-family:var(--mono);font-size:11.5px;color:var(--text-dim);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 12px;max-height:100px;overflow:auto;white-space:pre-wrap;word-break:break-word}.input-editor-toggles{display:flex;gap:16px;margin-bottom:4px}.input-editor-check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--text-dim);cursor:pointer;user-select:none}.input-editor-check input{accent-color:var(--accent);cursor:pointer}.input-editor-field-label{font-size:11px;font-weight:500;color:var(--text-dim);margin-top:4px}.input-editor-hint{color:var(--text-faint);font-weight:400}.input-editor-textarea{font-family:var(--mono);font-size:12px;color:var(--text);background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px 10px;resize:vertical;outline:none}.input-editor-textarea:focus{border-color:var(--accent)}select.input-editor-input{cursor:pointer}.detail-panel{background:var(--bg);overflow-y:auto;padding:24px 28px 32px;display:flex;flex-direction:column;gap:20px;min-height:0}@media(max-width:1023px){.detail-panel{padding:16px 18px 24px;gap:14px}.detail-name{font-size:18px}.detail-description{font-size:13px}.detail-viz{height:280px}.detail-narration-bar{font-size:11.5px;padding:8px 11px}.detail-actions{flex-wrap:wrap}.detail-btn{padding:10px 12px;flex:1;min-width:0;justify-content:center}}@media(max-width:639px){.detail-panel{padding:12px 14px 88px}.detail-viz{height:240px}.detail-btn span{display:none}.detail-btn{padding:12px;flex:1}.detail-btn svg{margin:0}}.detail-empty{margin:auto;text-align:center;color:var(--text-dim)}.detail-empty h2{font-size:18px;color:var(--text);margin:0 0 8px;font-weight:600}.detail-empty p{font-size:13.5px;margin:0}.detail-head{display:flex;flex-direction:column;gap:10px}.detail-name{font-size:22px;font-weight:600;color:var(--text);letter-spacing:-.015em;margin:0}.detail-complexity-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.detail-complexity-label{font-family:var(--mono);font-size:11.5px;color:var(--text-faint);letter-spacing:.02em}.detail-complexity-value{font-family:var(--mono);font-size:12.5px;color:var(--accent);margin-right:12px}.detail-difficulty{font-family:var(--mono);font-size:10.5px;text-transform:lowercase;padding:2px 7px;border-radius:3px;border:1px solid var(--border-strong)}.detail-difficulty--easy{color:#5eead4;border-color:#5eead466}.detail-difficulty--medium{color:#fbbf24;border-color:#fbbf2466}.detail-difficulty--hard{color:#f87171;border-color:#f8717166}.detail-description{font-size:13.5px;line-height:1.55;color:var(--text-dim);margin:0;max-width:720px}.detail-viz{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);height:320px;flex-shrink:0;overflow:hidden;position:relative}.detail-viz .viz{height:100%;border:none;background:transparent;background-image:none}.detail-viz .viz-hd{display:none}.detail-viz .placeholder-viz{border:none}.detail-narration-bar{display:flex;align-items:center;gap:12px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:12.5px;color:var(--text);flex-shrink:0}.detail-narration-text{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail-narration-step{flex-shrink:0;color:var(--text-faint);font-size:12px}.detail-scrubber{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);flex-shrink:0}.detail-scrubber-bar{flex:1}.detail-step-counter{font-family:var(--mono);font-size:11.5px;display:flex;align-items:baseline;gap:4px;color:var(--text-dim);padding:4px 9px;border-radius:4px;background:var(--bg);border:1px solid var(--border)}.detail-step-current{color:var(--accent);font-weight:600}.detail-step-sep{color:var(--text-faint)}.detail-actions{display:flex;gap:8px;flex-wrap:wrap}.detail-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text);font-family:var(--sans);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--transition)}.detail-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--border-strong)}.detail-btn--primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);box-shadow:0 0 12px var(--accent-glow)}.detail-btn--primary:hover:not(:disabled){background:var(--accent);opacity:.92}.detail-btn--secondary{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.detail-btn:disabled{opacity:.4;cursor:not-allowed}.detail-name-row{display:flex;align-items:center;gap:8px}.detail-star{display:grid;place-items:center;width:24px;height:24px;background:transparent;border:none;border-radius:4px;color:var(--text-faint);cursor:pointer;transition:all var(--transition)}.detail-star:hover{background:var(--accent-bg);color:var(--accent)}.detail-star--on{color:var(--accent)}.detail-import-toast{display:inline-flex;align-items:center;padding:6px 12px;background:var(--accent-bg);border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent);font-family:var(--mono);font-size:11.5px;letter-spacing:.02em;animation:detail-import-fade .4s ease-out}@keyframes detail-import-fade{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.src-panel{display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--border);min-height:0;overflow:hidden}.src-panel-hd{display:flex;align-items:center;gap:8px;padding:14px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.src-panel-hd-icon{color:var(--accent)}.src-panel-hd-label{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--accent)}.src-panel-hd-lang{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-faint)}.src-panel-hd-copy{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-dim);font-family:var(--mono);font-size:11px;cursor:pointer;transition:color var(--transition),border-color var(--transition),background var(--transition)}.src-panel-hd-copy:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}.src-panel-code{flex:1;overflow-y:auto;padding:12px 0;font-family:var(--mono);font-size:12px;line-height:1.8;min-height:0}.src-panel-empty{padding:24px;color:var(--text-faint);font-size:12px;text-align:center}.src-line{display:grid;grid-template-columns:40px 1fr;align-items:center;transition:background .1s ease}.src-line-no{text-align:right;padding-right:12px;color:var(--text-faint);user-select:none}.src-line-src{color:var(--text-dim);padding-right:16px;white-space:pre}.src-line--active{background:var(--highlight-bg)}.src-line--active .src-line-no{color:var(--accent);font-weight:500}.src-line--active .src-line-src{color:var(--text)}.live-vars{display:flex;flex-direction:column;background:var(--bg);border-left:1px solid var(--border);border-top:1px solid var(--border);min-height:0;max-height:240px;overflow:hidden}.live-vars-hd{display:flex;align-items:center;gap:8px;padding:12px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.live-vars-hd-icon{color:var(--accent)}.live-vars-hd-label{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--accent)}.live-vars-body{flex:1;overflow-y:auto;padding:14px 16px;min-height:0}.live-vars-empty{color:var(--text-faint);font-size:12.5px;font-style:italic;line-height:1.5}.live-vars-list{display:flex;flex-direction:column;gap:14px}.var-group{display:flex;flex-direction:column;gap:5px}.var-group-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--text-faint);margin-bottom:2px}.var-row{display:grid;grid-template-columns:80px 1fr;gap:10px;font-family:var(--mono);font-size:12px;align-items:baseline}.var-name{color:var(--accent);letter-spacing:-.01em}.var-value{color:var(--text);word-break:break-all}.ws-page{height:100vh;width:100vw;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}.ws-body{flex:1;display:grid;grid-template-columns:260px 1fr 360px;min-height:0;overflow:hidden}.ws-right{display:grid;grid-template-rows:1fr auto;background:var(--bg);min-height:0;overflow:hidden}.algo-sidebar-wrap{display:contents}.algo-sidebar-backdrop{display:none}.algo-sidebar-panel{min-height:0;overflow:hidden;display:flex;flex-direction:column}.algo-sidebar-panel .algo-sidebar{flex:1;min-height:0}.ws-page .iconbtn{width:32px;height:32px;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;display:grid;place-items:center;color:var(--text-dim);cursor:pointer;transition:all var(--transition)}.ws-page .iconbtn:hover{background:var(--surface);color:var(--text)}.ws-header-menu,.ws-right-toggle,.algo-fab{display:none}@media(max-width:1023px){.ws-body{grid-template-columns:1fr;grid-template-rows:auto 1fr auto;overflow:auto}.algo-sidebar-wrap{display:block}.algo-sidebar-panel{position:fixed;top:0;left:0;bottom:0;width:min(320px,88vw);background:var(--bg);border-right:1px solid var(--border);z-index:50;transform:translate(-105%);transition:transform .22s cubic-bezier(.34,1.56,.64,1);display:flex;flex-direction:column;box-shadow:0 10px 50px #00000080}.algo-sidebar-wrap--open .algo-sidebar-panel{transform:translate(0)}.algo-sidebar-backdrop{display:block;position:fixed;inset:0;background:#0000008c;z-index:40;animation:backdrop-in .15s ease}@keyframes backdrop-in{0%{opacity:0}to{opacity:1}}.algo-drawer-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border);flex-shrink:0}.algo-drawer-title{font-family:var(--mono);font-size:13px;font-weight:500;color:var(--accent);letter-spacing:.04em}.algo-drawer-title:before{content:"// "}.algo-drawer-close{width:36px;height:36px;display:grid;place-items:center;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-dim);cursor:pointer}.algo-drawer-close:hover{color:var(--text);border-color:var(--border-strong)}.ws-right{grid-template-rows:auto;background:var(--surface);border-top:1px solid var(--border)}.ws-right-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:14px;background:var(--surface);border:none;border-bottom:1px solid var(--border);color:var(--accent);font-family:var(--mono);font-size:13px;cursor:pointer;width:100%}.ws-right-toggle:hover{background:var(--surface-2)}.ws-header-menu{display:inline-grid;place-items:center;width:36px;height:36px;margin-right:6px}.algo-fab{display:grid;place-items:center;position:fixed;right:18px;bottom:18px;width:52px;height:52px;border-radius:50%;background:var(--accent);color:var(--accent-ink);border:none;box-shadow:0 10px 24px var(--accent-glow),0 4px 14px #0006;cursor:pointer;z-index:30}}@media(max-width:639px){.ws-page .iconbtn{width:36px;height:36px}.ws-header-search{max-width:none}}.cmdk-backdrop{position:fixed;inset:0;z-index:1000;display:flex;align-items:flex-start;justify-content:center;padding-top:14vh;background:#00000073;backdrop-filter:blur(2px)}.cmdk-panel{width:min(640px,92vw);max-height:64vh;display:flex;flex-direction:column;background:var(--bg);border:1px solid var(--border-strong);border-radius:var(--radius);box-shadow:0 24px 80px #00000080;overflow:hidden}.cmdk-search{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.cmdk-search-icon{color:var(--text-dim);flex-shrink:0}.cmdk-input{flex:1;background:transparent;border:none;outline:none;color:var(--text);font-family:var(--sans);font-size:15px}.cmdk-input::placeholder{color:var(--text-faint)}.cmdk-kbd,.cmdk-footer kbd{font-family:var(--mono);font-size:10px;color:var(--text-dim);background:var(--surface-2);border:1px solid var(--border);border-radius:4px;padding:2px 5px}.cmdk-list{flex:1;overflow-y:auto;padding:6px}.cmdk-empty{padding:24px;text-align:center;color:var(--text-faint);font-size:13px}.cmdk-row{display:flex;align-items:center;gap:11px;width:100%;padding:9px 12px;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--text);font-size:13.5px;text-align:left;cursor:pointer}.cmdk-row--active{background:var(--accent-bg)}.cmdk-row-icon{color:var(--text-dim);flex-shrink:0}.cmdk-row--active .cmdk-row-icon{color:var(--accent)}.cmdk-row-name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.cmdk-row-sub{font-family:var(--mono);font-size:11px;color:var(--text-faint);flex-shrink:0}.cmdk-row-enter{color:var(--accent);flex-shrink:0}.cmdk-footer{display:flex;gap:16px;padding:9px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-faint)}.cmdk-footer span{display:inline-flex;align-items:center;gap:4px}:root{--pad-x: 18px;--pad-y: 14px;--radius: 14px;--radius-sm: 6px;--radius-md: 8px;--sans: "Inter", -apple-system, system-ui, sans-serif;--mono: "JetBrains Mono", ui-monospace, Menlo, monospace;--transition: .15s ease}[data-theme=aqua]{--bg: #0A0C0F;--surface: rgba(255, 255, 255, .025);--surface-2: rgba(255, 255, 255, .045);--border: rgba(255, 255, 255, .07);--border-strong: rgba(255, 255, 255, .14);--text: #E4E4E7;--text-dim: #A1A1AA;--text-faint: #52525B;--accent: #24D3EE;--accent-ink: #04222A;--accent-bg: rgba(36, 211, 238, .1);--accent-glow: rgba(36, 211, 238, .45);--highlight-bg: rgba(36, 211, 238, .06);--canvas-bg: #0A0C0F;--canvas-grid: rgba(255, 255, 255, .05);--node-current: #24D3EE;--node-visited: #A1A1AA;--node-frontier: #71717A;--node-idle: #3F3F46;--syn-kw: #A1A1AA;--syn-fn: #24D3EE;--syn-num: #E4E4E7}[data-theme=aqua-light]{--bg: #FCFCFD;--surface: rgba(0, 0, 0, .025);--surface-2: rgba(0, 0, 0, .045);--border: rgba(0, 0, 0, .08);--border-strong: rgba(0, 0, 0, .16);--text: #18181B;--text-dim: #71717A;--text-faint: #B5B8BE;--accent: #0D9488;--accent-ink: #FFFFFF;--accent-bg: rgba(13, 148, 136, .1);--accent-glow: rgba(13, 148, 136, .35);--highlight-bg: rgba(13, 148, 136, .06);--canvas-bg: #FCFCFD;--canvas-grid: rgba(0, 0, 0, .06);--node-current: #0D9488;--node-visited: #71717A;--node-frontier: #A1A1AA;--node-idle: #D5D8DD;--syn-kw: #71717A;--syn-fn: #0D9488;--syn-num: #18181B}[data-theme=plain]{--bg: #0B0B0C;--surface: rgba(255, 255, 255, .03);--surface-2: rgba(255, 255, 255, .05);--border: rgba(255, 255, 255, .08);--border-strong: rgba(255, 255, 255, .16);--text: #EDEDED;--text-dim: #9A9A9E;--text-faint: #5A5A5E;--accent: #E5E5E7;--accent-ink: #0B0B0C;--accent-bg: rgba(229, 229, 231, .1);--accent-glow: rgba(229, 229, 231, .3);--highlight-bg: rgba(229, 229, 231, .06);--canvas-bg: #0B0B0C;--canvas-grid: rgba(255, 255, 255, .05);--node-current: #EDEDED;--node-visited: #8A8A8E;--node-frontier: #6A6A6E;--node-idle: #3A3A3E;--syn-kw: #9A9A9E;--syn-fn: #EDEDED;--syn-num: #C8C8CC}[data-theme=porcelain]{--bg: #F7F6F3;--surface: rgba(0, 0, 0, .022);--surface-2: rgba(0, 0, 0, .04);--border: rgba(0, 0, 0, .09);--border-strong: rgba(0, 0, 0, .17);--text: #1F1E1B;--text-dim: #6B6A65;--text-faint: #ADABA4;--accent: #4F5666;--accent-ink: #FFFFFF;--accent-bg: rgba(79, 86, 102, .1);--accent-glow: rgba(79, 86, 102, .3);--highlight-bg: rgba(79, 86, 102, .06);--canvas-bg: #F7F6F3;--canvas-grid: rgba(0, 0, 0, .06);--node-current: #4F5666;--node-visited: #6B6A65;--node-frontier: #9A988F;--node-idle: #D8D6CF;--syn-kw: #6B6A65;--syn-fn: #4F5666;--syn-num: #1F1E1B}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}body{background:var(--bg);color:var(--text);font-family:var(--sans);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased;font-feature-settings:"cv02","cv11","ss01";overflow:hidden}button{font-family:inherit;background:none;border:none;color:inherit;cursor:pointer}input,textarea{font-family:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 10px;outline:none}input:focus,textarea:focus{border-color:var(--accent)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-faint)}::selection{background:var(--accent-bg)}:focus-visible{outline:1px solid var(--accent);outline-offset:2px}.hljs{color:var(--text);background:transparent}.hljs-keyword,.hljs-built_in,.hljs-literal{color:var(--text-dim)}.hljs-title,.hljs-title.function_,.hljs-section{color:var(--accent)}.hljs-string,.hljs-attr,.hljs-symbol{color:var(--text-dim)}.hljs-number,.hljs-meta{color:var(--text)}.hljs-comment,.hljs-quote{color:var(--text-faint);font-style:italic}.hljs-variable,.hljs-name,.hljs-params{color:var(--text)}.hljs-tag,.hljs-selector-tag,.hljs-type{color:var(--text-dim)}.hljs-operator,.hljs-punctuation{color:var(--text-faint)}.app-shell{height:100vh;width:100vw;display:flex;flex-direction:column;background:var(--bg)}.topbar{display:flex;align-items:center;gap:14px;padding:14px 22px;border-bottom:1px solid var(--border);flex-shrink:0}.logo{display:flex;align-items:center;gap:9px;font-family:var(--mono);font-weight:600;font-size:14px;color:var(--text);letter-spacing:-.01em}.logo-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px var(--accent)}.breadcrumb{color:var(--text-dim);font-size:13px;display:flex;align-items:center;gap:8px;font-weight:450}.breadcrumb .sep{color:var(--text-faint)}.breadcrumb .current{color:var(--text);font-weight:500}.topbar-right{margin-left:auto;display:flex;align-items:center;gap:8px}.pill{padding:4px 9px;border-radius:var(--radius-sm);font-size:11px;font-weight:500;background:transparent;color:var(--text-dim);border:1px solid var(--border);font-family:var(--mono);letter-spacing:-.01em}.iconbtn{width:28px;height:28px;border-radius:var(--radius-sm);background:transparent;border:1px solid transparent;display:grid;place-items:center;color:var(--text-dim);cursor:pointer;transition:all var(--transition)}.iconbtn:hover{background:var(--surface);color:var(--text)}.body-grid{flex:1;display:grid;grid-template-columns:360px 1fr 260px;min-height:0}.code-panel{background:var(--bg);border-right:1px solid var(--border);overflow:hidden;display:flex;flex-direction:column;min-height:0}.panel-hd{padding:14px 20px;font-size:10.5px;letter-spacing:.06em;color:var(--accent);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-weight:500;flex-shrink:0}.panel-hd .label:before{content:"// ";color:var(--accent)}.panel-hd .lang{color:var(--text-faint);font-weight:400}.code{font-family:var(--mono);font-size:12px;line-height:1.85;flex:1;padding:14px 0;overflow-y:auto;min-height:0}.code-line{display:grid;grid-template-columns:44px 1fr;align-items:center}.code-line .ln{text-align:right;padding-right:14px;color:var(--text-faint);user-select:none}.code-line .src{color:var(--text-dim);padding-right:16px;white-space:pre}.code-line .src .kw{color:var(--syn-kw)}.code-line .src .fn{color:var(--syn-fn)}.code-line .src .num{color:var(--syn-num)}.code-line.active{background:var(--highlight-bg)}.code-line.active .ln{color:var(--accent);font-weight:500}.code-line.active .src{color:var(--text)}.viz{background:var(--canvas-bg);background-image:radial-gradient(circle at center,var(--canvas-grid) .75px,transparent .75px);background-size:24px 24px;display:flex;flex-direction:column;min-height:0}.viz-hd{padding:14px 20px;font-size:10.5px;letter-spacing:.06em;color:var(--accent);border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-weight:500;flex-shrink:0}.viz-hd .label:before{content:"// ";color:var(--accent)}.viz-hd .meta{color:var(--text-faint);font-weight:400}.viz-stage{flex:1;position:relative;min-height:0}.viz-stage svg{width:100%;height:100%;display:block}.node-circle{fill:var(--bg);transition:all .2s}.node-idle{stroke:var(--node-idle);stroke-width:1.25}.node-frontier{stroke:var(--node-frontier);stroke-width:1.5;stroke-dasharray:3 3}.node-visited{stroke:var(--node-visited);stroke-width:1.5}.node-current{stroke:var(--node-current);stroke-width:2;filter:drop-shadow(0 0 8px var(--accent-glow))}.node-label{fill:var(--text);font-family:var(--mono);font-size:12.5px;font-weight:500;text-anchor:middle;dominant-baseline:central}.node-label.idle{fill:var(--text-faint)}.edge{stroke:var(--border-strong);stroke-width:1.25;fill:none}.edge-traversed{stroke:var(--accent);stroke-width:1.75}.edge-arrowhead{fill:var(--border-strong);stroke:none}.edge-arrowhead-on{fill:var(--accent)}.edge-badge{fill:var(--accent);stroke:var(--bg);stroke-width:1.5}.edge-badge-text{fill:var(--accent-ink);font-family:var(--mono);font-size:9px;font-weight:700;text-anchor:middle;dominant-baseline:central}.edge-weight{fill:var(--text-dim);font-family:var(--mono);font-size:10px;text-anchor:middle;dominant-baseline:central}.node-dist-bg{fill:var(--surface);stroke:var(--border);stroke-width:1}.node-dist{fill:var(--accent);font-family:var(--mono);font-size:10px;font-weight:600;text-anchor:middle;dominant-baseline:central}.aux{background:var(--bg);border-left:1px solid var(--border);padding:18px 20px;display:flex;flex-direction:column;gap:22px;overflow-y:auto;min-height:0}.aux-section .hd{font-size:10.5px;letter-spacing:.06em;color:var(--accent);margin-bottom:10px;font-weight:500;font-family:var(--mono)}.aux-section .hd:before{content:"// ";color:var(--accent)}.queue{display:flex;gap:5px;flex-wrap:wrap}.queue .item{padding:6px 10px;border-radius:var(--radius-sm);background:transparent;color:var(--text);border:1px solid var(--border);font-family:var(--mono);font-size:11.5px}.queue .item.head{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}.narration{font-size:12.5px;line-height:1.55;color:var(--text-dim);padding:11px 13px;background:transparent;border-radius:7px;border:1px solid var(--border)}.narration b{color:var(--text);font-weight:500}.legend{display:flex;flex-direction:column;gap:8px;font-size:12.5px}.legend-row{display:flex;align-items:center;gap:10px;color:var(--text-dim)}.dot{width:9px;height:9px;border-radius:50%}.dot.accent{background:var(--accent);box-shadow:0 0 6px var(--accent)}.dot.ring{background:transparent;border:1.25px dashed var(--node-frontier)}.playback{border-top:1px solid var(--border);padding:12px 22px;display:flex;align-items:center;gap:14px;flex-shrink:0}.transport{display:flex;gap:2px}.transport .iconbtn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);width:32px;height:32px;box-shadow:0 0 12px var(--accent-glow)}.transport .iconbtn.primary:hover{opacity:.92;background:var(--accent)}.step-indicator{font-family:var(--mono);font-size:11.5px;color:var(--text-dim);padding:5px 10px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm)}.step-indicator b{color:var(--text);font-weight:500}.scrubber-wrap{flex:1;display:flex;align-items:center;gap:12px}.scrubber{flex:1;height:3px;border-radius:2px;background:var(--surface);position:relative;cursor:pointer}.scrubber .progress{height:100%;background:var(--accent);border-radius:2px;width:32%;box-shadow:0 0 8px var(--accent-glow)}.speed{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-dim)}.speed-pill{padding:4px 9px;background:transparent;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--mono);font-size:11px}
