:root{--bg:#fff;--fg:#1f2328;--bg-secondary:#f6f8fa;--border:#d0d7de;--border-light:#d8dee4;--text-muted:#656d76;--link:#0969da;--btn-bg:#1f883d;--btn-fg:#fff;--btn-hover:#1a7f37;--input-bg:#fff;--input-border:#d0d7de;--code-bg:#eff1f3;--sidebar-bg:#f6f8fa;--comment-highlight:#ffd40033;--comment-border:#ffd40099;--suggestion-highlight:#00c8501f;--suggestion-border:#00c85080;--diff-del-bg:#ff000014;--diff-del-fg:#cf222e;--diff-ins-bg:#00c80014;--diff-ins-fg:#1a7f37;--hover-bg:#d0d7de52;--flash-bg:#ffd4004d;--syn-keyword:#cf222e;--syn-comment:#6e7781;--syn-string:#0a3069;--syn-literal:#0550ae;--syn-atom:#0550ae;--syn-variable:#953800;--syn-type:#953800;--syn-class:#953800;--syn-meta:#6e7781;--syn-heading:#0550ae;--syn-invalid:#cf222e}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--fg);height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;overflow:hidden}#app{flex-direction:column;height:100vh;display:flex}.screen{justify-content:center;align-items:center;height:100vh;padding:24px;display:flex}.screen-card{width:100%;max-width:520px}.screen-card h1{margin-bottom:8px;font-size:28px;font-weight:700}.screen-header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.screen-user{color:var(--text-muted);align-items:center;gap:8px;font-size:14px;display:flex}.screen-desc{color:var(--text-muted);margin-bottom:24px;font-size:15px}.primary-btn{background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;border:none;border-radius:6px;padding:10px 24px;font-size:15px;font-weight:500}.primary-btn:hover{background:var(--btn-hover)}.primary-btn:disabled{opacity:.6;cursor:default}.text-btn{color:var(--link);cursor:pointer;background:0 0;border:none;font-size:13px}.text-btn:hover{text-decoration:underline}#device-flow{border:1px solid var(--border);text-align:center;border-radius:8px;margin-top:24px;padding:20px}#device-flow p{margin-bottom:12px;font-size:14px}#device-flow a{color:var(--link)}.user-code{letter-spacing:4px;background:var(--bg-secondary);border-radius:8px;margin:12px 0;padding:12px;font-family:SF Mono,Fira Code,monospace;font-size:32px;font-weight:700}.poll-status{color:var(--text-muted);font-size:13px}.url-input-group{gap:8px;display:flex}.url-input-group input{border:1px solid var(--input-border);background:var(--input-bg);color:var(--fg);border-radius:6px;flex:1;padding:10px 14px;font-family:SF Mono,Fira Code,monospace;font-size:14px}.url-input-group input:focus{outline:2px solid var(--btn-bg);outline-offset:-1px}.input-hint{color:var(--text-muted);margin-top:8px;font-size:12px}.error{color:#dc2626;background:#dc26261a;border-radius:6px;margin-top:12px;padding:10px 14px;font-size:13px}#pr-file-picker{margin-top:16px}.picker-label{color:var(--text-muted);margin-bottom:8px;font-size:13px}.file-pick-btn{text-align:left;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);cursor:pointer;border-radius:6px;margin-bottom:6px;padding:10px 14px;font-family:SF Mono,Fira Code,monospace;font-size:13px;display:block}.file-pick-btn:hover{background:var(--hover-bg)}.file-status{color:var(--text-muted);margin-left:8px;font-family:-apple-system,sans-serif;font-size:12px}#toolbar{border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0;align-items:center;gap:4px;padding:6px 12px;display:flex}.toolbar-group{align-items:center;gap:2px;display:flex}.toolbar-sep{background:var(--border);width:1px;height:20px;margin:0 4px}.toolbar-right{gap:8px;margin-left:auto}.toolbar-filename{color:var(--text-muted);padding:0 8px;font-family:SF Mono,Fira Code,monospace;font-size:13px}.toolbar-user{color:var(--text-muted);border-left:1px solid var(--border);margin-left:4px;padding-left:8px;font-size:12px}.back-btn{font-size:16px}#toolbar button{color:var(--fg);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:4px;min-width:28px;padding:4px 8px;font-size:13px;line-height:1.4}#toolbar button:hover{background:var(--hover-bg)}.toolbar-save{font-weight:500;background:var(--btn-bg)!important;color:var(--btn-fg)!important;padding:4px 14px!important}.toolbar-save:hover{background:var(--btn-hover)!important}.readonly-badge{background:var(--bg-secondary);color:var(--text-muted);border:1px solid var(--border);border-radius:4px;padding:4px 12px;font-size:12px;font-weight:500}#main{flex:1;display:flex;overflow:hidden}#editor-container{flex:1;padding:32px 48px;overflow-y:auto}#editor-container .tiptap{outline:none;min-height:100%;font-size:15px;line-height:1.75}.tiptap h1{border-bottom:1px solid var(--border);margin:.8em 0 .4em;padding-bottom:.3em;font-size:2em;font-weight:600}.tiptap h2{border-bottom:1px solid var(--border);margin:.8em 0 .4em;padding-bottom:.3em;font-size:1.5em;font-weight:600}.tiptap h3{margin:.8em 0 .4em;font-size:1.25em;font-weight:600}.tiptap p{margin:.5em 0}.tiptap ul,.tiptap ol{margin:.5em 0;padding-left:1.5em}.tiptap li{margin:.2em 0}.tiptap blockquote{border-left:3px solid var(--border);opacity:.85;margin:.5em 0;padding-left:1em}.tiptap pre{background:var(--code-bg);border-radius:6px;margin:.5em 0;padding:14px 16px;font-family:SF Mono,Fira Code,monospace;font-size:13px;overflow-x:auto}.tiptap code{background:var(--code-bg);border-radius:3px;padding:2px 5px;font-family:SF Mono,Fira Code,monospace;font-size:.9em}.tiptap pre code{background:0 0;border-radius:0;padding:0}.tiptap hr{border:none;border-top:1px solid var(--border);margin:1.5em 0}.tiptap img{border-radius:4px;max-width:100%;height:auto}.tiptap a{color:var(--link);text-decoration:underline}.tiptap table{border-collapse:collapse;width:100%;margin:.5em 0}.tiptap th,.tiptap td{border:1px solid var(--border);text-align:left;padding:6px 12px}.tiptap th{background:var(--bg-secondary);font-weight:600}mark.comment-mark{background:var(--comment-highlight);border-bottom:2px solid var(--comment-border);cursor:pointer;border-radius:2px;padding:1px 0}mark.comment-mark.suggestion{background:var(--suggestion-highlight);border-bottom:2px solid var(--suggestion-border)}#sidebar{border-left:1px solid var(--border);background:var(--sidebar-bg);flex-shrink:0;width:320px;overflow-y:auto}#comment-form{border-bottom:1px solid var(--border);padding:14px}#comment-form.hidden{display:none}#form-header{color:var(--text-muted);word-break:break-word;margin-bottom:8px;font-size:12px;line-height:1.4}#comment-form textarea{border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--fg);resize:vertical;border-radius:4px;padding:8px 10px;font-family:inherit;font-size:13px;line-height:1.4}#suggest-replacement{margin-top:8px}#suggest-replacement.hidden{display:none}#suggest-replacement label{color:var(--text-muted);margin-bottom:4px;font-size:12px;display:block}.form-actions{justify-content:flex-end;gap:8px;margin-top:10px;display:flex}.form-actions button{cursor:pointer;border:1px solid #0000;border-radius:4px;padding:5px 14px;font-size:12px}#form-cancel{color:var(--fg);background:0 0}#form-submit{background:var(--btn-bg);color:var(--btn-fg)}#form-submit:hover{background:var(--btn-hover)}.comment-card{border-bottom:1px solid var(--border);cursor:pointer;padding:14px;transition:background .15s}.comment-card:hover{background:var(--hover-bg)}.comment-card.resolved{opacity:.55}.comment-header{align-items:center;gap:8px;margin-bottom:6px;font-size:12px;display:flex}.comment-header strong{font-size:13px}.comment-time{color:var(--text-muted);flex:1}.delete-btn{color:var(--text-muted);cursor:pointer;opacity:0;background:0 0;border:none;padding:0 4px;font-size:16px;transition:opacity .1s}.comment-card:hover .delete-btn{opacity:1}.comment-body{word-break:break-word;font-size:13px;line-height:1.5}.suggestion-diff{border:1px solid var(--border);border-radius:4px;margin:6px 0;font-size:13px;overflow:hidden}.diff-del{background:var(--diff-del-bg);color:var(--diff-del-fg);padding:6px 10px;text-decoration:line-through}.diff-ins{background:var(--diff-ins-bg);color:var(--diff-ins-fg);padding:6px 10px}.accept-btn{background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;border:none;border-radius:4px;margin-top:8px;padding:4px 12px;font-size:12px;display:inline-block}.accept-btn:hover{background:var(--btn-hover)}.comment-reply{border-top:1px solid var(--border-light);margin:8px 0 0 12px;padding:8px 0 0;font-size:12px;line-height:1.4}.comment-actions{gap:12px;margin-top:8px;display:flex}.comment-actions button{color:var(--link);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px}.comment-actions button:hover{text-decoration:underline}.reply-form{margin-top:8px}.reply-form.hidden{display:none}.reply-form textarea{border:1px solid var(--input-border);background:var(--input-bg);width:100%;color:var(--fg);resize:vertical;border-radius:4px;padding:6px 8px;font-family:inherit;font-size:12px}.reply-submit-btn{background:var(--btn-bg);color:var(--btn-fg);cursor:pointer;border:none;border-radius:4px;margin-top:4px;padding:3px 10px;font-size:12px}.resolved-section h4{color:var(--text-muted);padding:10px 14px 4px;font-size:12px;font-weight:500}.highlight-flash{animation:1.5s ease-out flash}@keyframes flash{0%{background:var(--flash-bg)}to{background:0 0}}.source-pane{border-left:1px solid var(--border);flex:1;overflow:hidden}.source-pane .cm-editor{background:var(--bg);height:100%;color:var(--fg)}.source-pane .cm-gutters{background:var(--bg-secondary);color:var(--text-muted);border-right:1px solid var(--border)}.source-pane .cm-activeLineGutter,.source-pane .cm-activeLine{background:var(--hover-bg)}.source-pane .cm-cursor{border-left-color:var(--fg)}.source-pane .tok-keyword{color:var(--syn-keyword)}.source-pane .tok-comment{color:var(--syn-comment);font-style:italic}.source-pane .tok-string,.source-pane .tok-deleted{color:var(--syn-string)}.source-pane .tok-literal,.source-pane .tok-inserted{color:var(--syn-literal)}.source-pane .tok-atom,.source-pane .tok-bool,.source-pane .tok-labelName,.source-pane .tok-contentSeparator{color:var(--syn-atom)}.source-pane .tok-variableName{color:var(--syn-variable)}.source-pane .tok-typeName,.source-pane .tok-namespace{color:var(--syn-type)}.source-pane .tok-className{color:var(--syn-class)}.source-pane .tok-meta{color:var(--syn-meta)}.source-pane .tok-heading{color:var(--syn-heading);font-weight:700}.source-pane .tok-emphasis{font-style:italic}.source-pane .tok-strong{font-weight:700}.source-pane .tok-link{color:var(--link);text-decoration:underline}.source-pane .tok-url{color:var(--link)}.source-pane .tok-invalid{color:var(--syn-invalid)}.source-pane .cm-vim-panel{background:var(--bg-secondary);color:var(--fg);border-top:1px solid var(--border);padding:2px 8px;font-family:SF Mono,Fira Code,monospace;font-size:13px}.source-pane .cm-vim-panel input{background:var(--input-bg);color:var(--fg);border:1px solid var(--input-border);font-family:inherit;font-size:inherit}.toolbar-toggle-source{border-radius:4px;font-weight:500;border:1px solid var(--border)!important;padding:4px 14px!important;font-family:SF Mono,Fira Code,monospace!important;font-size:13px!important}.toolbar-toggle-source.active{background:var(--btn-bg)!important;color:var(--btn-fg)!important;border-color:var(--btn-bg)!important}#main:has(.source-pane:not(.hidden)) #editor-container{flex:1;max-width:50%}#main:has(.source-pane:not(.hidden)) .source-pane{flex:1}.theme-select{appearance:none;background:var(--bg-secondary);color:var(--fg);border:1px solid var(--border);cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23656d76' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;border-radius:4px;outline:none;padding:4px 26px 4px 10px;font-family:SF Mono,Fira Code,monospace;font-size:13px;font-weight:500;line-height:1.4}.theme-select:hover{border-color:var(--text-muted)}.theme-select:focus-visible{border-color:var(--link);box-shadow:0 0 0 2px #0969da4d}.screen-theme{position:fixed;top:16px;right:16px}.hidden{display:none!important}.connection-badge{border-radius:4px;margin-left:8px;padding:2px 6px;font-size:11px;font-weight:500}.connection-badge.connected{display:none}.connection-badge.connecting{background:var(--comment-highlight);color:var(--fg)}.connection-badge.disconnected{color:var(--diff-del-fg);background:#ff00001a}.presence-indicator{align-items:center;gap:4px;margin-right:8px;display:inline-flex}.presence-dot{color:#fff;cursor:default;border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:11px;font-weight:600;display:inline-flex}.presence-extra{color:var(--text-muted);margin-left:2px;font-size:11px}.collaboration-cursor__caret{pointer-events:none;word-break:normal;border-left:2px solid;margin-left:-1px;margin-right:-1px;position:relative}.collaboration-cursor__label{color:#fff;-webkit-user-select:none;user-select:none;white-space:nowrap;pointer-events:none;border-radius:3px;padding:1px 4px;font-size:11px;font-weight:600;line-height:1;position:absolute;top:-1.4em;left:-1px}.toast{background:var(--fg);color:var(--bg);opacity:0;z-index:1000;pointer-events:none;border-radius:8px;padding:10px 20px;font-size:13px;transition:opacity .3s,transform .3s;position:fixed;bottom:24px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.suggestion-insert{color:inherit;background:#2ea04326;border-bottom:2px solid #2ea04399;text-decoration:none}.suggestion-delete{color:var(--diff-del-fg,#cf222e);opacity:.7;background:#f851491f;text-decoration:line-through}#suggesting-toggle.active{color:var(--diff-ins-fg,#1a7f37);background:#2ea04326;font-weight:600}.history-panel{background:var(--sidebar-bg,#f6f8fa);border-left:1px solid var(--border,#d0d7de);width:280px;min-width:280px;padding:12px;overflow-y:auto}.history-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.history-header h3{margin:0;font-size:14px;font-weight:600}.history-badge{background:var(--link,#0969da);color:#fff;border-radius:10px;margin-left:6px;padding:2px 6px;font-size:11px;font-weight:600}.history-loading,.history-empty{color:var(--text-muted,#656d76);text-align:center;padding:20px 0;font-size:13px}.history-list{flex-direction:column;gap:4px;display:flex}.history-item{cursor:pointer;border:1px solid #0000;border-radius:6px;padding:8px 10px;transition:background .15s}.history-item:hover{background:var(--hover-bg,#d0d7de52)}.history-item.selected{border-color:var(--link,#0969da);background:#0969da14}.history-item.new-commit{border-left:3px solid var(--link,#0969da)}.history-item-header{justify-content:space-between;margin-bottom:2px;font-size:12px;display:flex}.history-author{color:var(--fg,#1f2328);font-weight:600}.history-date{color:var(--text-muted,#656d76)}.history-message{color:var(--fg,#1f2328);text-overflow:ellipsis;white-space:nowrap;font-size:13px;overflow:hidden}.history-sha{color:var(--text-muted,#656d76);margin-top:2px;font-family:monospace;font-size:11px}.diff-modal{z-index:10000;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.diff-modal-backdrop{background:#00000080;position:absolute;inset:0}.diff-modal-content{background:var(--bg,#fff);border-radius:12px;flex-direction:column;width:80%;max-width:900px;max-height:80vh;display:flex;position:relative;box-shadow:0 8px 32px #0003}.diff-modal-header{border-bottom:1px solid var(--border,#d0d7de);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.diff-modal-header h3{margin:0;font-size:16px}.diff-modal-actions{gap:8px;display:flex}.diff-modal-body{flex:1;padding:16px 20px;overflow-y:auto}.diff-output{white-space:pre-wrap;word-break:break-word;margin:0;font-family:monospace;font-size:13px;line-height:1.6}.diff-line{border-radius:3px;padding:1px 8px}.diff-line.add{background:var(--diff-ins-bg,#00c80014);color:var(--diff-ins-fg,#1a7f37)}.diff-line.del{background:var(--diff-del-bg,#ff000014);color:var(--diff-del-fg,#cf222e)}.diff-line.ctx{color:var(--text-muted,#656d76)}
