:root{--bg-primary: #0a0a0f;--bg-surface: rgba(255, 255, 255, .05);--bg-surface-hover: rgba(255, 255, 255, .08);--bg-accent: #6366f1;--text-primary: #e2e8f0;--text-secondary: #94a3b8;--text-accent: #818cf8;--border: rgba(255, 255, 255, .1);--radius: 12px;--radius-sm: 8px;--radius-xs: 4px;--radius-lg: 16px;--text-xs: 10px;--text-sm: 12px;--text-base: 13px;--text-md: 15px;--text-lg: 20px;--text-xl: 28px;--font: "Inter", -apple-system, system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--transition: .15s ease;--shadow: 0 4px 24px rgba(0,0,0,.3)}[data-theme=light]{--bg-primary: #f5f5f7;--bg-surface: rgba(255, 255, 255, .85);--bg-surface-hover: rgba(0, 0, 0, .04);--bg-accent: #6366f1;--text-primary: #1e293b;--text-secondary: #64748b;--text-accent: #4f46e5;--border: rgba(0, 0, 0, .1);--shadow: 0 4px 24px rgba(0,0,0,.08)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font);background:var(--bg-primary);color:var(--text-primary);min-height:100vh}#app{min-height:100vh;display:flex;align-items:center;justify-content:center}.surface{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);padding:2rem}input,button{font-family:var(--font);font-size:1rem}input{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary);padding:.75rem 1rem;width:100%;outline:none;transition:border var(--transition)}input:focus{border-color:var(--bg-accent)}button{background:var(--bg-accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:.75rem 1.5rem;cursor:pointer;transition:opacity var(--transition)}button:hover{opacity:.9}button:disabled{opacity:.5;cursor:not-allowed}.error{color:#ef4444;font-size:.875rem;margin-top:.5rem}@keyframes login-appear{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{color:#abb2bf;background:#282c34}.hljs-comment,.hljs-quote{color:#5c6370;font-style:italic}.hljs-doctag,.hljs-keyword,.hljs-formula{color:#c678dd}.hljs-section,.hljs-name,.hljs-selector-tag,.hljs-deletion,.hljs-subst{color:#e06c75}.hljs-literal{color:#56b6c2}.hljs-string,.hljs-regexp,.hljs-addition,.hljs-attribute,.hljs-meta .hljs-string{color:#98c379}.hljs-attr,.hljs-variable,.hljs-template-variable,.hljs-type,.hljs-selector-class,.hljs-selector-attr,.hljs-selector-pseudo,.hljs-number{color:#d19a66}.hljs-symbol,.hljs-bullet,.hljs-link,.hljs-meta,.hljs-selector-id,.hljs-title{color:#61aeee}.hljs-built_in,.hljs-title.class_,.hljs-class .hljs-title{color:#e6c07b}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700}.hljs-link{text-decoration:underline}.nav-tabs{display:flex;gap:2px;padding:0 0 .75rem;margin-bottom:.75rem;border-bottom:1px solid var(--border)}.nav-tab{flex:1;display:flex;align-items:center;justify-content:center;gap:4px;padding:.5rem .25rem;background:transparent;border:1px solid transparent;border-radius:var(--radius-sm);color:var(--text-secondary);font-size:var(--text-sm);font-family:var(--font);font-weight:500;cursor:pointer;transition:all var(--transition);white-space:nowrap}.nav-tab:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.nav-tab.active{background:var(--bg-surface);border-color:var(--border);color:var(--text-primary)}.nav-tab svg{width:14px;height:14px;flex-shrink:0}.view-container{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden}.view-container>div{display:none;flex-direction:column;height:100%;min-height:0}.view-container>div.active{display:flex}.quick-input-wrap{padding:1rem 1.5rem;border-bottom:1px solid var(--border);flex-shrink:0}.quick-input{display:flex;align-items:center;gap:.5rem;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.5rem .75rem;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:border-color var(--transition),box-shadow var(--transition)}.quick-input:focus-within{border-color:var(--bg-accent);box-shadow:0 0 0 3px #6366f126}.quick-input-icon{width:18px;height:18px;color:var(--text-secondary);flex-shrink:0;transition:color var(--transition)}.quick-input:focus-within .quick-input-icon{color:var(--bg-accent)}.quick-input input{flex:1;background:none;border:none;color:var(--text-primary);font-size:var(--text-base);outline:none;padding:.25rem 0}.quick-input input::placeholder{color:var(--text-secondary);opacity:.7}.quick-input-type{font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:var(--radius-xs);background:#6366f126;color:#818cf8;flex-shrink:0;transition:all var(--transition);opacity:0}.quick-input-type.visible{opacity:1}.quick-input-submit{width:28px;height:28px;border-radius:var(--radius-xs);background:var(--bg-accent);border:none;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:opacity var(--transition),transform var(--transition);opacity:0;transform:scale(.8)}.quick-input-submit.visible{opacity:1;transform:scale(1)}.quick-input-submit:hover{opacity:.85}.quick-input-submit svg{width:14px;height:14px}.stream-feed{flex:1;overflow-y:auto;padding:1rem 1.5rem;display:flex;flex-direction:column;gap:.75rem}.stream-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:.75rem;padding:3rem 1rem;text-align:center}.stream-empty svg{width:48px;height:48px;opacity:.3}.stream-empty p{font-size:var(--text-base);max-width:320px;line-height:1.5}.stream-entry{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem 1rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:border-color var(--transition),transform .2s ease;animation:stream-entry-in .3s ease-out}.stream-entry:hover{border-color:#ffffff26}@keyframes stream-entry-in{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}.stream-entry-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.stream-type-icon{width:18px;height:18px;flex-shrink:0}.stream-type-icon.type-text{color:#6366f1}.stream-type-icon.type-link{color:#22d3ee}.stream-type-icon.type-voice{color:#a78bfa}.stream-type-icon.type-image{color:#f472b6}.stream-type-icon.type-file{color:#fb923c}.stream-type-icon.type-screenshot{color:#34d399}.stream-type-icon.type-clip{color:#fbbf24}.stream-type-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.3px;color:var(--text-secondary)}.stream-entry-time{font-size:var(--text-sm);color:var(--text-secondary);margin-left:auto;font-family:var(--font-mono)}.stream-entry-source{font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);opacity:.6;padding:1px 5px;border-radius:var(--radius-xs);background:var(--bg-surface-hover)}.stream-entry-content{font-size:var(--text-base);line-height:1.55;color:var(--text-primary);word-break:break-word}.stream-entry-content a{color:#22d3ee;text-decoration:none}.stream-entry-content a:hover{text-decoration:underline}.stream-entry-content p{margin:0 0 .4em}.stream-entry-content p:last-child{margin-bottom:0}.stream-entry-content strong{font-weight:600}.stream-entry-content em{font-style:italic}.stream-entry-content code{background:#ffffff0f;padding:1px 4px;border-radius:var(--radius-xs);font-size:var(--text-base)}.stream-entry-content pre{background:#0000004d;padding:8px 10px;border-radius:var(--radius-xs);overflow-x:auto;margin:.4em 0}.stream-entry-content pre code{background:none;padding:0}.stream-entry-content ul,.stream-entry-content ol{margin:.3em 0;padding-left:1.4em}.stream-entry-content blockquote{border-left:2px solid var(--border);margin:.4em 0;padding-left:10px;color:var(--text-secondary)}.stream-entry-entities{display:flex;flex-wrap:wrap;gap:4px;margin-top:.5rem}.entity-tag{display:inline-flex;align-items:center;gap:3px;font-size:var(--text-sm);font-weight:500;padding:2px 7px;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition);border:1px solid transparent}.entity-tag:hover{filter:brightness(1.2);transform:translateY(-1px)}.entity-tag.etype-person{background:#60a5fa26;color:#60a5fa;border-color:#60a5fa33}.entity-tag.etype-idea{background:#fbbf2426;color:#fbbf24;border-color:#fbbf2433}.entity-tag.etype-project{background:#34d39926;color:#34d399;border-color:#34d39933}.entity-tag.etype-topic{background:#f8717126;color:#f87171;border-color:#f8717133}.entity-tag.etype-place{background:#fb923c26;color:#fb923c;border-color:#fb923c33}.entity-tag.etype-event{background:#a78bfa26;color:#a78bfa;border-color:#a78bfa33}.entity-tag.etype-resource{background:#22d3ee26;color:#22d3ee;border-color:#22d3ee33}.entity-tag.etype-task{background:#f472b626;color:#f472b6;border-color:#f472b633}.entity-tag.etype-emotion{background:#e879f926;color:#e879f9;border-color:#e879f933}.entity-tag.etype-quote{background:#94a3b826;color:#94a3b8;border-color:#94a3b833}.entity-tag-dot{width:5px;height:5px;border-radius:50%;background:currentColor;flex-shrink:0}.stream-entry-processing{display:flex;align-items:center;gap:6px;margin-top:.5rem;font-size:var(--text-sm);color:var(--text-secondary);opacity:.7}.processing-dots{display:flex;gap:3px}.processing-dots span{width:4px;height:4px;border-radius:50%;background:var(--text-secondary);animation:processing-dot 1.4s infinite ease-in-out both}.processing-dots span:nth-child(1){animation-delay:-.32s}.processing-dots span:nth-child(2){animation-delay:-.16s}@keyframes processing-dot{0%,80%,to{transform:scale(0)}40%{transform:scale(1)}}.stream-load-more{display:flex;justify-content:center;padding:.75rem;flex-shrink:0}.stream-load-more button{background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);padding:.5rem 1.25rem;border-radius:var(--radius-sm);font-size:var(--text-base);cursor:pointer;transition:all var(--transition)}.stream-load-more button:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.search-container{display:flex;flex-direction:column;height:100%}.search-input-outer{padding:12px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.search-results{flex:1;overflow-y:auto;padding:1rem 1.5rem;display:flex;flex-direction:column;gap:.5rem}.search-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:var(--text-secondary);gap:.75rem;padding:3rem 1rem;text-align:center}.search-empty svg{width:48px;height:48px;opacity:.3}.search-empty p{font-size:var(--text-base);max-width:320px;line-height:1.5}.search-status{display:flex;align-items:center;justify-content:space-between;padding:.25rem 0 .5rem;font-size:var(--text-sm);color:var(--text-secondary)}.search-result-count{font-family:var(--font-mono)}.search-result{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);padding:.875rem 1rem;cursor:pointer;transition:all var(--transition);animation:search-result-in .2s ease-out}.search-result:hover{border-color:#ffffff26;background:var(--bg-surface-hover)}@keyframes search-result-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.search-result-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.375rem}.search-result-badge{font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;padding:2px 6px;border-radius:var(--radius-xs);font-weight:600}.search-result-badge.badge-stream{background:#6366f126;color:#818cf8}.search-result-badge.badge-entity{background:#34d39926;color:#34d399}.search-result-content{font-size:var(--text-base);line-height:1.5;color:var(--text-primary);word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.search-connections-badge{display:inline-flex;align-items:center;gap:3px;font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-accent);background:#6366f11a;padding:1px 6px;border-radius:var(--radius-sm);margin-left:.25rem}.search-connections-badge svg{opacity:.7}.search-expand-btn{background:none;border:1px solid var(--border);border-radius:var(--radius-xs);color:var(--text-secondary);cursor:pointer;padding:2px 4px;display:flex;align-items:center;transition:all var(--transition);flex-shrink:0}.search-expand-btn:hover{border-color:var(--text-secondary);color:var(--text-primary)}.search-result.expanded{border-color:#6366f14d;background:#6366f10a}.search-entity-expand{margin-top:.75rem;padding-top:.75rem;border-top:1px solid var(--border);animation:search-expand-in .2s ease-out}@keyframes search-expand-in{0%{opacity:0;max-height:0}to{opacity:1;max-height:600px}}.search-expand-section{margin-bottom:.625rem}.search-expand-section:last-child{margin-bottom:0}.search-expand-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin-bottom:.375rem;font-weight:600}.search-expand-prop{display:flex;gap:.5rem;font-size:var(--text-base);padding:2px 0}.search-expand-prop-key{color:var(--text-secondary);min-width:80px}.search-expand-prop-val{color:var(--text-primary)}.search-expand-aliases{display:flex;flex-wrap:wrap;gap:4px}.search-expand-alias{font-size:var(--text-sm);padding:1px 6px;border-radius:var(--radius-xs);background:var(--bg-surface-hover);color:var(--text-secondary);border:1px solid var(--border)}.search-expand-rels{display:flex;flex-direction:column;gap:3px}.search-expand-rel{display:flex;align-items:center;gap:.5rem;padding:4px 8px;border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border);cursor:pointer;transition:all var(--transition);font-size:var(--text-base)}.search-expand-rel:hover{border-color:#ffffff26;background:var(--bg-surface-hover)}.search-expand-rel-arrow{color:var(--text-accent);font-size:var(--text-base);flex-shrink:0}.search-expand-rel-label{color:var(--text-secondary);font-size:var(--text-sm);font-style:italic;flex-shrink:0}.search-expand-rel-name{color:var(--text-primary);font-weight:500}.search-expand-empty{font-size:var(--text-base);color:var(--text-secondary);font-style:italic;padding:4px 0}.search-expand-detail-btn{display:block;width:100%;margin-top:.5rem;padding:6px 0;background:none;border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-accent);font-size:var(--text-sm);cursor:pointer;transition:all var(--transition);text-align:center}.search-expand-detail-btn:hover{background:#6366f11a;border-color:var(--text-accent)}.entity-detail-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;animation:overlay-in .2s ease-out}@keyframes overlay-in{0%{opacity:0}to{opacity:1}}.entity-detail{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem;width:90%;max-width:520px;max-height:80vh;overflow-y:auto;animation:detail-in .25s ease-out}@keyframes detail-in{0%{opacity:0;transform:translateY(12px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}.entity-detail-header{display:flex;align-items:center;gap:.75rem;margin-bottom:1rem}.entity-detail-type{font-size:var(--text-xs);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.05em;padding:3px 8px;border-radius:var(--radius-xs)}.entity-detail-name{font-size:var(--text-md);font-weight:600}.entity-detail-close{margin-left:auto;width:28px;height:28px;border-radius:var(--radius-xs);background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-md);transition:all var(--transition)}.entity-detail-close:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.entity-detail-section{margin-bottom:1rem}.entity-detail-section h4{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.06em;color:var(--text-secondary);margin-bottom:.5rem;font-weight:600}.entity-detail-props{display:flex;flex-direction:column;gap:.25rem}.entity-prop{display:flex;gap:.5rem;font-size:var(--text-base)}.entity-prop-key{color:var(--text-secondary);font-family:var(--font-mono);font-size:var(--text-sm);min-width:80px}.entity-prop-val{color:var(--text-primary)}.entity-rel-list{display:flex;flex-direction:column;gap:.375rem}.entity-rel{display:flex;align-items:center;gap:.5rem;font-size:var(--text-base);padding:.375rem .5rem;border-radius:var(--radius-sm);background:var(--bg-surface);cursor:pointer;transition:background var(--transition)}.entity-rel:hover{background:var(--bg-surface-hover)}.entity-rel-type{font-size:var(--text-xs);font-family:var(--font-mono);color:var(--text-secondary);padding:1px 5px;border-radius:var(--radius-xs);background:var(--bg-surface-hover)}.entity-rel-arrow{color:var(--text-secondary);font-size:var(--text-sm)}.entity-rel-name{color:var(--text-accent);font-weight:500}.entity-stream-list{display:flex;flex-direction:column;gap:.375rem}.entity-stream-item{font-size:var(--text-base);line-height:1.4;padding:.375rem .5rem;border-radius:var(--radius-sm);background:var(--bg-surface);color:var(--text-primary);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.entity-stream-item-time{font-size:var(--text-xs);color:var(--text-secondary);font-family:var(--font-mono)}.loading-spinner{display:flex;align-items:center;justify-content:center;padding:2rem}.loading-spinner:after{content:"";width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--bg-accent);border-radius:50%;animation:spin .6s linear infinite}@media(max-width:768px){.quick-input-wrap,.search-input-wrap,.stream-feed,.search-results{padding:.75rem 1rem}.entity-detail{width:95%;max-height:90vh;padding:1rem}.nav-tab{font-size:var(--text-sm);padding:.4rem .125rem}.nav-tab svg{width:12px;height:12px}}.stream-date-separator{display:flex;align-items:center;gap:.75rem;padding:.5rem 0;color:#fff6;font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.05em;font-weight:500}.stream-date-separator:before,.stream-date-separator:after{content:"";flex:1;height:1px;background:#ffffff1a}#canvas-root{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;touch-action:none;background-color:var(--bg-primary);background-image:radial-gradient(circle,rgba(255,255,255,.04) 1px,transparent 1px);background-size:24px 24px}#canvas-world{position:absolute;transform-origin:0 0}#canvas-edges{position:absolute;width:100%;height:100%;transform-origin:0 0;pointer-events:none;overflow:visible}#canvas-edges path,#canvas-edges text{pointer-events:auto}#canvas-ui{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:10}#canvas-ui>*{pointer-events:auto}.canvas-node{position:absolute;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:default;-webkit-user-select:none;user-select:none;transition:border-color .15s ease,box-shadow .15s ease}.canvas-node:hover{border-color:#ffffff26}.canvas-node.selected{border-color:var(--bg-accent);box-shadow:0 0 0 2px #6366f14d}.canvas-node.dragging{opacity:.85;z-index:100}.node-delete-btn{position:absolute;top:4px;right:4px;width:20px;height:20px;border:none;background:#ff3c3cb3;color:#fff;border-radius:50%;font-size:var(--text-base);line-height:18px;cursor:pointer;opacity:0;transition:opacity .15s;z-index:10;padding:0;display:flex;align-items:center;justify-content:center}.canvas-node:hover .node-delete-btn{opacity:1}.node-delete-btn:hover{background:#ff1e1ee6}.canvas-node[data-node-type=entity]{border-color:#00c8c833}.canvas-node[data-node-type=entity].selected{border-color:#5dd;box-shadow:0 0 0 2px #00c8c84d}.node-entity-header{display:flex;align-items:center;gap:8px;padding:10px 12px}.node-entity-icon{width:28px;height:28px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;font-size:var(--text-base);background:#00c8c826}.node-entity-name{font-size:var(--text-base);font-weight:500;color:var(--text-primary)}.node-entity-type{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:#5aa}.node-entity-desc{font-size:var(--text-xs);color:var(--text-secondary);line-height:1.5;padding:0 12px 8px}.node-entity-stats{display:flex;gap:4px;padding:0 12px 10px;flex-wrap:wrap}.node-entity-stat{font-size:var(--text-xs);padding:2px 6px;border-radius:var(--radius-xs);background:#64c8ff1a;color:#7af}.canvas-node[data-node-type=stream-card]{border-color:#ff963226}.canvas-node[data-node-type=stream-card].selected{border-color:#fa5;box-shadow:0 0 0 2px #ff96324d}.node-stream-header{display:flex;justify-content:space-between;padding:10px 12px 4px}.node-stream-type{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:#a85}.node-stream-time{font-size:var(--text-xs);color:var(--text-secondary)}.node-stream-content{font-size:var(--text-sm);line-height:1.5;padding:4px 12px 8px;color:var(--text-primary)}.node-stream-entities{display:flex;gap:4px;flex-wrap:wrap;padding:0 12px 10px}.canvas-node[data-node-type=text]{border-color:#9664ff26;min-height:80px}.canvas-node[data-node-type=text].selected{border-color:#a7f;box-shadow:0 0 0 2px #9664ff4d}.node-text-label{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:#86a;padding:10px 12px 4px}.node-text-content{font-size:var(--text-sm);line-height:1.6;padding:0 12px 10px;color:var(--text-primary);outline:none;min-height:40px}.node-text-content:focus{color:#fff}.node-text-content p,.node-stream-content p{margin:0 0 .4em}.node-text-content p:last-child,.node-stream-content p:last-child{margin-bottom:0}.node-text-content strong,.node-stream-content strong{font-weight:600;color:#fff}.node-text-content em,.node-stream-content em{font-style:italic}.node-text-content h1,.node-text-content h2,.node-text-content h3{font-size:1em;font-weight:600;margin:.3em 0;color:#fff}.node-text-content ul,.node-text-content ol{margin:.3em 0;padding-left:1.2em}.node-text-content li{margin-bottom:.15em}.node-text-content code{font-family:var(--font-mono);font-size:.9em;background:#ffffff0f;padding:1px 4px;border-radius:var(--radius-xs)}.node-text-content a{color:var(--text-accent);text-decoration:none}.canvas-node[data-node-type=image]{border-color:#64ff9626;padding:4px}.canvas-node[data-node-type=image].selected{border-color:#7f7;box-shadow:0 0 0 2px #64ff964d}.node-image-img{width:100%;border-radius:var(--radius-sm);display:block}.node-image-caption{font-size:var(--text-xs);color:var(--text-primary);padding:6px 8px 4px;outline:none}.node-image-placeholder{background:linear-gradient(135deg,#1a1a2e,#16213e,#0f3460);border-radius:var(--radius-sm);height:110px;display:flex;align-items:center;justify-content:center;font-size:var(--text-xl);opacity:.6}.canvas-node[data-node-type=tool-widget]{border-color:#ff646426}.canvas-node[data-node-type=tool-widget].selected{border-color:#f88;box-shadow:0 0 0 2px #ff64644d}.node-tool-header{display:flex;justify-content:space-between;align-items:center;padding:10px 12px 6px}.node-tool-name{font-size:var(--text-sm);font-weight:500;color:#faa}.node-tool-status{width:8px;height:8px;border-radius:50%;background:#4a4}.node-tool-output{background:#0000004d;border-radius:var(--radius-xs);padding:8px;margin:0 12px 8px;font-family:var(--font-mono);font-size:var(--text-xs);color:#aaa;line-height:1.5;max-height:120px;overflow-y:auto}.node-tool-run{display:block;margin:0 12px 10px;padding:4px 8px;background:#ff64641a;border:1px solid rgba(255,100,100,.15);border-radius:var(--radius-xs);font-size:var(--text-xs);color:#faa;text-align:center;cursor:pointer}.node-tool-run:hover{background:#ff646433}.node-resize-handle{position:absolute;right:-4px;bottom:-4px;width:12px;height:12px;cursor:nwse-resize;opacity:0;transition:opacity .15s}.canvas-node:hover .node-resize-handle{opacity:1}.node-resize-handle:after{content:"";position:absolute;right:2px;bottom:2px;width:6px;height:6px;border-right:2px solid rgba(255,255,255,.2);border-bottom:2px solid rgba(255,255,255,.2)}.rubber-band{position:fixed;border:1px solid var(--bg-accent);background:#6366f114;pointer-events:none;z-index:50}.canvas-panel{position:fixed;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);display:flex;flex-direction:column;box-shadow:0 8px 32px #0006;-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:20;min-width:280px;min-height:200px}.canvas-panel.minimized{min-height:auto;height:auto!important}.canvas-panel.minimized .panel-body{display:none}.panel-titlebar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--border);cursor:move;-webkit-user-select:none;user-select:none;flex-shrink:0}.panel-title{font-size:var(--text-base);font-weight:600;flex:1}.panel-btn{width:32px;height:32px;border-radius:var(--radius-xs);background:transparent;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);padding:6px}.panel-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.panel-body{flex:1;overflow:hidden;display:flex;flex-direction:column;min-height:0}#panel-messages:before{content:"";flex:1 1 auto}.panel-resize-handle{position:absolute;z-index:5}.panel-resize-n{top:-3px;left:8px;right:8px;height:6px;cursor:ns-resize}.panel-resize-s{bottom:-3px;left:8px;right:8px;height:6px;cursor:ns-resize}.panel-resize-e{right:-3px;top:8px;bottom:8px;width:6px;cursor:ew-resize}.panel-resize-w{left:-3px;top:8px;bottom:8px;width:6px;cursor:ew-resize}.panel-resize-ne{top:-3px;right:-3px;width:12px;height:12px;cursor:nesw-resize}.panel-resize-nw{top:-3px;left:-3px;width:12px;height:12px;cursor:nwse-resize}.panel-resize-se{bottom:-3px;right:-3px;width:12px;height:12px;cursor:nwse-resize}.panel-resize-sw{bottom:-3px;left:-3px;width:12px;height:12px;cursor:nesw-resize}.canvas-panel.maximized{border-radius:0}.canvas-panel.maximized .panel-resize-handle,.canvas-panel.minimized .panel-resize-handle{display:none}.canvas-toolbar{position:fixed;bottom:16px;left:50%;transform:translate(-50%);display:flex;gap:4px;padding:6px 10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);z-index:15}.toolbar-btn{width:32px;height:32px;border-radius:var(--radius-xs);background:transparent;border:1px solid transparent;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;transition:all .15s}.toolbar-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.toolbar-btn.active{border-color:var(--bg-accent);color:var(--text-accent)}.toolbar-btn svg{width:16px;height:16px}.toolbar-sep{width:1px;background:var(--border);margin:4px 2px}.save-status{position:fixed;top:12px;right:12px;font-size:var(--text-sm);color:var(--text-secondary);z-index:15;padding:4px 10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xs);opacity:0;transition:opacity .3s}.save-status.visible{opacity:1}.canvas-hint{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center;color:var(--text-secondary);font-size:var(--text-base);pointer-events:none;opacity:.6}.canvas-hint p{margin-top:8px;font-size:var(--text-base);line-height:1.5;max-width:340px}.canvas-empty-state{opacity:1}.canvas-empty-icon{font-size:var(--text-xl);line-height:1;margin-bottom:12px;opacity:.35;background:linear-gradient(135deg,var(--bg-accent, #6366f1),#a78bfa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.canvas-empty-state h3{font-size:var(--text-md);font-weight:500;color:var(--text-primary);margin:0 0 8px;opacity:.7}.canvas-empty-state p{color:var(--text-secondary);opacity:.55}.chat-action-trigger{position:absolute;top:2px;right:4px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border:none;background:none;color:var(--text-tertiary, var(--text-secondary));cursor:pointer;border-radius:var(--radius-xs);font-size:var(--text-base);line-height:1;opacity:.5;transition:opacity .15s}.chat-action-trigger:hover{opacity:1;background:var(--bg-surface-hover)}.chat-action-dropdown{position:absolute;top:24px;right:0;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm, 6px);box-shadow:0 4px 16px #0003;z-index:100;min-width:140px;padding:4px 0}.chat-action-dropdown button{display:flex;align-items:center;gap:6px;width:100%;padding:6px 12px;font-size:var(--text-sm);color:var(--text-primary);background:none;border:none;cursor:pointer;text-align:left}.chat-action-dropdown button:hover{background:var(--bg-surface-hover)}.chat-actions,.chat-action{display:none}.node-text-actions{display:flex;justify-content:flex-end;padding:2px 8px 6px;opacity:0;transition:opacity .15s}.canvas-node:hover .node-text-actions{opacity:1}.node-save-stream{background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-xs);color:var(--text-secondary);font-size:var(--text-xs);padding:2px 6px;cursor:pointer;display:flex;align-items:center;gap:3px}.node-save-stream:hover{background:#ff963226;color:#fa5}.node-save-stream.done{color:#4ade80;pointer-events:none}.chat-thinking{align-self:flex-start;display:flex;align-items:center;gap:8px;padding:8px 12px;font-size:var(--text-sm);color:var(--text-secondary)}.chat-thinking-dots{display:flex;gap:4px}.chat-thinking-dots span{width:6px;height:6px;border-radius:50%;background:var(--text-secondary);animation:thinking-bounce 1.4s ease-in-out infinite}.chat-thinking-dots span:nth-child(2){animation-delay:.16s}.chat-thinking-dots span:nth-child(3){animation-delay:.32s}@keyframes thinking-bounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}.chat-cursor{display:inline-block;width:2px;height:14px;background:var(--text-accent);margin-left:2px;vertical-align:text-bottom;animation:cursor-blink .8s step-end infinite}@keyframes cursor-blink{0%,to{opacity:1}50%{opacity:0}}.conv-list{border-bottom:1px solid var(--border);max-height:200px;display:flex;flex-direction:column}.conv-list-header{display:flex;align-items:center;justify-content:space-between;padding:6px 12px;border-bottom:1px solid var(--border)}.conv-list-title{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.conv-new-btn{width:22px;height:22px;border-radius:var(--radius-xs);background:#ffffff0d;border:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-base);cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}.conv-new-btn:hover{background:var(--bg-accent);color:#fff}.conv-search-input{width:100%;padding:5px 10px;font-size:var(--text-sm);border:none;border-bottom:1px solid var(--border);background:#ffffff08;color:var(--text-primary);outline:none;font-family:inherit}.conv-search-input::placeholder{color:var(--text-tertiary, var(--text-secondary))}.conv-search-input:focus{background:#ffffff0f}.conv-list-items{overflow-y:auto;flex:1}.conv-item{display:flex;flex-direction:column;padding:6px 12px;cursor:pointer;border-left:2px solid transparent;position:relative;transition:background .15s}.conv-item:hover{background:var(--bg-surface-hover)}.conv-item.active{background:#6366f11a;border-left-color:var(--bg-accent)}.conv-item-title{font-size:var(--text-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:20px}.conv-item-meta{font-size:var(--text-xs);color:var(--text-secondary);margin-top:1px}.conv-delete-btn{position:absolute;top:6px;right:8px;width:18px;height:18px;border:none;background:transparent;color:var(--text-secondary);font-size:var(--text-base);cursor:pointer;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;padding:0;opacity:0;transition:opacity .15s}.conv-item:hover .conv-delete-btn{opacity:1}.conv-delete-btn:hover{background:#ef444433;color:#f87171}.conv-empty{padding:12px;text-align:center;font-size:var(--text-sm);color:var(--text-secondary)}.canvas-node{animation:node-appear .3s cubic-bezier(.16,1,.3,1) both}@keyframes node-appear{0%{opacity:0;transform:scale(.9) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.node-image-img{animation:img-fade .4s ease both}@keyframes img-fade{0%{opacity:0}to{opacity:1}}.node-image-actions{position:absolute;bottom:4px;right:4px;display:flex;gap:4px;opacity:0;transition:opacity var(--transition)}.canvas-node:hover .node-image-actions{opacity:1}.node-image-action{font-size:var(--text-xs);padding:3px 8px;border-radius:var(--radius-xs);cursor:pointer;background:#0009;border:1px solid rgba(255,255,255,.2);color:#e2e8f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;gap:4px;transition:all var(--transition)}.node-image-action:hover{background:var(--bg-accent);border-color:var(--bg-accent)}.node-image-action.done{background:#22c55e99}@keyframes spin{to{transform:rotate(360deg)}}.canvas-node[data-node-type=widget]{background:var(--bg-surface);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;display:flex;flex-direction:column;min-width:200px;min-height:150px}.node-widget-header{display:flex;align-items:center;justify-content:space-between;padding:6px 10px;background:#ffffff0a;border-bottom:1px solid var(--border);cursor:grab;flex-shrink:0}.node-widget-title{font-size:var(--text-sm);font-weight:600;color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.node-widget-header .node-delete-btn{position:static;width:20px;height:20px;font-size:var(--text-base);line-height:20px;flex-shrink:0}.node-widget-body{flex:1;overflow:hidden;position:relative}.node-widget-iframe{width:100%;height:100%;border:none;background:transparent;display:block}.zoom-indicator{position:fixed;bottom:16px;right:16px;font-size:var(--text-sm);color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-xs);padding:4px 10px;z-index:15;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:color var(--transition),border-color var(--transition)}.zoom-indicator:hover{color:var(--text-primary);border-color:var(--text-secondary)}.minimap{position:fixed;bottom:44px;right:16px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden;z-index:15;opacity:.7;transition:opacity .2s;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.minimap:hover{opacity:1}.minimap canvas{display:block}.node-context-menu{position:fixed;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px;z-index:100;min-width:140px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}.ctx-menu-item{display:flex;align-items:center;gap:8px;padding:6px 10px;border-radius:var(--radius-xs);cursor:pointer;font-size:var(--text-sm);color:var(--text-primary);border:none;background:none;width:100%;text-align:left}.ctx-menu-item:hover{background:var(--bg-surface-hover)}.ctx-menu-colors{display:flex;gap:4px;padding:6px 10px}.ctx-color-dot{width:18px;height:18px;border-radius:50%;border:2px solid transparent;cursor:pointer;transition:border-color .15s,transform .15s}.ctx-color-dot:hover{transform:scale(1.2)}.ctx-color-dot.active{border-color:#fff}.ctx-menu-divider{height:1px;background:var(--border);margin:4px 6px}.canvas-node[data-color=red]{border-color:#ef444466!important}.canvas-node[data-color=orange]{border-color:#f9731666!important}.canvas-node[data-color=yellow]{border-color:#eab30866!important}.canvas-node[data-color=green]{border-color:#22c55e66!important}.canvas-node[data-color=blue]{border-color:#3b82f666!important}.canvas-node[data-color=purple]{border-color:#a855f766!important}.canvas-node[data-color=pink]{border-color:#ec489966!important}.canvas-node[data-color=red].selected{box-shadow:0 0 0 2px #ef44444d!important}.canvas-node[data-color=orange].selected{box-shadow:0 0 0 2px #f973164d!important}.canvas-node[data-color=yellow].selected{box-shadow:0 0 0 2px #eab3084d!important}.canvas-node[data-color=green].selected{box-shadow:0 0 0 2px #22c55e4d!important}.canvas-node[data-color=blue].selected{box-shadow:0 0 0 2px #3b82f64d!important}.canvas-node[data-color=purple].selected{box-shadow:0 0 0 2px #a855f74d!important}.canvas-node[data-color=pink].selected{box-shadow:0 0 0 2px #ec48994d!important}.canvas-group{position:absolute;border:2px dashed rgba(99,102,241,.3);border-radius:var(--radius);pointer-events:none;background:#6366f108}.canvas-group-label{position:absolute;top:-20px;left:8px;font-size:var(--text-xs);color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;pointer-events:auto;cursor:pointer}.rich-text-toolbar{display:flex;gap:2px;padding:4px 8px;border-bottom:1px solid var(--border);background:#ffffff08}.rt-btn{width:24px;height:24px;border:none;background:transparent;color:var(--text-secondary);border-radius:var(--radius-xs);cursor:pointer;font-size:var(--text-sm);display:flex;align-items:center;justify-content:center;padding:0;font-weight:400}.rt-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.rt-btn.active{color:var(--text-accent);background:#6366f11a}.node-text-content[contenteditable=true]{min-height:60px}.export-progress{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:24px 32px;z-index:200;text-align:center;box-shadow:var(--shadow)}.export-progress p{font-size:var(--text-base);color:var(--text-primary);margin-bottom:8px}.export-progress .spinner{width:24px;height:24px;border:2px solid var(--border);border-top-color:var(--bg-accent);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto}.global-search-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:200;display:flex;align-items:flex-start;justify-content:center;padding-top:15vh;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.global-search-modal{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);width:560px;max-width:90vw;box-shadow:0 16px 48px #00000080;overflow:hidden}.global-search-input-wrap{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--border)}.global-search-input-wrap svg{flex-shrink:0;color:var(--text-secondary)}.global-search-input{flex:1;background:transparent!important;border:none!important;font-size:var(--text-md);color:var(--text-primary);outline:none;padding:0!important}.global-search-input-wrap kbd{font-size:var(--text-xs);padding:2px 6px;border-radius:var(--radius-xs);background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);font-family:var(--font-mono)}.global-search-results{max-height:400px;overflow-y:auto;padding:8px}.search-hint,.search-loading{text-align:center;padding:24px;font-size:var(--text-base);color:var(--text-secondary)}.search-result-item{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:var(--radius-xs);cursor:pointer;transition:background .15s}.search-result-item:hover{background:var(--bg-surface-hover)}.search-result-icon{font-size:var(--text-md);flex-shrink:0}.search-result-body{flex:1;min-width:0}.search-result-title{font-size:var(--text-base);font-weight:500;color:var(--text-primary)}.search-result-snippet{font-size:var(--text-sm);color:var(--text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.search-result-type{font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary);flex-shrink:0}.voice-stop-btn{width:28px;height:28px;border-radius:50%;background:#ef4444cc;border:none;color:#fff;cursor:pointer;display:none;align-items:center;justify-content:center;font-size:var(--text-xs);padding:0;transition:background .15s}.voice-stop-btn:hover{background:#ef4444}.voice-stop-btn.visible{display:flex}.onboarding-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b3;z-index:300;display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.onboard-modal{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);padding:32px;width:420px;max-width:90vw;box-shadow:0 16px 64px #00000080}.onboard-progress{display:flex;justify-content:center;gap:8px;margin-bottom:24px}.onboard-dot{width:8px;height:8px;border-radius:50%;background:var(--border);transition:background .2s}.onboard-dot.active{background:var(--bg-accent)}.onboard-title{font-size:var(--text-lg);font-weight:600;text-align:center;margin-bottom:16px}.onboard-icon{font-size:var(--text-xl);text-align:center;margin-bottom:12px}.onboard-desc{text-align:center;color:var(--text-secondary);font-size:var(--text-base);line-height:1.5;margin-bottom:16px}.onboard-field{margin-bottom:16px}.onboard-field label{display:block;font-size:var(--text-sm);font-weight:500;margin-bottom:6px;color:var(--text-secondary)}.onboard-hint{font-size:var(--text-sm);color:var(--text-secondary);margin-top:4px}.onboard-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:24px}.onboard-btn-next{background:var(--bg-accent);color:#fff;border:none;border-radius:var(--radius-sm);padding:10px 24px;font-size:var(--text-base);cursor:pointer;font-weight:500}.onboard-btn-back{background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 20px;font-size:var(--text-base);cursor:pointer}.onboard-btn-back:hover{background:var(--bg-surface);color:var(--text-primary)}.task-reminder-popup{position:fixed;bottom:60px;right:16px;background:var(--bg-primary);border:1px solid var(--bg-accent);border-radius:var(--radius);padding:12px 16px;z-index:50;box-shadow:0 8px 32px #6366f133;animation:node-appear .3s cubic-bezier(.16,1,.3,1) both;max-width:300px}.task-reminder-title{font-size:var(--text-base);font-weight:500;margin-bottom:4px}.task-reminder-time{font-size:var(--text-sm);color:var(--text-secondary)}.task-reminder-actions{display:flex;gap:6px;margin-top:8px}.task-reminder-actions button{font-size:var(--text-sm);padding:4px 10px;border-radius:var(--radius-xs);background:var(--bg-surface);border:1px solid var(--border);color:var(--text-primary);cursor:pointer}.task-reminder-actions button:hover{background:var(--bg-surface-hover)}.task-reminder-actions button.primary{background:var(--bg-accent);border-color:var(--bg-accent);color:#fff}.confirm-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20000;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.confirm-overlay.visible{opacity:1}.confirm-overlay.closing{opacity:0}.confirm-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;min-width:320px;max-width:420px;box-shadow:0 20px 60px #0006;transform:scale(.95);transition:transform .2s ease}.confirm-overlay.visible .confirm-dialog{transform:scale(1)}.confirm-title{font-size:var(--text-md);font-weight:600;color:var(--text-primary);margin-bottom:8px}.confirm-message{font-size:var(--text-base);color:var(--text-secondary);margin-bottom:20px;line-height:1.5}.confirm-actions{display:flex;gap:8px;justify-content:flex-end}.confirm-cancel{padding:6px 16px;font-size:var(--text-base);border-radius:var(--radius-sm);background:var(--bg-surface-hover);color:var(--text-primary);border:1px solid var(--border);cursor:pointer}.confirm-ok{padding:6px 16px;font-size:var(--text-base);border-radius:var(--radius-sm);background:var(--bg-accent);color:#fff;border:none;cursor:pointer}.confirm-ok.danger{background:#ef4444}.confirm-cancel:hover{background:var(--border)}.confirm-ok:hover{opacity:.9}.shortcuts-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:19000;background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease}.shortcuts-overlay.visible{opacity:1}.shortcuts-overlay.closing{opacity:0}.shortcuts-dialog{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:400px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0006;transform:scale(.95);transition:transform .2s ease}.shortcuts-overlay.visible .shortcuts-dialog{transform:scale(1)}.shortcuts-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;border-bottom:1px solid var(--border);font-size:var(--text-md);font-weight:600;color:var(--text-primary)}.shortcuts-close{background:none;border:none;color:var(--text-secondary);font-size:var(--text-lg);cursor:pointer;padding:0 4px}.shortcuts-body{padding:12px 20px}.shortcuts-row{display:flex;align-items:center;gap:12px;padding:6px 0}.shortcuts-key{min-width:120px;text-align:right;background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-xs);padding:2px 8px;font-size:var(--text-sm);font-family:var(--font-mono);color:var(--text-primary)}.shortcuts-desc{font-size:var(--text-base);color:var(--text-secondary)}.shortcuts-sep{height:1px;background:var(--border);margin:6px 0}.splash-screen{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50000;background:var(--bg-base);display:flex;flex-direction:column;align-items:center;justify-content:center;transition:opacity .5s ease}.splash-screen.fade-out{opacity:0;pointer-events:none}.splash-logo{width:80px;height:80px;margin-bottom:16px;animation:splash-pulse 1.5s ease-in-out infinite}.splash-title{font-size:var(--text-lg);font-weight:700;color:var(--text-primary);letter-spacing:2px}.splash-sub{font-size:var(--text-base);color:var(--text-secondary);margin-top:4px}.splash-loader{margin-top:24px;width:120px;height:2px;background:var(--border);border-radius:var(--radius-xs);overflow:hidden}.splash-loader-bar{height:100%;width:40%;background:var(--bg-accent);border-radius:var(--radius-xs);animation:splash-load 1.2s ease-in-out infinite}@keyframes splash-pulse{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}@keyframes splash-load{0%{transform:translate(-100%)}to{transform:translate(350%)}}.voice-playback-bar{display:none;align-items:center;gap:8px;padding:4px 8px;background:var(--bg-surface-hover);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary)}.voice-playback-bar.visible{display:flex}.voice-play-pause{background:none;border:none;color:var(--text-primary);cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center;padding:0}.voice-progress{flex:1;height:3px;background:var(--border);border-radius:var(--radius-xs);overflow:hidden;cursor:pointer}.voice-progress-fill{height:100%;background:var(--bg-accent);border-radius:var(--radius-xs);width:0%;transition:width .1s linear}.voice-time{font-family:var(--font-mono);font-size:var(--text-xs);min-width:32px;text-align:right}.voice-live-indicator{display:none;align-items:center;gap:6px;padding:6px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm);font-size:var(--text-sm);color:var(--text-secondary);position:absolute;bottom:100%;left:0;right:0;margin-bottom:4px}.voice-live-indicator.visible{display:flex}.voice-live-dot{width:8px;height:8px;border-radius:50%;background:#ef4444;animation:live-pulse 1s ease-in-out infinite}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.3}}.chat-msg-action-btn[data-action=branch]{color:var(--text-secondary)}.conv-item-branch{font-size:var(--text-xs);color:var(--bg-accent);margin-left:4px}.user-list{display:flex;flex-direction:column;gap:4px}.user-item{display:flex;align-items:center;gap:8px;padding:6px 8px;background:var(--bg-surface-hover);border-radius:var(--radius-sm);font-size:var(--text-base)}.user-item-name{flex:1;color:var(--text-primary)}.user-item-role{font-size:var(--text-sm);color:var(--text-secondary);background:var(--bg-surface);padding:2px 6px;border-radius:var(--radius-xs)}.user-item-delete{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:var(--text-base);padding:0 4px}.user-item-delete:hover{color:#ef4444}.user-add-form{display:flex;gap:6px;margin-top:8px}.user-add-form input{flex:1;font-size:var(--text-sm);padding:4px 8px}.user-add-form button{font-size:var(--text-sm);padding:4px 10px}.settings-export-btns{display:flex;gap:8px;margin-top:4px}.settings-export-btns button{flex:1;padding:6px 12px;font-size:var(--text-sm);border-radius:var(--radius-sm);cursor:pointer}.btn-export,.btn-import{background:var(--bg-surface-hover);color:var(--text-primary);border:1px solid var(--border)}.btn-export:hover,.btn-import:hover{background:var(--border)}.stream-entry-image{max-width:100%;border-radius:var(--radius-xs);margin-bottom:6px;cursor:pointer;transition:opacity .2s}.stream-entry-image:hover{opacity:.85}.stream-entry-actions{display:flex;gap:6px;margin-top:4px;opacity:0;transition:opacity .15s}.stream-entry:hover .stream-entry-actions{opacity:1}.stream-pin-btn{background:none;border:1px solid var(--border);color:var(--text-secondary);font-size:var(--text-sm);padding:2px 8px;border-radius:var(--radius-xs);cursor:pointer;display:flex;align-items:center;gap:3px;transition:all .15s}.stream-pin-btn:hover{background:var(--bg-accent, rgba(99,102,241,.15));color:var(--accent);border-color:var(--accent)}.stream-pin-btn svg{flex-shrink:0}.canvas-node.edge-source{outline:2px solid var(--accent, #6366f1)!important;outline-offset:2px;animation:edge-pulse .8s ease infinite alternate}@keyframes edge-pulse{0%{outline-color:var(--accent, #6366f1)}to{outline-color:#6366f14d}}.tour-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;pointer-events:auto}.tour-overlay-bg{position:absolute;top:0;right:0;bottom:0;left:0;background:#0009}.tour-spotlight{position:absolute;border-radius:var(--radius-sm);box-shadow:0 0 0 4px #818cf866;pointer-events:none;transition:all .3s ease}.tour-bubble{position:absolute;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md, 12px);padding:16px 20px;max-width:320px;box-shadow:0 8px 32px #0000004d;z-index:10001;color:var(--text-primary);font-size:var(--text-base);line-height:1.5}.tour-bubble[role=dialog]{outline:none}.tour-bubble-title{font-weight:600;font-size:var(--text-base);margin-bottom:8px;color:var(--text-primary)}.tour-bubble-text{color:var(--text-secondary);margin-bottom:16px}.tour-bubble-actions{display:flex;justify-content:space-between;align-items:center}.tour-bubble-next{padding:6px 16px;font-size:var(--text-base);background:var(--bg-accent);color:#fff;border:none;border-radius:var(--radius-sm, 6px);cursor:pointer}.tour-bubble-next:hover{opacity:.9}.tour-bubble-skip{font-size:var(--text-sm);color:var(--text-tertiary, var(--text-secondary));cursor:pointer;border:none;background:none;text-decoration:underline}.tour-bubble-skip:hover{color:var(--text-secondary)}.tour-step-dots{display:flex;gap:4px;justify-content:center;margin-bottom:12px}.tour-step-dot{width:6px;height:6px;border-radius:50%;background:var(--border)}.tour-step-dot.active{background:var(--bg-accent)}.tour-start-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:flex;align-items:center;justify-content:center;background:#00000080}.tour-start-box{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-md, 12px);padding:32px;text-align:center;max-width:360px;box-shadow:0 8px 32px #0000004d}.tour-start-box h2{font-size:var(--text-md);margin-bottom:8px;color:var(--text-primary)}.tour-start-box p{font-size:var(--text-base);color:var(--text-secondary);margin-bottom:20px}.tour-start-actions{display:flex;gap:8px;justify-content:center}.tour-start-go{padding:8px 20px;font-size:var(--text-base);background:var(--bg-accent);color:#fff;border:none;border-radius:var(--radius-sm, 6px);cursor:pointer}.tour-start-later{padding:8px 20px;font-size:var(--text-base);background:var(--bg-surface-hover);color:var(--text-primary);border:1px solid var(--border);border-radius:var(--radius-sm, 6px);cursor:pointer}.chat-prompt-chips{display:flex;flex-direction:column;gap:8px;padding:24px 16px;align-items:center;justify-content:center;flex:1}.chat-prompt-chips p{font-size:var(--text-sm);color:var(--text-tertiary, var(--text-secondary));margin-bottom:4px}.chat-prompt-chip{display:block;width:100%;padding:10px 14px;font-size:var(--text-sm);color:var(--text-secondary);background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-sm, 6px);cursor:pointer;text-align:left;transition:border-color .15s,color .15s}.chat-prompt-chip:hover{border-color:var(--bg-accent);color:var(--text-primary)}.canvas-hint-shortcuts{display:flex;gap:16px;justify-content:center;margin-top:8px;font-size:var(--text-sm);color:var(--text-tertiary, var(--text-secondary))}.canvas-hint-shortcuts kbd{display:inline-block;padding:1px 5px;font-size:var(--text-xs);font-family:inherit;background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-xs);margin-right:3px}.tasks-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;z-index:200;display:flex;align-items:flex-start;justify-content:center;padding-top:12vh;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:tasks-fade-in .15s ease}@keyframes tasks-fade-in{0%{opacity:0}to{opacity:1}}.tasks-modal{background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);width:520px;max-width:92vw;box-shadow:0 16px 48px #00000080;overflow:hidden;display:flex;flex-direction:column;max-height:70vh}.tasks-header{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}.tasks-title{font-size:var(--text-md);font-weight:600;color:var(--text-primary);margin:0;white-space:nowrap}.tasks-filter-group{display:flex;gap:4px;flex:1}.tasks-filter-btn{font-size:var(--text-sm);padding:4px 10px;border-radius:var(--radius);cursor:pointer;background:var(--bg-surface-hover);border:1px solid var(--border);color:var(--text-secondary);transition:all .15s}.tasks-filter-btn:hover{border-color:var(--text-secondary)}.tasks-filter-btn.active{background:var(--bg-accent);color:#fff;border-color:var(--bg-accent)}.tasks-close-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:var(--text-lg);line-height:1;padding:0 4px;margin-left:auto;transition:color .15s}.tasks-close-btn:hover{color:var(--text-primary)}.tasks-list{overflow-y:auto;padding:8px;flex:1}.tasks-loading,.tasks-empty{text-align:center;padding:32px 16px;font-size:var(--text-base);color:var(--text-secondary)}.task-item{display:flex;align-items:flex-start;gap:10px;padding:10px;border-radius:var(--radius-sm);cursor:default;transition:background .15s}.task-item:hover{background:var(--bg-surface-hover)}.task-item+.task-item{border-top:1px solid var(--border-subtle, rgba(255,255,255,.04))}.task-item.completed .task-title{text-decoration:line-through;color:var(--text-secondary)}.task-item.completed .task-desc{color:var(--text-secondary);opacity:.6}.task-item.overdue .task-due{color:#ef4444}.task-check{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:2px;flex-shrink:0;display:flex;align-items:center;justify-content:center;transition:color .15s}.task-check:hover,.task-item.completed .task-check{color:var(--bg-accent)}.task-body{flex:1;min-width:0}.task-title{font-size:var(--text-base);font-weight:500;color:var(--text-primary);line-height:1.3}.task-desc{font-size:var(--text-sm);color:var(--text-secondary);margin-top:2px;line-height:1.4}.task-meta{font-size:var(--text-sm);color:var(--text-secondary);margin-top:4px;display:flex;align-items:center;gap:4px}.task-due.overdue{color:#ef4444;font-weight:500}.task-delete{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;opacity:0;transition:all .15s;flex-shrink:0;display:flex;align-items:center;justify-content:center}.task-item:hover .task-delete{opacity:1}.task-delete:hover{color:#ef4444}.stream-filter-count{background:#ffffff1a;border-radius:var(--radius-sm);padding:1px 6px;font-size:var(--text-sm);margin-left:4px}.minimap-toggle{position:absolute;top:4px;right:4px;width:18px;height:18px;border-radius:var(--radius-xs);background:#0006;border:none;color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-sm);line-height:1;opacity:0;transition:opacity .15s;z-index:2}.minimap:hover .minimap-toggle{opacity:1}.minimap-toggle:hover{color:var(--text-primary);background:#0009}.minimap-collapsed{position:fixed;bottom:44px;right:16px;width:28px;height:28px;border-radius:var(--radius-xs);background:var(--bg-surface);border:1px solid var(--border);cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:var(--text-base);color:var(--text-secondary);z-index:15;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:all .15s}.minimap-collapsed:hover{color:var(--text-primary);border-color:var(--text-secondary)}@media(max-width:768px){.canvas-toolbar{display:none!important}.canvas-panel{position:fixed!important;top:0!important;left:0!important;width:100vw!important;height:calc(100dvh - 56px - env(safe-area-inset-bottom,0px))!important;border-radius:0!important;z-index:100!important;max-width:none!important;max-height:none!important}.canvas-panel.maximized{height:calc(100dvh - 56px - env(safe-area-inset-bottom,0px))!important}.panel-titlebar,.panel-resize-handle{display:none!important}.panel-body{height:100%!important;max-height:100%!important;border-radius:0!important}.canvas-panel{display:none!important}.canvas-panel.mobile-active{display:flex!important}#canvas-world{z-index:0}.chat-input-area input,.chat-input-area textarea{font-size:var(--text-md)!important}.minimap,.minimap-collapsed,.canvas-hint,.save-status,.zoom-indicator{display:none!important}#panel-conv-list{max-height:44px;overflow:hidden;transition:max-height .25s ease;border-bottom:1px solid rgba(255,255,255,.08);flex-shrink:0}#panel-conv-list.conv-list-expanded{max-height:55vh;overflow-y:auto}#panel-send-btn{min-height:44px!important;min-width:60px!important;padding:8px 14px!important;border-radius:var(--radius-sm)!important;font-size:14px!important;font-weight:500!important;background:#6366f1cc!important;color:#fff!important}.chat-attach-btn{min-width:44px!important;min-height:44px!important;display:flex!important;align-items:center!important;justify-content:center!important}.conv-item{min-height:44px!important}.conv-group-btn,.conv-group-toggle{min-height:40px!important}.canvas-empty-state{font-size:var(--text-sm)!important}}.mobile-tab-bar{position:fixed;bottom:0;left:0;right:0;height:56px;background:#0f0f19f2;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);display:none;justify-content:space-around;align-items:center;border-top:1px solid rgba(255,255,255,.1);z-index:200;padding-bottom:env(safe-area-inset-bottom)}.mobile-tab{display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 12px;color:#ffffff73;font-size:var(--text-xs);background:none;border:none;cursor:pointer;transition:color .15s;-webkit-tap-highlight-color:transparent}.mobile-tab.active{color:#818cf8}.mobile-tab svg{width:22px;height:22px;pointer-events:none}.mobile-tab svg *{pointer-events:none}.mobile-tab-label{font-size:var(--text-xs);line-height:1}@media(max-width:768px){.mobile-tab-bar{display:flex}}@media(min-width:769px){.mobile-tab-bar{display:none!important}}.mobile-canvas-fab{position:fixed;bottom:66px;right:12px;display:none;flex-direction:column;gap:8px;z-index:150;padding-bottom:env(safe-area-inset-bottom)}@media(max-width:768px){.mobile-canvas-fab.visible{display:flex}}.mobile-canvas-fab button{width:44px;height:44px;border-radius:50%;background:#1e1e32e6;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.12);color:#c7d2fe;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .15s,transform .1s;box-shadow:0 2px 12px #0000004d}.mobile-canvas-fab button:active{transform:scale(.92);background:#6366f14d}.mobile-canvas-fab button svg{width:20px;height:20px;pointer-events:none}.conv-list-toggle{display:none;width:100%;padding:10px 12px;background:none;border:none;color:var(--text-secondary);font-size:12px;cursor:pointer;text-align:left;-webkit-tap-highlight-color:transparent}.conv-list-toggle svg{vertical-align:middle;margin-right:4px;transition:transform .2s}.conv-list-expanded .conv-list-toggle svg{transform:rotate(180deg)}@media(max-width:768px){.conv-list-toggle{display:flex;align-items:center;gap:6px;min-height:44px}}.skeleton{background:linear-gradient(90deg,#ffffff0a 25%,#ffffff14,#ffffff0a 75%);background-size:200% 100%;animation:skeleton-pulse 1.5s ease-in-out infinite;border-radius:var(--radius-sm)}@keyframes skeleton-pulse{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-line{height:12px;margin-bottom:8px;width:80%}.skeleton-line.short{width:50%}.skeleton-line.full{width:100%}.skeleton-msg{padding:0;height:40px;margin-bottom:10px}.skeleton-msg-short{width:60%}.skeleton-msg-long{width:85%}.skeleton-card{height:80px;margin-bottom:12px;border-radius:var(--radius, 8px)}.skeleton-result{height:56px;margin-bottom:8px;border-radius:var(--radius-sm, 6px)}.conv-date-separator{font-size:var(--text-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-tertiary, var(--text-secondary));padding:8px 8px 4px;margin-top:4px}.conv-clear-all{padding:8px;margin-top:8px;border-top:1px solid var(--border)}.conv-clear-all-btn{width:100%;padding:6px 12px;font-size:var(--text-sm);color:var(--text-secondary);background:none;border:1px solid var(--border);border-radius:var(--radius-sm, 6px);cursor:pointer;transition:all .15s}.conv-clear-all-btn:hover{color:#ef4444;border-color:#ef4444;background:#ef444414}.canvas-panel textarea,#panel-chat-form textarea,#panel-chat-form input[type=text]{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:#ffffff0d;border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);color:var(--text-primary, #e2e8f0);font-family:inherit;font-size:var(--text-base);padding:8px 12px;resize:none;outline:none;transition:border-color .15s ease}.canvas-panel textarea:focus,#panel-chat-form textarea:focus,#panel-chat-form input[type=text]:focus{border-color:#6366f180}.chat-msg-wrapper{display:flex;position:relative;margin-bottom:4px}.chat-msg-wrapper[data-role=user]{justify-content:flex-end}.chat-msg-wrapper[data-role=user] .chat-msg{max-width:72%;background:#6366f126;border-radius:var(--radius) var(--radius) var(--radius-xs) var(--radius);padding:6px 10px;font-size:var(--text-base)}.chat-msg-wrapper[data-role=assistant]{justify-content:flex-start}.chat-msg-wrapper[data-role=assistant] .chat-msg{max-width:680px;background:#ffffff0d;border:1px solid var(--border);border-radius:var(--radius) var(--radius) var(--radius) var(--radius-xs);padding:6px 10px;font-size:var(--text-base)}button:active:not(:disabled):not(.panel-btn):not(.chat-action-trigger):not(.node-delete-btn):not(.mobile-tab),.btn:active:not(:disabled){transform:scale(.97);transition:transform .1s ease}.panel-btn:active{transform:none;opacity:.6}.conv-item:active{transform:scale(.99);transition:background .15s,transform .1s ease}.stream-entry img,.stream-entry-content img{max-height:220px;width:100%;object-fit:cover;border-radius:var(--radius-sm)}.search-input-wrap{position:relative;width:100%}.search-input-wrap .search-icon{position:absolute;left:10px;top:50%;transform:translateY(-50%);width:14px;height:14px;color:#ffffff4d;pointer-events:none}.search-input{width:100%;height:32px;padding:6px 10px 6px 32px;border-radius:var(--radius-sm);border:1px solid rgba(255,255,255,.1);background:#ffffff0d;font-size:var(--text-base);color:var(--text-primary);outline:none;font-family:inherit;box-sizing:border-box;transition:border-color .15s ease}.search-input:focus{border-color:#6366f180}.search-input::placeholder{color:#ffffff4d}.conv-search-input.search-input{border:1px solid rgba(255,255,255,.1);border-radius:var(--radius-sm);border-bottom:none}.aurora-avatar{flex-shrink:0;width:28px;height:28px;margin-right:8px;margin-top:2px}.aurora-avatar-orb{width:28px;height:28px;border-radius:50%;position:relative;overflow:hidden;background:#1a1025}.aurora-avatar-orb:before,.aurora-avatar-orb:after{content:"";position:absolute;top:-50%;right:-50%;bottom:-50%;left:-50%;border-radius:50%}.aurora-avatar-orb:before{background:conic-gradient(from 0deg,transparent 0%,rgba(99,102,241,.6) 15%,transparent 30%,rgba(139,92,246,.5) 45%,transparent 60%,rgba(167,139,250,.4) 75%,transparent 90%);animation:aurora-rotate 4s linear infinite}.aurora-avatar-orb:after{background:conic-gradient(from 180deg,transparent 0%,rgba(56,189,248,.3) 20%,transparent 40%,rgba(99,102,241,.4) 60%,transparent 80%);animation:aurora-rotate 6s linear infinite reverse;filter:blur(3px)}@keyframes aurora-rotate{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.aurora-avatar-inner{position:absolute;top:4px;right:4px;bottom:4px;left:4px;border-radius:50%;background:radial-gradient(circle,#8b5cf64d,#0f0f19cc 70%);z-index:1}.aurora-avatar-orb.thinking:before{animation-duration:1.5s}.aurora-avatar-orb.thinking:after{animation-duration:2s}.panel-btn svg{width:14px;height:14px}.panel-close:hover{color:#f87171}.conv-group-toggle{display:flex;gap:2px;padding:4px 12px;margin-bottom:0;border-bottom:1px solid var(--border)}.conv-group-btn{font-size:var(--text-xs);padding:2px 8px;border-radius:var(--radius-xs);border:none;background:transparent;color:#fff6;cursor:pointer;font-family:inherit;transition:all .15s ease}.conv-group-btn:hover{color:#fff9}.conv-group-btn.active{background:#6366f126;color:#6366f1e6}.conv-topic-header{display:flex;align-items:center;gap:6px;padding:6px 12px;font-size:var(--text-sm);font-weight:600;color:#ffffff80;cursor:pointer;-webkit-user-select:none;user-select:none;transition:color .15s ease}.conv-topic-header:hover{color:#ffffffb3}.conv-topic-header .conv-topic-count{font-size:var(--text-xs);font-weight:400;color:#ffffff4d;margin-left:auto}.conv-topic-header .conv-topic-chevron{transition:transform .15s ease;display:flex;align-items:center}.conv-topic-header .conv-topic-chevron svg{transition:transform .15s ease}.conv-topic-header.collapsed .conv-topic-chevron svg{transform:rotate(-90deg)}.conv-topic-group.collapsed .conv-item{display:none}.canvas-connection{stroke:#6366f126;stroke-width:1.5;fill:none;pointer-events:none;transition:stroke .2s ease}.canvas-connection:hover{stroke:#6366f166;pointer-events:auto}.edge-group path[data-edge-id^=impl-]{pointer-events:auto}.edge-group path[data-edge-id^=impl-]:hover{stroke:#6366f166!important;stroke-width:2!important}.lightbox-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;background:#000000d9;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .2s ease;cursor:zoom-out}.lightbox-img{max-width:92vw;max-height:90vh;border-radius:var(--radius-sm);object-fit:contain;box-shadow:0 8px 40px #00000080;cursor:default;animation:lightbox-in .25s ease-out}@keyframes lightbox-in{0%{transform:scale(.92);opacity:0}to{transform:scale(1);opacity:1}}.lightbox-hint{position:absolute;bottom:24px;left:50%;transform:translate(-50%);color:#ffffff80;font-size:13px;letter-spacing:.3px;pointer-events:auto;cursor:pointer;transition:opacity .6s ease}.lightbox-hint.fade{opacity:0;pointer-events:none}.lightbox-img{cursor:pointer}.node-image-img,.stream-entry-image{cursor:default}.voice-btn{position:relative;width:34px;height:34px;border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all var(--transition);flex-shrink:0;padding:0}.voice-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.voice-btn svg{width:20px;height:20px;transition:color var(--transition)}.voice-btn[data-state=listening]{border-color:#3b82f6;color:#3b82f6;box-shadow:0 0 0 2px #3b82f633}.voice-btn[data-state=processing]{border-color:#eab308;color:#eab308;box-shadow:0 0 0 2px #eab30833}.voice-btn[data-state=speaking]{border-color:#22c55e;color:#22c55e;box-shadow:0 0 0 2px #22c55e33}.voice-btn[data-state=listening]:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:var(--radius-sm);border:2px solid #3b82f6;animation:voice-pulse 2s ease-in-out infinite;pointer-events:none}@keyframes voice-pulse{0%,to{opacity:0;transform:scale(1)}50%{opacity:.4;transform:scale(1.05)}}.voice-mode-btn{height:32px;padding:0 6px;border-radius:var(--radius-sm);background:var(--bg-surface);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;font-size:var(--text-xs);font-family:var(--font-mono);font-weight:500;letter-spacing:.02em;text-transform:uppercase;transition:all var(--transition);flex-shrink:0;-webkit-user-select:none;user-select:none;min-width:0;white-space:nowrap}.voice-mode-btn:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.voice-status{display:none;align-items:center;gap:8px;padding:0 12px;font-size:var(--text-base);color:var(--text-secondary)}.voice-status.visible{display:flex}.voice-orb{width:10px;height:10px;border-radius:50%;background:var(--text-secondary);transition:background .3s ease;flex-shrink:0}.voice-orb[data-state=listening]{background:#3b82f6;animation:orb-pulse 1.5s ease-in-out infinite}.voice-orb[data-state=processing]{background:#eab308;animation:orb-spin 1s linear infinite}.voice-orb[data-state=speaking]{background:#22c55e;animation:orb-breathe 1s ease-in-out infinite}@keyframes orb-pulse{0%,to{box-shadow:0 0 #3b82f666}50%{box-shadow:0 0 0 6px #3b82f600}}@keyframes orb-spin{0%{box-shadow:2px 0 #eab30899}25%{box-shadow:0 2px #eab30899}50%{box-shadow:-2px 0 #eab30899}75%{box-shadow:0 -2px #eab30899}to{box-shadow:2px 0 #eab30899}}@keyframes orb-breathe{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.3);opacity:.7}}.voice-waveform{display:none;align-items:flex-end;gap:2px;height:32px;padding:0 4px;flex-shrink:0}.voice-waveform.active{display:flex}.voice-waveform-bar{width:3px;min-height:3px;background:#3b82f6;border-radius:var(--radius-xs);transition:height 60ms ease-out;will-change:height}.voice-waveform.idle .voice-waveform-bar{animation:bar-idle 2s ease-in-out infinite}.voice-waveform.idle .voice-waveform-bar:nth-child(2n){animation-delay:.15s}.voice-waveform.idle .voice-waveform-bar:nth-child(3n){animation-delay:.3s}@keyframes bar-idle{0%,to{height:3px}50%{height:6px}}.voice-transcript{display:none;padding:8px 12px;margin:0 1rem;margin-bottom:-4px;background:var(--bg-surface);border:1px solid var(--border);border-bottom:none;border-radius:var(--radius-sm) var(--radius-sm) 0 0;font-size:var(--text-base);color:var(--text-secondary);font-style:italic;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.voice-transcript.visible{display:block}.voice-transcript .transcript-label{font-size:var(--text-sm);text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);opacity:.7;margin-bottom:2px;font-style:normal}.voice-transcript .transcript-text{color:var(--text-primary);font-style:normal}.voice-controls{display:flex;align-items:center;gap:3px;flex-shrink:0}.voice-btn.ptt-active{background:#3b82f626!important;border-color:#3b82f6!important;color:#3b82f6!important;transform:scale(.95)}.voice-btn:disabled{opacity:.35;cursor:not-allowed;pointer-events:none}.voice-btn:disabled:after{display:none}.voice-message-indicator{display:inline-flex;align-items:center;gap:4px;font-size:var(--text-sm);color:var(--text-secondary);opacity:.7;margin-top:4px}.voice-message-indicator svg{width:12px;height:12px}.settings-panel{display:flex;flex-direction:column;gap:4px;padding:12px;overflow-y:auto}.settings-section{margin-bottom:8px;padding-bottom:12px;border-bottom:1px solid var(--border)}.settings-section:last-child{border-bottom:none;padding-bottom:0}.settings-section-title{margin-top:20px;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid rgba(255,255,255,.07);font-size:var(--text-sm);font-weight:700;letter-spacing:.5px;text-transform:uppercase;color:#94a3b8cc}.settings-section-title:first-child{margin-top:0}.settings-field{margin-bottom:10px}.settings-field label{display:block;font-size:var(--text-sm);color:var(--text-secondary);margin-bottom:4px}.settings-field select,.settings-field input[type=text],.settings-field input[type=password]{width:100%;font-size:var(--text-base);padding:6px 8px;background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-primary)}.settings-field select{cursor:pointer}.settings-range-wrap{display:flex;align-items:center;gap:8px}.settings-range-wrap input[type=range]{flex:1;accent-color:var(--bg-accent)}.settings-range-wrap span{font-size:var(--text-sm);min-width:24px;text-align:right;color:var(--text-secondary)}.settings-url-wrap{display:flex;gap:6px;align-items:center}.settings-url-wrap input{flex:1;min-width:0}.btn-toggle-url{flex-shrink:0;font-size:var(--text-sm);padding:6px 10px;background:var(--bg-surface-hover);border:1px solid var(--border);border-radius:var(--radius-sm);color:var(--text-secondary);cursor:pointer;transition:all var(--transition);white-space:nowrap}.btn-toggle-url:hover{color:var(--text-primary);border-color:var(--text-secondary)}.settings-checkbox{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:var(--text-base);color:var(--text-primary)}.settings-checkbox input[type=checkbox]{width:auto;accent-color:var(--bg-accent)}.settings-about{font-size:var(--text-base);color:var(--text-secondary)}.settings-about-sub{font-size:var(--text-sm);margin-top:2px}.settings-loading{padding:12px;display:flex;flex-direction:column;gap:12px}.theme-toggle-group{display:flex;gap:6px}.theme-btn{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:8px 12px;font-size:var(--text-sm);border-radius:var(--radius-sm);background:var(--bg-surface-hover);border:1px solid var(--border);color:var(--text-secondary);cursor:pointer;transition:all var(--transition)}.theme-btn:hover{border-color:var(--text-secondary)}.theme-btn.active{background:var(--bg-accent);color:#fff;border-color:var(--bg-accent)}.theme-btn svg{flex-shrink:0}.memory-list{display:flex;flex-direction:column;gap:4px;max-height:200px;overflow-y:auto}.memory-item{display:flex;align-items:flex-start;gap:6px;font-size:var(--text-sm);padding:4px 6px;border-radius:var(--radius-xs)}.memory-item:hover{background:var(--bg-surface-hover)}.memory-category{font-size:var(--text-xs);text-transform:uppercase;color:var(--text-accent);padding:1px 4px;background:#6366f11a;border-radius:var(--radius-xs);white-space:nowrap;margin-top:1px}.memory-content{flex:1;color:var(--text-primary);line-height:1.4}.memory-delete{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:var(--text-base);padding:0 2px;opacity:0;transition:opacity var(--transition)}.memory-item:hover .memory-delete{opacity:1}.memory-delete:hover{color:#ef4444}.memory-empty{font-size:var(--text-sm);color:var(--text-secondary);font-style:italic}.stream-filters{padding:8px 12px;border-bottom:1px solid var(--border);display:flex;flex-direction:column;gap:6px}.stream-filter-row{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.stream-filter-row .search-input-wrap{flex:1;min-width:120px}.stream-search-input.search-input{font-size:var(--text-base)}.stream-type-btn{font-size:var(--text-sm);padding:3px 8px;border-radius:var(--radius);cursor:pointer;background:var(--bg-surface-hover);border:1px solid var(--border);color:var(--text-secondary);transition:all var(--transition)}.stream-type-btn:hover{border-color:var(--text-secondary)}.stream-type-btn.active{background:var(--bg-accent);color:#fff;border-color:var(--bg-accent)}.stream-entity-dropdown{position:relative}.stream-entity-trigger{display:flex;align-items:center;gap:4px;font-size:var(--text-sm);padding:3px 8px;border-radius:var(--radius);cursor:pointer;background:var(--bg-surface-hover);border:1px solid var(--border);color:var(--text-secondary);transition:all var(--transition);white-space:nowrap}.stream-entity-trigger:hover{border-color:var(--text-secondary)}.stream-entity-trigger.open{border-color:var(--bg-accent);color:var(--text-primary)}.stream-entity-trigger svg{flex-shrink:0;transition:transform .15s ease}.stream-entity-trigger.open svg{transform:rotate(180deg)}.stream-entity-trigger-text{max-width:120px;overflow:hidden;text-overflow:ellipsis}.stream-entity-menu{position:absolute;top:calc(100% + 4px);left:0;min-width:160px;max-width:220px;max-height:200px;overflow-y:auto;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:0 8px 24px #0006;z-index:50;display:none;flex-direction:column;padding:4px 0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.stream-entity-menu.open{display:flex}.stream-entity-option{padding:5px 10px;font-size:var(--text-sm);color:var(--text-secondary);cursor:pointer;transition:all .1s;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stream-entity-option:hover{background:var(--bg-surface-hover);color:var(--text-primary)}.stream-entity-option.active{color:var(--bg-accent);font-weight:600}.skeleton{background:linear-gradient(90deg,var(--bg-surface-hover) 25%,var(--bg-surface) 50%,var(--bg-surface-hover) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s ease-in-out infinite;border-radius:var(--radius-xs)}.skeleton-line{height:14px;margin-bottom:8px}.skeleton-circle{width:32px;height:32px;border-radius:50%}.skeleton-block{height:60px;margin-bottom:8px}.skeleton-msg{padding:10px;border-radius:var(--radius-sm);margin-bottom:6px}.skeleton-msg-short{width:60%;height:32px}.skeleton-msg-long{width:85%;height:48px}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.chat-attach-btn{background:none;border:none;color:var(--text-secondary);cursor:pointer;padding:4px;display:flex;align-items:center;transition:color var(--transition)}.chat-attach-btn:hover{color:var(--text-primary)}.chat-attach-preview{padding:4px 8px;border-top:1px solid var(--border);display:flex;align-items:center;gap:8px}.chat-attach-preview img{max-height:60px;max-width:120px;border-radius:var(--radius-xs);object-fit:cover}.chat-attach-preview .attach-name{font-size:var(--text-sm);color:var(--text-secondary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-attach-remove{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:var(--text-md);padding:0 4px}.chat-attach-remove:hover{color:#ef4444}.chat-msg-actions{display:none!important}.chat-msg-action-btn{display:none}.chat-msg pre{background:#0000004d;padding:12px;border-radius:var(--radius-sm);overflow-x:auto;margin:8px 0}.chat-msg code{font-family:var(--font-mono);font-size:var(--text-sm)}.chat-msg :not(pre)>code{background:#ffffff1a;padding:2px 6px;border-radius:var(--radius-xs);font-size:var(--text-sm)}.chat-msg h1,.chat-msg h2,.chat-msg h3{margin:8px 0 4px;font-size:var(--text-base);font-weight:600;color:var(--text-primary)}.chat-msg h1,.chat-msg h2{font-size:var(--text-md)}.chat-msg ul,.chat-msg ol{margin:4px 0;padding-left:20px}.chat-msg li{margin:2px 0;line-height:1.5}.chat-msg p{margin:4px 0;line-height:1.5}.chat-msg>:first-child{margin-top:0}.chat-msg>:last-child{margin-bottom:0}.chat-msg blockquote{border-left:3px solid var(--bg-accent);padding-left:10px;margin:4px 0;color:var(--text-secondary)}.chat-msg a{color:var(--text-accent);text-decoration:none}.chat-msg a:hover{text-decoration:underline}.chat-msg table{border-collapse:collapse;margin:8px 0;font-size:var(--text-sm);width:100%}.chat-msg th,.chat-msg td{border:1px solid var(--border);padding:4px 8px;text-align:left}.chat-msg th{background:#ffffff0d;font-weight:500}.chat-msg hr{border:none;border-top:1px solid var(--border);margin:8px 0}.chat-msg img{max-width:100%;border-radius:var(--radius-xs)}.chat-msg strong{font-weight:600}.chat-msg em{font-style:italic}
