:root{--color-bg-primary: #0d1117;--color-bg-secondary: #161b22;--color-bg-tertiary: #21262d;--color-bg-hover: #30363d;--color-text-primary: #e6edf3;--color-text-secondary: #8b949e;--color-text-muted: #6e7681;--color-border: #30363d;--color-border-hover: #8b949e;--color-accent: #00d4ff;--color-accent-hover: #33ddff;--color-success: #4ecdc4;--color-warning: #ffe66d;--color-error: #ff6b6b;--sidebar-width: 320px;--toolbar-height: 56px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif;--font-mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--transition-fast: .15s ease;--transition-normal: .25s ease}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-sans);font-size:14px;line-height:1.5;color:var(--color-text-primary);background-color:var(--color-bg-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}#root{height:100%}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-bg-secondary)}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-border-hover)}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px}button{font-family:inherit;font-size:inherit;cursor:pointer;border:none;background:none;color:inherit}input,textarea{font-family:inherit;font-size:inherit;border:none;background:none;color:inherit}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}.board-layout{display:flex;height:100%}.main-content{flex:1;display:flex;flex-direction:column;overflow:hidden}.sidebar{width:var(--sidebar-width);background:var(--color-bg-secondary);border-left:1px solid var(--color-border);display:flex;flex-direction:column;overflow:hidden}.sidebar-tabs{display:flex;border-bottom:1px solid var(--color-border)}.sidebar-tab{flex:1;padding:12px 16px;font-size:13px;font-weight:500;color:var(--color-text-secondary);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast);position:relative;display:flex;align-items:center;justify-content:center;gap:6px}.sidebar-tab:hover{color:var(--color-text-primary);background:var(--color-bg-tertiary)}.sidebar-tab.active{color:var(--color-accent);background:var(--color-bg-tertiary)}.sidebar-tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--color-accent)}.voice-indicator{width:6px;height:6px;border-radius:50%;background:var(--color-success);animation:voice-pulse 1.5s ease-in-out infinite}@keyframes voice-pulse{0%,to{opacity:1}50%{opacity:.5}}.toolbar{height:var(--toolbar-height);background:var(--color-bg-secondary);border-bottom:1px solid var(--color-border);display:flex;align-items:center;padding:0 16px;gap:8px}.toolbar-title{font-size:16px;font-weight:600;margin-right:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 16px;border-radius:6px;font-weight:500;transition:all var(--transition-fast)}.btn-primary{background:var(--color-accent);color:var(--color-bg-primary)}.btn-primary:hover:not(:disabled){background:var(--color-accent-hover)}.btn-secondary{background:var(--color-bg-tertiary);color:var(--color-text-primary)}.btn-secondary:hover:not(:disabled){background:var(--color-bg-hover)}.btn:disabled{opacity:.5;cursor:not-allowed}.canvas-wrapper{flex:1;overflow:auto;position:relative;scrollbar-width:none;-ms-overflow-style:none}.canvas-wrapper::-webkit-scrollbar{display:none}.canvas-container{position:relative;min-width:4000px;min-height:3000px;background-color:var(--color-bg-primary);background-image:radial-gradient(circle,var(--color-border) 1px,transparent 1px);background-size:24px 24px;-webkit-user-select:none;user-select:none}.mermaid-block{position:absolute;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;padding:16px;min-width:200px;min-height:100px;cursor:move;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.mermaid-block:hover{border-color:var(--color-border-hover)}.mermaid-block.selected{border-color:var(--color-accent);box-shadow:0 0 0 2px #00d4ff33}.mermaid-block.resizing{cursor:nwse-resize;-webkit-user-select:none;user-select:none}.mermaid-block .resize-handle{position:absolute;bottom:4px;right:4px;width:16px;height:16px;cursor:nwse-resize;display:flex;align-items:center;justify-content:center;color:var(--color-text-muted);opacity:0;transition:opacity var(--transition-fast),color var(--transition-fast);z-index:10}.mermaid-block:hover .resize-handle,.mermaid-block.selected .resize-handle{opacity:1}.mermaid-block .resize-handle:hover{color:var(--color-accent)}.mermaid-block .error{color:var(--color-error);padding:8px;font-size:13px}.ai-response{background:var(--color-bg-tertiary);border-top:1px solid var(--color-border);padding:16px;max-height:200px;overflow-y:auto}.ai-response-content{white-space:pre-wrap;font-family:var(--font-mono);font-size:13px;line-height:1.6}.chat-panel{display:flex;flex-direction:column;height:100%}.chat-header{padding:16px;border-bottom:1px solid var(--color-border);font-weight:600}.selected-block-indicator{display:flex;align-items:center;gap:8px;padding:10px 16px;background:linear-gradient(135deg,#00d4ff26,#00d4ff0d);border-bottom:1px solid var(--color-accent);color:var(--color-accent);font-size:13px}.selected-block-indicator .indicator-icon{font-size:16px}.selected-block-indicator .indicator-text{font-weight:500}.chat-messages{flex:1;overflow-y:auto;padding:16px}.chat-input-container{padding:16px;border-top:1px solid var(--color-border)}.chat-input{width:100%;padding:12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);resize:none}.chat-input:focus{border-color:var(--color-accent);outline:none}.pattern-suggestions-preview{background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:8px;padding:8px 12px;margin-bottom:8px}.pattern-label{font-size:12px;color:var(--color-text-secondary);display:block;margin-bottom:6px}.pattern-tags{display:flex;flex-wrap:wrap;gap:6px}.pattern-tag{background:var(--color-accent);color:#fff;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:500}.pattern-tag-secondary{background:var(--color-bg-secondary);color:var(--color-text-secondary);border:1px solid var(--color-border)}.presence-list{display:flex;gap:4px;padding:8px 16px}.presence-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;color:#fff}.user-cursor{position:absolute;pointer-events:none;z-index:1000}.cursor-pointer{width:16px;height:16px}.cursor-label{padding:2px 6px;border-radius:4px;font-size:11px;font-weight:500;white-space:nowrap;margin-left:12px;margin-top:-4px}.ai-cursor{position:absolute;pointer-events:none;z-index:1001;display:flex;align-items:center;gap:8px}.ai-cursor .cursor-icon{width:20px;height:20px;color:var(--color-accent)}.ai-cursor .cursor-label{background:var(--color-accent);color:var(--color-bg-primary)}.thinking-indicator{display:flex;gap:3px;margin-left:4px}.thinking-indicator .dot{width:4px;height:4px;border-radius:50%;background:var(--color-accent);animation:thinking 1.4s infinite ease-in-out both}.thinking-indicator .dot:nth-child(1){animation-delay:-.32s}.thinking-indicator .dot:nth-child(2){animation-delay:-.16s}@keyframes thinking{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:2000}.modal{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:12px;padding:24px;width:100%;max-width:480px;max-height:90vh;overflow-y:auto}.modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px}.modal-title{font-size:18px;font-weight:600}.modal-close{padding:4px;color:var(--color-text-secondary)}.modal-close:hover{color:var(--color-text-primary)}.form-group{margin-bottom:16px}.form-label{display:block;margin-bottom:8px;font-weight:500;color:var(--color-text-secondary)}.form-input{width:100%;padding:10px 12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary)}.form-input:focus{border-color:var(--color-accent);outline:none}.form-select{width:100%;padding:10px 12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text-primary);cursor:pointer}.block-editor{position:absolute;background:var(--color-bg-secondary);border:1px solid var(--color-accent);border-radius:8px;overflow:hidden;z-index:100;min-width:400px}.editor-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--color-bg-tertiary);border-bottom:1px solid var(--color-border)}.block-editor textarea{width:100%;min-height:200px;padding:12px;font-family:var(--font-mono);font-size:13px;line-height:1.5;background:var(--color-bg-secondary);color:var(--color-text-primary);border:none;resize:vertical}.block-editor textarea:focus{outline:none}.error-page{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.connection-status{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:4px;font-size:12px}.connection-status.connected{color:var(--color-success)}.connection-status.disconnected{color:var(--color-error)}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.mermaid-block .mermaid-diagram{width:100%;height:100%;overflow:hidden;display:flex;align-items:center;justify-content:center}.mermaid-block svg{max-width:100%;max-height:100%;height:auto;width:auto}.mermaid-block .node rect,.mermaid-block .node circle,.mermaid-block .node ellipse,.mermaid-block .node polygon,.mermaid-block .node path{stroke:var(--color-border)}.message{padding:12px;margin-bottom:8px;border-radius:8px;background:var(--color-bg-tertiary)}.message.user{background:var(--color-bg-hover)}.message.ai{border-left:3px solid var(--color-accent)}.message-content{white-space:pre-wrap;word-wrap:break-word}.message-timestamp{font-size:11px;color:var(--color-text-muted);margin-top:4px}.voice-panel{display:flex;flex-direction:column;height:100%;padding:16px;gap:16px}.voice-panel-header{display:flex;align-items:center;justify-content:space-between}.voice-panel-title{font-size:14px;font-weight:600;color:var(--color-text-primary)}.voice-status{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-text-secondary)}.voice-status-dot{width:8px;height:8px;border-radius:50%;background:currentColor}.voice-status.connected{color:var(--color-success)}.voice-status.connecting{color:var(--color-warning)}.voice-status.disconnected{color:var(--color-text-muted)}.voice-status.error{color:var(--color-error)}.voice-connect-section{display:flex;flex-direction:column;align-items:center;justify-content:center;flex:1;gap:16px;text-align:center}.voice-connect-text{color:var(--color-text-secondary);font-size:13px}.voice-connect-btn{display:flex;align-items:center;gap:8px}.voice-mic-section{display:flex;flex-direction:column;align-items:center;gap:12px;padding:16px 0}.voice-mic-btn{position:relative;width:72px;height:72px;border-radius:50%;background:var(--color-bg-tertiary);border:2px solid var(--color-border);color:var(--color-text-secondary);display:flex;align-items:center;justify-content:center;transition:all var(--transition-fast)}.voice-mic-btn:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-accent)}.voice-mic-btn.listening{background:var(--color-accent);border-color:var(--color-accent);color:var(--color-bg-primary)}.voice-mic-btn.speaking{background:var(--color-success);border-color:var(--color-success);color:var(--color-bg-primary)}.voice-mic-btn:disabled{opacity:.5;cursor:not-allowed}.mic-pulse{position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid var(--color-accent);animation:pulse 1.5s ease-out infinite}@keyframes pulse{0%{transform:scale(1);opacity:1}to{transform:scale(1.4);opacity:0}}.voice-mic-hint{font-size:12px;color:var(--color-text-muted)}.voice-waveform{display:flex;align-items:center;justify-content:center;gap:4px;height:32px;padding:8px 0}.waveform-bar{width:4px;height:100%;background:var(--color-accent);border-radius:2px;animation:waveform .8s ease-in-out infinite}@keyframes waveform{0%,to{transform:scaleY(.3)}50%{transform:scaleY(1)}}.voice-text-form{display:flex;gap:8px}.voice-text-input{flex:1;padding:10px 12px;background:var(--color-bg-tertiary);border:1px solid var(--color-border);border-radius:8px;color:var(--color-text-primary);font-size:13px}.voice-text-input:focus{border-color:var(--color-accent);outline:none}.voice-text-input:disabled{opacity:.5}.voice-text-submit{padding:10px 12px;background:var(--color-accent);border-radius:8px;color:var(--color-bg-primary);transition:background var(--transition-fast)}.voice-text-submit:hover:not(:disabled){background:var(--color-accent-hover)}.voice-text-submit:disabled{opacity:.5;cursor:not-allowed}.voice-transcript{flex:1;display:flex;flex-direction:column;min-height:0;border-top:1px solid var(--color-border);padding-top:16px}.voice-transcript-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;font-size:12px;font-weight:500;color:var(--color-text-secondary)}.voice-transcript-clear{font-size:11px;color:var(--color-text-muted)}.voice-transcript-clear:hover{color:var(--color-text-primary)}.voice-transcript-list{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:8px}.voice-transcript-empty{color:var(--color-text-muted);font-size:12px;text-align:center;padding:24px}.voice-transcript-entry{padding:10px 12px;background:var(--color-bg-tertiary);border-radius:8px}.voice-transcript-entry.user{background:var(--color-bg-hover);margin-left:16px}.voice-transcript-entry.assistant{border-left:3px solid var(--color-accent);margin-right:16px}.transcript-role{display:block;font-size:11px;font-weight:500;color:var(--color-text-muted);margin-bottom:4px}.transcript-content{font-size:13px;color:var(--color-text-primary);line-height:1.4}.voice-disconnect-btn{margin-top:auto;width:100%}.voice-error{padding:8px 12px;background:#ff6b6b1a;border:1px solid var(--color-error);border-radius:6px;color:var(--color-error);font-size:12px;text-align:center}.block-type-menu{background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;padding:8px;display:flex;flex-direction:column;gap:4px;box-shadow:0 4px 16px #0000004d;z-index:1000;min-width:160px}.block-type-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:6px;color:var(--color-text-primary);font-size:13px;font-weight:500;transition:background var(--transition-fast);cursor:pointer}.block-type-option:hover{background:var(--color-bg-hover)}.block-type-icon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--color-text-secondary)}.block-type-option:hover .block-type-icon{color:var(--color-accent)}.block-type-option.sticky .block-type-icon{color:#f59e0b}.block-type-label{flex:1}.sticky-note{position:absolute;border-radius:4px;border-width:1px;border-style:solid;box-shadow:0 2px 8px #0003;display:flex;flex-direction:column;transition:box-shadow var(--transition-fast)}.sticky-note:hover{box-shadow:0 4px 16px #0000004d}.sticky-note.selected{box-shadow:0 0 0 2px var(--color-accent),0 4px 16px #0000004d}.sticky-note.resizing{cursor:nwse-resize;-webkit-user-select:none;user-select:none}.sticky-note-header{display:flex;align-items:center;justify-content:space-between;padding:6px 8px;opacity:0;transition:opacity var(--transition-fast)}.sticky-note:hover .sticky-note-header,.sticky-note.selected .sticky-note-header{opacity:1}.sticky-note-color-btn{width:16px;height:16px;border-radius:50%;border:2px solid rgba(255,255,255,.3);cursor:pointer;transition:transform var(--transition-fast)}.sticky-note-color-btn:hover{transform:scale(1.1)}.sticky-note-delete-btn{padding:2px;color:inherit;opacity:.5;cursor:pointer;transition:opacity var(--transition-fast)}.sticky-note-delete-btn:hover{opacity:1}.sticky-note-color-picker{position:absolute;top:32px;left:8px;display:flex;gap:6px;padding:8px;background:var(--color-bg-secondary);border:1px solid var(--color-border);border-radius:8px;box-shadow:0 4px 12px #0000004d;z-index:10}.color-option{width:24px;height:24px;border-radius:50%;border-width:2px;border-style:solid;cursor:pointer;transition:transform var(--transition-fast)}.color-option:hover{transform:scale(1.15)}.color-option.active{box-shadow:0 0 0 2px var(--color-accent)}.sticky-note-content{flex:1;padding:4px 12px 12px;overflow:hidden}.sticky-note-textarea{width:100%;height:100%;background:transparent;border:none;outline:none;resize:none;font-family:var(--font-sans);font-size:14px;line-height:1.4}.sticky-note-text{font-size:14px;line-height:1.4;white-space:pre-wrap;word-wrap:break-word;overflow:hidden}.sticky-note-text .placeholder{opacity:.5;font-style:italic}.sticky-note .resize-handle{position:absolute;bottom:2px;right:2px;width:14px;height:14px;cursor:nwse-resize;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity var(--transition-fast)}.sticky-note:hover .resize-handle,.sticky-note.selected .resize-handle{opacity:.5}.sticky-note .resize-handle:hover{opacity:1}
