:root{--bg-base: #f8f9fa;--bg-surface: #ffffff;--bg-raised: #ffffff;--bg-overlay: rgba(255, 255, 255, .9);--glass-bg: #ffffff;--glass-border: #000000;--glass-hover: #f1f5f9;--grad-brand: #FFD600;--grad-brand-soft: #FFFDE7;--text-primary: #000000;--text-secondary: #000000;--text-muted: #4b5563;--text-accent: #000000;--accent-purple: #8b5cf6;--accent-cyan: #0ea5e9;--accent-amber: #f59e0b;--accent-green: #10b981;--accent-red: #ef4444;--accent-blue: #3b82f6;--space-xs: 4px;--space-sm: 8px;--space-md: 12px;--space-lg: 16px;--space-xl: 24px;--space-2xl: 32px;--radius-sm: 0px;--radius-md: 0px;--radius-lg: 0px;--radius-xl: 0px;--radius-full: 0px;--shadow-sm: 2px 2px 0px #000;--shadow-md: 4px 4px 0px #000;--shadow-lg: 6px 6px 0px #000;--shadow-glow-purple: 6px 6px 0px #000;--shadow-glow-cyan: 6px 6px 0px #000;--shadow-glow-amber: 4px 4px 0px #000;--font-display: "Plus Jakarta Sans", "Inter", "PingFang SC", "Microsoft YaHei", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;--font-body: "Inter", "PingFang SC", "Microsoft YaHei", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;--font-mono: "JetBrains Mono", "Fira Code", "Consolas", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", monospace;--ease-out: cubic-bezier(.16, 1, .3, 1);--ease-spring: cubic-bezier(.34, 1.56, .64, 1);--duration-fast: .15s;--duration-normal: .25s;--duration-slow: .4s;--topbar-h: 56px;--chat-width: 380px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden;font-family:var(--font-body);font-size:14px;line-height:1.5;color:var(--text-primary);background:var(--bg-base);-webkit-font-smoothing:antialiased}::selection{background:#7c3aed59;color:#000}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#0003;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#fff3}.topbar{position:fixed;top:0;left:0;right:0;height:var(--topbar-h);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:var(--space-md);padding:0 var(--space-lg);background:var(--bg-surface);border-bottom:2px solid #000;z-index:100}.topbar-left,.topbar-right{display:flex;align-items:center;gap:var(--space-sm)}.topbar-center{display:flex;justify-content:center;flex-shrink:0}.topbar-right{justify-self:end}.canvas-list-menu{position:absolute;top:calc(var(--topbar-h) + 8px);left:var(--space-md);width:320px;max-height:400px;display:flex;flex-direction:column;background:var(--bg-surface);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:150;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-8px);transition:opacity var(--duration-normal) var(--ease-out),visibility var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.canvas-list-menu.open,.canvas-list-menu[aria-hidden=false]{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}.canvas-list-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:2px solid var(--glass-border);background:var(--grad-brand-soft)}#newCanvasFromListBtn{width:36px;height:36px;border-radius:var(--radius-md);background:var(--grad-brand);color:#000;border:2px solid var(--glass-border);box-shadow:var(--shadow-sm);transition:all var(--duration-fast) var(--ease-out)}#newCanvasFromListBtn:hover{transform:scale(1.05);box-shadow:var(--shadow-md)}.canvas-list-title{font-family:var(--font-display);font-size:14px;font-weight:700;color:var(--text-primary)}.canvas-list-items{flex:1;overflow-y:auto;padding:8px 0}.canvas-list-empty{padding:24px 16px;text-align:center;color:var(--text-muted);font-size:13px}.canvas-list-item{display:flex;justify-content:space-between;align-items:center;padding:10px 16px;margin:4px 8px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);border:2px solid transparent}.canvas-list-item:hover{background:var(--glass-hover)}.canvas-list-item.active{background:var(--grad-brand-soft);border-color:var(--glass-border)}.canvas-list-item-info{flex:1;min-width:0}.canvas-list-item-title{display:block;font-size:13px;font-weight:600;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.canvas-list-item-meta{display:block;font-size:11px;color:var(--text-muted);margin-top:2px}.canvas-list-item-actions{display:flex;gap:4px;opacity:0;transition:opacity var(--duration-fast)}.canvas-list-item:hover .canvas-list-item-actions{opacity:1}.btn-icon.btn-xs{width:24px;height:24px;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);border:2px solid transparent}.btn-icon.btn-xs:hover{background:var(--bg-surface);color:var(--text-primary);border-color:var(--glass-border)}.btn-icon.btn-xs.delete-canvas-btn:hover{background:#ef444426;color:var(--accent-red)}.logo{display:flex;align-items:center;gap:var(--space-sm)}.logo-text{font-family:var(--font-display);font-weight:700;font-size:15px;color:#000;white-space:nowrap;flex-shrink:0}.logo-svg{width:20px;height:20px}.board-title{font-family:var(--font-display);font-size:15px;font-weight:600;color:var(--text-primary);cursor:pointer;padding:4px 12px;border-radius:var(--radius-sm);border:2px solid transparent;transition:all var(--duration-fast) var(--ease-out);white-space:nowrap;max-width:min(100%,300px);overflow:hidden;text-overflow:ellipsis}.board-title:hover{border-color:var(--glass-border);background:var(--glass-bg)}.topbar-divider{width:1px;height:20px;background:var(--glass-border);margin:0 var(--space-xs)}.btn,.btn-icon,.ctrl-btn,.ntb-btn,.action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:2px solid #000;cursor:pointer;font-family:var(--font-body);font-size:13px;transition:all var(--duration-fast) var(--ease-out)}.btn{padding:6px 14px;border-radius:var(--radius-md);font-weight:500}.btn-sm{padding:4px 10px;font-size:12px}.btn-sm:disabled{opacity:.6;cursor:not-allowed}.btn-ghost{background:var(--glass-bg);color:var(--text-secondary);border:2px solid var(--glass-border)}.btn-ghost:hover{background:var(--glass-hover);color:var(--text-primary);border-color:#ffffff26}.btn-primary{background:var(--grad-brand);color:#000;font-weight:600;border:2px solid #000;box-shadow:var(--shadow-sm),0 0 12px #7c3aed33}.btn-primary:hover{box-shadow:var(--shadow-md),0 0 20px #7c3aed59;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-icon{width:34px;height:34px;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);border:2px solid transparent}.btn-icon:hover{background:var(--glass-hover);color:var(--text-primary);border-color:var(--glass-border)}.workspace{position:fixed;top:var(--topbar-h);left:0;right:0;bottom:0;display:flex}.canvas-area{flex:1;position:relative;overflow:hidden;background:var(--bg-base)}.mindmap-view{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;cursor:grab;touch-action:none;--canvas-grid-size: 24px;--canvas-grid-dot: 1.5px;background-image:radial-gradient(circle,rgba(0,0,0,.15) var(--canvas-grid-dot),transparent var(--canvas-grid-dot));background-size:var(--canvas-grid-size) var(--canvas-grid-size);background-position:0 0}.mindmap-view.grabbing{cursor:grabbing}.canvas-transform{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}.link-layer{position:absolute;top:0;left:0;width:6000px;height:6000px;pointer-events:none;overflow:visible}.scissors-layer{position:absolute;top:0;left:0;width:6000px;height:6000px;pointer-events:none;z-index:500}.block-canvas{position:absolute;top:0;left:0;width:6000px;height:6000px}.canvas-controls{position:absolute;top:var(--space-md);left:var(--space-md);display:flex;align-items:center;gap:2px;padding:4px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:2px solid var(--glass-border);border-radius:var(--radius-md);z-index:10}.ctrl-btn{width:30px;height:30px;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);border:2px solid #000;font-size:14px;font-weight:600}.ctrl-btn:hover{background:var(--glass-hover);color:var(--text-primary)}.ctrl-btn.active,.ctrl-btn[aria-pressed=true]{background:var(--accent-yellow);color:var(--text-primary)}.ctrl-btn:disabled{opacity:.45;cursor:not-allowed}.ctrl-divider{width:1px;height:18px;background:var(--glass-border);margin:0 2px}.zoom-label{font-size:11px;color:var(--text-muted);min-width:36px;text-align:center;font-variant-numeric:tabular-nums}.mm-block{position:absolute;min-width:120px;min-height:60px;width:200px;border:2px solid #000;border-radius:var(--radius-lg);background:var(--bg-surface);padding:14px 16px;cursor:default;-webkit-user-select:none;user-select:none;box-shadow:var(--shadow-md);overflow:visible;transition:border-color var(--duration-fast) var(--ease-out),box-shadow var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out)}.mm-block:hover{border-color:#000;box-shadow:var(--shadow-lg);transform:translate(-2px,-2px)}.mm-block.selected{border-color:#000;border-width:3px;background:#fff;box-shadow:0 0 0 4px #00000026,var(--shadow-lg)}.mm-block.selected-multi{border-color:#3b82f6;border-width:2px;outline:2px dashed #3b82f6;outline-offset:2px;background:#3b82f60d}.mm-group-indicator{position:absolute;right:8px;bottom:8px;width:10px;height:10px;border-radius:50%;border:2px solid #000;z-index:10;pointer-events:none}.mm-group-indicator:nth-of-type(1){bottom:8px}.mm-group-indicator:nth-of-type(2){bottom:22px}.mm-group-indicator:nth-of-type(n+3){bottom:calc(22px + (var(--index, 2) - 1) * 14px)}.mm-block.group-highlight{border:3px solid var(--highlight-color, #2979FF);box-shadow:0 0 12px #2979ff66}.mm-block.root-node{background:var(--grad-brand-soft);border-color:#000}.mm-label{font-family:var(--font-display);font-weight:600;font-size:14px;line-height:1.4;color:var(--text-primary)}.mm-content{font-size:12px;color:var(--text-secondary);margin-top:6px;line-height:1.55;white-space:pre-wrap;word-break:break-word;min-height:18px;padding:4px 0;border-top:1px dashed #000}.mm-content-placeholder{color:var(--text-muted);font-style:italic;opacity:.5;border-top-color:transparent}.mm-block-file{padding:12px;overflow:visible}.mm-block-file .mm-label{margin-bottom:8px}.file-card{border-top:1px dashed #000;padding-top:8px}.file-card-header{display:flex;align-items:center;gap:8px}.file-card-icon{width:34px;height:28px;display:grid;place-items:center;border:2px solid #000;background:#ffd600;font-size:10px;font-weight:800}.file-card-meta{min-width:0;flex:1}.file-name{font-size:12px;font-weight:700;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-status{margin-top:2px;font-size:11px;color:var(--text-muted)}.file-path{max-width:100%;margin-top:2px;font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-status.is-broken{color:var(--accent-red);font-weight:700}.file-page-picker{display:flex;align-items:center;gap:6px;margin-top:10px}.file-page-input{min-width:0;flex:1;height:28px;border:2px solid #000;padding:0 8px;font:12px var(--font-body);background:#fff}.file-page-apply{height:28px;padding:0 8px;border:2px solid #000;background:#fff;font-size:12px;font-weight:700;cursor:pointer}.file-page-apply:hover{background:var(--grad-brand-soft)}.file-view-controls{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px}.file-view-mode,.file-page-nav{display:flex;align-items:center;gap:4px}.file-view-mode-btn,.file-page-nav-btn{height:26px;padding:0 8px;border:2px solid #000;background:#fff;font-size:11px;font-weight:800;cursor:pointer}.file-view-mode-btn.active{background:var(--grad-brand)}.file-page-nav-btn:disabled{opacity:.45;cursor:not-allowed}.file-page-nav-label{min-width:42px;text-align:center;font-size:11px;font-weight:800;color:var(--text-muted)}.file-page-count{margin-top:6px;font-size:11px;font-weight:700;color:var(--text-muted)}.file-preview{margin-top:10px;display:grid;gap:10px}.file-preview-pdf-grid{grid-template-columns:repeat(var(--pdf-page-columns, 1),minmax(0,1fr));align-items:start}.file-preview-pager{grid-template-columns:minmax(0,1fr)}.file-preview-page{display:grid;gap:4px;min-width:0}.file-page-title{font-size:11px;font-weight:700;color:var(--text-muted)}.file-preview-frame{position:relative;width:100%;aspect-ratio:4 / 3;min-height:120px;overflow:hidden;border:2px solid #000;background:#f8f9fa;cursor:crosshair}.file-pdf-canvas,.file-image-preview{width:100%;display:block;border:0;pointer-events:none}.file-pdf-canvas{height:auto;background:#fff}.file-image-preview{height:100%;object-fit:contain;background:#fff}.file-annotation{position:absolute;z-index:2;border:3px solid #ef4444;background:#ef444414;pointer-events:auto;cursor:pointer}.file-annotation.is-drafting{border-style:dashed;pointer-events:none}.file-generic-preview,.file-preview.is-missing{min-height:72px;display:grid;place-items:center;border:2px dashed #000;color:var(--text-muted);font-size:12px}@keyframes blockEnter{0%{opacity:0;transform:scale(.7) translateY(8px)}60%{opacity:1;transform:scale(1.04) translateY(-2px)}to{transform:scale(1) translateY(0)}}.mm-block.entering{animation:blockEnter .45s var(--ease-spring) forwards}@keyframes drawLine{0%{stroke-dashoffset:300}to{stroke-dashoffset:0}}.node-toolbar{position:absolute;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:6px;background:#fffffffa;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:20;opacity:0;visibility:hidden;pointer-events:none;transform:translate(8px);transition:opacity var(--duration-normal) var(--ease-out),visibility var(--duration-normal) var(--ease-out),transform var(--duration-normal) var(--ease-out)}.node-toolbar.visible{opacity:1;visibility:visible;pointer-events:auto;transform:translate(0)}.node-toolbar-matrix{padding:6px}.ntb-matrix-grid{display:flex;flex-direction:column;gap:6px}.ntb-matrix-row{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;padding:4px;border-radius:var(--radius-sm)}.ntb-matrix-row--ai,.ntb-matrix-row--structure{background:transparent}.ntb-matrix-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px 8px;min-width:56px;min-height:52px;border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-secondary);border:2px solid var(--glass-border);cursor:pointer;transition:all var(--duration-fast) var(--ease-out);font-size:11px;font-weight:500;font-family:var(--font-body);box-shadow:1px 1px #00000014}.ntb-matrix-btn:hover{background:var(--glass-hover);color:var(--text-primary);box-shadow:2px 2px #00000026;transform:translateY(-1px)}.ntb-matrix-btn:active{transform:translateY(0);box-shadow:1px 1px #00000014}.ntb-matrix-btn--danger{color:var(--accent-red)}.ntb-matrix-btn--danger:hover{background:#ef444426;color:var(--accent-red);border-color:var(--accent-red)}.ntb-matrix-btn svg{flex-shrink:0}.ntb-btn{padding:6px 10px;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-size:11px;border:2px solid #000;white-space:nowrap;display:flex;align-items:center;justify-content:center;gap:4px}.ntb-btn:hover{background:var(--glass-hover);color:var(--text-primary)}.ntb-btn--danger:hover{background:#ef444426;color:var(--accent-red)}.ntb-divider{width:1px;height:16px;background:var(--glass-border)}.chat-panel{position:relative;width:var(--chat-width);min-width:300px;max-width:min(900px,calc(100vw - 260px));display:flex;flex-direction:column;background:var(--bg-surface);border-left:2px solid #000;transition:width var(--duration-slow) var(--ease-out),opacity var(--duration-normal) var(--ease-out);overflow:hidden}.chat-panel.collapsed{min-width:0;width:0;opacity:0;border-left:none}.chat-panel.resizing{transition:none}.chat-resize-handle{position:absolute;left:-5px;top:0;bottom:0;width:10px;cursor:ew-resize;z-index:20;touch-action:none}.chat-resize-handle:after{content:"";position:absolute;left:4px;top:0;bottom:0;width:2px;background:transparent;transition:background var(--duration-fast)}.chat-resize-handle:hover:after,.chat-panel.resizing .chat-resize-handle:after{background:#000}body.chat-resizing{cursor:ew-resize;-webkit-user-select:none;user-select:none}.chat-panel-header{display:flex;align-items:center;justify-content:space-between;padding:10px var(--space-lg);border-bottom:2px solid #000;flex-shrink:0}.chat-panel-title{font-family:var(--font-display);font-size:14px;font-weight:600;color:var(--text-primary);display:flex;align-items:center;gap:8px}.chat-collapse-btn{width:28px;height:28px;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);border:2px solid #000;cursor:pointer;transition:all var(--duration-fast)}.chat-collapse-btn:hover{color:var(--text-primary);background:var(--glass-bg)}.chat-expand-btn{position:fixed;right:var(--space-md);bottom:var(--space-md);width:44px;height:44px;border-radius:50%;background:var(--grad-brand);color:#000;border:2px solid #000;cursor:pointer;box-shadow:var(--shadow-lg),var(--shadow-glow-purple);display:none;align-items:center;justify-content:center;z-index:50;transition:transform var(--duration-fast) var(--ease-spring)}.chat-expand-btn.visible{display:flex}.chat-expand-btn:hover{transform:scale(1.1)}.chat-messages{flex:1;overflow-y:auto;padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.chat-welcome{display:flex;flex-direction:column;align-items:center;text-align:center;padding:var(--space-2xl) var(--space-lg);gap:var(--space-sm);color:var(--text-secondary);font-size:13px}.chat-welcome-icon{font-size:32px;margin-bottom:var(--space-sm)}.chat-welcome p{line-height:1.6}.chat-welcome-hints{display:flex;flex-wrap:wrap;gap:var(--space-sm);justify-content:center;margin-top:var(--space-lg)}.hint-chip{padding:6px 12px;border-radius:16px;background:var(--glass-bg);border:2px solid var(--glass-border);color:var(--text-secondary);font-size:12px;cursor:pointer;transition:all var(--duration-fast) var(--ease-out);font-family:var(--font-body)}.hint-chip:hover{background:var(--glass-hover);border-color:#7c3aed4d;color:var(--text-primary)}.chat-msg{display:flex;gap:var(--space-sm);animation:msgEnter .3s var(--ease-out) forwards}@keyframes msgEnter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.chat-msg.user{flex-direction:row-reverse}.chat-msg-bubble{max-width:85%;padding:10px 14px;border-radius:var(--radius-lg);font-size:13px;line-height:1.55;word-break:break-word}.chat-msg-bubble:has(.markdown-table){max-width:100%}.chat-msg.user .chat-msg-bubble{background:var(--grad-brand);border:2px solid #000;box-shadow:2px 2px #000;color:var(--text-primary);border-bottom-right-radius:var(--radius-sm)}.chat-msg.assistant .chat-msg-bubble{background:var(--glass-bg);border:2px solid var(--glass-border);color:var(--text-secondary);border-bottom-left-radius:var(--radius-sm)}.chat-msg.system .chat-msg-bubble{max-width:100%;background:transparent;border:2px solid #000;color:var(--text-muted);font-size:12px;padding:4px 0;text-align:center}.markdown-table-wrap{max-width:100%;overflow-x:auto;margin:6px 0;white-space:normal}.markdown-table{width:max-content;min-width:100%;border-collapse:collapse;background:var(--bg-surface);color:var(--text-primary);font-size:12px;line-height:1.45}.markdown-table th,.markdown-table td{border:1px solid #000;padding:6px 8px;text-align:left;vertical-align:top;white-space:normal;overflow-wrap:anywhere;word-break:normal;max-width:280px}.markdown-table th{background:#0000000f;font-weight:800}.mm-content .markdown-table{font-size:11px}.mm-content .markdown-table th,.mm-content .markdown-table td{padding:4px 6px;max-width:220px}.op-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:var(--radius-full);font-size:11px;font-weight:500;margin-top:6px}.op-badge.added{background:#10b9811f;color:var(--accent-green)}.op-badge.updated{background:#3b82f61f;color:var(--accent-blue)}.op-badge.removed{background:#ef44441f;color:var(--accent-red)}.chat-input-area{padding:var(--space-md) var(--space-lg) var(--space-lg);border-top:2px solid #000;flex-shrink:0;display:flex;flex-direction:column}.agent-controls{display:flex;align-items:center;justify-content:flex-start;gap:8px;margin-bottom:8px}.agent-search-control{display:inline-flex;align-items:center;gap:6px;min-width:0;font-size:12px;font-weight:700;color:var(--text-secondary)}.agent-search-toggle{height:28px;min-width:48px;border:2px solid #000;border-radius:6px;background:var(--bg-surface);color:var(--text-primary);font-size:12px;font-weight:800;padding:0 10px;cursor:pointer}.agent-search-toggle.active{background:var(--grad-brand)}.tongyi-search-control{display:none;align-items:center;gap:4px;min-width:0;font-size:12px;font-weight:700;color:var(--text-secondary);cursor:help;white-space:nowrap}.tongyi-search-control.visible{display:inline-flex}.tongyi-search-control input{width:14px;height:14px}.agent-draft-toggle,.draft-toolbar button{height:28px;border:2px solid #000;border-radius:6px;background:var(--bg-surface);color:var(--text-primary);font-size:12px;font-weight:700;padding:0 10px;cursor:pointer}.agent-draft-toggle[aria-expanded=true]{background:var(--grad-brand)}.draft-panel{display:none;margin-bottom:8px;border:2px solid #000;border-radius:8px;background:var(--bg-surface);overflow:hidden}.draft-panel.open{display:block}.draft-toolbar{display:flex;align-items:center;gap:8px;padding:6px;border-bottom:2px solid #000;font-size:12px;font-weight:800}.draft-toolbar span{flex:1;min-width:0}.draft-auto{display:inline-flex;align-items:center;gap:4px;white-space:nowrap;font-size:11px;font-weight:700;color:var(--text-secondary)}.draft-textarea{width:100%;min-height:112px;max-height:220px;border:0;outline:0;resize:vertical;padding:8px;background:transparent;color:var(--text-primary);font-family:var(--font-mono);font-size:12px;line-height:1.45}.chat-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.chat-suggestions:empty{display:none}.chat-suggestions .hint-chip{background:var(--bg-surface);color:var(--text-primary);font-weight:500;border-style:dashed}.chat-suggestions .hint-chip:hover{background:var(--grad-brand);border-style:solid;border-color:#000}.waveform-bar{display:none;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm);padding:6px 10px;background:#ef444414;border:1px solid rgba(239,68,68,.15);border-radius:var(--radius-md)}.waveform-bar.active{display:flex}.waveform-bar canvas{flex:1;height:32px;border-radius:4px}.wave-time{font-size:12px;color:var(--accent-red);font-variant-numeric:tabular-nums;font-family:var(--font-mono)}.voice-toast{display:none;align-items:center;align-self:flex-start;max-width:100%;margin-bottom:var(--space-sm);padding:4px 10px;border-radius:var(--radius-full);font-size:11px;font-weight:600;background:#3b82f61a;color:var(--accent-blue);border:1px solid rgba(59,130,246,.18)}.voice-toast.visible{display:inline-flex}.voice-toast.is-browser{color:var(--accent-red);background:#ef44441a;border-color:#ef44442e}.voice-toast.is-success{color:var(--accent-green);background:#10b9811a;border-color:#10b9812e}.chat-input-row{display:flex;align-items:flex-end;gap:var(--space-sm);background:var(--glass-bg);border:2px solid var(--glass-border);border-radius:var(--radius-lg);padding:6px;transition:border-color var(--duration-fast) var(--ease-out)}.chat-input-row:focus-within{box-shadow:4px 4px #000;transform:translate(-2px,-2px)}.chat-input{flex:1;min-height:20px;max-height:120px;border:2px solid #000;background:transparent;color:var(--text-primary);font-family:var(--font-body);font-size:13px;line-height:1.5;padding:6px 8px;resize:none;outline:none}.chat-input::placeholder{color:var(--text-muted)}.voice-btn{width:34px;height:34px;border-radius:50%;background:transparent;color:var(--text-secondary);border:2px solid transparent;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all var(--duration-fast) var(--ease-out)}.voice-btn:hover{color:var(--text-primary);background:var(--glass-hover)}.voice-btn.recording{color:var(--accent-red);background:#ef44441a;border-color:#ef44444d}.voice-pulse{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:var(--radius-full);border:2px solid #000;opacity:0;pointer-events:none}.voice-btn.recording .voice-pulse{animation:voicePulse 1.5s ease-out infinite}@keyframes voicePulse{0%{transform:scale(.9);opacity:.6}to{transform:scale(1.4);opacity:0}}.send-btn{width:34px;height:34px;border-radius:50%;background:var(--grad-brand);color:#000;border:2px solid #000;cursor:pointer;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:all var(--duration-fast) var(--ease-out);box-shadow:0 0 8px #7c3aed33}.send-btn:hover{transform:scale(1.05);box-shadow:0 0 16px #7c3aed59}.send-btn:active{transform:scale(.95)}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:200;opacity:0;pointer-events:none;transition:opacity var(--duration-normal) var(--ease-out)}.modal-overlay.open{opacity:1;pointer-events:auto}.modal{width:min(520px,92vw);max-height:85vh;display:flex;flex-direction:column;background:var(--bg-raised);border:2px solid var(--glass-border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);transform:scale(.95) translateY(10px);transition:transform var(--duration-normal) var(--ease-spring)}.modal-overlay.open .modal{transform:scale(1) translateY(0)}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--space-lg) var(--space-xl);border-bottom:2px solid #000;flex-shrink:0}.modal-title{font-family:var(--font-display);font-size:16px;font-weight:700}.modal-body{flex:1;overflow-y:auto;padding:var(--space-lg) var(--space-xl);display:flex;flex-direction:column;gap:var(--space-lg)}.modal-footer{display:flex;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-lg) var(--space-xl);border-top:2px solid #000;flex-shrink:0}.cfg-section{padding-bottom:var(--space-lg);border-bottom:1px solid rgba(255,255,255,.04)}.cfg-section:last-child{border-bottom:none}.cfg-title{font-size:13px;font-weight:600;color:var(--text-secondary);margin-bottom:var(--space-md);display:flex;align-items:center;gap:6px}.cfg-summary{cursor:pointer;list-style:none}.cfg-summary::-webkit-details-marker{display:none}.cfg-summary:before{content:"▸";margin-right:4px;transition:transform var(--duration-fast)}details[open]>.cfg-summary:before{transform:rotate(90deg)}.key-notice{display:block;margin-top:6px;padding:6px 8px;border:1px solid rgba(239,68,68,.22);border-radius:6px;background:#ef444414;color:var(--accent-red);font-weight:600}.key-notice[hidden]{display:none}.cfg-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-md)}.cfg-label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-muted)}.cfg-label.full{grid-column:1 / -1}.cfg-input{padding:8px 10px;border-radius:var(--radius-sm);border:2px solid #000;background:#fff;color:var(--text-primary);font-size:13px;font-family:var(--font-body);outline:none;transition:border-color var(--duration-fast);width:100%}.cfg-input:focus{box-shadow:2px 2px #000;outline:none}.cfg-input:read-only{opacity:.6;border-style:dashed}.cfg-hint{display:block;margin-top:6px;color:var(--text-muted);font-size:12px;line-height:1.5}select.cfg-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23000000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:28px}.model-picker{position:relative;display:flex;gap:8px}.model-dropdown{position:absolute;top:calc(100% + 6px);left:0;right:92px;display:none;max-height:220px;overflow-y:auto;padding:6px;background:#fffffffa;border:2px solid #000;border-radius:var(--radius-sm);box-shadow:var(--shadow-md);z-index:500}.model-dropdown.open{display:grid;gap:4px}.model-option{width:100%;padding:8px 10px;border:0;border-radius:var(--radius-sm);background:transparent;color:var(--text-primary);font:inherit;font-size:13px;text-align:left;cursor:pointer}.model-option:hover,.model-option:focus{background:var(--glass-hover);outline:none}.cfg-row{display:flex;align-items:center;gap:var(--space-sm)}.cfg-row.full{grid-column:1 / -1}.typing-indicator{display:flex;gap:4px;padding:12px 16px}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--text-muted);animation:typingBounce 1.4s ease-in-out infinite}.typing-dot:nth-child(2){animation-delay:.15s}.typing-dot:nth-child(3){animation-delay:.3s}@keyframes typingBounce{0%,60%,to{transform:translateY(0);opacity:.4}30%{transform:translateY(-6px);opacity:1}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-5px)}75%{transform:translate(5px)}}@keyframes highlightFlash{0%,to{background:transparent;box-shadow:none;border-color:transparent}50%{background:#ef444440;box-shadow:0 0 0 2px #ef444466;border-color:#ef444499}}.btn-icon.api-key-alert{animation:shake .4s ease-in-out 3,highlightFlash 1s ease-in-out 3;position:relative}.btn-icon.api-key-alert:after{content:"需设置 API Key";position:absolute;top:-28px;left:50%;transform:translate(-50%);background:#000000e6;color:#fff;font-size:11px;padding:4px 8px;border-radius:4px;white-space:nowrap;opacity:0;pointer-events:none;animation:alertTooltip 1s ease-in-out 3}@keyframes alertTooltip{0%,to{opacity:0;transform:translate(-50%) translateY(4px)}50%{opacity:1;transform:translate(-50%) translateY(0)}}.cfg-input.api-key-highlight{animation:inputRedGlow 1s ease-in-out 3;border-color:#ef4444;box-shadow:0 0 0 2px #ef44444d}@keyframes inputRedGlow{0%,to{border-color:#ef4444;box-shadow:0 0 0 2px #ef44444d}50%{border-color:#dc2626;box-shadow:0 0 12px 4px #ef444480}}@keyframes fadeSlideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.topbar{animation:fadeSlideUp .5s var(--ease-out) .1s both}.canvas-area{animation:fadeSlideUp .5s var(--ease-out) .2s both}.chat-panel{animation:fadeSlideUp .5s var(--ease-out) .3s both}@media (max-width: 768px){:root{--chat-width: 100%}.workspace{flex-direction:column}.chat-panel{width:100%;min-width:0;max-width:none;height:45%;border-left:none;border-top:2px solid #000}.chat-panel.collapsed{height:0}.chat-resize-handle,.chat-welcome-icon,.logo-text{display:none}#resetDemo,#resetDemo+.topbar-divider{display:none}}@media (max-width: 480px){.topbar-center{display:none}}.ctx-menu{position:fixed;z-index:300;min-width:180px;padding:6px;background:#fffffff2;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);animation:ctxEnter .15s var(--ease-out)}@keyframes ctxEnter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.ctx-item{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border:2px solid #000;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:12px;cursor:pointer;transition:all var(--duration-fast);justify-content:flex-start;text-align:left}.ctx-item:hover{background:var(--glass-hover);color:var(--text-primary)}.ctx-item.ctx-danger:hover{background:#ef44441f;color:var(--accent-red)}.ctx-divider{height:1px;background:var(--glass-border);margin:4px 6px}.ctx-color-section{padding:4px 10px}.ctx-color-label{font-size:11px;color:var(--text-muted);margin-bottom:6px;display:block}.ctx-color-row{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}.ctx-color-dot{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:all var(--duration-fast);padding:0}.ctx-color-dot:hover{transform:scale(1.25);border-color:#fff6}.ctx-submenu-trigger{position:relative;justify-content:space-between}.ctx-submenu-trigger .ctx-item{justify-content:flex-start}.ctx-submenu{display:none;position:absolute;left:100%;top:0;min-width:160px;padding:6px;background:#fffffffa;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:2px solid var(--glass-border);border-radius:var(--radius-sm);box-shadow:var(--shadow-lg);z-index:301;margin-left:4px}.ctx-submenu .ctx-item{justify-content:flex-start;text-align:left}.ctx-submenu-trigger:hover .ctx-submenu{display:block}.mm-label.editing,.mm-content.editing{outline:none;cursor:text;-webkit-user-select:text;user-select:text;background:#0000000f;border-radius:4px;padding:2px 6px;margin:-2px -6px;min-width:60px;font-style:normal;opacity:1;color:var(--text-primary);border-top-color:transparent}.mm-resize-handle{position:absolute;opacity:0;transition:opacity var(--duration-fast) var(--ease-out);z-index:5}.mm-block:hover .mm-resize-handle,.mm-block.selected .mm-resize-handle,.mm-block.resizing .mm-resize-handle{opacity:1}.mm-block.position-locked{cursor:default}.mm-block.position-locked .mm-resize-handle{display:none}.mm-resize-r{top:12px;right:0;bottom:12px;width:6px;cursor:ew-resize;background:linear-gradient(90deg,transparent,rgba(0,0,0,.2));border-radius:0 var(--radius-lg) var(--radius-lg) 0}.mm-resize-r:hover,.mm-block.resizing .mm-resize-r{background:linear-gradient(90deg,transparent,rgba(0,0,0,.4))}.mm-resize-b{left:12px;right:12px;bottom:0;height:6px;cursor:ns-resize;background:linear-gradient(180deg,transparent,rgba(0,0,0,.2));border-radius:0 0 var(--radius-lg) var(--radius-lg)}.mm-resize-b:hover,.mm-block.resizing .mm-resize-b{background:linear-gradient(180deg,transparent,rgba(0,0,0,.4))}.mm-resize-br{right:0;bottom:0;width:14px;height:14px;cursor:nwse-resize;border-radius:0 0 var(--radius-lg) 0;background:linear-gradient(135deg,transparent 40%,rgba(0,0,0,.25) 60%,rgba(0,0,0,.4) 100%)}.mm-resize-br:hover,.mm-block.resizing .mm-resize-br{background:linear-gradient(135deg,transparent 30%,rgba(0,0,0,.4) 50%,rgba(0,0,0,.7) 100%)}.mm-block.resizing{border-color:#0006;box-shadow:var(--shadow-lg)}.pdf-export-root{background-image:radial-gradient(circle,rgba(0,0,0,.15) 1.5px,transparent 1.5px);background-size:24px 24px;overflow:hidden;print-color-adjust:exact;-webkit-print-color-adjust:exact}.pdf-export-root .mm-block{transition:none!important;transform:none!important}.pdf-export-root .mm-block:hover{box-shadow:var(--shadow-md)}.pdf-export-root .mm-resize-handle,.pdf-export-root .mm-link-handle,.pdf-export-root .link-scissors-btn{display:none!important}.import-menu{min-width:160px;padding:6px;background:#fffffff2;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:300;animation:ctxEnter .15s var(--ease-out)}.import-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:2px solid #000;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:13px;cursor:pointer;transition:all var(--duration-fast)}.import-item:hover{background:var(--glass-hover);color:var(--text-primary)}.import-item:disabled{opacity:.45;cursor:not-allowed}.import-icon{font-size:14px;width:20px;text-align:center;opacity:.7}.import-text{min-width:0;display:grid;gap:2px;text-align:left;line-height:1.2}.import-text strong{font-size:13px}.import-text small{font-size:10px;color:var(--text-muted);white-space:nowrap}.file-upload-menu{width:360px}.file-upload-actions{display:grid;grid-template-columns:1fr 1fr;gap:6px}.file-list-panel{margin-top:8px;padding-top:8px;border-top:2px solid #000}.file-list-title{margin-bottom:6px;font-size:12px;font-weight:800}.file-list-empty{padding:12px;border:2px dashed #000;color:var(--text-muted);font-size:12px}.file-list-item{display:flex;align-items:center;gap:8px;padding:8px;border:2px solid #000;background:#fff}.file-list-item+.file-list-item{margin-top:6px}.file-list-main{min-width:0;flex:1}.file-list-name{font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list-path{margin-top:2px;font-size:10px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-list-meta{display:flex;gap:8px;margin-top:3px;font-size:10px;color:var(--text-muted)}.file-list-status{font-weight:800;color:#000}.file-list-status.needs-auth{color:var(--accent-red)}.file-list-actions{display:grid;gap:6px;flex-shrink:0}.file-list-use,.file-list-compact{height:28px;padding:0 10px;border:2px solid #000;font-size:12px;font-weight:800;cursor:pointer;white-space:nowrap}.file-list-use{background:var(--grad-brand)}.file-list-compact{background:#fff}.file-list-compact:hover{background:var(--grad-brand-soft)}.file-list-compact:disabled{opacity:.55;cursor:wait}.group-selector{position:absolute;bottom:var(--space-md);left:calc(var(--space-md) + 180px + var(--space-md));display:flex;align-items:center;gap:8px;padding:6px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:2px solid var(--glass-border);border-radius:var(--radius-md);z-index:10;opacity:.75;transition:opacity var(--duration-normal) var(--ease-out)}.group-selector:hover{opacity:1}.group-dots{display:flex;gap:6px;align-items:center}.group-dots .no-groups{font-size:11px;color:var(--text-muted);padding:0 4px}.group-dot{width:16px;height:16px;border-radius:50%;border:2px solid #000;cursor:pointer;transition:transform var(--duration-fast)}.group-dot:hover{transform:scale(1.2)}.group-list-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border:2px solid #000;border-radius:var(--radius-sm);background:transparent;cursor:pointer;transition:all var(--duration-fast);color:var(--text-secondary)}.group-list-btn:hover{background:var(--glass-hover);color:var(--text-primary)}.group-list-menu{position:absolute;bottom:100%;left:0;margin-bottom:8px;min-width:180px;max-width:200px;max-height:240px;overflow-y:auto;overflow-x:hidden;padding:6px;background:#fffffffa;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);display:none;z-index:100}.group-list-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border:2px solid transparent;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--duration-fast);width:100%}.group-list-name{font-size:12px;color:var(--text-primary);font-weight:500;white-space:nowrap}.group-list-item:hover .group-list-name{overflow:hidden;text-overflow:ellipsis}.group-list-item:hover{background:var(--glass-hover);border-color:var(--glass-border)}.group-list-color{width:14px;height:14px;border-radius:50%;border:2px solid #000;flex-shrink:0}.group-list-info{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0}.group-list-item:hover .group-list-info{min-width:0}.group-list-header{display:flex;align-items:center;justify-content:space-between;gap:4px;min-width:0}.group-list-item:hover .group-list-header{min-width:0}.group-list-actions{display:flex;gap:2px;align-items:center;flex-shrink:0}.group-rename-btn,.group-delete-btn,.group-arrange-btn{display:flex;align-items:center;justify-content:center;width:20px;height:20px;border:1px solid var(--glass-border);border-radius:4px;background:transparent;cursor:pointer;transition:all var(--duration-fast);color:var(--text-muted);opacity:0}.group-list-item:hover .group-rename-btn,.group-list-item:hover .group-delete-btn,.group-list-item:hover .group-arrange-btn{opacity:1}.group-rename-btn:hover{background:var(--glass-hover);color:var(--text-primary)}.group-delete-btn{padding:0;display:flex;align-items:center;justify-content:center}.group-delete-btn:hover{background:#ef44441f;color:var(--accent-red)}.group-arrange-btn:hover{background:var(--glass-hover);color:var(--accent-purple)}.group-list-count{font-size:10px;color:var(--text-muted)}.group-list-empty{font-size:12px;color:var(--text-muted);padding:8px;text-align:center}.group-color-picker{z-index:1001;background:var(--bg-surface);border:2px solid var(--glass-border);border-radius:var(--radius-md);padding:6px;box-shadow:var(--shadow-lg)}.group-color-grid{display:flex;gap:4px}.group-color-option{width:24px;height:24px;border-radius:50%;border:2px solid #000;cursor:pointer;transition:transform var(--duration-fast)}.group-color-option:hover{transform:scale(1.15)}.group-arrange-menu{position:fixed;z-index:1001;background:var(--bg-surface);border:2px solid var(--glass-border);border-radius:var(--radius-md);padding:8px;box-shadow:var(--shadow-lg);min-width:160px}.group-arrange-header{font-size:12px;font-weight:600;color:var(--text-primary);padding:4px 8px;margin-bottom:4px}.group-arrange-option{display:flex;align-items:center;gap:8px;width:100%;padding:8px;border:none;background:transparent;cursor:pointer;border-radius:var(--radius-sm);transition:all var(--duration-fast);color:var(--text-primary);font-size:13px}.group-arrange-option:hover{background:var(--glass-hover)}.group-arrange-option svg{flex-shrink:0}.group-rename-dialog{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s var(--ease-out)}.group-rename-box{background:var(--bg-surface);border:2px solid var(--glass-border);border-radius:var(--radius-md);padding:16px;min-width:280px;box-shadow:var(--shadow-lg);animation:slideUp .2s var(--ease-spring)}.group-rename-header{font-size:14px;font-weight:600;color:var(--text-primary);margin-bottom:12px}.group-rename-input{width:100%;padding:8px 12px;border:2px solid var(--glass-border);border-radius:var(--radius-sm);font-size:14px;font-family:inherit;margin-bottom:12px;box-sizing:border-box}.group-rename-input:focus{outline:none;border-color:var(--accent-purple)}.group-rename-actions{display:flex;gap:8px;justify-content:flex-end}.group-rename-cancel,.group-rename-save{padding:6px 12px;border:2px solid #000;border-radius:var(--radius-sm);font-size:12px;cursor:pointer;transition:all var(--duration-fast)}.group-rename-cancel{background:transparent;color:var(--text-secondary)}.group-rename-cancel:hover{background:var(--glass-hover);color:var(--text-primary)}.group-rename-save{background:var(--accent-purple);color:#fff;border-color:var(--accent-purple)}.group-rename-save:hover{opacity:.9}.link-scissors-btn{position:absolute;width:28px;height:28px;background:#ef4444;border:2px solid #000;border-radius:50%;cursor:pointer;display:none;align-items:center;justify-content:center;z-index:500;box-shadow:var(--shadow-md);pointer-events:auto;transition:transform var(--duration-fast),opacity var(--duration-fast)}.link-scissors-btn.visible{display:flex;animation:scissorsPop .2s var(--ease-spring)}@keyframes scissorsPop{0%{transform:scale(0);opacity:0}to{transform:scale(1);opacity:1}}.link-scissors-btn:hover{transform:scale(1.1);background:#dc2626}.link-scissors-btn:active{transform:scale(.95)}.link-scissors-btn svg{width:16px;height:16px;stroke:#fff;stroke-width:2;pointer-events:none}.link-scissors-mode-btn{flex:0 0 40px;align-self:stretch;width:40px;min-height:32px;padding:0;background:var(--bg-surface);border:2px solid var(--glass-border);border-radius:var(--radius-md);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--duration-fast);opacity:.7}.link-scissors-mode-btn:hover{opacity:1;background:var(--glass-hover)}.link-scissors-mode-btn.active{background:#ef4444;border-color:#000;opacity:1}.link-scissors-mode-btn.active svg{stroke:#fff}.link-scissors-mode-btn svg{width:20px;height:20px;stroke:var(--text-primary);stroke-width:2}@keyframes flowDash{to{stroke-dashoffset:-240}}.mm-block.selected:after{content:"Tab: 子块  Enter: 同级  F2: 编辑  Del: 删除";position:absolute;top:-20px;left:50%;transform:translate(-50%);font-size:10px;color:var(--text-muted);white-space:nowrap;opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--duration-fast) var(--ease-out),visibility var(--duration-fast) var(--ease-out)}.mm-block.selected:hover:after{opacity:.6;visibility:visible}.mm-color-bar{position:absolute;top:0;left:12px;right:12px;height:3px;border-radius:0;opacity:1;border-bottom:2px solid #000}.canvas-empty-state{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;pointer-events:none;animation:fadeSlideUp .6s var(--ease-out)}.empty-icon{font-size:48px;margin-bottom:12px;filter:grayscale(.2)}.empty-title{font-family:var(--font-display);font-size:18px;font-weight:600;color:var(--text-primary);margin-bottom:8px}.empty-hint{font-size:13px;color:var(--text-muted);line-height:1.6}.export-menu{min-width:160px;padding:6px;background:#fffffff2;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:2px solid var(--glass-border);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);z-index:300;animation:ctxEnter .15s var(--ease-out)}.export-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:2px solid #000;border-radius:var(--radius-sm);background:transparent;color:var(--text-secondary);font-family:var(--font-body);font-size:13px;cursor:pointer;transition:all var(--duration-fast)}.export-item:hover{background:var(--glass-hover);color:var(--text-primary)}.export-icon{font-size:14px;width:20px;text-align:center;opacity:.7}.canvas-minimap{position:absolute;bottom:var(--space-md);left:var(--space-md);width:180px;height:120px;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:2px solid var(--glass-border);border-radius:var(--radius-md);z-index:10;cursor:crosshair;overflow:hidden;opacity:.75;transition:opacity var(--duration-normal) var(--ease-out),box-shadow var(--duration-normal) var(--ease-out)}.canvas-minimap:hover{opacity:1;box-shadow:var(--shadow-lg),var(--shadow-glow-purple)}.minimap-canvas{display:block;width:100%;height:100%}.link-layer path{cursor:default;transition:stroke-width var(--duration-fast),stroke var(--duration-fast),opacity var(--duration-fast)}.link-layer path.link-structure{stroke-dasharray:none;animation:none;opacity:.5}.link-layer path[data-link-role^=bundle-bg-]{stroke-dasharray:none!important;animation:none!important;stroke-linecap:round}.link-layer path.link-conn[data-dash-role=flow]{stroke-dasharray:8 4;animation:flowDash 20s linear infinite}.link-layer path.link-conn[data-dash-role=structured]{stroke-dasharray:6 5;animation:none;opacity:.9}.link-layer path.link-conn[data-dash-role=detour]{stroke-dasharray:5 5;animation:flowDash 28s linear infinite}.link-layer path.ctrl-hover{stroke:#ef4444!important;stroke-width:5!important;cursor:not-allowed!important}.link-delete-hint{position:fixed;z-index:1000;padding:6px 10px;background:#000000d9;color:#fff;border-radius:var(--radius-sm);font-size:11px;pointer-events:none;display:flex;align-items:center;gap:6px;opacity:0;transition:opacity var(--duration-fast)}.link-delete-hint.visible{opacity:1}.link-delete-hint svg{width:14px;height:14px}.mm-block.dragging{cursor:grabbing;opacity:.92;z-index:50;box-shadow:var(--shadow-lg)}.mm-link-handle{position:absolute;bottom:-10px;left:50%;transform:translate(-50%);width:16px;height:16px;border-radius:50%;background:var(--glass-bg);border:2px solid #000;background:#ffd600;box-shadow:var(--shadow-sm);cursor:crosshair;z-index:10;opacity:0;transition:opacity var(--duration-fast),transform var(--duration-fast)}.mm-block:hover .mm-link-handle,.mm-block.selected .mm-link-handle{opacity:1}.mm-block.position-locked .mm-link-handle{display:none}.mm-link-handle:hover{background:var(--accent-purple);transform:translate(-50%) scale(1.3);box-shadow:var(--shadow-glow-purple)}.temp-link{pointer-events:none;animation:flowDash 20s linear infinite;opacity:.6}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mm-lock-icon{position:absolute;top:-12px;right:-12px;font-size:14px;background:#fff;border-radius:50%;padding:4px;border:2px solid #000;box-shadow:2px 2px #000;z-index:10}.refine-confirm-box{position:absolute;z-index:1000;background:var(--bg-surface);border:2px solid #000;padding:12px;box-shadow:var(--shadow-sm);display:flex;flex-direction:column;gap:8px;pointer-events:auto}.refine-confirm-box[aria-hidden=true]{display:none}.rc-btn{padding:6px 12px;border:2px solid #000;font-weight:700;cursor:pointer;background:#fff}.rc-btn-yes{background:var(--accent-green);color:#fff}.rc-btn-yes:hover{background:#059669}.rc-btn-no{background:var(--bg-surface)}.rc-btn-no:hover{background:#f3f4f6}
