:root{--bg-primary: #1a1a2e;--bg-secondary: #16213e;--bg-tertiary: #0f3460;--bg-surface: #1e2746;--text-primary: #e8e8f0;--text-secondary: #9ca3b4;--text-muted: #6b7280;--accent: #e94560;--accent-hover: #ff6b81;--border: #2a3456;--hover: rgba(233, 69, 96, .08);--radius: 6px;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", "Fira Code", "Cascadia Code", monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);background:var(--bg-primary);color:var(--text-primary);height:100vh;overflow:hidden}#root{height:100vh}.workspace{display:flex;height:100vh}.sidebar{width:260px;background:var(--bg-secondary);border-right:1px solid var(--border);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s}.sidebar.collapsed{width:48px;overflow:hidden}.sidebar.collapsed .sidebar-header{justify-content:center;padding:16px 0}.sidebar.collapsed .sidebar-title{display:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--border)}.sidebar-title{font-size:16px;font-weight:700;letter-spacing:.5px;color:var(--accent)}.version-tag{font-size:11px;font-weight:400;opacity:.5}.sidebar-toggle{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:12px;padding:4px}.sidebar-actions{padding:8px 12px 0}.new-file-btn{width:100%;padding:6px 10px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:13px;cursor:pointer;font-weight:600}.new-file-btn:hover{opacity:.9}.sidebar-search{padding:8px 12px}.sidebar-search input{width:100%;padding:6px 10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:13px;outline:none}.sidebar-search input:focus{border-color:var(--accent)}.file-tree{flex:1;overflow-y:auto;padding:4px 0}.file-tree-node{display:flex;align-items:center;gap:6px;padding:5px 8px;cursor:pointer;font-size:13px;color:var(--text-secondary);border-radius:4px;margin:0 4px;transition:background .15s;user-select:none;-webkit-user-select:none}.file-tree-node:hover{background:var(--hover);color:var(--text-primary)}.file-tree-node.active{background:#e9456026;color:var(--accent)}.file-icon{font-size:14px;flex-shrink:0}.file-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-rename-input{flex:1;min-width:0;padding:1px 4px;background:var(--bg-surface);border:1px solid var(--accent);border-radius:3px;color:var(--text-primary);font-size:13px;outline:none;font-family:var(--font-sans)}.editor-area{flex:1;display:flex;flex-direction:column;min-width:0}.editor-header{display:flex;align-items:center;gap:12px;padding:10px 20px;border-bottom:1px solid var(--border);background:var(--bg-secondary)}.editor-breadcrumb{display:flex;align-items:center;gap:4px;flex:1;min-width:0;overflow:hidden}.breadcrumb-segment{font-size:13px;font-weight:400;color:var(--text-secondary);font-family:var(--font-sans);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex-shrink:1;min-width:0}.breadcrumb-current{font-weight:600;color:var(--text-primary);flex-shrink:0}.breadcrumb-separator{display:flex;align-items:center;color:var(--text-muted);flex-shrink:0}.editor-container{flex:1;display:flex;flex-direction:column;overflow-y:auto;position:relative}.editor-content{flex:1;max-width:900px;width:100%;margin:0 auto;padding:32px 20px}.editor-content .tiptap{outline:none;min-height:400px;line-height:1.7;font-size:15px}.editor-content .tiptap p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--text-muted);pointer-events:none;float:left;height:0}.editor-content .tiptap h1{font-size:28px;margin-top:32px;margin-bottom:12px}.editor-content .tiptap h2{font-size:22px;margin-top:24px;margin-bottom:8px}.editor-content .tiptap h3{font-size:18px;margin-top:20px;margin-bottom:6px}.editor-content .tiptap h1,.editor-content .tiptap h2,.editor-content .tiptap h3,.editor-content .tiptap h4,.editor-content .tiptap h5,.editor-content .tiptap h6{position:relative}.editor-content .tiptap h1>.heading-anchor,.editor-content .tiptap h2>.heading-anchor,.editor-content .tiptap h3>.heading-anchor,.editor-content .tiptap h4>.heading-anchor,.editor-content .tiptap h5>.heading-anchor,.editor-content .tiptap h6>.heading-anchor{position:absolute;left:-24px;top:50%;transform:translateY(-50%);opacity:0;cursor:pointer;color:var(--text-muted);transition:opacity .15s,color .15s;font-size:.65em;line-height:1;-webkit-user-select:none;user-select:none;text-decoration:none}.editor-content .tiptap h1:hover>.heading-anchor,.editor-content .tiptap h2:hover>.heading-anchor,.editor-content .tiptap h3:hover>.heading-anchor,.editor-content .tiptap h4:hover>.heading-anchor,.editor-content .tiptap h5:hover>.heading-anchor,.editor-content .tiptap h6:hover>.heading-anchor{opacity:1}.editor-content .tiptap h1>.heading-anchor:hover,.editor-content .tiptap h2>.heading-anchor:hover,.editor-content .tiptap h3>.heading-anchor:hover,.editor-content .tiptap h4>.heading-anchor:hover,.editor-content .tiptap h5>.heading-anchor:hover,.editor-content .tiptap h6>.heading-anchor:hover{color:var(--accent)}.heading-copy-toast{position:fixed;transform:translate(-50%,-100%);background:var(--bg-secondary, #333);color:var(--text-primary, #fff);font-size:12px;padding:4px 10px;border-radius:4px;pointer-events:none;opacity:0;transition:opacity .25s ease,transform .25s ease;z-index:9999;white-space:nowrap}.heading-copy-toast.visible{opacity:1;transform:translate(-50%,calc(-100% - 6px))}.editor-content .tiptap p{margin-bottom:8px}.editor-content .tiptap ul,.editor-content .tiptap ol{padding-left:24px;margin-bottom:8px}.editor-content .tiptap blockquote{border-left:3px solid var(--accent);padding-left:16px;color:var(--text-secondary);margin:12px 0}.editor-content .tiptap pre{background:var(--bg-surface);border-radius:var(--radius);padding:16px;font-family:var(--font-mono);font-size:13px;overflow-x:auto;margin:12px 0}.editor-content .tiptap code{background:var(--bg-surface);padding:2px 6px;border-radius:3px;font-family:var(--font-mono);font-size:13px}.editor-content .tiptap pre code{background:none;padding:0;border-radius:0}.editor-content .tiptap pre .hljs-keyword,.editor-content .tiptap pre .hljs-selector-tag{color:#c792ea}.editor-content .tiptap pre .hljs-string,.editor-content .tiptap pre .hljs-addition{color:#c3e88d}.editor-content .tiptap pre .hljs-number,.editor-content .tiptap pre .hljs-literal{color:#f78c6c}.editor-content .tiptap pre .hljs-comment,.editor-content .tiptap pre .hljs-quote{color:#6b7280;font-style:italic}.editor-content .tiptap pre .hljs-function,.editor-content .tiptap pre .hljs-title{color:#82aaff}.editor-content .tiptap pre .hljs-built_in,.editor-content .tiptap pre .hljs-attr,.editor-content .tiptap pre .hljs-attribute{color:#ffcb6b}.editor-content .tiptap pre .hljs-type,.editor-content .tiptap pre .hljs-class .hljs-title{color:#f78c6c}.editor-content .tiptap pre .hljs-variable,.editor-content .tiptap pre .hljs-template-variable{color:#e94560}.editor-content .tiptap pre .hljs-regexp{color:#89ddff}.editor-content .tiptap pre .hljs-deletion{color:#ff5370}.editor-content .tiptap pre .hljs-meta{color:#9ca3b4}.editor-content .tiptap pre .hljs-tag,.editor-content .tiptap pre .hljs-name{color:#e94560}.editor-content .tiptap pre .hljs-params{color:#e8e8f0}.editor-content .tiptap pre .hljs-symbol{color:#82aaff}.editor-content .tiptap table{border-collapse:collapse;width:100%;margin:12px 0}.editor-content .tiptap th,.editor-content .tiptap td{border:1px solid var(--border);padding:8px 12px;text-align:left;font-size:14px;min-width:80px}.editor-content .tiptap th{background:var(--bg-surface);font-weight:600;color:var(--text-secondary);font-size:12px;text-transform:uppercase;letter-spacing:.3px}.editor-content .tiptap td{background:transparent}.editor-content .tiptap .selectedCell{background:#e9456014}.editor-content .tiptap hr{border:none;border-top:1px solid var(--border);margin:24px 0}.editor-content .tiptap a{color:var(--accent);text-decoration:underline}.editor-content .tiptap ul[data-type=taskList]{list-style:none;padding-left:4px}.editor-content .tiptap ul[data-type=taskList] li{display:flex;align-items:flex-start;gap:8px;margin-bottom:4px}.editor-content .tiptap ul[data-type=taskList] li label input[type=checkbox]{margin-top:4px;cursor:pointer}.editor-content .tiptap ul[data-type=taskList] li div{flex:1}.editor-content .tiptap ul[data-type=taskList] li[data-checked=true]>div>p{text-decoration:line-through;opacity:.6}.editor-content .tiptap img{max-width:100%;height:auto;border-radius:var(--radius);display:block}.image-wrapper{position:relative;display:inline-block;max-width:100%;margin:8px 0}.image-actions{position:absolute;top:6px;right:6px;display:flex;gap:4px;opacity:0;transition:opacity .15s;pointer-events:none}.image-wrapper:hover .image-actions{opacity:1;pointer-events:auto}.image-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:6px;color:var(--text-secondary);cursor:pointer;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);transition:color .15s,border-color .15s,background .15s}.image-action-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--bg-primary)}.image-modal-overlay{position:fixed;inset:0;z-index:500;background:#000000d9;display:flex;align-items:center;justify-content:center;cursor:zoom-out;animation:fadeIn .15s ease-out}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.image-modal-content{position:relative;max-width:92vw;max-height:92vh}.image-modal-img{max-width:92vw;max-height:92vh;object-fit:contain;border-radius:8px;box-shadow:0 12px 60px #0009;cursor:default}.image-modal-close{position:absolute;top:-12px;right:-12px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;background:var(--bg-secondary);border:1px solid var(--border);border-radius:50%;color:var(--text-primary);font-size:20px;cursor:pointer;line-height:1;transition:color .15s,border-color .15s}.image-modal-close:hover{color:var(--accent);border-color:var(--accent)}.editor-placeholder{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-muted);font-size:15px}.slash-menu{z-index:200;background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 30px #00000073,0 0 0 1px #ffffff0a;padding:4px;min-width:240px;max-height:320px;overflow-y:auto;animation:slashMenuIn .12s ease-out}@keyframes slashMenuIn{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.slash-menu-item{display:flex;flex-direction:row;align-items:center;gap:10px;width:100%;padding:7px 10px;background:none;border:none;color:var(--text-primary);cursor:pointer;text-align:left;border-radius:5px;transition:background .1s}.slash-menu-item:hover,.slash-menu-item.selected{background:#e945601f}.slash-menu-icon{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;background:var(--bg-surface);border:1px solid var(--border);font-size:14px;font-weight:600;color:var(--text-secondary);flex-shrink:0;font-family:var(--font-mono)}.slash-menu-item.selected .slash-menu-icon,.slash-menu-item:hover .slash-menu-icon{border-color:var(--accent);color:var(--accent);background:#e9456014}.slash-menu-text{display:flex;flex-direction:column;min-width:0}.slash-menu-label{font-size:13px;font-weight:500}.slash-menu-desc{font-size:11px;color:var(--text-muted);margin-top:1px}.slash-menu-chevron{margin-left:auto;color:var(--text-muted);flex-shrink:0;transition:color .1s}.slash-menu-item.selected .slash-menu-chevron,.slash-menu-item:hover .slash-menu-chevron{color:var(--accent)}.slash-menu-back{display:flex;align-items:center;gap:6px;width:100%;padding:6px 10px;background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:12px;font-weight:500;border-radius:5px;transition:color .1s}.slash-menu-back:hover{color:var(--text-primary)}.slash-menu-divider{height:1px;background:var(--border);margin:4px 6px}.slash-menu-icon--heading1{font-size:16px;font-weight:700}.slash-menu-icon--heading2{font-size:14px;font-weight:600}.slash-menu-icon--heading3{font-size:13px;font-weight:600}.slash-menu-icon--heading4{font-size:12px;font-weight:500}.slash-menu--submenu{animation:slashSubmenuIn .14s ease-out}@keyframes slashSubmenuIn{0%{opacity:0;transform:translate(6px)}to{opacity:1;transform:translate(0)}}.floating-input-overlay{position:fixed;inset:0;z-index:299}.floating-input{background:var(--bg-secondary);border:1px solid var(--border);border-radius:8px;box-shadow:0 8px 30px #00000073,0 0 0 1px #ffffff0a;padding:8px 10px;min-width:260px;animation:slashMenuIn .12s ease-out;display:flex;flex-direction:column;gap:6px}.floating-input-label{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.floating-input-field{width:100%;padding:7px 10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:13px;outline:none;font-family:var(--font-sans)}.floating-input-field:focus{border-color:var(--accent)}.floating-input-hint{font-size:10px;color:var(--text-muted);text-align:right}.comments-sidebar{width:300px;background:var(--bg-secondary);border-left:1px solid var(--border);overflow-y:auto;flex-shrink:0;display:flex;flex-direction:column;transition:width .2s}.comments-sidebar.collapsed{width:48px;overflow:hidden}.comments-sidebar.collapsed .comments-sidebar-header{justify-content:center;padding:16px 0}.comments-sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:16px;border-bottom:1px solid var(--border)}.comments-sidebar-title{font-size:14px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.comments-sidebar-toggle{background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:12px;padding:4px}.comments-panel{padding:16px}.no-comments{color:var(--text-muted);font-size:13px}.comment-thread{margin-bottom:16px;padding:12px;background:var(--bg-surface);border-radius:var(--radius);border-left:3px solid var(--accent)}.comment-thread.resolved{border-left-color:var(--text-muted);opacity:.7}.comment-thread.highlight{box-shadow:0 0 0 2px var(--accent)}.comment-quoted-text{font-size:12px;font-style:italic;color:var(--text-muted);background:var(--bg-primary);border-left:2px solid var(--border-color);padding:4px 8px;margin-bottom:8px;border-radius:2px;line-height:1.4;overflow:hidden;text-overflow:ellipsis}.thread-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.thread-navigate{background:none;border:none;color:var(--accent);cursor:pointer;font-size:11px;font-family:var(--font-mono)}.thread-resolve-btn{background:none;border:1px solid var(--border);color:var(--text-secondary);padding:2px 8px;border-radius:var(--radius);cursor:pointer;font-size:11px}.thread-resolve-btn:hover{border-color:var(--accent);color:var(--accent)}.comment{margin-bottom:8px}.comment-reply{margin-left:16px;padding-left:12px;border-left:2px solid var(--border)}.comment-meta{display:flex;align-items:center;gap:8px;margin-bottom:4px}.comment-author{font-size:12px;font-weight:600;color:var(--text-primary)}.comment-time{font-size:11px;color:var(--text-muted)}.comment-delete{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px}.comment-delete:hover{color:var(--accent)}.comment-text{font-size:13px;line-height:1.5;color:var(--text-secondary)}.reply-btn{background:none;border:none;color:var(--accent);cursor:pointer;font-size:12px;padding:4px 0}.reply-form textarea{width:100%;padding:8px;background:var(--bg-primary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:13px;resize:vertical;min-height:60px;outline:none;font-family:var(--font-sans)}.reply-form textarea:focus{border-color:var(--accent)}.reply-actions{display:flex;gap:8px;margin-top:6px}.reply-actions button{padding:4px 12px;border-radius:var(--radius);cursor:pointer;font-size:12px;border:1px solid var(--border);background:none;color:var(--text-secondary)}.reply-actions button:first-child{background:var(--accent);border-color:var(--accent);color:#fff}.resolved-section{margin-top:12px}.resolved-section summary{cursor:pointer;color:var(--text-muted);font-size:12px;margin-bottom:8px}.backlinks-panel{padding:16px}.backlinks-loading{color:var(--text-muted);font-size:13px}.backlinks-section{margin-bottom:8px}.backlinks-section-header{cursor:pointer;font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px;padding:6px 0;display:flex;align-items:center;gap:6px}.backlinks-count{font-size:11px;font-weight:500;color:var(--text-muted);background:var(--bg-surface);padding:1px 6px;border-radius:10px}.backlinks-empty{color:var(--text-muted);font-size:13px;padding:4px 0}.backlinks-list{display:flex;flex-direction:column;gap:4px}.backlink-entry{padding:8px 10px;background:var(--bg-surface);border-radius:var(--radius);cursor:pointer;transition:background .1s}.backlink-entry:hover{background:var(--bg-primary)}.backlink-entry-header{display:flex;align-items:center;justify-content:space-between;gap:8px}.backlink-title{font-size:13px;font-weight:500;color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.backlink-title-clickable{cursor:pointer}.backlink-title-clickable:hover{color:var(--accent)}.backlink-context{font-size:12px;color:var(--text-muted);margin-top:3px;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.backlink-dangling{opacity:.6}.backlink-unresolved{font-style:italic}.backlink-link-btn{background:none;border:1px solid var(--border);color:var(--accent);padding:2px 8px;border-radius:var(--radius);cursor:pointer;font-size:11px;flex-shrink:0;transition:border-color .15s}.backlink-link-btn:hover{border-color:var(--accent)}.header-backlinks-btn{display:flex;align-items:center;gap:4px;padding:5px 8px;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:12px;transition:border-color .15s,color .15s;flex-shrink:0}.header-backlinks-btn:hover{border-color:var(--text-muted);color:var(--text-secondary)}.header-backlinks-btn.active{border-color:var(--accent);color:var(--accent)}.backlinks-badge{font-size:10px;font-weight:600;background:var(--accent);color:#fff;padding:0 5px;border-radius:8px;min-width:16px;text-align:center;line-height:16px}.version-history-panel{padding:16px}.version-history-loading,.version-history-empty{color:var(--text-muted);font-size:13px}.version-history-list{display:flex;flex-direction:column;gap:2px}.version-history-entry{padding:8px 10px;border-radius:var(--radius);cursor:pointer;transition:background .1s}.version-history-entry:hover{background:var(--bg-surface)}.version-history-entry.selected{background:var(--bg-surface);border-left:3px solid var(--accent);padding-left:7px}.version-entry-meta{display:flex;justify-content:space-between;align-items:center;gap:8px}.version-action{font-size:12px;font-weight:600;color:var(--text-primary)}.version-action-created{color:#4ade80}.version-action-modified{color:var(--accent)}.version-action-deleted{color:#ef4444}.version-time{font-size:11px;color:var(--text-muted)}.version-user{font-size:11px;color:var(--text-muted);margin-top:2px}.version-detail{margin-top:12px;padding-top:12px;border-top:1px solid var(--border)}.version-detail-header{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--text-secondary);margin-bottom:8px}.version-detail-time{font-size:11px;color:var(--text-muted)}.version-partial-warning{font-size:12px;color:#f59e0b;padding:6px 8px;background:#f59e0b1a;border-radius:var(--radius);margin-bottom:8px}.version-actions{display:flex;flex-direction:column;gap:6px;margin-top:8px}.version-restore-btn{width:100%;padding:6px 12px;border-radius:var(--radius);cursor:pointer;font-size:12px;border:1px solid var(--accent);background:var(--accent);color:#fff;text-align:center}.version-restore-btn:hover{opacity:.9}.version-confirm{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.version-confirm-yes{padding:4px 10px;background:var(--accent);border:none;border-radius:var(--radius);color:#fff;cursor:pointer;font-size:12px}.version-confirm-no{padding:4px 10px;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:12px}.version-preview-banner{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;background:#f59e0b26;color:#f59e0b;font-size:13px;font-weight:500;border-bottom:1px solid rgba(245,158,11,.3);flex-shrink:0}.version-preview-back{background:none;border:1px solid rgba(245,158,11,.4);color:#f59e0b;padding:4px 10px;border-radius:var(--radius);cursor:pointer;font-size:12px}.version-preview-back:hover{background:#f59e0b1a}.version-preview-banner--partial{background:#ef444426;color:#ef4444;border-bottom-color:#ef44444d}.version-preview-banner+.editor-container{opacity:.65}.presence-indicators{display:flex;gap:-4px}.presence-avatar{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;border:2px solid var(--bg-secondary);margin-left:-4px}.collab-cursor{position:relative;border-left:2px solid;margin-left:-1px;margin-right:-1px;pointer-events:none;display:inline;word-break:normal}.collab-cursor-label{position:absolute;bottom:100%;left:-1px;white-space:nowrap;font-size:11px;font-weight:600;color:#fff;padding:1px 6px;border-radius:4px 4px 4px 0;line-height:1.4;pointer-events:none;-webkit-user-select:none;user-select:none}.context-menu-overlay{position:fixed;inset:0;z-index:200}.context-menu{position:fixed;z-index:201;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #0006;padding:4px;min-width:160px}.context-menu-item{display:block;width:100%;padding:8px 12px;background:none;border:none;color:var(--text-primary);cursor:pointer;text-align:left;font-size:13px;border-radius:4px}.context-menu-item:hover{background:var(--hover)}.login-page{height:100vh;display:flex;align-items:center;justify-content:center;background:var(--bg-primary)}.login-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:40px;width:380px;text-align:center}.login-card h1{font-size:28px;color:var(--accent);margin-bottom:8px;letter-spacing:1px}.login-card p{color:var(--text-secondary);margin-bottom:24px;font-size:14px}.login-card form{display:flex;flex-direction:column;gap:12px}.login-card input{padding:10px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:14px;outline:none}.login-card input:focus{border-color:var(--accent)}.login-card button[type=submit]{padding:10px;background:var(--accent);border:none;border-radius:var(--radius);color:#fff;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s}.login-card button[type=submit]:hover{background:var(--accent-hover)}.login-card button:disabled{opacity:.6;cursor:not-allowed}.login-sent{color:var(--text-secondary);line-height:1.6}.login-error{color:var(--accent);margin-top:12px;font-size:13px}.toast-container{position:fixed;bottom:20px;right:20px;z-index:300;display:flex;flex-direction:column;gap:8px}.toast{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 12px #0000004d;font-size:13px;animation:slideIn .2s ease-out}.toast-info{border-left:3px solid #3498db}.toast-error{border-left:3px solid var(--accent)}.toast-success{border-left:3px solid #2ecc71}.toast-close{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;padding:0 4px}@keyframes slideIn{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.modal-overlay{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:400}.modal-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;padding:24px;width:360px;box-shadow:0 12px 40px #00000080}.modal-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:16px}.modal-input{width:100%;padding:10px 14px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:14px;outline:none}.modal-input:focus{border-color:var(--accent)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.modal-btn{padding:8px 16px;border-radius:var(--radius);font-size:13px;font-weight:500;cursor:pointer;border:none}.modal-btn-cancel{background:var(--bg-surface);color:var(--text-secondary);border:1px solid var(--border)}.modal-btn-cancel:hover{border-color:var(--text-muted)}.modal-btn-confirm{background:var(--accent);color:#fff}.modal-btn-confirm:hover{background:var(--accent-hover)}.modal-btn-confirm:disabled{opacity:.5;cursor:not-allowed}.editor-mode-toggle{display:flex;gap:2px;padding:6px 20px;background:var(--bg-primary);border-bottom:1px solid var(--border)}.mode-toggle-btn{display:flex;align-items:center;justify-content:center;width:32px;height:28px;background:none;border:1px solid transparent;border-radius:4px;color:var(--text-muted);cursor:pointer;transition:all .15s}.mode-toggle-btn:hover{color:var(--text-secondary);background:var(--hover)}.mode-toggle-btn.active{color:var(--accent);background:#e945601a;border-color:var(--accent)}.raw-markdown-view{flex:1;display:flex;flex-direction:column;overflow:hidden}.raw-sync-indicator{padding:6px 20px;background:#e9456014;border-bottom:1px solid var(--border);color:var(--text-muted);font-size:12px;text-align:center}.raw-markdown-textarea{flex:1;max-width:900px;width:100%;margin:0 auto;padding:32px 20px;background:transparent;border:none;color:var(--text-primary);font-family:var(--font-mono);font-size:14px;line-height:1.7;resize:none;outline:none;overflow-y:auto}.settings-page{flex:1;display:flex;justify-content:center;overflow-y:auto;background:var(--bg-primary)}.settings-content{width:100%;max-width:600px;padding:40px 20px}.settings-header{margin-bottom:32px}.settings-back-btn{background:none;border:none;color:var(--accent);cursor:pointer;font-size:13px;padding:0;margin-bottom:16px}.settings-back-btn:hover{color:var(--accent-hover)}.settings-title{font-size:24px;font-weight:700;color:var(--text-primary)}.settings-section{margin-bottom:32px}.settings-section-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:4px}.settings-section-desc{font-size:13px;color:var(--text-secondary);margin-bottom:16px}.settings-error{color:var(--accent);font-size:13px;margin-bottom:12px;padding:8px 12px;background:#e9456014;border-radius:var(--radius)}.api-key-form{display:flex;gap:8px;margin-bottom:16px}.api-key-input{flex:1;padding:8px 12px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-primary);font-size:13px;outline:none}.api-key-input:focus{border-color:var(--accent)}.api-key-create-btn{padding:8px 16px;background:var(--accent);color:#fff;border:none;border-radius:var(--radius);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}.api-key-create-btn:hover{background:var(--accent-hover)}.api-key-create-btn:disabled{opacity:.5;cursor:not-allowed}.api-key-reveal{margin-bottom:16px;padding:12px;background:var(--bg-surface);border:1px solid var(--accent);border-radius:var(--radius)}.api-key-reveal-warning{font-size:12px;color:var(--accent);font-weight:600;margin-bottom:8px}.api-key-reveal-value{display:flex;align-items:center;gap:8px}.api-key-reveal-value code{flex:1;font-family:var(--font-mono);font-size:12px;color:var(--text-primary);background:var(--bg-primary);padding:6px 10px;border-radius:4px;word-break:break-all}.api-key-copy-btn{padding:6px 12px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:12px;cursor:pointer;white-space:nowrap}.api-key-copy-btn:hover{border-color:var(--accent);color:var(--accent)}.api-key-empty{color:var(--text-muted);font-size:13px;padding:20px 0;text-align:center}.api-key-list{display:flex;flex-direction:column;gap:1px;background:var(--border);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.api-key-item{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--bg-surface)}.api-key-info{display:flex;flex-direction:column;gap:2px}.api-key-name{font-size:13px;font-weight:500;color:var(--text-primary)}.api-key-date{font-size:11px;color:var(--text-muted)}.api-key-actions{display:flex;align-items:center;gap:8px}.api-key-confirm-text{font-size:12px;color:var(--text-secondary)}.api-key-revoke-btn,.api-key-cancel-btn{padding:4px 10px;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);font-size:12px;cursor:pointer}.api-key-revoke-btn:hover{border-color:var(--accent);color:var(--accent)}.api-key-cancel-btn:hover{border-color:var(--text-muted)}.api-key-confirm-btn{padding:4px 10px;background:var(--accent);border:none;border-radius:var(--radius);color:#fff;font-size:12px;cursor:pointer}.api-key-confirm-btn:hover{background:var(--accent-hover)}.sidebar-header-actions{display:flex;align-items:center;gap:4px}.sidebar-settings-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:none;border:1px solid transparent;border-radius:4px;color:var(--text-secondary);cursor:pointer;transition:all .15s}.sidebar-settings-btn:hover{color:var(--text-primary);background:var(--hover)}.sidebar-settings-btn.active{color:var(--accent);background:#e945601a;border-color:var(--accent)}.header-search-btn{display:flex;align-items:center;gap:8px;padding:5px 10px;background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius);color:var(--text-muted);cursor:pointer;font-size:12px;font-family:var(--font-sans);transition:border-color .15s,color .15s;white-space:nowrap;flex-shrink:0}.header-search-btn:hover{border-color:var(--text-muted);color:var(--text-secondary)}.header-search-kbd{display:inline-flex;align-items:center;padding:1px 5px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;font-size:10px;font-family:var(--font-sans);color:var(--text-muted);line-height:1.4}.search-modal-overlay{position:fixed;inset:0;background:#0009;z-index:400;padding-top:20vh;display:flex;justify-content:center;align-items:flex-start}.search-modal-card{width:560px;max-height:60vh;background:var(--bg-secondary);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 40px #00000080;display:flex;flex-direction:column;animation:slashMenuIn .12s ease-out}.search-modal-input-wrap{display:flex;align-items:center;gap:10px;padding:14px 16px;border-bottom:1px solid var(--border)}.search-modal-icon{flex-shrink:0;color:var(--text-muted)}.search-modal-input{flex:1;background:none;border:none;outline:none;color:var(--text-primary);font-size:16px;font-family:var(--font-sans)}.search-modal-input::placeholder{color:var(--text-muted)}.search-modal-spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite;flex-shrink:0}@keyframes spin{to{transform:rotate(360deg)}}.search-modal-results{flex:1;overflow-y:auto;padding:4px}.search-modal-result{display:flex;flex-direction:column;gap:4px;width:100%;padding:10px 12px;background:none;border:none;color:var(--text-primary);cursor:pointer;text-align:left;border-radius:6px;transition:background .1s;font-family:var(--font-sans)}.search-modal-result:hover,.search-modal-result.selected{background:#e945601f}.search-modal-result-title{display:flex;align-items:baseline;gap:8px}.search-modal-result-name{font-size:14px;font-weight:500}.search-modal-result-dir{font-size:12px;color:var(--text-muted)}.search-modal-result-snippet{font-size:12px;color:var(--text-secondary);line-height:1.5;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.search-modal-result-snippet mark{background:#e9456040;color:var(--text-primary);border-radius:2px;padding:0 1px}.search-modal-result--comment .search-modal-result-title{gap:6px}.search-modal-comment-icon{flex-shrink:0;color:var(--text-muted)}.search-modal-result-author{font-size:11px;color:var(--text-muted);margin-left:auto;flex-shrink:0}.search-modal-empty{padding:24px;text-align:center;color:var(--text-muted);font-size:13px}.search-modal-footer{display:flex;gap:16px;padding:8px 16px;border-top:1px solid var(--border);font-size:11px;color:var(--text-muted)}.changes-badge-starred{color:var(--accent)!important}.changes-badge-count{position:absolute;top:-2px;right:-4px;background:var(--accent);color:#fff;font-size:9px;font-weight:700;min-width:14px;height:14px;line-height:14px;text-align:center;border-radius:7px;padding:0 3px;pointer-events:none}.sidebar-settings-btn{position:relative}.changes-pane{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-primary)}.changes-pane-header{display:flex;align-items:center;gap:16px;padding:16px 24px;border-bottom:1px solid var(--border)}.changes-pane-header h2{font-size:16px;font-weight:600;color:var(--text-primary);flex:1}.changes-pane-back{display:flex;align-items:center;gap:4px;background:none;border:none;color:var(--text-secondary);cursor:pointer;font-size:13px;font-family:var(--font-sans);padding:4px 8px;border-radius:var(--radius)}.changes-pane-back:hover{color:var(--text-primary);background:var(--hover)}.changes-pane-sub{padding:8px 24px;font-size:12px;color:var(--text-muted);display:flex;flex-direction:column;gap:2px;border-bottom:1px solid var(--border)}.changes-pane-body{overflow-y:auto;flex:1;padding:12px 0;max-width:800px}.changes-section-title{padding:8px 24px 4px;font-size:11px;font-weight:600;text-transform:uppercase;color:var(--text-muted);letter-spacing:.5px}.changes-file{padding:4px 24px}.changes-file-header{display:flex;align-items:center;gap:6px;padding:4px 0}.changes-action{font-size:12px;font-weight:700;width:16px;text-align:center;flex-shrink:0}.changes-action-created{color:#4ade80}.changes-action-modified{color:#60a5fa}.changes-action-deleted{color:#f87171}.changes-file-name{background:none;border:none;color:var(--text-primary);cursor:pointer;font-size:13px;font-family:var(--font-sans);padding:0;text-align:left;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.changes-file-name:hover{color:var(--accent);text-decoration:underline}.changes-file-meta{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--text-muted);flex-shrink:0}.changes-user{color:var(--text-secondary)}.changes-file-note{font-size:11px;color:var(--text-muted);padding:2px 0 2px 22px;font-style:italic}.changes-toggle-diff{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:11px;font-family:var(--font-sans);padding:2px 0 2px 22px}.changes-toggle-diff:hover{color:var(--text-secondary)}.changes-diff{margin:4px 0 4px 22px;padding:8px;background:var(--bg-primary);border-radius:4px;font-family:var(--font-mono);font-size:11px;line-height:1.5;overflow-x:auto;color:var(--text-secondary)}.diff-add{color:#4ade80}.diff-del{color:#f87171}.diff-hunk{color:#60a5fa}.changes-empty{padding:24px;text-align:center;color:var(--text-muted);font-size:13px}.changes-mark-seen{background:var(--bg-tertiary);border:1px solid var(--border);color:var(--text-primary);cursor:pointer;padding:6px 16px;border-radius:var(--radius);font-size:12px;font-family:var(--font-sans);transition:background .15s}.changes-mark-seen:hover{background:var(--accent);border-color:var(--accent)}.file-tree-node{position:relative}.file-star-btn{position:absolute;right:4px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;font-size:12px;padding:2px 4px;color:var(--text-muted);opacity:0;transition:opacity .15s}.file-tree-node:hover .file-star-btn,.file-star-btn.starred{opacity:1}.file-star-btn.starred,.file-star-btn:hover{color:#fbbf24}.coach-mark-overlay-piece{position:fixed;background:#0009;z-index:10000;pointer-events:auto}.coach-mark-spotlight{position:fixed;border-radius:var(--radius);z-index:10001;box-shadow:0 0 0 2px #e9456080;transition:top .25s ease,left .25s ease,width .25s ease,height .25s ease}.coach-mark-tooltip{position:fixed;z-index:10002;background:var(--bg-secondary);border:1px solid var(--border);border-radius:calc(var(--radius) * 2);padding:20px 24px;max-width:340px;box-shadow:0 8px 32px #0006;animation:coachMarkIn .2s ease-out}.coach-mark-tooltip.centered{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%);width:360px;text-align:center}@keyframes coachMarkIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.coach-mark-tooltip.centered{animation-name:coachMarkCenterIn}@keyframes coachMarkCenterIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.coach-mark-title{margin:0 0 8px;font-size:15px;font-weight:600;color:var(--text-primary)}.coach-mark-body{margin:0 0 12px;font-size:13px;color:var(--text-secondary);line-height:1.5}.coach-mark-illustration{margin:0 0 12px;padding:10px 12px;background:var(--bg-primary);border-radius:var(--radius);border:1px solid var(--border)}.coach-mark-dots{display:flex;gap:6px;justify-content:center;margin-bottom:14px}.coach-mark-dot{width:6px;height:6px;border-radius:50%;background:var(--border);transition:background .2s}.coach-mark-dot.active{background:var(--accent)}.coach-mark-dot.done{background:var(--text-muted)}.coach-mark-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.coach-mark-btn{padding:6px 14px;border-radius:var(--radius);font-size:13px;cursor:pointer;border:none;transition:background .15s,color .15s}.coach-mark-btn.skip{background:none;color:var(--text-muted)}.coach-mark-btn.skip:hover{color:var(--text-secondary)}.coach-mark-btn.next,.coach-mark-btn.done{background:var(--accent);color:#fff}.coach-mark-btn.next:hover,.coach-mark-btn.done:hover{background:var(--accent-hover)}.coach-mark-hint{font-size:12px;color:var(--text-muted);font-style:italic}.header-help-btn{display:flex;align-items:center;justify-content:center;gap:0;padding:4px 8px;background:none;border:1px solid var(--border);border-radius:var(--radius);color:var(--text-secondary);cursor:pointer;font-size:13px;font-weight:600;transition:color .15s,border-color .15s;position:relative}.header-help-btn:hover{color:var(--text-primary);border-color:var(--text-muted)}.help-dropdown{position:absolute;top:calc(100% + 6px);right:0;min-width:200px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 16px #0000004d;z-index:100;padding:4px 0;animation:slashMenuIn .15s ease-out}.help-dropdown-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:none;border:none;color:var(--text-primary);font-size:13px;cursor:pointer;text-align:left}.help-dropdown-item:hover{background:var(--hover)}.help-dropdown-check{width:16px;color:#22c55e;font-size:14px;flex-shrink:0}.tour-toast-actions{display:flex;gap:8px;margin-top:6px}.tour-toast-btn{padding:3px 10px;border-radius:var(--radius);font-size:12px;cursor:pointer;border:none}.tour-toast-btn.take{background:var(--accent);color:#fff}.tour-toast-btn.take:hover{background:var(--accent-hover)}.tour-toast-btn.dismiss{background:none;color:var(--text-muted);border:1px solid var(--border)}.tour-toast-btn.dismiss:hover{color:var(--text-secondary)}.tutorials-section{margin-top:32px}.tutorials-section h3{margin-bottom:12px}.tutorial-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px}.tutorial-item-info{flex:1;min-width:0}.tutorial-item-name{font-size:14px;color:var(--text-primary);font-weight:500}.tutorial-item-desc{font-size:12px;color:var(--text-muted);margin-top:2px}.tutorial-item-status{color:#22c55e;font-size:16px;flex-shrink:0}.tutorial-item-btn{padding:5px 12px;border-radius:var(--radius);font-size:12px;cursor:pointer;border:1px solid var(--border);background:none;color:var(--text-secondary);transition:color .15s,border-color .15s;flex-shrink:0}.tutorial-item-btn:hover{color:var(--text-primary);border-color:var(--text-muted)}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}
