:root{--bg: #ffffff;--fg: #1f2328;--bg-secondary: #f6f8fa;--border: #d0d7de;--border-light: #d8dee4;--text-muted: #656d76;--link: #0969da;--btn-bg: #1f883d;--btn-fg: #ffffff;--btn-hover: #1a7f37;--input-bg: #ffffff;--input-border: #d0d7de;--code-bg: #eff1f3;--sidebar-bg: #f6f8fa;--comment-highlight: rgba(255, 212, 0, .2);--comment-border: rgba(255, 212, 0, .6);--suggestion-highlight: rgba(0, 200, 80, .12);--suggestion-border: rgba(0, 200, 80, .5);--diff-del-bg: rgba(255, 0, 0, .08);--diff-del-fg: #cf222e;--diff-ins-bg: rgba(0, 200, 0, .08);--diff-ins-fg: #1a7f37;--hover-bg: rgba(208, 215, 222, .32);--flash-bg: rgba(255, 212, 0, .3);--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{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Noto Sans,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--fg);height:100vh;overflow:hidden}#app{display:flex;flex-direction:column;height:100vh}.screen{display:flex;align-items:center;justify-content:center;height:100vh;padding:24px}.screen-card{max-width:520px;width:100%}.screen-card h1{font-size:28px;font-weight:700;margin-bottom:8px}.screen-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.screen-user{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--text-muted)}.screen-desc{color:var(--text-muted);margin-bottom:24px;font-size:15px}.primary-btn{padding:10px 24px;background:var(--btn-bg);color:var(--btn-fg);border:none;border-radius:6px;font-size:15px;font-weight:500;cursor:pointer}.primary-btn:hover{background:var(--btn-hover)}.primary-btn:disabled{opacity:.6;cursor:default}.text-btn{background:none;border:none;color:var(--link);cursor:pointer;font-size:13px}.text-btn:hover{text-decoration:underline}#device-flow{margin-top:24px;padding:20px;border:1px solid var(--border);border-radius:8px;text-align:center}#device-flow p{margin-bottom:12px;font-size:14px}#device-flow a{color:var(--link)}.user-code{font-family:SF Mono,Fira Code,monospace;font-size:32px;font-weight:700;letter-spacing:4px;padding:12px;background:var(--bg-secondary);border-radius:8px;margin:12px 0}.poll-status{color:var(--text-muted);font-size:13px}.url-input-group{display:flex;gap:8px}.url-input-group input{flex:1;padding:10px 14px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--fg);border-radius:6px;font-size:14px;font-family:SF Mono,Fira Code,monospace}.url-input-group input:focus{outline:2px solid var(--btn-bg);outline-offset:-1px}.input-hint{margin-top:8px;font-size:12px;color:var(--text-muted)}.error{margin-top:12px;padding:10px 14px;background:#dc26261a;color:#dc2626;border-radius:6px;font-size:13px}#pr-file-picker{margin-top:16px}.picker-label{font-size:13px;color:var(--text-muted);margin-bottom:8px}.file-pick-btn{display:block;width:100%;text-align:left;padding:10px 14px;border:1px solid var(--border);background:var(--bg);color:var(--fg);border-radius:6px;margin-bottom:6px;cursor:pointer;font-size:13px;font-family:SF Mono,Fira Code,monospace}.file-pick-btn:hover{background:var(--hover-bg)}.file-status{color:var(--text-muted);font-family:-apple-system,sans-serif;font-size:12px;margin-left:8px}#toolbar{display:flex;align-items:center;gap:4px;padding:6px 12px;border-bottom:1px solid var(--border);background:var(--bg-secondary);flex-shrink:0}.toolbar-group{display:flex;align-items:center;gap:2px}.toolbar-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.toolbar-right{margin-left:auto;gap:8px}.toolbar-filename{font-size:13px;color:var(--text-muted);font-family:SF Mono,Fira Code,monospace;padding:0 8px}.toolbar-user{font-size:12px;color:var(--text-muted);margin-left:4px;padding-left:8px;border-left:1px solid var(--border)}.back-btn{font-size:16px}#toolbar button{padding:4px 8px;border:1px solid transparent;border-radius:4px;background:none;color:var(--fg);cursor:pointer;font-size:13px;min-width:28px;line-height:1.4}#toolbar button:hover{background:var(--hover-bg)}.toolbar-save{background:var(--btn-bg)!important;color:var(--btn-fg)!important;padding:4px 14px!important;font-weight:500}.toolbar-save:hover{background:var(--btn-hover)!important}.readonly-badge{background:var(--bg-secondary);color:var(--text-muted);padding:4px 12px;border-radius:4px;font-size:12px;font-weight:500;border:1px solid var(--border)}#main{display:flex;flex:1;overflow:hidden}#editor-container{flex:1;overflow-y:auto;padding:32px 48px}#editor-container .tiptap{outline:none;min-height:100%;font-size:15px;line-height:1.75}.tiptap h1{font-size:2em;margin:.8em 0 .4em;font-weight:600;padding-bottom:.3em;border-bottom:1px solid var(--border)}.tiptap h2{font-size:1.5em;margin:.8em 0 .4em;font-weight:600;padding-bottom:.3em;border-bottom:1px solid var(--border)}.tiptap h3{font-size:1.25em;margin:.8em 0 .4em;font-weight:600}.tiptap p{margin:.5em 0}.tiptap ul,.tiptap ol{padding-left:1.5em;margin:.5em 0}.tiptap li{margin:.2em 0}.tiptap blockquote{border-left:3px solid var(--border);padding-left:1em;margin:.5em 0;opacity:.85}.tiptap pre{background:var(--code-bg);padding:14px 16px;border-radius:6px;overflow-x:auto;font-family:SF Mono,Fira Code,monospace;font-size:13px;margin:.5em 0}.tiptap code{background:var(--code-bg);padding:2px 5px;border-radius:3px;font-family:SF Mono,Fira Code,monospace;font-size:.9em}.tiptap pre code{background:none;padding:0;border-radius:0}.tiptap hr{border:none;border-top:1px solid var(--border);margin:1.5em 0}.tiptap img{max-width:100%;height:auto;border-radius:4px}.tiptap a{color:var(--link);text-decoration:underline}.tiptap table{border-collapse:collapse;margin:.5em 0;width:100%}.tiptap th,.tiptap td{border:1px solid var(--border);padding:6px 12px;text-align:left}.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;padding:1px 0;border-radius:2px}mark.comment-mark.suggestion{background:var(--suggestion-highlight);border-bottom:2px solid var(--suggestion-border)}#sidebar{width:320px;border-left:1px solid var(--border);overflow-y:auto;flex-shrink:0;background:var(--sidebar-bg)}#comment-form{padding:14px;border-bottom:1px solid var(--border)}#comment-form.hidden{display:none}#form-header{font-size:12px;color:var(--text-muted);margin-bottom:8px;word-break:break-word;line-height:1.4}#comment-form textarea{width:100%;padding:8px 10px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--fg);border-radius:4px;resize:vertical;font-family:inherit;font-size:13px;line-height:1.4}#suggest-replacement{margin-top:8px}#suggest-replacement.hidden{display:none}#suggest-replacement label{font-size:12px;color:var(--text-muted);display:block;margin-bottom:4px}.form-actions{margin-top:10px;display:flex;gap:8px;justify-content:flex-end}.form-actions button{padding:5px 14px;border:1px solid transparent;border-radius:4px;cursor:pointer;font-size:12px}#form-cancel{background:none;color:var(--fg)}#form-submit{background:var(--btn-bg);color:var(--btn-fg)}#form-submit:hover{background:var(--btn-hover)}.comment-card{padding:14px;border-bottom:1px solid var(--border);cursor:pointer;transition:background .15s}.comment-card:hover{background:var(--hover-bg)}.comment-card.resolved{opacity:.55}.comment-header{display:flex;align-items:center;gap:8px;font-size:12px;margin-bottom:6px}.comment-header strong{font-size:13px}.comment-time{color:var(--text-muted);flex:1}.delete-btn{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:16px;padding:0 4px;opacity:0;transition:opacity .1s}.comment-card:hover .delete-btn{opacity:1}.comment-body{font-size:13px;line-height:1.5;word-break:break-word}.suggestion-diff{margin:6px 0;font-size:13px;border-radius:4px;overflow:hidden;border:1px solid var(--border)}.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{display:inline-block;margin-top:8px;padding:4px 12px;background:var(--btn-bg);color:var(--btn-fg);border:none;border-radius:4px;cursor:pointer;font-size:12px}.accept-btn:hover{background:var(--btn-hover)}.comment-reply{margin:8px 0 0 12px;padding:8px 0 0;border-top:1px solid var(--border-light);font-size:12px;line-height:1.4}.comment-actions{margin-top:8px;display:flex;gap:12px}.comment-actions button{background:none;border:none;color:var(--link);cursor:pointer;font-size:12px;padding:0}.comment-actions button:hover{text-decoration:underline}.reply-form{margin-top:8px}.reply-form.hidden{display:none}.reply-form textarea{width:100%;padding:6px 8px;border:1px solid var(--input-border);background:var(--input-bg);color:var(--fg);border-radius:4px;font-family:inherit;font-size:12px;resize:vertical}.reply-submit-btn{margin-top:4px;padding:3px 10px;background:var(--btn-bg);color:var(--btn-fg);border:none;border-radius:4px;cursor:pointer;font-size:12px}.resolved-section h4{padding:10px 14px 4px;font-size:12px;color:var(--text-muted);font-weight:500}.highlight-flash{animation:flash 1.5s ease-out}@keyframes flash{0%{background:var(--flash-bg)}to{background:transparent}}.source-pane{flex:1;border-left:1px solid var(--border);overflow:hidden}.source-pane .cm-editor{height:100%;background:var(--bg);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{font-weight:700;color:var(--syn-heading)}.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{font-family:SF Mono,Fira Code,monospace!important;font-size:13px!important;font-weight:500;padding:4px 14px!important;border:1px solid var(--border)!important;border-radius:4px}.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{-moz-appearance:none;appearance:none;-webkit-appearance:none;background:var(--bg-secondary);color:var(--fg);border:1px solid var(--border);border-radius:4px;padding:4px 26px 4px 10px;font-size:13px;font-family:SF Mono,Fira Code,monospace;font-weight:500;cursor:pointer;outline:none;line-height:1.4;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-repeat:no-repeat;background-position:right 8px center}.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{font-size:11px;padding:2px 6px;border-radius:4px;margin-left:8px;font-weight:500}.connection-badge.connected{display:none}.connection-badge.connecting{background:var(--comment-highlight);color:var(--fg)}.connection-badge.disconnected{background:#ff00001a;color:var(--diff-del-fg)}.presence-indicator{display:inline-flex;align-items:center;gap:4px;margin-right:8px}.presence-dot{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;color:#fff;font-size:11px;font-weight:600;cursor:default}.presence-extra{font-size:11px;color:var(--text-muted);margin-left:2px}.collaboration-cursor__caret{border-left:2px solid;margin-left:-1px;margin-right:-1px;pointer-events:none;position:relative;word-break:normal}.collaboration-cursor__label{border-radius:3px;color:#fff;font-size:11px;font-weight:600;left:-1px;line-height:1;padding:1px 4px;position:absolute;top:-1.4em;-webkit-user-select:none;user-select:none;white-space:nowrap;pointer-events:none}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%) translateY(20px);background:var(--fg);color:var(--bg);padding:10px 20px;border-radius:8px;font-size:13px;opacity:0;transition:opacity .3s,transform .3s;z-index:1000;pointer-events:none}.toast.show{opacity:1;transform:translate(-50%) translateY(0)}.suggestion-insert{background:#2ea04326;border-bottom:2px solid rgba(46,160,67,.6);color:inherit;text-decoration:none}.suggestion-delete{background:#f851491f;color:var(--diff-del-fg, #cf222e);text-decoration:line-through;opacity:.7}#suggesting-toggle.active{background:#2ea04326;color:var(--diff-ins-fg, #1a7f37);font-weight:600}.history-panel{width:280px;min-width:280px;background:var(--sidebar-bg, #f6f8fa);border-left:1px solid var(--border, #d0d7de);overflow-y:auto;padding:12px}.history-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.history-header h3{margin:0;font-size:14px;font-weight:600}.history-badge{background:var(--link, #0969da);color:#fff;font-size:11px;padding:2px 6px;border-radius:10px;margin-left:6px;font-weight:600}.history-loading,.history-empty{font-size:13px;color:var(--text-muted, #656d76);padding:20px 0;text-align:center}.history-list{display:flex;flex-direction:column;gap:4px}.history-item{padding:8px 10px;border-radius:6px;cursor:pointer;border:1px solid transparent;transition:background .15s}.history-item:hover{background:var(--hover-bg, rgba(208, 215, 222, .32))}.history-item.selected{border-color:var(--link, #0969da);background:#0969da14}.history-item.new-commit{border-left:3px solid var(--link, #0969da)}.history-item-header{display:flex;justify-content:space-between;font-size:12px;margin-bottom:2px}.history-author{font-weight:600;color:var(--fg, #1f2328)}.history-date{color:var(--text-muted, #656d76)}.history-message{font-size:13px;color:var(--fg, #1f2328);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.history-sha{font-size:11px;font-family:monospace;color:var(--text-muted, #656d76);margin-top:2px}.diff-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:10000;display:flex;align-items:center;justify-content:center}.diff-modal-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000080}.diff-modal-content{position:relative;background:var(--bg, #fff);border-radius:12px;width:80%;max-width:900px;max-height:80vh;display:flex;flex-direction:column;box-shadow:0 8px 32px #0003}.diff-modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--border, #d0d7de)}.diff-modal-header h3{margin:0;font-size:16px}.diff-modal-actions{display:flex;gap:8px}.diff-modal-body{overflow-y:auto;padding:16px 20px;flex:1}.diff-output{font-family:monospace;font-size:13px;line-height:1.6;margin:0;white-space:pre-wrap;word-break:break-word}.diff-line{padding:1px 8px;border-radius:3px}.diff-line.add{background:var(--diff-ins-bg, rgba(0, 200, 0, .08));color:var(--diff-ins-fg, #1a7f37)}.diff-line.del{background:var(--diff-del-bg, rgba(255, 0, 0, .08));color:var(--diff-del-fg, #cf222e)}.diff-line.ctx{color:var(--text-muted, #656d76)}
