:root{--bg-app:#1f2329;--bg-panel:#211f25;--bg-panel-soft:#1b191e;--bg-overlay:#0000008c;--bg-elev:#2a2730;--bg-tag:#2a2730;--bg-tag-strong:#353039;--bg-accent-soft:#7c3aed24;--bg-row-hover:#ffffff0b;--bg-row-active:#ffffff12;--bg-row-selected:#6ea8fe26;--border-subtle:#ffffff0a;--border-soft:#ffffff12;--border-medium:#ffffff1f;--text-strong:#f4f4f5;--text-base:#f4f4f5;--text-muted:#9b9b9b;--text-faint:#6b6b70;--accent:#7c3aed;--accent-strong:#8b5cf6;--accent-soft:#7c3aed2e;--success:#34d399;--warning:#fb923c;--danger:#ef4444;--shadow-card:0 1px 2px #0006, 0 1px 3px #00000040;--shadow-pop:0 20px 40px -16px #0009, 0 8px 16px -8px #00000073;--radius-sm:6px;--radius:10px;--radius-lg:14px;--radius-xl:18px;--outline-indent:28px;--font-sans:SourceSansPro, -apple-system, "PingFang SC", "Apple Color Emoji", BlinkMacSystemFont, Helvetica, Arial, "Segoe UI Emoji", "Segoe UI Symbol", "Microsoft YaHei", 微软雅黑, 黑体, Heiti, sans-serif, SimSun, 宋体, serif;--font-mono:"JetBrains Mono", "SF Mono", Menlo, Consolas, monospace;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg-app);color:var(--text-base);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-size:14px;line-height:1.5}button,input,textarea,select{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0}textarea{font-family:inherit}input,textarea{outline:none}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}input:focus,input:focus-visible,textarea:focus,textarea:focus-visible{outline:none}::selection{color:inherit;background:#6091ff73}::selection{color:inherit;background:#6091ff73}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.login-page{background:radial-gradient(circle at 30% 20%, #e8ecff 0, var(--bg-app) 60%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-panel{background:var(--bg-panel);border-radius:var(--radius-lg);width:min(360px,100%);box-shadow:var(--shadow-pop);gap:18px;padding:32px;display:grid}.login-panel h1{letter-spacing:-.01em;color:var(--text-strong);margin:0;font-size:26px;font-weight:700}.login-muted{color:var(--text-muted);margin:0;font-size:13px}.login-field{color:var(--text-muted);gap:6px;font-size:12px;font-weight:500;display:grid}.login-field input{border:1px solid var(--border-medium);border-radius:var(--radius);background:var(--bg-panel);height:40px;color:var(--text-strong);padding:0 12px;transition:border-color .15s,box-shadow .15s}.login-field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.login-error{color:var(--danger);margin:0;font-size:13px}.login-submit{border-radius:var(--radius);color:#fff;background:var(--text-strong);justify-content:center;align-items:center;gap:8px;min-height:40px;font-weight:600;transition:background .15s,transform 50ms;display:inline-flex}.login-submit:hover{background:#1f2937}.login-submit:active{transform:translateY(1px)}.login-submit:disabled{cursor:not-allowed;opacity:.5}.app-page{grid-template-columns:280px minmax(0,1fr);height:100vh;display:grid}.panel{background:var(--bg-panel);overflow:hidden}.sidebar.panel{border-right:1px solid var(--border-subtle)}.sidebar{border-radius:var(--radius-lg);flex-direction:column;height:100%;display:flex}.sidebar-top{flex-direction:column;flex:1;min-height:0;display:flex}.brand{align-items:center;gap:8px;padding:14px 14px 10px;display:flex}.brand-mark{color:#fff;background:linear-gradient(135deg,#8b5cf6,#6d28d9);border-radius:6px;place-items:center;width:24px;height:24px;font-size:12px;font-weight:700;display:grid;box-shadow:0 2px 6px #7c3aed59}.brand-name{color:var(--text-strong);letter-spacing:-.01em;font-size:14px;font-weight:600}.sidebar-search{background:var(--bg-elev);border:1px solid var(--border-soft);color:var(--text-muted);border-radius:8px;align-items:center;gap:8px;margin:0 12px 8px;padding:6px 10px;transition:border-color .15s,background .15s;display:flex}.sidebar-search:focus-within{border-color:var(--accent);background:var(--bg-panel-soft)}.sidebar-search input{min-width:0;color:var(--text-strong);background:0 0;border:0;flex:1;font-size:13px}.sidebar-search input::placeholder{color:var(--text-faint)}.sidebar-notes{flex-direction:column;flex:1;min-height:0;padding:0 10px 6px;display:flex}.sidebar-section-header{justify-content:space-between;align-items:center;padding:0 8px 6px;display:flex}.sidebar-section-header h2{color:var(--text-muted);margin:0;font-size:13px;font-weight:500}.sidebar-header-actions{gap:4px;display:inline-flex}.icon-button{width:28px;height:28px;color:var(--text-muted);border-radius:6px;place-items:center;transition:background .15s,color .15s;display:inline-grid}.icon-button:hover{background:var(--bg-row-hover);color:var(--text-strong)}.icon-button.small{width:24px;height:24px}.icon-button.mini{width:20px;height:20px}.icon-button.primary{background:var(--accent);color:#fff}.icon-button.primary:hover{background:var(--accent-strong);color:#fff}.file-tree{flex:1;padding-bottom:8px;position:relative;overflow-y:auto}.file-tree.root-drop{background:var(--bg-accent-soft);border-radius:var(--radius)}.file-tree-row{padding-left:calc(var(--tree-depth,0) * 14px);border-radius:6px;align-items:center;margin:1px 4px;transition:background .15s;display:flex;position:relative}.file-tree-row:hover{background:var(--bg-row-hover)}.file-tree-row.drop-target{background:var(--accent-soft);outline:1px dashed var(--accent)}.file-tree-row.editing{padding:2px 6px}.file-tree-input{border:1px solid var(--accent);width:100%;height:28px;color:var(--text-strong);box-shadow:0 0 0 3px var(--accent-soft);background:#fff;border-radius:6px;padding:0 6px}.file-tree-item{color:var(--text-base);text-align:left;border-radius:6px;flex:1;align-items:center;gap:8px;min-width:0;padding:6px 6px 6px 8px;display:flex}.file-tree-item.active{background:var(--bg-row-hover);color:var(--text-strong);position:relative}.file-tree-item.active:before{content:"";background:var(--accent);border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;left:0}.file-tree-item.active .file-tree-label{font-weight:500}.file-tree-label{white-space:nowrap;text-overflow:ellipsis;flex:1;font-size:13px;overflow:hidden}.folder-chevron{width:14px;color:var(--text-faint);place-items:center;display:inline-grid}.folder-button{font-weight:500}.tree-spacer{width:14px}.file-tree-actions{opacity:0;align-items:center;gap:2px;padding-right:4px;transition:opacity .15s;display:inline-flex}.file-tree-row:hover .file-tree-actions{opacity:1}.file-context-menu{z-index:50;background:var(--bg-panel);border-radius:var(--radius);min-width:168px;box-shadow:var(--shadow-pop);left:var(--menu-x);top:var(--menu-y);border:1px solid var(--border-soft);flex-direction:column;gap:1px;padding:6px;display:flex;position:fixed}.file-context-menu button{width:100%;color:var(--text-base);text-align:left;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:background .1s;display:flex}.file-context-menu button:hover{background:var(--bg-row-hover)}.file-context-menu button.danger{color:var(--danger)}.file-context-menu button.danger:hover{background:#dc262614}.sidebar-empty{text-align:center;color:var(--text-muted);padding:12px 10px;font-size:13px}.sidebar-empty button{background:var(--accent);color:#fff;border-radius:6px;margin-top:8px;padding:6px 12px;font-size:13px;font-weight:500}.sidebar-empty button:hover{background:var(--accent-strong)}.sidebar-bottom{border-top:1px solid var(--border-subtle);padding:6px 8px 8px}.todo-mini-nav{align-items:center;gap:2px;display:inline-flex}.todo-mini-item{width:30px;height:30px;color:var(--text-faint);border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.todo-mini-item:hover{background:var(--bg-row-hover);color:var(--text-strong)}.todo-mini-item.active{background:var(--bg-row-active);color:var(--accent-strong)}.todo-mini-item span{display:none}.sidebar-bottom-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.logout-button{width:30px;height:30px;color:var(--text-faint);border-radius:6px;justify-content:center;align-items:center;transition:background .15s,color .15s;display:inline-flex}.logout-button span{display:none}.logout-button:hover{background:var(--bg-row-hover);color:var(--text-strong)}.workspace{background:var(--bg-panel-soft);flex-direction:column;min-width:0;height:100%;min-height:0;display:flex;position:relative}.outline-workspace{flex-direction:column;height:100%;min-height:0;display:flex}.outline-header{flex-direction:column;gap:8px;padding:14px 32px 0;display:flex}.outline-header-row{justify-content:space-between;align-items:center;gap:16px;min-width:0;display:flex}.outline-header-row.top{flex-wrap:wrap}.outline-header-row.title{width:100%;max-width:820px;margin:0 auto;padding-top:10px;padding-left:18px}.outline-doc-path{color:var(--text-muted);font-size:13px}.outline-title-display{letter-spacing:-.01em;color:var(--text-strong);width:100%;margin:0;padding-top:48px;font-size:34px;font-weight:600;line-height:1.6}.outline-title-input{letter-spacing:-.01em;color:var(--text-strong);background:0 0;border:0;width:100%;padding:48px 0 0;font-size:34px;font-weight:600;line-height:1.6}.outline-breadcrumbs{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:2px;font-size:14px;display:flex}.crumb{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;border-radius:6px;max-width:220px;padding:4px 8px;transition:background .15s,color .15s;overflow:hidden}.crumb:hover{background:var(--bg-row-hover);color:var(--text-strong)}.crumb-current{color:var(--text-strong);font-weight:600}.crumb-segment{color:var(--text-faint);align-items:center;gap:2px;display:inline-flex}.crumb-zoom-out{width:24px;height:24px;color:var(--text-muted);border-radius:6px;place-items:center;margin-left:8px;display:inline-grid}.crumb-zoom-out:hover{background:var(--bg-row-hover);color:var(--text-strong)}.outline-toolbar{align-items:center;gap:8px;display:inline-flex}.outline-search{background:var(--bg-tag);color:var(--text-muted);border-radius:8px;align-items:center;gap:8px;padding:6px 10px;transition:background .15s;display:inline-flex}.outline-search:focus-within{background:var(--bg-panel);box-shadow:0 0 0 1.5px var(--accent), 0 0 0 4px var(--accent-soft)}.outline-search input{width:160px;color:var(--text-base);background:0 0;border:0;font-size:13px}.outline-search input::placeholder{color:var(--text-faint)}.search-clear{width:18px;height:18px;color:var(--text-faint);border-radius:4px;place-items:center;display:inline-grid}.search-clear:hover{color:var(--text-strong);background:var(--bg-row-hover)}.outline-saved-indicator{color:var(--text-faint);font-size:12px;transition:color .2s}.outline-saved-indicator.is-pulsing{animation:1s ease-out outline-saved-pulse}@keyframes outline-saved-pulse{0%{color:var(--text-faint);transform:scale(1)}20%{color:var(--success);transform:scale(1.18)}60%{color:var(--success);transform:scale(1.06)}to{color:var(--text-faint);transform:scale(1)}}.crumb.crumb-static{pointer-events:none}.outline-mode-toggle{color:var(--text-base);background:0 0;border-radius:6px;align-items:center;gap:6px;padding:4px 10px;font-size:13px;font-weight:500;transition:background .12s,color .12s;display:inline-flex}.outline-mode-toggle:hover{background:var(--bg-row-hover);color:var(--text-strong)}.outline-canvas{flex:1;min-height:0;padding:16px 32px 80px;overflow-y:auto}.outline-doc-stats{color:#92929c;text-align:center;max-width:820px;margin:0 auto;padding:32px 0 0;font-size:12px}.outline-list{max-width:820px;transform:scale(var(--outline-zoom,1));transform-origin:top;flex-direction:column;margin:0 auto;transition:transform .1s;display:flex}.outline-row{padding-left:calc(var(--outline-depth,0) * var(--outline-indent));z-index:1;background-image:repeating-linear-gradient(to right, #66666d 0 1px, transparent 1px var(--outline-indent));background-size:calc(var(--outline-depth,0) * var(--outline-indent)) 100%;background-position:21px 0;background-repeat:no-repeat;grid-template-columns:auto minmax(0,1fr);gap:4px;transition:background .1s;display:grid;position:relative}.outline-row.has-children-visible{background-image:linear-gradient(#66666d, #66666d), repeating-linear-gradient(to right, #66666d 0 1px, transparent 1px var(--outline-indent));background-size:1px 50%, calc(var(--outline-depth,0) * var(--outline-indent)) 100%;background-position:calc(21px + var(--outline-depth,0) * var(--outline-indent)) 100%, 21px 0;background-repeat:no-repeat,no-repeat}.outline-row.dragging{opacity:.4}.outline-row.drop-before:before,.outline-row.drop-after:after{content:"";left:calc(var(--outline-depth,0) * var(--outline-indent) + 40px);pointer-events:none;background:#5856d5;border-radius:2px;height:2px;position:absolute;right:16px}.outline-row.drop-before:before{top:0}.outline-row.drop-after:after{bottom:0}.outline-row.drop-inside .outline-line{background:#5856d52e}.outline-row.drop-inside .outline-bullet{box-shadow:0 0 0 3px #5856d559}.outline-gutter{align-items:flex-start;gap:0;padding-top:6.8px;display:inline-flex;position:relative}.outline-row:has(h1) .outline-gutter{padding-top:13.2px}.outline-row:has(h2) .outline-gutter{padding-top:10.8px}.outline-row:has(h3) .outline-gutter{padding-top:8.4px}.outline-row-more-wrap{background:0 0;justify-content:center;align-items:center;width:18px;height:18px;display:inline-flex;position:absolute;top:6.8px;left:-20px}.outline-row:hover .outline-row-more-wrap,.outline-row.has-selection .outline-row-more-wrap{background:var(--bg-panel-soft)}.outline-row.is-multi-selected:hover .outline-row-more-wrap,.outline-row.is-multi-selected.has-selection .outline-row-more-wrap{background:#2d384f}.outline-row:has(h1) .outline-row-more-wrap{top:13.2px}.outline-row:has(h2) .outline-row-more-wrap{top:10.8px}.outline-row:has(h3) .outline-row-more-wrap{top:8.4px}.outline-row-more{color:#92929c;opacity:0;z-index:1;cursor:grab;background:0 0;border:0;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;margin:0;padding:0;transition:opacity .12s,background .12s,color .12s;display:inline-flex;position:relative}.outline-row-more svg{display:block}.outline-row-more:active{cursor:grabbing}.outline-row:hover .outline-row-more,.outline-row.has-selection .outline-row-more{opacity:1}.outline-row-more:hover,.outline-row-more.is-open{color:#f4f4f5;background:#49494ecc}.row-more-menu{z-index:50;border:1px solid var(--border-soft);background:#2b292f;border-radius:8px;flex-direction:column;gap:4px;min-width:200px;margin-top:4px;padding:8px;animation:.1s ease-out bubble-fade-in;display:flex;position:absolute;top:100%;left:0;box-shadow:0 8px 24px #0006}.row-more-section{gap:4px;display:flex}.row-more-pill{height:28px;color:var(--text-base);background:0 0;border-radius:6px;flex:1;justify-content:center;align-items:center;font-size:13px;font-weight:600;transition:background .1s,color .1s;display:inline-flex}.row-more-pill sub{vertical-align:sub;margin-left:1px;font-size:9px;line-height:1}.row-more-pill:hover{background:#49494ecc}.row-more-pill.is-active{color:#8a89e2}.row-more-divider{background:var(--border-soft);height:1px;margin:4px -2px}.row-more-item{color:var(--text-base);border-radius:6px;align-items:center;gap:12px;padding:6px 10px;font-size:13px;transition:background .1s;display:flex}.row-more-item:hover{background:#49494ecc}.row-more-icon{width:16px;color:var(--text-muted);justify-content:center;display:inline-flex}.row-more-danger{color:var(--danger)}.row-more-danger:hover{background:#ef444429}.row-more-footer{border-top:1px solid var(--border-soft);color:var(--text-faint);flex-direction:column;gap:2px;margin-top:6px;padding-top:6px;font-size:11px;display:flex}.outline-toggle{color:#92929c;z-index:1;opacity:0;pointer-events:none;background:0 0;flex-shrink:0;place-items:center;width:10px;height:18px;margin:0 0 0 2px;padding:0;transition:color .15s,opacity .15s;display:inline-grid;position:relative}.outline-toggle svg{display:block}.outline-toggle.has-children{pointer-events:auto}.outline-row:hover .outline-toggle.has-children,.outline-toggle.has-children.collapsed{opacity:1}.outline-toggle.has-children:hover{color:#f4f4f5}.outline-toggle:hover{color:var(--text-strong)}.outline-toggle:disabled{cursor:default}.outline-toggle.leaf{width:10px}.outline-bullet{cursor:grab;z-index:1;background:0 0;border-radius:50%;place-items:center;width:18px;height:18px;transition:background .1s;display:inline-grid;position:relative}.outline-bullet:hover{background:#49494e}.outline-bullet:active{cursor:grabbing}.outline-bullet-dot{background:#c9c9ce;border-radius:50%;width:6px;height:6px;transition:background .15s,transform .15s,box-shadow .15s}.outline-bullet.parent .outline-bullet-dot{background:#c9c9ce}.outline-bullet.collapsed .outline-bullet-dot{background:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.outline-row:hover .outline-bullet-dot{background:var(--text-strong)}.outline-bullet-badge{background:var(--accent);color:#fff;pointer-events:none;min-width:16px;height:16px;box-shadow:0 0 0 2px var(--bg-panel);border-radius:999px;place-items:center;padding:0 4px;font-size:10px;font-weight:600;line-height:1;display:inline-grid;position:absolute;top:-6px;right:-8px}.outline-bullet{position:relative}.outline-body{padding:0;position:relative}.outline-line{border-radius:4px;align-items:flex-start;gap:6px;padding:3px 6px;transition:background .1s;display:flex}.outline-row.dragging .outline-line{background:#8a89e24d}.outline-row.has-selection .outline-line{background:0 0}.outline-row.has-selection{z-index:50}.outline-row:has(.outline-row-more.is-open){z-index:60}body.outline-multi-selecting .outline-body,body.outline-multi-selecting .node-editor,body.outline-multi-selecting .node-editor .tiptap{-webkit-user-select:none;user-select:none}.outline-row.is-multi-selected{z-index:2}.outline-row.is-multi-selected:after{content:"";left:calc(var(--outline-depth,0) * var(--outline-indent));pointer-events:none;z-index:-1;background:#6ea8fe38;border-radius:4px;position:absolute;top:0;bottom:0;right:0}.outline-row.is-multi-selected .outline-line{background:0 0}.outline-row.is-multi-selected+.outline-row.is-multi-selected:after{border-top-left-radius:0;border-top-right-radius:0}.outline-row.is-multi-selected:has(+.outline-row.is-multi-selected):after{border-bottom-right-radius:0;border-bottom-left-radius:0}.outline-multi-menu{z-index:200;background:var(--bg-panel);border:1px solid var(--border-soft);min-width:200px;box-shadow:var(--shadow-pop);color:var(--text-base);border-radius:10px;flex-direction:column;gap:2px;padding:6px;font-size:13px;animation:.12s ease-out bubble-fade-in;display:flex;position:fixed}.outline-multi-stats{color:var(--text-muted);border-bottom:1px solid var(--border-soft);align-items:center;gap:6px;margin-bottom:4px;padding:6px 10px 8px;font-size:12px;display:flex}.outline-multi-stats-dot{color:var(--text-faint)}.outline-multi-close{width:18px;height:18px;color:var(--text-muted);border-radius:4px;justify-content:center;align-items:center;margin-left:auto;padding:0;display:inline-flex}.outline-multi-close:hover{background:var(--bg-row-hover);color:var(--text-strong)}.outline-multi-marks{border-bottom:1px solid var(--border-soft);gap:2px;margin-bottom:4px;padding:2px 4px 6px;display:flex}.outline-multi-mark{width:30px;height:26px;color:var(--text-muted);border-radius:4px;justify-content:center;align-items:center;padding:0;transition:background .1s,color .1s;display:inline-flex}.outline-multi-mark:hover{background:var(--bg-row-hover);color:var(--text-strong)}.outline-multi-divider{background:var(--border-soft);height:1px;margin:4px 0}.outline-multi-action{color:var(--text-base);text-align:left;background:0 0;border-radius:6px;align-items:center;gap:10px;width:100%;padding:7px 10px;font-size:13px;transition:background .1s;display:flex}.outline-multi-action:hover{background:var(--bg-row-hover)}.outline-multi-action.is-danger{color:var(--danger)}.outline-multi-action.is-danger:hover{background:#ef44441f}.outline-multi-icon{color:inherit;flex-shrink:0}.outline-multi-caret{color:var(--text-faint);margin-left:auto;font-size:12px}.outline-multi-swatches{grid-template-columns:repeat(8,1fr);gap:4px;padding:4px 8px 8px;display:grid}.outline-multi-swatch{background:0 0;border-radius:4px;place-items:center;width:20px;height:20px;padding:0;transition:background .1s;display:inline-grid}.outline-multi-swatch:hover{background:var(--bg-row-hover)}.outline-multi-swatch-dot{background:var(--text-muted);border-radius:50%;width:14px;height:14px;display:block}.outline-multi-swatch-dot.is-none{border:1.5px solid var(--text-faint);background:0 0;position:relative}.outline-multi-swatch-dot.is-none:after{content:"";background:var(--text-faint);height:1.5px;position:absolute;top:50%;left:1px;right:1px;transform:translateY(-50%)rotate(-45deg)}.node-editor{flex:1;min-width:0}.node-editor-input,.node-editor .tiptap{color:var(--text-base);caret-color:var(--text-strong);cursor:text;background:0 0;border:0;outline:none;min-height:1.6em;padding:0;font-size:16px;line-height:1.6}.node-editor-input ::selection{color:inherit;background:#8a89e273}.node-editor .tiptap ::selection{color:inherit;background:#8a89e273}.node-editor-input p,.node-editor .tiptap p{margin:0}.node-editor-input p+p,.node-editor .tiptap p+p{margin-top:4px}.node-editor-input h1,.node-editor .tiptap h1{color:inherit;margin:0;font-size:24px;font-weight:500;line-height:1.6}.node-editor-input h2,.node-editor .tiptap h2{color:inherit;margin:0;font-size:21px;font-weight:500;line-height:1.6}.node-editor-input h3,.node-editor .tiptap h3{color:inherit;margin:0;font-size:18px;font-weight:500;line-height:1.6}.node-editor-input h1+p:last-child:empty,.node-editor-input h2+p:last-child:empty,.node-editor-input h3+p:last-child:empty,.node-editor .tiptap h1+p:last-child:empty,.node-editor .tiptap h2+p:last-child:empty,.node-editor .tiptap h3+p:last-child:empty{display:none}.node-editor-input h1+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor-input h2+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor-input h3+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor .tiptap h1+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor .tiptap h2+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor .tiptap h3+p:last-child:has(>br.ProseMirror-trailingBreak:only-child){display:none}.node-editor-input strong,.node-editor .tiptap strong{color:inherit;font-weight:700}.node-editor-input em,.node-editor .tiptap em{font-style:italic}.node-editor-input u,.node-editor .tiptap u{text-underline-offset:2px;text-decoration:underline}.node-editor-input s,.node-editor .tiptap s{opacity:.7;text-decoration:line-through}.node-editor-input code,.node-editor .tiptap code{background:var(--bg-tag);font-family:var(--font-mono);color:var(--accent-strong);border-radius:4px;padding:1px 6px;font-size:.92em}.node-editor-input a,.node-editor .tiptap a{color:var(--accent-strong);text-underline-offset:2px;cursor:pointer;text-decoration:underline}.node-editor-input.is-loading{opacity:.4;min-height:1.6em}.node-editor-input.is-empty:before,.node-editor .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);float:left;height:0;color:var(--text-faint);pointer-events:none}.bubble-menu{background:var(--bg-panel);border:1px solid var(--border-soft);box-shadow:var(--shadow-pop);z-index:100;pointer-events:auto;border-radius:8px;align-items:center;gap:1px;padding:4px;animation:.12s ease-out bubble-fade-in;display:inline-flex}@keyframes bubble-fade-in{0%{opacity:0;transform:translateY(2px)}to{opacity:1;transform:translateY(0)}}.bubble-item{width:26px;height:26px;color:var(--text-muted);border-radius:4px;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:4px 0 2px;transition:background .1s,color .1s;display:inline-flex;position:relative}.bubble-item:hover{background:var(--bg-row-hover);color:var(--text-strong)}.bubble-item.is-active{background:var(--bg-accent-soft);color:var(--accent-strong)}.bubble-item-heading{letter-spacing:-.02em;width:auto;min-width:26px;padding:4px 6px;font-size:12px;font-weight:600}.bubble-color-bar{border-radius:1px;width:14px;height:2px;display:block}.bubble-divider{background:var(--border-soft);width:1px;height:16px;margin:0 4px}.bubble-popover-wrap{align-items:center;display:inline-flex;position:relative}.bubble-color-popover{background:var(--bg-panel);border:1px solid var(--border-soft);box-shadow:var(--shadow-pop);z-index:20;border-radius:8px;grid-template-columns:repeat(4,24px);gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);left:50%;transform:translate(-50%)}.bubble-color-swatch{background:0 0;border-radius:4px;place-items:center;width:24px;height:24px;transition:background .1s;display:inline-grid}.bubble-color-swatch:hover{background:var(--bg-row-hover)}.swatch-dot{background:var(--text-muted);border-radius:50%;width:16px;height:16px;display:block}.swatch-dot.swatch-none{border:1.5px solid var(--text-faint);background:0 0;position:relative}.swatch-dot.swatch-none:after{content:"";background:var(--text-faint);height:1.5px;position:absolute;top:50%;left:1px;right:1px;transform:translateY(-50%)rotate(-45deg)}.node-editor-input mark,.node-editor .tiptap mark{background:var(--mark-color,#fde68a);color:#0f172a;border-radius:2px;padding:0 2px}.outline-input{resize:none;min-width:0;color:var(--text-base);background:0 0;border:0;flex:1;padding:2px 0;font-size:15px;line-height:1.55;overflow:hidden}.outline-input::placeholder{color:var(--text-faint)}.outline-note{background:var(--bg-tag);resize:none;width:100%;color:var(--text-muted);border:0;border-radius:6px;margin-top:4px;padding:8px 10px;font-size:13px;line-height:1.55;overflow:hidden}.outline-empty{flex-direction:column;align-items:flex-start;max-width:820px;margin:0 auto;padding:8px 0;display:flex}.outline-ghost-row{color:var(--text-faint);border-radius:6px;align-items:center;gap:8px;padding:4px 8px;transition:background .15s,color .15s;display:inline-flex}.outline-ghost-row:hover{background:var(--bg-row-hover);color:var(--text-strong)}.outline-ghost-bullet{opacity:.5;background:currentColor;border-radius:50%;width:6px;height:6px}.outline-ghost-text{font-size:14px}.outline-context-menu{z-index:50;background:var(--bg-panel);border:1px solid var(--border-soft);border-radius:var(--radius);min-width:168px;box-shadow:var(--shadow-pop);left:var(--menu-x);top:var(--menu-y);flex-direction:column;gap:1px;padding:6px;display:flex;position:fixed}.outline-context-menu button{width:100%;color:var(--text-base);text-align:left;border-radius:6px;align-items:center;gap:8px;padding:8px 10px;font-size:13px;transition:background .1s;display:flex}.outline-context-menu button:hover{background:var(--bg-row-hover)}.outline-context-menu button.danger{color:var(--danger)}.outline-context-menu button.danger:hover{background:#dc262614}.mindmap-board{color:#15151a;background:#fff;flex-direction:column;flex:1;min-height:0;display:flex;position:relative}.mindmap-board.mindmap-empty{color:#6c6c70;justify-content:center;align-items:center}.mindmap-toolbar{z-index:5;background:#fff;border:1px solid #e6e6ea;border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:4px;display:flex;position:absolute;top:50%;right:16px;transform:translateY(-50%);box-shadow:0 4px 16px #00000014}.mindmap-tool{color:#5a5a60;border-radius:8px;place-items:center;width:30px;height:30px;transition:background .15s,color .15s;display:inline-grid}.mindmap-tool:hover{color:#15151a;background:#f1f1f5}.mindmap-zoom-readout{color:#5a5a60;text-align:center;font-variant-numeric:tabular-nums;border-radius:6px;min-width:38px;height:22px;padding:0 6px;font-size:12px;transition:background .15s,color .15s}.mindmap-zoom-readout:hover{color:#15151a;background:#f1f1f5}.mindmap-canvas{cursor:grab;flex:1;position:relative;overflow:hidden}.mindmap-canvas:focus{outline:none}.mindmap-canvas:active{cursor:grabbing}.mindmap-stage{transform-origin:0 0;will-change:transform;position:relative}.mindmap-edges{pointer-events:none;position:absolute;inset:0}.mindmap-node{color:#15151a;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;text-align:left;-webkit-user-select:none;user-select:none;background:0 0;border:1px solid #0000;border-radius:14px;align-items:center;gap:6px;padding:2px 8px;font-size:13px;font-weight:600;line-height:1.45;transition:border-color .12s,background .12s;display:inline-flex;position:absolute;overflow:hidden}.mindmap-node.is-selected{white-space:pre-wrap;text-overflow:clip;overflow:visible}.mindmap-node.depth-0{color:#fff;background:#15151a;border:1px solid #15151a;border-radius:5px;padding:6px 14px;font-size:14px;font-weight:700}.mindmap-node.depth-1:not(.is-virtual):not(.is-empty),.mindmap-node.has-children:not(.is-root):not(.is-virtual):not(.is-empty){background:#f0f0f0;border:1px solid #0000;border-radius:17px;padding:4px 14px}.mindmap-node.is-virtual{cursor:default}.mindmap-node:not(.is-root):not(.depth-0):not(.is-virtual):not(.is-empty):hover{cursor:grab;padding:4px 14px;color:#15151a!important;background:#f0f0f0!important;border:1px solid #b4b4b4!important;border-radius:17px!important}.mindmap-node:not(.is-root):not(.depth-0):not(.is-virtual):not(.is-empty):active{cursor:grabbing}.mindmap-node.is-selected:not(.depth-0){cursor:text;padding:4px 14px;font-weight:700;color:#15151a!important;background:#fff!important;border:1.5px solid #15151a!important;border-radius:17px!important}.mindmap-node.is-selected.depth-0{color:#fff;cursor:text;background:#15151a;border-color:#15151a}.mindmap-node.is-selected .mindmap-edit{color:inherit;caret-color:currentColor}.mindmap-node.is-drop-inside:not(.is-virtual){background:#5856d50f!important;border:1.5px dashed #5856d5!important;border-radius:17px!important;padding:4px 14px!important}.mindmap-node.is-drop-before:before,.mindmap-node.is-drop-after:after{content:"";pointer-events:none;border-top:1.5px dashed #5856d5;height:0;position:absolute;left:4px;right:4px}.mindmap-node.is-drop-before:before{top:-3px}.mindmap-node.is-drop-after:after{bottom:-3px}.mindmap-node.is-dragging{opacity:.35}.mindmap-node.is-empty{color:#b5b5ba;background:#f0f0f0;border:1px solid #0000;border-radius:17px;padding:4px 14px;font-weight:500}.mindmap-node.is-empty:hover{border-color:#b4b4b4!important}.mindmap-node-label{text-overflow:ellipsis;flex:1;min-width:0;line-height:1.5;overflow:hidden}.mindmap-node.is-selected .mindmap-node-label{text-overflow:clip;overflow:visible}.mindmap-edit{resize:none;min-width:80px;font:inherit;color:inherit;caret-color:var(--accent);background:0 0;border:0;flex:1;margin:0;padding:0;line-height:1.5;overflow:hidden}.mindmap-edit::placeholder{color:inherit;opacity:.5}.mindmap-toggle{color:#5a5a60;background:#d0d0d6;border-radius:999px;flex:none;justify-content:center;align-items:center;min-width:18px;height:18px;padding:0 6px;font-size:10px;font-weight:600;transition:background .12s,color .12s;display:inline-flex}.mindmap-toggle:hover{color:#15151a;background:#b5b5ba}.mindmap-node.is-root .mindmap-toggle{color:#fff;background:#ffffff2e}.mindmap-toggle.collapsed{color:#5a5a60;background:#d0d0d6}.mindmap-toggle-count{font-variant-numeric:tabular-nums}.mindmap-add{color:#5a5a60;background:#fff;border:1px solid #b5b5ba;border-radius:50%;place-items:center;width:18px;height:18px;margin:0;padding:0;transition:background .12s,color .12s,border-color .12s;display:inline-grid;position:absolute;top:50%;right:-22px;transform:translateY(-50%)}.mindmap-add svg{display:block}.mindmap-add:hover{color:#fff;background:#15151a;border-color:#15151a}.mindmap-context-menu{left:var(--menu-x);top:var(--menu-y);z-index:60;background:var(--bg-panel);border:1px solid var(--border-soft);min-width:240px;box-shadow:var(--shadow-pop);border-radius:8px;flex-direction:column;gap:1px;padding:6px;animation:.1s ease-out bubble-fade-in;display:flex;position:fixed}.mindmap-context-menu button{color:var(--text-base);text-align:left;white-space:nowrap;border-radius:4px;justify-content:space-between;align-items:center;gap:16px;padding:7px 12px;font-size:13px;transition:background 80ms,color 80ms;display:flex}.mindmap-context-menu button:hover{background:#5856d52e}.mindmap-context-menu button.danger{color:var(--danger)}.mindmap-context-menu button.danger:hover{background:#ef444429}.mindmap-context-shortcut{color:var(--text-faint);font-variant-numeric:tabular-nums;font-size:12px}.mindmap-context-divider{border:0;border-top:1px solid var(--border-subtle);margin:4px 6px}.todo-workspace{flex-direction:column;height:100%;min-height:0;display:flex}.todo-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;padding:24px 32px 12px;display:flex}.todo-title-block h1{color:var(--text-strong);letter-spacing:-.01em;margin:0;font-size:24px;font-weight:700}.todo-subtitle{color:var(--text-faint);margin:4px 0 0;font-size:13px}.todo-view-switch{background:var(--bg-tag);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.todo-view-switch button{color:var(--text-muted);border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:13px;font-weight:500;transition:background .15s,color .15s;display:inline-flex}.todo-view-switch button:hover{color:var(--text-strong)}.todo-view-switch button.active{background:var(--bg-panel);color:var(--text-strong);box-shadow:0 1px 2px #0f172a0f}.command-input-wrap{background:var(--bg-panel);border:1px solid var(--border-medium);border-radius:12px;align-items:center;margin:8px 32px 16px;padding:0 14px;transition:border-color .15s,box-shadow .15s;display:flex;position:relative}.command-input-wrap.focused{border-color:var(--accent);box-shadow:0 0 0 4px var(--accent-soft)}.command-input{color:var(--text-strong);background:0 0;border:0;flex:1;padding:14px 0;font-size:14px}.command-input::placeholder{color:var(--text-faint)}.command-hint{background:var(--bg-tag);width:24px;height:24px;color:var(--text-faint);border-radius:6px;place-items:center;transition:opacity .15s;display:inline-grid}.command-input-wrap:not(.has-value) .command-hint{opacity:.5}.task-list{flex:1;padding:0 32px 80px;overflow-y:auto}.task-group{margin-bottom:24px}.task-group-header{align-items:center;gap:8px;padding:4px 4px 8px;display:flex}.task-group-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-size:11px;font-weight:600}.task-group.group-overdue .task-group-label{color:var(--danger)}.task-group.group-today .task-group-label{color:var(--accent-strong)}.task-group-count{color:var(--text-faint);background:var(--bg-tag);border-radius:999px;padding:1px 6px;font-size:11px;font-weight:600}.task-group-list{flex-direction:column;gap:2px;display:flex}.task-card{text-align:left;cursor:pointer;background:0 0;border-radius:10px;align-items:flex-start;gap:12px;padding:10px 12px;transition:background .15s,box-shadow .15s;display:flex}.task-card:hover{background:var(--bg-row-hover)}.task-card.selected{background:var(--accent-soft);box-shadow:inset 0 0 0 1px #5b6cf240}.task-card.done .task-title-text{color:var(--text-faint);text-decoration:line-through}.task-check{border:1.5px solid var(--border-medium);background:var(--bg-panel);border-radius:50%;flex:none;width:18px;height:18px;margin-top:2px;transition:border-color .15s,background .15s,transform .1s;position:relative}.task-check:hover{border-color:var(--accent)}.task-check.checked{background:var(--accent);border-color:var(--accent)}.task-check.checked:after{content:"";border:1.5px solid #fff;border-top:0;border-left:0;width:5px;height:9px;position:absolute;top:1px;left:4px;transform:rotate(45deg)}.task-body{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.task-title{text-align:left;color:var(--text-strong);word-break:break-word;padding:0;font-size:14px;font-weight:500;line-height:1.45;display:block}.task-title-text{display:inline}.task-title-edit{border:0;border-bottom:1px solid var(--accent);width:100%;color:var(--text-strong);background:0 0;padding:0 0 2px;font-size:14px;font-weight:500}.task-meta{flex-wrap:wrap;gap:6px;display:flex}.task-chip{background:var(--bg-tag);color:var(--text-muted);border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:11.5px;font-weight:500;display:inline-flex}.task-chip.subtle{color:var(--text-faint);background:0 0}.task-empty{color:var(--text-muted);flex-direction:column;align-items:center;padding:80px 24px;font-size:14px;display:flex}.drawer{background:var(--bg-panel);border-radius:var(--radius-lg);width:360px;box-shadow:var(--shadow-pop);z-index:10;flex-direction:column;gap:14px;padding:24px;display:flex;position:fixed;top:16px;bottom:16px;right:16px}.drawer-header{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.drawer-title-block{flex-direction:column;gap:6px;display:flex}.drawer-title-block h2{color:var(--text-strong);margin:0;font-size:18px;font-weight:600;line-height:1.35}.restore-button{background:var(--bg-tag);color:var(--text-muted);border-radius:6px;align-self:flex-start;align-items:center;gap:6px;padding:4px 8px;font-size:12px;font-weight:500;display:inline-flex}.restore-button:hover{background:var(--bg-tag-strong);color:var(--text-strong)}.field-label{text-transform:uppercase;letter-spacing:.08em;color:var(--text-faint);font-size:11px;font-weight:600}.note-field{border:1px solid var(--border-soft);background:var(--bg-panel-soft);width:100%;min-height:100px;color:var(--text-base);resize:vertical;border-radius:8px;padding:10px 12px;font-size:13px}.note-field:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.subtasks{flex-direction:column;gap:4px;display:flex}.subtask-row{color:var(--text-base);align-items:center;gap:8px;padding:4px 0;font-size:13px;display:flex}.check-button{border:1.5px solid var(--border-medium);background:var(--bg-panel);border-radius:50%;flex:none;width:16px;height:16px;transition:border-color .15s,background .15s;position:relative}.check-button:hover{border-color:var(--accent)}.check-button.checked{background:var(--accent);border-color:var(--accent)}.check-button.checked:after{content:"";border:1.5px solid #fff;border-top:0;border-left:0;width:4px;height:8px;position:absolute;top:0;left:3px;transform:rotate(45deg)}.drawer-delete-button{color:var(--danger);background:0 0;border-radius:8px;justify-content:center;align-items:center;gap:6px;margin-top:auto;padding:8px 12px;font-size:13px;font-weight:500;transition:background .15s;display:inline-flex}.drawer-delete-button:hover{background:#dc262614}.toast{background:var(--text-strong);color:#fff;box-shadow:var(--shadow-pop);z-index:30;border-radius:999px;align-items:center;gap:12px;padding:10px 14px;font-size:13px;display:inline-flex;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast button{color:#c7d2fe;font-size:12px;font-weight:600}.toast button:hover{color:#fff}@media (width<=900px){.app-page{grid-template-rows:auto minmax(0,1fr);grid-template-columns:minmax(0,1fr);gap:8px;height:100dvh;padding:8px}.sidebar{max-height:280px}.outline-header,.todo-header{padding:16px 16px 8px}.outline-canvas,.task-list{padding-left:16px;padding-right:16px}.command-input-wrap{margin:8px 16px 12px}.drawer{width:auto;max-height:60vh;inset:auto 8px 8px}}
