.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))}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}:root{--toolbar-h: 40px;--sidebar-w: 168px;--radius: 8px;--transition: .15s ease}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px}.app.dark{--bg: #0f0f1a;--bg-surface: #1a1a2e;--bg-surface2: #252540;--bg-hover: #2a2a4a;--text: #e4e4f0;--text-dim: #8888aa;--border: #2d2d50;--accent: #6366f1;--accent-hover: #818cf8;--danger: #ef4444}.app.light{--bg: #f0f0f5;--bg-surface: #ffffff;--bg-surface2: #f4f4f8;--bg-hover: #e8e8f0;--text: #1a1a2e;--text-dim: #6b7280;--border: #d1d5db;--accent: #6366f1;--accent-hover: #4f46e5;--danger: #ef4444}.app{width:100%;height:100%;display:flex;flex-direction:column;background:var(--bg);color:var(--text)}.main-area{flex:1;display:flex;overflow:hidden}.canvas-wrapper{flex:1;position:relative;overflow:hidden;display:flex;flex-direction:column}.canvas-stage{flex:1;position:relative;overflow:hidden}.pages-bar{height:44px;flex-shrink:0;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--bg-surface);border-top:1px solid var(--border);box-shadow:0 -1px 3px #0000000a}.pages-bar-inner{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;padding:2px}.pages-bar-inner::-webkit-scrollbar{height:4px}.pages-bar-inner::-webkit-scrollbar-track{background:transparent}.pages-bar-inner::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.page-tab{display:inline-flex;align-items:center;gap:8px;height:30px;padding:0 4px 0 8px;background:transparent;color:var(--text-dim);border:1px solid transparent;border-radius:8px;cursor:pointer;font-size:12px;font-weight:500;white-space:nowrap;transition:background var(--transition),color var(--transition),border-color var(--transition),box-shadow var(--transition),transform var(--transition);-webkit-user-select:none;user-select:none;position:relative}.page-tab:hover{background:var(--bg-surface2);color:var(--text)}.page-tab.active{background:var(--bg-surface2);color:var(--text);border-color:var(--border);box-shadow:0 1px 2px #0000000f,inset 0 0 0 1px #6366f11f}.page-tab.active:before{content:"";position:absolute;left:8px;right:8px;bottom:-7px;height:2px;border-radius:2px 2px 0 0;background:var(--accent)}.page-tab-name{padding-left:4px;max-width:140px;overflow:hidden;text-overflow:ellipsis}.page-tab-input{background:var(--bg);color:var(--text);border:1px solid var(--accent);border-radius:6px;padding:2px 6px;font-size:12px;font-weight:500;outline:none;width:120px;font-family:inherit}.page-tab-actions{display:inline-flex;align-items:center;gap:2px;opacity:0;margin-left:-4px;max-width:0;overflow:hidden;transition:opacity var(--transition),max-width var(--transition),margin-left var(--transition)}.page-tab:hover .page-tab-actions,.page-tab.active .page-tab-actions{opacity:1;max-width:56px;margin-left:0}.page-tab-btn{background:transparent;color:var(--text-dim);border:none;cursor:pointer;width:22px;height:22px;border-radius:5px;display:inline-flex;align-items:center;justify-content:center;padding:0;transition:background var(--transition),color var(--transition)}.page-tab-btn:hover{background:var(--bg-hover);color:var(--text)}.page-tab-close:hover{background:var(--danger);color:#fff}.page-tab-add{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;margin-left:4px;background:transparent;color:var(--text-dim);border:1px solid transparent;border-radius:8px;cursor:pointer;flex-shrink:0;padding:0;transition:background var(--transition),color var(--transition),border-color var(--transition),transform var(--transition)}.page-tab-add:hover{background:rgba(99,102,241,.1);color:var(--accent);border-color:#6366f14d}.page-tab-add:active{transform:scale(.9)}.toolbar{height:var(--toolbar-h);background:var(--bg-surface);border-bottom:1px solid var(--border);display:flex;align-items:center;padding:0 12px;gap:4px;z-index:10;flex-shrink:0;overflow-x:auto}.toolbar::-webkit-scrollbar{display:none}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-separator{width:1px;height:24px;background:var(--border);margin:0 6px;flex-shrink:0}.tool-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text);border-radius:6px;cursor:pointer;transition:background var(--transition);font-size:16px;flex-shrink:0}.tool-btn svg{width:16px;height:16px;flex-shrink:0}.tool-btn:hover{background:var(--bg-hover)}.tool-btn.active{background:var(--accent);color:#fff}.tool-btn.tool-btn-record{color:#ef4444}.tool-btn.tool-btn-record:hover{background:rgba(239,68,68,.15)}.tool-btn.tool-btn-ai{color:var(--accent)}.tool-btn.tool-btn-ai:hover{background:color-mix(in srgb,var(--accent) 14%,transparent)}.tool-btn.tool-btn-ai.active{color:#fff}.file-menu-portal{width:0;height:0;background:transparent}.file-menu{position:fixed;min-width:180px;background:var(--bg-surface);border:1px solid var(--border);border-radius:8px;box-shadow:0 6px 20px #0000002e;padding:4px;display:flex;flex-direction:column;gap:1px;z-index:50}.file-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:7px 10px;border:none;background:transparent;color:var(--text);border-radius:5px;cursor:pointer;font-size:13px;text-align:left;transition:background var(--transition)}.file-menu-item:hover{background:var(--bg-hover)}.file-menu-item svg{width:16px;height:16px;flex-shrink:0}.viz-dialog{width:min(1100px,95vw);max-width:none;display:flex;flex-direction:column;gap:12px}.viz-body{display:grid;grid-template-columns:200px 1fr 1fr;gap:12px;min-height:420px}.viz-type-list{display:flex;flex-direction:column;gap:2px;border:1px solid var(--border);border-radius:8px;padding:6px;overflow-y:auto;max-height:460px}.viz-type-section-label{font-size:11px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:.04em;padding:6px 8px 2px}.viz-type-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border:none;background:transparent;color:var(--text);border-radius:6px;cursor:pointer;font-size:13px;text-align:left;white-space:nowrap}.viz-type-item:hover{background:var(--bg-hover)}.viz-type-item.active{background:var(--accent);color:#fff}.viz-editor{display:flex;flex-direction:column;gap:8px;min-height:0}.viz-editor textarea,.viz-editor input{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:13px;outline:none;box-sizing:border-box}.viz-editor textarea{flex:1;min-height:260px;font-family:monospace;resize:vertical}.viz-preview{display:flex;align-items:center;justify-content:center;padding:12px;border:1px solid var(--border);border-radius:8px;background:#fff;overflow:auto;min-height:260px}.viz-preview-empty{color:var(--text-dim);font-size:13px}.viz-preview-error{color:#e03131;font-family:monospace;font-size:12px;white-space:pre-wrap}.viz-ai-bar{display:flex;flex-direction:column;gap:8px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-surface2)}.viz-ai-row{display:flex;gap:8px;align-items:stretch}.viz-ai-prompt{flex:1;min-height:48px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface);color:var(--text);font-size:13px;font-family:inherit;outline:none;resize:vertical}.viz-ai-actions{display:flex;flex-direction:column;gap:6px;flex-shrink:0}.viz-ai-attach,.viz-ai-generate{white-space:nowrap;padding:6px 12px;font-size:12px}.viz-ai-chips{display:flex;flex-wrap:wrap;gap:6px}.viz-ai-chip{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;font-size:11px;max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.viz-ai-chip button{background:transparent;border:none;color:var(--text-dim);cursor:pointer;font-size:14px;line-height:1;padding:0}.viz-ai-error{color:#e03131;font-size:12px;white-space:pre-wrap}.recorder-controls{position:fixed;bottom:20px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:999px;box-shadow:0 10px 30px #00000040;z-index:200;pointer-events:none}.recorder-controls .recorder-btn{pointer-events:auto}.recorder-indicator{display:flex;align-items:center;gap:8px;padding:0 10px 0 4px;font-size:13px;color:var(--text);-webkit-user-select:none;user-select:none}.recorder-dot{width:10px;height:10px;border-radius:50%;background:#ef4444;box-shadow:0 0 #ef444499;animation:recorder-pulse 1.4s infinite}.recorder-dot.paused{background:#f59e0b;animation:none}@keyframes recorder-pulse{0%{box-shadow:0 0 #ef4444b3}70%{box-shadow:0 0 0 10px #ef444400}to{box-shadow:0 0 #ef444400}}.recorder-time{font-variant-numeric:tabular-nums;font-weight:600}.recorder-source{color:var(--text-dim);font-size:12px}.recorder-btn{width:38px;height:38px;border:none;border-radius:50%;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;color:#fff;transition:filter var(--transition),transform var(--transition)}.recorder-btn:hover{filter:brightness(1.1);transform:translateY(-1px)}.recorder-btn-pause{background:#f59e0b}.recorder-btn-discard{background:#ef4444}.recorder-btn-discard svg{stroke:#fff!important}.recorder-btn-download{background:#10b981}.recorder-start-btn{display:inline-flex;align-items:center;background:#ef4444!important}.recorder-start-btn:hover{background:#dc2626!important}.recorder-toggles{display:flex;flex-direction:column;gap:8px}.recorder-toggle{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--text);-webkit-user-select:none;user-select:none}.recorder-toggle input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--accent)}.cam-box{position:absolute;border-radius:10px;overflow:hidden;box-shadow:0 8px 24px #0006;cursor:move;z-index:150;background:#000;border:2px solid rgba(255,255,255,.9);touch-action:none;-webkit-user-select:none;user-select:none}.cam-box video{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}.cam-box-actions{position:absolute;top:6px;right:6px;display:flex;gap:4px;opacity:0;transition:opacity var(--transition)}.cam-box:hover .cam-box-actions{opacity:1}.cam-box-btn{width:26px;height:26px;border:none;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background var(--transition)}.cam-box-btn:hover{background:rgba(0,0,0,.8)}.cam-box-btn svg{width:14px;height:14px}.tool-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:inherit;line-height:1}.zoom-label{font-size:12px;color:var(--text-dim);min-width:40px;text-align:center;-webkit-user-select:none;user-select:none}.sidebar{width:var(--sidebar-w);background:var(--bg-surface);border-right:1px solid var(--border);padding:10px;display:flex;flex-direction:column;gap:12px;overflow-y:auto;flex-shrink:0;z-index:5}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.sidebar-section{display:flex;flex-direction:column;gap:6px}.sidebar-label{font-size:10px;font-weight:600;letter-spacing:.3px;color:var(--text-dim)}.color-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}.color-swatch{aspect-ratio:1;width:100%;border-radius:6px;border:none;padding:0;cursor:pointer;position:relative;box-shadow:inset 0 0 0 1px #80808038;transition:box-shadow var(--transition),transform var(--transition)}.color-swatch:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px #80808059,0 2px 6px #00000014}.color-swatch.selected{box-shadow:inset 0 0 0 2px var(--bg-surface),0 0 0 2px var(--accent)}.transparent-swatch{background:linear-gradient(to top right,transparent calc(50% - 1.2px),var(--danger) calc(50% - 1.2px),var(--danger) calc(50% + 1.2px),transparent calc(50% + 1.2px)),repeating-conic-gradient(rgba(0,0,0,.08) 0% 25%,transparent 0% 50%) 50% / 8px 8px}.color-input{aspect-ratio:1;width:100%;display:block;position:relative;background:conic-gradient(from 0deg,#ef4444,#f59e0b,#eab308,#22c55e,#06b6d4,#6366f1,#a855f7,#ef4444);cursor:pointer;border-radius:6px;overflow:hidden;box-shadow:inset 0 0 0 1px #80808038;transition:transform var(--transition),box-shadow var(--transition)}.color-input:hover{transform:translateY(-1px);box-shadow:inset 0 0 0 1px #80808059,0 2px 6px #00000014}.color-input input[type=color]{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;padding:0;border:none;background:none;opacity:0;cursor:pointer}.width-buttons{display:flex;gap:3px;padding:2px;background:var(--bg-surface2);border-radius:8px}.width-btn{flex:1;height:26px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;color:var(--text-dim);border-radius:6px;cursor:pointer;transition:background var(--transition),color var(--transition),box-shadow var(--transition);font-size:11px;font-weight:500}.width-btn svg{width:16px;height:16px}.width-btn:hover{color:var(--text);background:var(--bg-hover)}.width-btn.active{background:var(--bg-surface);color:var(--accent);box-shadow:0 1px 2px #0000000f,0 0 0 1px #6366f126}.font-family-select{width:100%;height:26px;padding:0 10px;border:none;border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:11px;cursor:pointer;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 14px) 13px,calc(100% - 10px) 13px;background-size:4px 4px;background-repeat:no-repeat}.font-family-select:hover{background-color:var(--bg-hover)}.sidebar-slider{width:100%;height:3px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:var(--bg-surface2);border-radius:2px;outline:none;margin-top:2px}.sidebar-slider::-webkit-slider-thumb{-webkit-appearance:none;width:14px;height:14px;border-radius:50%;background:var(--bg-surface);cursor:pointer;border:none;box-shadow:0 0 0 1.5px var(--accent),0 1px 3px #00000026;transition:transform var(--transition)}.sidebar-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.slider-value{font-size:11px;color:var(--text-dim);text-align:right}.sidebar-footer{margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.app-brand{display:flex;align-items:center;gap:10px}.app-logo{width:36px;height:36px;flex-shrink:0}.app-title{font-weight:700;font-size:16px;color:var(--accent);line-height:1.2}.app-subtitle{font-size:11px;color:var(--text-dim)}.dialog-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:100;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:12px;padding:24px;min-width:360px;max-width:90vw;box-shadow:0 20px 60px #0000004d}.dialog h3{margin-bottom:16px;font-size:18px;font-weight:600}.dialog-field{margin-bottom:12px}.dialog-field label{display:block;font-size:12px;font-weight:500;color:var(--text-dim);margin-bottom:4px}.dialog-field input[type=text],.dialog-field input[type=number]{width:100%;padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:14px;outline:none;transition:border-color var(--transition)}.dialog-field input:focus{border-color:var(--accent)}.chart-type-buttons{display:flex;gap:4px}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.btn-primary{padding:8px 20px;border:none;border-radius:6px;background:var(--accent);color:#fff;font-size:14px;font-weight:500;cursor:pointer;transition:background var(--transition)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{padding:8px 20px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;transition:background var(--transition)}.btn-secondary:hover{background:var(--bg-hover)}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.canvas-wrapper textarea{font-family:inherit}.storebox-panel{width:240px;background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;z-index:5;overflow:hidden}.storebox-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border)}.storebox-header h3{font-size:13px;font-weight:600;margin:0}.storebox-close{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;line-height:1;padding:0 4px;border-radius:4px}.storebox-close:hover{background:var(--bg-hover);color:var(--text)}.storebox-save-section{padding:8px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:5px}.storebox-name-input{width:100%;padding:4px 8px;border:1px solid var(--border);border-radius:5px;background:var(--bg-surface2);color:var(--text);font-size:12px;outline:none}.storebox-name-input:focus{border-color:var(--accent)}.storebox-btn-row{display:flex;gap:4px}.storebox-save-btn{flex:1;padding:4px 8px;font-size:11px;white-space:nowrap}.storebox-save-btn:disabled{opacity:.4;cursor:not-allowed}.storebox-items{flex:1;overflow-y:auto;padding:6px}.storebox-empty{padding:16px 8px;text-align:center;font-size:11px;color:var(--text-dim);line-height:1.4}.storebox-grid{display:grid;grid-template-columns:1fr 1fr;gap:5px}.storebox-item{background:var(--bg-surface2);border:1px solid var(--border);border-radius:6px;overflow:hidden}.storebox-thumb{width:100%;aspect-ratio:1;display:flex;align-items:center;justify-content:center;cursor:pointer;background:repeating-conic-gradient(var(--bg-surface2) 0% 25%,var(--bg) 0% 50%) 50% / 12px 12px;transition:opacity var(--transition);overflow:hidden;padding:4px}.storebox-thumb:hover{opacity:.75}.storebox-thumb img{max-width:100%;max-height:100%;object-fit:contain}.storebox-item-footer{display:flex;align-items:center;justify-content:space-between;padding:2px 5px;gap:2px}.storebox-item-name{font-size:10px;font-weight:500;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}.storebox-delete-btn{background:none;border:none;cursor:pointer;color:var(--text-dim);padding:1px;border-radius:3px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.storebox-delete-btn:hover{background:var(--bg-hover);color:var(--danger)}.storebox-delete-btn svg{width:12px;height:12px}.searchbox-section-label{font-size:10px;font-weight:600;letter-spacing:.4px;text-transform:uppercase;color:var(--text-dim);padding:8px 4px 6px}.searchbox-section-label:first-child{padding-top:2px}.searchbox-error{font-size:11px;color:var(--danger);padding:2px 2px 0;line-height:1.3}.manim-panel{width:280px}.manim-input-section{gap:6px}.manim-mode-row{display:flex;gap:4px}.manim-mode-btn{flex:1;padding:4px 8px;font-size:11px;border:1px solid var(--border);background:var(--bg-surface2);color:var(--text);border-radius:5px;cursor:pointer}.manim-mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.manim-model-select{width:100%;padding:4px 8px;border:1px solid var(--border);border-radius:5px;background:var(--bg-surface2);color:var(--text);font-size:11px;font-family:inherit;outline:none;cursor:pointer}.manim-model-select:focus{border-color:var(--accent)}.manim-modify-banner{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:4px 8px;background:var(--bg-hover);border:1px solid var(--accent);border-radius:5px;font-size:11px;color:var(--text)}.manim-modify-banner em{font-style:normal;opacity:.7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:inline-block;max-width:180px;vertical-align:bottom}.manim-modify-cancel{background:none;border:none;color:var(--text-dim);font-size:14px;cursor:pointer;padding:0 4px;line-height:1}.manim-prompt-input{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:5px;background:var(--bg-surface2);color:var(--text);font-size:12px;font-family:inherit;outline:none;resize:vertical;min-height:60px;box-sizing:border-box}.manim-prompt-input:focus{border-color:var(--accent)}.manim-attachments{display:flex;flex-wrap:wrap;gap:4px}.manim-attachment-chip{display:inline-flex;align-items:center;gap:4px;padding:2px 6px;background:var(--bg-surface2);border:1px solid var(--border);border-radius:10px;font-size:10px;color:var(--text);max-width:100%}.manim-attachment-chip button{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:12px;line-height:1;padding:0}.manim-items{padding:6px}.manim-jobs{display:flex;flex-direction:column;gap:4px;margin-bottom:6px}.manim-job{background:var(--bg-surface2);border:1px solid var(--border);border-radius:6px;padding:6px 8px;font-size:11px}.manim-job-running{border-left:3px solid var(--accent)}.manim-job-error{border-left:3px solid var(--danger)}.manim-job-row{display:flex;align-items:center;gap:6px}.manim-job-status{font-weight:600;font-size:10px;text-transform:uppercase;letter-spacing:.4px}.manim-job-status-running{color:var(--accent);display:inline-flex;align-items:center;gap:5px}.manim-job-status-running:before{content:"";width:8px;height:8px;border-radius:50%;border:2px solid var(--accent);border-top-color:transparent;display:inline-block;animation:manim-spin .8s linear infinite}@keyframes manim-spin{to{transform:rotate(360deg)}}.manim-job-status-error{color:var(--danger)}.manim-job-mode{margin-left:auto;font-size:9px;font-weight:600;color:var(--text-dim);letter-spacing:.4px}.manim-job-prompt{margin-top:3px;color:var(--text);overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.manim-job-error-msg{margin-top:4px;padding:4px 6px;background:var(--bg);border-radius:4px;color:var(--danger);font-size:10px;font-family:monospace;max-height:80px;overflow:auto;white-space:pre-wrap;word-break:break-word}.manim-grid{display:flex;flex-direction:column;gap:8px}.manim-card{background:var(--bg-surface2);border:1px solid var(--border);border-radius:6px;overflow:hidden;display:flex;flex-direction:column}.manim-card.selected{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.manim-media-wrap{position:relative;width:100%;aspect-ratio:16 / 9;background:repeating-conic-gradient(var(--bg-surface2) 0% 25%,var(--bg) 0% 50%) 50% / 12px 12px;overflow:hidden}.manim-media-wrap img,.manim-media-wrap video{width:100%;height:100%;object-fit:contain;display:block}.manim-download-btn{position:absolute;top:4px;right:4px;width:26px;height:26px;display:inline-flex;align-items:center;justify-content:center;background:rgba(0,0,0,.55);color:#fff;border-radius:4px;text-decoration:none;opacity:0;transition:opacity var(--transition)}.manim-download-btn svg{width:14px;height:14px}.manim-media-wrap:hover .manim-download-btn,.manim-download-btn:focus-visible{opacity:1}.manim-card-prompt{font-size:11px;color:var(--text);padding:5px 6px 2px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;line-height:1.3}.manim-card-actions{display:flex;align-items:center;gap:4px;padding:2px 4px 4px}.manim-card-action{flex:1;padding:3px 6px;font-size:10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:4px;color:var(--text);cursor:pointer}.manim-card-action:hover{background:var(--bg-hover)}.manim-card-action.active{background:var(--accent);color:#fff;border-color:var(--accent)}.chat-panel{width:420px}.workshop-chat-head-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.chat-mode-tabs{display:inline-flex;background:var(--bg-surface2);border-radius:6px;padding:2px}.chat-mode-tab{padding:4px 12px;font-size:11px;font-weight:600;letter-spacing:.2px;background:transparent;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;font-family:inherit;transition:color .12s ease,background .12s ease}.chat-mode-tab:hover:not(:disabled):not(.active){color:var(--text)}.chat-mode-tab.active{background:var(--bg-surface);color:var(--accent)}.chat-mode-tab:disabled{opacity:.4;cursor:not-allowed}.chat-clear-btn{background:transparent;border:none;color:var(--text-dim);font-size:11px;font-weight:500;padding:4px 9px;border-radius:5px;cursor:pointer;transition:color .12s ease,background .12s ease;font-family:inherit}.chat-clear-btn:hover{background:var(--bg-hover);color:var(--text)}.chat-clear-btn.is-destructive:hover{color:var(--danger);background:color-mix(in srgb,var(--danger) 10%,transparent)}.chat-thread{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:8px}.chat-turn{background:var(--bg-surface);border-radius:10px;padding:10px 12px 8px;display:flex;flex-direction:column;gap:8px;transition:background .15s ease}.chat-turn-errored{box-shadow:inset 3px 0 0 var(--danger)}.chat-turn-busy{box-shadow:inset 3px 0 0 var(--accent)}.chat-turn-head{display:flex;align-items:center;justify-content:space-between;gap:6px;min-height:20px}.chat-turn-head-right{display:flex;align-items:center;gap:6px}.chat-turn-time{font-size:10px;color:var(--text-dim);opacity:.75;font-feature-settings:"tnum";white-space:nowrap}.chat-turn-tool{display:inline-flex;align-items:center;height:18px;padding:0 8px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent);font-size:9.5px;font-weight:700;letter-spacing:.5px;border-radius:9px;text-transform:uppercase;white-space:nowrap}.chat-turn-tool--chart{background:color-mix(in srgb,#10b981 16%,transparent);color:#047857}.chat-turn-tool--mermaid{background:color-mix(in srgb,#f59e0b 18%,transparent);color:#b45309}.chat-turn-tool--flow{background:color-mix(in srgb,#6366f1 16%,transparent);color:#4338ca}.chat-turn-tool--manim{background:color-mix(in srgb,#ec4899 16%,transparent);color:#be185d}.app.dark .chat-turn-tool--chart{color:#6ee7b7}.app.dark .chat-turn-tool--mermaid{color:#fcd34d}.app.dark .chat-turn-tool--flow{color:#a5b4fc}.app.dark .chat-turn-tool--manim{color:#f9a8d4}.chat-turn-delete{background:none;border:none;padding:3px;cursor:pointer;color:var(--text-dim);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity .15s ease,color .15s ease,background .15s ease}.chat-turn:hover .chat-turn-delete,.chat-turn-delete:focus-visible{opacity:.6}.chat-turn-delete:hover{opacity:1!important;background:color-mix(in srgb,var(--danger) 10%,transparent);color:var(--danger)}.chat-turn-prompt{font-size:12.5px;color:var(--text);line-height:1.45;white-space:pre-wrap;word-break:break-word}.chat-explanation{font-size:11px;color:var(--text-dim);font-style:italic;line-height:1.4}.chat-result{background:#fff;border:1px solid var(--border);border-radius:6px;overflow:hidden;display:flex;align-items:center;justify-content:center;padding:6px;min-height:120px;max-height:360px}.chat-result-media{max-width:100%;max-height:340px;object-fit:contain;display:block;border-radius:4px}.chat-result-svg{width:100%;max-height:340px;overflow:auto;display:flex;align-items:center;justify-content:center}.chat-result-svg svg{max-width:100%;height:auto;max-height:340px}.chat-turn-actions{display:flex;align-items:stretch;gap:4px;margin-top:2px}.chat-action{flex:1;height:26px;padding:0 8px;font-size:11px;font-weight:500;font-family:inherit;background:transparent;border:none;border-radius:5px;color:var(--text-dim);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:color .12s ease,background .12s ease;white-space:nowrap}.chat-action:hover{color:var(--text);background:var(--bg-hover)}.chat-action:active{transform:translateY(.5px)}.chat-action--primary{color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);font-weight:600}.chat-action--primary:hover{background:var(--accent);color:#fff}.chat-turn-toggle{flex:0 0 32px;padding:0;color:var(--text-dim)}.chat-turn-toggle svg{display:block;transition:transform .18s ease}.chat-turn-toggle.is-collapsed svg{transform:rotate(180deg)}.chat-turn-collapsed{background:color-mix(in srgb,var(--bg-surface) 94%,var(--bg))}.chat-turn-collapsed .chat-turn-prompt{color:var(--text-dim)}.chat-att-row{display:flex;flex-wrap:wrap;gap:4px}.chat-att-row-history{opacity:.85}.chat-att-chip{display:inline-flex;align-items:center;gap:5px;padding:2px 6px 2px 2px;background:var(--bg-surface);border:1px solid var(--border);border-radius:10px;font-size:10px;color:var(--text);max-width:200px}.chat-att-chip img{width:22px;height:22px;object-fit:cover;border-radius:50%;flex-shrink:0}.chat-att-chip-static{padding:2px 7px 2px 2px}.chat-att-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.chat-att-chip button{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:13px;line-height:1;padding:0 2px}.chat-composer{padding:10px 12px 12px;display:flex;flex-direction:column;gap:8px;background:var(--bg-surface)}.chat-composer-meta{display:flex;align-items:center;gap:8px}.chat-segmented{display:inline-flex;align-items:center;background:var(--bg-surface2);border-radius:6px;padding:2px;gap:0;flex-shrink:0}.chat-segmented-btn{padding:3px 12px;font-size:11px;font-weight:600;background:transparent;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;font-family:inherit;transition:color .12s ease,background .12s ease}.chat-segmented-btn:hover:not(:disabled):not(.active){color:var(--text)}.chat-segmented-btn.active{background:var(--accent);color:#fff}.chat-segmented-btn:disabled{opacity:.5;cursor:not-allowed}.chat-model-select{flex:1;min-width:0;height:28px;padding:0 10px;border:none;border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:11px;font-family:inherit;outline:none;cursor:pointer;transition:box-shadow .12s ease}.chat-model-select:focus{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.chat-model-select:disabled{opacity:.5;cursor:not-allowed}.chat-modify-banner{display:flex;align-items:center;gap:6px;padding:5px 8px 5px 10px;background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:6px;font-size:11px;color:var(--text);line-height:1.3}.chat-modify-banner svg{flex-shrink:0;color:var(--accent)}.chat-modify-label{font-weight:600;color:var(--accent)}.chat-modify-prompt{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-style:normal;opacity:.85}.chat-modify-cancel{background:none;border:none;color:var(--text-dim);font-size:15px;line-height:1;cursor:pointer;padding:0 4px;border-radius:3px}.chat-modify-cancel:hover{color:var(--text);background:var(--bg-hover)}.chat-input-wrap{display:flex;flex-direction:column;border-radius:8px;background:var(--bg-surface2);transition:box-shadow .12s ease;overflow:hidden}.chat-input-wrap:focus-within{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent)}.chat-prompt-input{width:100%;padding:10px 12px;border:none;background:transparent;color:var(--text);font-size:12.5px;font-family:inherit;outline:none;resize:none;min-height:64px;box-sizing:border-box;line-height:1.4}.chat-prompt-input:disabled{opacity:.6}.chat-att-row-composer{padding:2px 8px 8px}.chat-composer-actions{display:flex;gap:8px}.chat-composer-attach,.chat-composer-send{flex:1;height:32px;padding:0 14px;border-radius:7px;font-size:12px;font-weight:600;font-family:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:all .12s ease}.chat-composer-attach{background:var(--bg-surface2);border:none;color:var(--text-dim);flex:0 0 auto;padding:0 14px}.chat-composer-attach:hover:not(:disabled){color:var(--text);background:var(--bg-hover)}.chat-composer-attach:disabled{opacity:.5;cursor:not-allowed}.chat-composer-send{background:var(--accent);border:none;color:#fff}.chat-composer-send:hover:not(:disabled){background:color-mix(in srgb,var(--accent) 88%,#000)}.chat-composer-send:disabled{opacity:.45;cursor:not-allowed}.workshop-dialog{background:var(--bg-surface);color:var(--text);border-radius:14px;box-shadow:0 24px 60px #00000059;width:min(1080px,94vw);height:min(780px,90vh);display:flex;flex-direction:column;overflow:hidden}.workshop-header{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.workshop-header h3{font-size:15px;font-weight:700;margin:0;white-space:nowrap}.workshop-tabs{display:flex;gap:4px;margin-left:8px;flex:1}.workshop-tab{padding:5px 14px;border:1px solid var(--border);background:var(--bg-surface2);color:var(--text);border-radius:6px;font-size:12px;font-weight:500;cursor:pointer}.workshop-tab:hover:not(:disabled){background:var(--bg-hover)}.workshop-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.workshop-tab:disabled{opacity:.5;cursor:not-allowed}.workshop-body{flex:1;display:flex;min-height:0;overflow:hidden}.workshop-editor-col{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.workshop-editor-inner{flex:1;display:flex;min-height:0;padding:12px;gap:12px;overflow:hidden}.workshop-editor-sidebar{width:180px;flex-shrink:0;display:flex;flex-direction:column;gap:2px;border:1px solid var(--border);border-radius:8px;padding:8px;overflow-y:auto}.workshop-editor-main{flex:1;min-width:0;display:flex;gap:12px;overflow:hidden}.workshop-chart-main{flex-direction:row}.workshop-chart-form{width:260px;flex-shrink:0;display:flex;flex-direction:column;gap:6px}.workshop-chart-form input{width:100%;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:13px;box-sizing:border-box;outline:none}.workshop-chart-form input:focus{border-color:var(--accent)}.workshop-chart-preview{flex:1;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--border);border-radius:8px;padding:12px;overflow:hidden}.workshop-chart-preview canvas{max-width:100%;max-height:100%}.workshop-mermaid-main{flex-direction:row}.workshop-mermaid-sidebar{width:120px;font-size:12px}.workshop-mermaid-source{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:6px;min-width:0}.workshop-mermaid-source textarea{flex:1;min-height:0;font-family:monospace;font-size:11px;line-height:1.4}.workshop-mermaid-preview{flex:1;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--border);border-radius:8px;padding:12px;overflow:auto}.workshop-mermaid-preview svg{max-width:100%;max-height:100%}.workshop-footer{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-top:1px solid var(--border);flex-shrink:0;background:var(--bg-surface)}.workshop-footer-hint{font-size:11px;color:var(--text-dim);font-style:italic}.workshop-footer .dialog-actions{display:flex;gap:8px}.flow-editor-root{flex:1;display:grid;grid-template-columns:200px 1fr;gap:12px;min-height:0;overflow:hidden}.flow-editor-root .flow-sidebar{max-height:none}.flow-editor-root .flow-canvas{min-height:0}@media (max-width: 1100px){.workshop-chart-form{width:220px}.workshop-editor-sidebar{width:150px}}@media (max-width: 900px){.workshop-dialog{width:96vw;height:92vh}.workshop-editor-main{flex-direction:column}.workshop-chart-form{width:100%}}.app-loading{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;background:#0b0b14;color:#9a99c1;font-size:13px;letter-spacing:.04em}.app-loading-logo{width:56px;height:56px;opacity:.85;animation:app-loading-pulse 1.6s ease-in-out infinite}@keyframes app-loading-pulse{0%,to{opacity:.45;transform:scale(.96)}50%{opacity:1;transform:scale(1.02)}}.toolbar-signin-btn{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:8px;border:1px solid transparent;background:linear-gradient(135deg,#7c5cff,#4ad3ff);color:#fff;font-size:12px;font-weight:600;cursor:pointer;box-shadow:0 6px 18px -8px #7c5cffb3;transition:transform .12s ease,box-shadow .12s ease}.toolbar-signin-btn:hover{transform:translateY(-1px);box-shadow:0 10px 22px -8px #7c5cffd9}.login-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;background:rgba(8,8,16,.72);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:24px;animation:login-modal-fade .16s ease-out}@keyframes login-modal-fade{0%{opacity:0}to{opacity:1}}.login-modal-card{position:relative;width:100%;max-width:420px;background:linear-gradient(180deg,#181828 0%,#11111e 100%);border:1px solid #34345a;border-radius:20px;padding:40px 36px 32px;text-align:center;color:#ecebff;box-shadow:0 30px 70px -20px #7c5cff73;overflow:hidden;animation:login-modal-rise .2s cubic-bezier(.2,.8,.2,1)}@keyframes login-modal-rise{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.login-modal-glow{position:absolute;top:-120px;left:50%;transform:translate(-50%);width:480px;height:280px;background:radial-gradient(ellipse at center,rgba(124,92,255,.42) 0%,rgba(74,211,255,.16) 40%,transparent 70%);pointer-events:none;z-index:0}.login-modal-card>*{position:relative;z-index:1}.login-modal-close{position:absolute;top:14px;right:14px;z-index:2;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;border:1px solid #25253d;background:rgba(255,255,255,.04);color:#9a99c1;border-radius:8px;cursor:pointer;transition:color .12s ease,border-color .12s ease,background .12s ease}.login-modal-close:hover{color:#ecebff;border-color:#7c5cff;background:rgba(124,92,255,.12)}.login-modal-logo{width:56px;height:56px;margin:0 auto 18px;display:block}.login-modal-title{font-size:24px;font-weight:800;letter-spacing:-.01em;margin-bottom:10px;color:#ecebff}.login-modal-em{background:linear-gradient(135deg,#7c5cff,#4ad3ff);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.login-modal-sub{font-size:14px;line-height:1.55;color:#9a99c1;margin-bottom:22px}.login-modal-perks{list-style:none;padding:0;margin:0 0 24px;text-align:left;display:flex;flex-direction:column;gap:8px}.login-modal-perks li{font-size:13px;color:#c8c5ff;padding-left:24px;position:relative}.login-modal-perks li:before{content:"";position:absolute;left:4px;top:6px;width:8px;height:8px;border-radius:50%;background:#50e3c2;box-shadow:0 0 10px #50e3c2b3}.login-modal-btn{display:flex;justify-content:center;margin-bottom:18px;min-height:44px}.login-modal-fineprint{font-size:11.5px;color:#6a698c;line-height:1.5;margin:0}.login-modal-form{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}.login-modal-input{width:100%;background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.12);color:#ecebff;font-size:14px;padding:12px 14px;border-radius:10px;outline:none;transition:border-color .15s ease,background .15s ease}.login-modal-input::placeholder{color:#6a698c}.login-modal-input:focus{border-color:#7a73ff;background:rgba(255,255,255,.06)}.login-modal-code{letter-spacing:6px;text-align:center;font-size:18px;font-variant-numeric:tabular-nums}.login-modal-primary{width:100%;background:linear-gradient(135deg,#6a73ff 0%,#9a4fff 100%);color:#fff;font-weight:600;font-size:14px;padding:12px 14px;border:none;border-radius:10px;cursor:pointer;transition:transform .12s ease,box-shadow .12s ease,opacity .12s ease}.login-modal-primary:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 22px #7a73ff73}.login-modal-primary:disabled{opacity:.55;cursor:not-allowed}.login-modal-divider{display:flex;align-items:center;gap:10px;font-size:11px;text-transform:uppercase;letter-spacing:1px;color:#6a698c;margin:14px 0}.login-modal-divider:before,.login-modal-divider:after{content:"";flex:1;height:1px;background:rgba(255,255,255,.08)}.login-modal-link{background:none;border:none;color:#9a8fff;font-size:13px;cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:2px}.login-modal-link:hover{color:#b8aeff}.login-modal-link:disabled{opacity:.5;cursor:not-allowed}.login-modal-altlink{display:inline-block;margin-top:4px}.login-modal-emailline{margin-bottom:16px}.login-modal-error{font-size:12.5px;color:#ff8585;background:rgba(255,90,90,.08);border:1px solid rgba(255,90,90,.25);padding:8px 10px;border-radius:8px;text-align:left}.login-modal-info{font-size:12.5px;color:#8de5c2;margin-bottom:12px;line-height:1.5}.user-section{gap:4px}.user-avatar{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);cursor:default;flex-shrink:0}.user-avatar-fallback{display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:600;font-size:13px;text-transform:uppercase;-webkit-user-select:none;user-select:none}.credit-badge{display:inline-flex;align-items:center;margin-right:4px;padding:3px 4px;border-radius:999px;background:var(--bg-secondary, rgba(124, 92, 255, .1));border:1px solid var(--border);cursor:default;-webkit-user-select:none;user-select:none}.credit-seg{display:inline-block;padding:0 8px;font-size:11px;font-weight:600;color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.02em;white-space:nowrap}.credit-seg.empty{color:#ff6b8a}.credit-sep{width:1px;height:12px;background:var(--border);flex-shrink:0}@media (max-width: 768px){.credit-badge{display:none}}@media (max-width: 768px){.sidebar{width:150px}.toolbar{padding:0 6px}}@media (max-width: 600px){.sidebar,.storebox-panel,.chat-panel,.ai-chat-panel,.manim-chat-panel{display:none}}.ai-chat-panel{width:360px;background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;z-index:5;overflow:hidden}.ai-chat-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);gap:8px}.ai-chat-header h3{font-size:13px;font-weight:600;margin:0}.ai-chat-header-right{display:flex;align-items:center;gap:6px}.ai-chat-model{font-size:11px;padding:3px 6px;background:var(--bg-surface2);color:var(--text);border:1px solid var(--border);border-radius:5px;font-family:inherit;outline:none}.ai-chat-clear{background:transparent;border:none;color:var(--text-dim);font-size:11px;font-weight:500;padding:4px 8px;border-radius:5px;cursor:pointer;font-family:inherit}.ai-chat-clear:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.ai-chat-clear:disabled{opacity:.4;cursor:not-allowed}.ai-chat-close{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;line-height:1;padding:0 4px;border-radius:4px}.ai-chat-close:hover{background:var(--bg-hover);color:var(--text)}.ai-chat-thread{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:8px}.ai-chat-empty{font-size:12px;color:var(--text-dim);line-height:1.5;padding:8px 4px}.ai-chat-empty ul{margin:6px 0 6px 16px;padding:0}.ai-chat-empty li{margin:2px 0}.ai-chat-msg{border-radius:10px;padding:7px 10px;font-size:12px;line-height:1.45;word-wrap:break-word;max-width:95%}.ai-chat-msg-user{background:var(--accent);color:#fff;align-self:flex-end;white-space:pre-wrap}.ai-chat-msg-assistant{background:var(--bg-surface2);color:var(--text);align-self:flex-start}.ai-md>:first-child{margin-top:0}.ai-md>:last-child{margin-bottom:0}.ai-md p{margin:0 0 8px;white-space:pre-wrap}.ai-md h1,.ai-md h2,.ai-md h3,.ai-md h4,.ai-md h5,.ai-md h6{margin:12px 0 6px;font-weight:700;line-height:1.3}.ai-md h1{font-size:15px}.ai-md h2{font-size:14px}.ai-md h3{font-size:13px}.ai-md h4,.ai-md h5,.ai-md h6{font-size:12px}.ai-md ul,.ai-md ol{margin:4px 0 8px;padding-left:22px}.ai-md li{margin:2px 0}.ai-md hr{border:0;border-top:1px solid var(--border);margin:10px 0}.ai-md code{background:color-mix(in srgb,var(--text) 10%,transparent);padding:1px 5px;border-radius:4px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}.ai-md pre.ai-md-pre{background:color-mix(in srgb,var(--text) 8%,transparent);padding:8px 10px;border-radius:6px;margin:6px 0;overflow-x:auto}.ai-md pre.ai-md-pre code{background:transparent;padding:0;font-size:11px;white-space:pre}.ai-md a{color:var(--accent);text-decoration:underline}.ai-md strong{font-weight:700}.ai-md em{font-style:italic}.ai-chat-msg-error{background:color-mix(in srgb,var(--danger) 12%,var(--bg-surface2))}.ai-chat-error-text{color:var(--danger);font-size:12px}.ai-chat-typing{color:var(--text-dim);font-size:16px;letter-spacing:2px}.ai-chat-msg-clarify{border-left:3px solid var(--accent)}.ai-chat-clarify-text{display:block;font-size:13px;line-height:1.5;color:var(--text)}.ai-chat-clarify-text:before{content:"? ";color:var(--accent);font-weight:700}.ai-chat-actions-summary{margin-top:5px;font-size:11px;color:var(--text-dim);font-style:italic;display:flex;align-items:center;gap:6px}.ai-chat-replay-btn{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text-dim);cursor:pointer;margin-left:auto}.ai-chat-replay-btn:hover{color:var(--text);border-color:var(--text-dim)}.ai-chat-composer{border-top:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:6px}.ai-chat-input{width:100%;resize:none;font-family:inherit;font-size:12px;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);outline:none;box-sizing:border-box}.ai-chat-input:focus{border-color:var(--accent)}.ai-chat-send{align-self:flex-end;padding:6px 16px;font-size:12px;min-width:70px}.ai-chat-send:disabled{opacity:.5;cursor:not-allowed}.ai-chat-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:6px}.ai-chat-attach{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;font-size:12px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-family:inherit;transition:background var(--transition),border-color var(--transition)}.ai-chat-attach:hover:not(:disabled){background:var(--bg-hover);border-color:var(--accent)}.ai-chat-attach:disabled{opacity:.5;cursor:not-allowed}.ai-chat-msg .chat-att-row{margin-top:6px}.format-toolbar{display:flex;align-items:center;gap:2px;padding:4px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px #0000002e;-webkit-user-select:none;user-select:none}.format-btn{min-width:28px;height:28px;padding:0 8px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:var(--text);border:none;border-radius:4px;cursor:pointer;font-size:13px;font-family:inherit;transition:background var(--transition)}.format-btn:hover{background:var(--bg-hover)}.format-sep{width:1px;height:18px;background:var(--border);margin:0 2px;flex-shrink:0}.flow-dialog{width:min(1280px,96vw);max-width:none;display:flex;flex-direction:column;gap:12px}.flow-body{display:grid;grid-template-columns:220px 1fr;gap:12px;min-height:540px}.flow-sidebar{display:flex;flex-direction:column;gap:2px;border:1px solid var(--border);border-radius:8px;padding:8px;overflow-y:auto;max-height:580px}.flow-kind-chip{padding-left:10px!important;font-size:12px}.flow-node-editor{display:flex;flex-direction:column;gap:6px;padding:8px;margin-top:8px;border-top:1px solid var(--border)}.flow-node-editor input,.flow-node-editor select{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);font-size:13px;outline:none;box-sizing:border-box}.flow-field-label{font-size:11px;color:var(--text-dim);margin-top:4px}.flow-editor-pane{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border);border-radius:8px;overflow:hidden;background:var(--bg-surface)}.flow-edit-tabs{display:flex;align-items:center;gap:4px;padding:6px 10px;border-bottom:1px solid var(--border);background:var(--bg-surface2)}.flow-tab{padding:4px 12px;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--text-dim);font-size:13px;cursor:pointer}.flow-tab.active{background:var(--accent);color:#fff;border-color:var(--accent)}.flow-tab-hint{margin-left:auto;font-size:11px;color:var(--text-dim)}.flow-canvas{flex:1;min-height:480px;position:relative;background:#fafbfc}.flow-canvas .react-flow__attribution{display:none}.flow-json-pane{flex:1;display:flex;flex-direction:column;min-height:480px}.flow-json-textarea{flex:1;width:100%;min-height:420px;padding:10px 12px;border:none;background:var(--bg-surface2);color:var(--text);font-size:12px;font-family:monospace;outline:none;resize:none;box-sizing:border-box}.flow-json-actions{display:flex;align-items:center;gap:8px;padding:8px 10px;border-top:1px solid var(--border);background:var(--bg-surface2)}.flow-model-select{padding:6px 8px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface);color:var(--text);font-size:12px;outline:none;cursor:pointer}.app.dark .flow-canvas,.app.dark .flow-canvas .react-flow__background{background:#1f2937}.tool-btn{transition:background var(--transition),color var(--transition),transform .12s ease,box-shadow .2s ease}.tool-btn:hover{transform:translateY(-1px)}.tool-btn:active{transform:scale(.94);transition-duration:60ms}.tool-btn.active{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 40%,transparent),0 4px 14px color-mix(in srgb,var(--accent) 30%,transparent)}.tool-btn.tool-btn-ai.active{box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 50%,transparent),0 0 16px color-mix(in srgb,var(--accent) 35%,transparent)}.dialog-overlay{animation:tb-overlay-in .18s ease-out both}.dialog{animation:tb-dialog-in .22s cubic-bezier(.2,.9,.3,1.2) both;transform-origin:center}@keyframes tb-overlay-in{0%{opacity:0;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}to{opacity:1;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}}@keyframes tb-dialog-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.storebox-panel,.ai-chat-panel,.manim-chat-panel{animation:tb-panel-in .24s cubic-bezier(.2,.7,.2,1) both}.workshop-dialog{animation:tb-dialog-in .24s cubic-bezier(.2,.9,.3,1.2) both;transform-origin:center}@keyframes tb-panel-in{0%{opacity:0;transform:translate(16px)}to{opacity:1;transform:translate(0)}}.toolbar{animation:tb-toolbar-in .32s ease-out both}@keyframes tb-toolbar-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.storebox-item{transition:transform .14s ease,box-shadow .2s ease}.storebox-item:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 6px 18px #0000002e}.format-toolbar{animation:tb-format-in .16s ease-out both;transform-origin:top left}@keyframes tb-format-in{0%{opacity:0;transform:translateY(-4px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.manim-chat-panel{width:380px;background:var(--bg-surface);border-left:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;z-index:5;overflow:hidden}.manim-chat-header{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border-bottom:1px solid var(--border);gap:8px}.manim-chat-header h3{font-size:13px;font-weight:600;margin:0}.manim-chat-header-right{display:flex;align-items:center;gap:6px}.manim-chat-model{font-size:11px;padding:3px 6px;background:var(--bg-surface2);color:var(--text);border:1px solid var(--border);border-radius:5px;font-family:inherit;outline:none}.manim-chat-clear{background:transparent;border:none;color:var(--text-dim);font-size:11px;font-weight:500;padding:4px 8px;border-radius:5px;cursor:pointer;font-family:inherit}.manim-chat-clear:hover:not(:disabled){background:var(--bg-hover);color:var(--text)}.manim-chat-clear:disabled{opacity:.4;cursor:not-allowed}.manim-chat-close{background:none;border:none;color:var(--text-dim);font-size:18px;cursor:pointer;line-height:1;padding:0 4px;border-radius:4px}.manim-chat-close:hover{background:var(--bg-hover);color:var(--text)}.manim-chat-thread{flex:1;overflow-y:auto;padding:10px;display:flex;flex-direction:column;gap:10px}.manim-chat-empty{font-size:12px;color:var(--text-dim);line-height:1.5;padding:8px 4px}.manim-chat-empty ul{margin:6px 0 6px 16px;padding:0}.manim-chat-empty li{margin:2px 0}.manim-chat-job{background:var(--bg-surface2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;font-size:12px;position:relative}.manim-chat-job-running{border-left:3px solid var(--accent)}.manim-chat-job-errored{border-left:3px solid var(--danger)}.manim-chat-job.is-modifying{outline:2px solid var(--accent);outline-offset:-1px}.manim-chat-job-head{display:flex;align-items:center;gap:6px}.manim-chat-job-mode{font-size:10px;font-weight:700;letter-spacing:.4px;text-transform:uppercase;padding:2px 6px;border-radius:4px;background:color-mix(in srgb,var(--accent) 15%,transparent);color:var(--accent)}.manim-chat-job-mode--png{background:color-mix(in srgb,#f59e0b 15%,transparent);color:#d97706}.app.dark .manim-chat-job-mode--png{color:#fbbf24}.manim-chat-job-delete{margin-left:auto;background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px 4px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition)}.manim-chat-job:hover .manim-chat-job-delete,.manim-chat-job-delete:focus-visible{opacity:1}.manim-chat-job-delete:hover{background:var(--bg-hover);color:var(--danger)}.manim-chat-job-prompt{color:var(--text);line-height:1.4;word-break:break-word;white-space:pre-wrap}.manim-chat-job-explain{font-size:11px;color:var(--text-dim);line-height:1.4;font-style:italic}.manim-job-status-clarify{color:var(--accent)}.manim-chat-job-clarify-msg{font-size:12px;line-height:1.45;padding:8px 10px;border-radius:6px;background:var(--bg-surface2);border-left:3px solid var(--accent);color:var(--text)}.manim-chat-job-media{position:relative;width:100%;background:repeating-conic-gradient(var(--bg) 0% 25%,var(--bg-surface2) 0% 50%) 50% / 12px 12px;border-radius:6px;overflow:hidden}.manim-chat-job-media img,.manim-chat-job-media video{width:100%;display:block;max-height:280px;object-fit:contain;background:transparent}.manim-chat-job-media .manim-download-btn{opacity:0}.manim-chat-job-media:hover .manim-download-btn,.manim-chat-job-media .manim-download-btn:focus-visible{opacity:1}.manim-chat-job-actions{display:flex;gap:6px;flex-wrap:wrap}.manim-chat-job-actions .chat-action{font-size:11px;padding:4px 10px}.manim-chat-job-trash{margin-left:auto;display:inline-flex;align-items:center;justify-content:center;padding:4px 6px}.manim-chat-composer{border-top:1px solid var(--border);padding:8px;display:flex;flex-direction:column;gap:6px}.manim-modify-banner{display:flex;align-items:center;gap:6px;padding:4px 8px;background:color-mix(in srgb,var(--accent) 10%,transparent);border:1px solid var(--accent);border-radius:5px;font-size:11px;color:var(--text)}.manim-modify-banner .manim-modify-label{font-weight:600;flex-shrink:0}.manim-modify-banner em{font-style:normal;opacity:.8;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0}.manim-chat-meta-row{display:flex;align-items:center;gap:8px}.manim-chat-segmented{display:inline-flex;background:var(--bg-surface2);border:1px solid var(--border);border-radius:6px;padding:2px}.manim-chat-segmented-btn{padding:3px 12px;font-size:11px;font-weight:600;background:transparent;border:none;border-radius:4px;color:var(--text-dim);cursor:pointer;font-family:inherit}.manim-chat-segmented-btn.active{background:var(--accent);color:#fff}.manim-chat-input{width:100%;resize:none;font-family:inherit;font-size:12px;padding:7px 9px;border:1px solid var(--border);border-radius:6px;background:var(--bg-surface2);color:var(--text);outline:none;box-sizing:border-box}.manim-chat-input:focus{border-color:var(--accent)}.manim-chat-composer-actions{display:flex;align-items:center;justify-content:space-between;gap:6px}.manim-chat-attach{display:inline-flex;align-items:center;gap:5px;padding:6px 10px;font-size:12px;background:transparent;color:var(--text);border:1px solid var(--border);border-radius:6px;cursor:pointer;font-family:inherit;transition:background var(--transition),border-color var(--transition)}.manim-chat-attach:hover{background:var(--bg-hover);border-color:var(--accent)}.manim-chat-send{align-self:flex-end;padding:6px 16px;font-size:12px;min-width:80px}.manim-chat-send:disabled{opacity:.5;cursor:not-allowed}@font-face{font-display:block;font-family:KaTeX_AMS;font-style:normal;font-weight:400;src:url(/assets/KaTeX_AMS-Regular-0cdd387c.woff2) format("woff2"),url(/assets/KaTeX_AMS-Regular-30da91e8.woff) format("woff"),url(/assets/KaTeX_AMS-Regular-68534840.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Caligraphic-Bold-de7701e4.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Bold-1ae6bd74.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Bold-07d8e303.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Caligraphic;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Caligraphic-Regular-5d53e70a.woff2) format("woff2"),url(/assets/KaTeX_Caligraphic-Regular-3398dd02.woff) format("woff"),url(/assets/KaTeX_Caligraphic-Regular-ed0b7437.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Fraktur-Bold-74444efd.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Bold-9be7ceb8.woff) format("woff"),url(/assets/KaTeX_Fraktur-Bold-9163df9c.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Fraktur;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Fraktur-Regular-51814d27.woff2) format("woff2"),url(/assets/KaTeX_Fraktur-Regular-5e28753b.woff) format("woff"),url(/assets/KaTeX_Fraktur-Regular-1e6f9579.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:700;src:url(/assets/KaTeX_Main-Bold-0f60d1b8.woff2) format("woff2"),url(/assets/KaTeX_Main-Bold-c76c5d69.woff) format("woff"),url(/assets/KaTeX_Main-Bold-138ac28d.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Main-BoldItalic-99cd42a3.woff2) format("woff2"),url(/assets/KaTeX_Main-BoldItalic-a6f7ec0d.woff) format("woff"),url(/assets/KaTeX_Main-BoldItalic-70ee1f64.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Main-Italic-97479ca6.woff2) format("woff2"),url(/assets/KaTeX_Main-Italic-f1d6ef86.woff) format("woff"),url(/assets/KaTeX_Main-Italic-0d85ae7c.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Main;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Main-Regular-c2342cd8.woff2) format("woff2"),url(/assets/KaTeX_Main-Regular-c6368d87.woff) format("woff"),url(/assets/KaTeX_Main-Regular-d0332f52.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:700;src:url(/assets/KaTeX_Math-BoldItalic-dc47344d.woff2) format("woff2"),url(/assets/KaTeX_Math-BoldItalic-850c0af5.woff) format("woff"),url(/assets/KaTeX_Math-BoldItalic-f9377ab0.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Math;font-style:italic;font-weight:400;src:url(/assets/KaTeX_Math-Italic-7af58c5e.woff2) format("woff2"),url(/assets/KaTeX_Math-Italic-8a8d2445.woff) format("woff"),url(/assets/KaTeX_Math-Italic-08ce98e5.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:700;src:url(/assets/KaTeX_SansSerif-Bold-e99ae511.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Bold-ece03cfd.woff) format("woff"),url(/assets/KaTeX_SansSerif-Bold-1ece03f7.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:italic;font-weight:400;src:url(/assets/KaTeX_SansSerif-Italic-00b26ac8.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Italic-91ee6750.woff) format("woff"),url(/assets/KaTeX_SansSerif-Italic-3931dd81.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_SansSerif;font-style:normal;font-weight:400;src:url(/assets/KaTeX_SansSerif-Regular-68e8c73e.woff2) format("woff2"),url(/assets/KaTeX_SansSerif-Regular-11e4dc8a.woff) format("woff"),url(/assets/KaTeX_SansSerif-Regular-f36ea897.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Script;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Script-Regular-036d4e95.woff2) format("woff2"),url(/assets/KaTeX_Script-Regular-d96cdf2b.woff) format("woff"),url(/assets/KaTeX_Script-Regular-1c67f068.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size1;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size1-Regular-6b47c401.woff2) format("woff2"),url(/assets/KaTeX_Size1-Regular-c943cc98.woff) format("woff"),url(/assets/KaTeX_Size1-Regular-95b6d2f1.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size2;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size2-Regular-d04c5421.woff2) format("woff2"),url(/assets/KaTeX_Size2-Regular-2014c523.woff) format("woff"),url(/assets/KaTeX_Size2-Regular-a6b2099f.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size3;font-style:normal;font-weight:400;src:url(data:font/woff2;base64,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) format("woff2"),url(/assets/KaTeX_Size3-Regular-6ab6b62e.woff) format("woff"),url(/assets/KaTeX_Size3-Regular-500e04d5.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Size4;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Size4-Regular-a4af7d41.woff2) format("woff2"),url(/assets/KaTeX_Size4-Regular-99f9c675.woff) format("woff"),url(/assets/KaTeX_Size4-Regular-c647367d.ttf) format("truetype")}@font-face{font-display:block;font-family:KaTeX_Typewriter;font-style:normal;font-weight:400;src:url(/assets/KaTeX_Typewriter-Regular-71d517d6.woff2) format("woff2"),url(/assets/KaTeX_Typewriter-Regular-e14fed02.woff) format("woff"),url(/assets/KaTeX_Typewriter-Regular-f01f3e87.ttf) format("truetype")}.katex{font: 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;position:relative;text-indent:0;text-rendering:auto}.katex *{-ms-high-contrast-adjust:none!important;border-color:currentColor}.katex .katex-version:after{content:"0.16.45"}.katex .katex-mathml{clip:rect(1px,1px,1px,1px);border:0;height:1px;overflow:hidden;padding:0;position:absolute;width:1px}.katex .katex-html>.newline{display:block}.katex .base{position:relative;white-space:nowrap;width:-webkit-min-content;width:-moz-min-content;width:min-content}.katex .base,.katex .strut{display:inline-block}.katex .textbf{font-weight:700}.katex .textit{font-style:italic}.katex .textrm{font-family:KaTeX_Main}.katex .textsf{font-family:KaTeX_SansSerif}.katex .texttt{font-family:KaTeX_Typewriter}.katex .mathnormal{font-family:KaTeX_Math;font-style:italic}.katex .mathit{font-family:KaTeX_Main;font-style:italic}.katex .mathrm{font-style:normal}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .boldsymbol{font-family:KaTeX_Math;font-style:italic;font-weight:700}.katex .amsrm,.katex .mathbb,.katex .textbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak,.katex .textfrak{font-family:KaTeX_Fraktur}.katex .mathboldfrak,.katex .textboldfrak{font-family:KaTeX_Fraktur;font-weight:700}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr,.katex .textscr{font-family:KaTeX_Script}.katex .mathsf,.katex .textsf{font-family:KaTeX_SansSerif}.katex .mathboldsf,.katex .textboldsf{font-family:KaTeX_SansSerif;font-weight:700}.katex .mathitsf,.katex .mathsfit,.katex .textitsf{font-family:KaTeX_SansSerif;font-style:italic}.katex .mainrm{font-family:KaTeX_Main;font-style:normal}.katex .vlist-t{border-collapse:collapse;display:inline-table;table-layout:fixed}.katex .vlist-r{display:table-row}.katex .vlist{display:table-cell;position:relative;vertical-align:bottom}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist>span>.pstrut{overflow:hidden;width:0}.katex .vlist-t2{margin-right:-2px}.katex .vlist-s{display:table-cell;font-size:1px;min-width:2px;vertical-align:bottom;width:2px}.katex .vbox{align-items:baseline;display:inline-flex;flex-direction:column}.katex .hbox{width:100%}.katex .hbox,.katex .thinbox{display:inline-flex;flex-direction:row}.katex .thinbox{max-width:0;width:0}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline,.katex .hline,.katex .mfrac .frac-line,.katex .overline .overline-line,.katex .rule,.katex .underline .underline-line{min-height:1px}.katex .mspace{display:inline-block}.katex .smash{display:inline;line-height:0}.katex .clap,.katex .llap,.katex .rlap{position:relative;width:0}.katex .clap>.inner,.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .clap>.fix,.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .clap>.inner,.katex .rlap>.inner{left:0}.katex .clap>.inner>span{margin-left:-50%;margin-right:50%}.katex .rule{border:0 solid;display:inline-block;position:relative}.katex .hline,.katex .overline .overline-line,.katex .underline .underline-line{border-bottom-style:solid;display:inline-block;width:100%}.katex .hdashline{border-bottom-style:dashed;display:inline-block;width:100%}.katex .sqrt>.root{margin-left:.2777777778em;margin-right:-.5555555556em}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.2em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:3.456em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.148em}.katex .fontsize-ensurer.reset-size1.size11,.katex .sizing.reset-size1.size11{font-size:4.976em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.1666666667em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.5em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.6666666667em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.4em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.88em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.4566666667em}.katex .fontsize-ensurer.reset-size2.size11,.katex .sizing.reset-size2.size11{font-size:4.1466666667em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.7142857143em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.8571428571em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.1428571429em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.2857142857em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.4285714286em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.7142857143em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.0571428571em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.4685714286em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:2.9628571429em}.katex .fontsize-ensurer.reset-size3.size11,.katex .sizing.reset-size3.size11{font-size:3.5542857143em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.75em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.875em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.125em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.25em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.5em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.8em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.16em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.5925em}.katex .fontsize-ensurer.reset-size4.size11,.katex .sizing.reset-size4.size11{font-size:3.11em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.7777777778em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.8888888889em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.1111111111em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.3333333333em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.6em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:1.92em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.3044444444em}.katex .fontsize-ensurer.reset-size5.size11,.katex .sizing.reset-size5.size11{font-size:2.7644444444em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.6em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.7em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.8em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.9em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.728em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.074em}.katex .fontsize-ensurer.reset-size6.size11,.katex .sizing.reset-size6.size11{font-size:2.488em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.5em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.5833333333em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.6666666667em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.75em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.2em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.44em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.7283333333em}.katex .fontsize-ensurer.reset-size7.size11,.katex .sizing.reset-size7.size11{font-size:2.0733333333em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.4166666667em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.4861111111em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.5555555556em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.625em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.2em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.4402777778em}.katex .fontsize-ensurer.reset-size8.size11,.katex .sizing.reset-size8.size11{font-size:1.7277777778em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.2893518519em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.3472222222em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.4050925926em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.462962963em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.5208333333em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.5787037037em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.6944444444em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.8333333333em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.2002314815em}.katex .fontsize-ensurer.reset-size9.size11,.katex .sizing.reset-size9.size11{font-size:1.4398148148em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.2410800386em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2892960463em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.337512054em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.3857280617em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.4339440694em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.4821600771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.5785920926em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.6943105111em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8331726133em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .fontsize-ensurer.reset-size10.size11,.katex .sizing.reset-size10.size11{font-size:1.1996142719em}.katex .fontsize-ensurer.reset-size11.size1,.katex .sizing.reset-size11.size1{font-size:.2009646302em}.katex .fontsize-ensurer.reset-size11.size2,.katex .sizing.reset-size11.size2{font-size:.2411575563em}.katex .fontsize-ensurer.reset-size11.size3,.katex .sizing.reset-size11.size3{font-size:.2813504823em}.katex .fontsize-ensurer.reset-size11.size4,.katex .sizing.reset-size11.size4{font-size:.3215434084em}.katex .fontsize-ensurer.reset-size11.size5,.katex .sizing.reset-size11.size5{font-size:.3617363344em}.katex .fontsize-ensurer.reset-size11.size6,.katex .sizing.reset-size11.size6{font-size:.4019292605em}.katex .fontsize-ensurer.reset-size11.size7,.katex .sizing.reset-size11.size7{font-size:.4823151125em}.katex .fontsize-ensurer.reset-size11.size8,.katex .sizing.reset-size11.size8{font-size:.578778135em}.katex .fontsize-ensurer.reset-size11.size9,.katex .sizing.reset-size11.size9{font-size:.6945337621em}.katex .fontsize-ensurer.reset-size11.size10,.katex .sizing.reset-size11.size10{font-size:.8336012862em}.katex .fontsize-ensurer.reset-size11.size11,.katex .sizing.reset-size11.size11{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .delimcenter,.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist-t,.katex .op-limits>.vlist-t{text-align:center}.katex .accent .accent-body{position:relative}.katex .accent .accent-body:not(.accent-full){width:0}.katex .overlay{display:block}.katex .mtable .vertical-separator{display:inline-block;min-width:1px}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist-t{text-align:center}.katex .mtable .col-align-l>.vlist-t{text-align:left}.katex .mtable .col-align-r>.vlist-t{text-align:right}.katex .svg-align{text-align:left}.katex svg{fill:currentColor;stroke:currentColor;display:block;height:inherit;position:absolute;width:100%}.katex svg path{stroke:none}.katex svg{fill-rule:nonzero;fill-opacity:1;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1}.katex img{border-style:none;max-height:none;max-width:none;min-height:0;min-width:0}.katex .stretchy{display:block;overflow:hidden;position:relative;width:100%}.katex .stretchy:after,.katex .stretchy:before{content:""}.katex .hide-tail{overflow:hidden;position:relative;width:100%}.katex .halfarrow-left{left:0;overflow:hidden;position:absolute;width:50.2%}.katex .halfarrow-right{overflow:hidden;position:absolute;right:0;width:50.2%}.katex .brace-left{left:0;overflow:hidden;position:absolute;width:25.1%}.katex .brace-center{left:25%;overflow:hidden;position:absolute;width:50%}.katex .brace-right{overflow:hidden;position:absolute;right:0;width:25.1%}.katex .x-arrow-pad{padding:0 .5em}.katex .cd-arrow-pad{padding:0 .55556em 0 .27778em}.katex .mover,.katex .munder,.katex .x-arrow{text-align:center}.katex .boxpad{padding:0 .3em}.katex .fbox,.katex .fcolorbox{border:.04em solid;box-sizing:border-box}.katex .cancel-pad{padding:0 .2em}.katex .cancel-lap{margin-left:-.2em;margin-right:-.2em}.katex .sout{border-bottom-style:solid;border-bottom-width:.08em}.katex .angl{border-right:.049em solid;border-top:.049em solid;box-sizing:border-box;margin-right:.03889em}.katex .anglpad{padding:0 .03889em}.katex .eqn-num:before{content:"(" counter(katexEqnNo) ")";counter-increment:katexEqnNo}.katex .mml-eqn-num:before{content:"(" counter(mmlEqnNo) ")";counter-increment:mmlEqnNo}.katex .mtr-glue{width:50%}.katex .cd-vert-arrow{display:inline-block;position:relative}.katex .cd-label-left{display:inline-block;position:absolute;right:calc(50% + .3em);text-align:left}.katex .cd-label-right{display:inline-block;left:calc(50% + .3em);position:absolute;text-align:right}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:block;text-align:center;white-space:nowrap}.katex-display>.katex>.katex-html{display:block;position:relative}.katex-display>.katex>.katex-html>.tag{position:absolute;right:0}.katex-display.leqno>.katex>.katex-html>.tag{left:0;right:auto}.katex-display.fleqn>.katex{padding-left:2em;text-align:left}body{counter-reset:katexEqnNo mmlEqnNo}
