:root{--bg:#fbfbfa;--panel:#f2f1ee;--line:#dddbd5;--fg:#1d1d1b;--muted:#75736c;--accent:#2f5d50;--accent-fg:#fff;--ok:#2e7d32;--warn:#b26a00;--err:#b3261e;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font:14px/1.45 system-ui,-apple-system,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#1b1c1e;--panel:#232427;--line:#36383c;--fg:#e8e6e1;--muted:#9a978f;--accent:#6fb39d;--accent-fg:#10221c}}*{box-sizing:border-box}html,body{background:var(--bg);height:100%;color:var(--fg);margin:0}button{font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--fg);cursor:pointer;border-radius:6px;padding:4px 10px}button:hover{border-color:var(--muted)}button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}a.button{font:inherit;border:1px solid var(--line);background:var(--panel);color:var(--fg);white-space:nowrap;border-radius:6px;padding:4px 10px;text-decoration:none}a.button:hover{border-color:var(--muted)}a.button.primary{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}button[disabled]{opacity:.6;cursor:progress}input{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:6px;padding:5px 8px}.muted{color:var(--muted)}.row{align-items:center;gap:8px;display:flex}.row input{flex:1;min-width:0}.landing{max-width:640px;margin:8vh auto;padding:0 16px}.landing h1{letter-spacing:-.02em;margin:0 0 4px;font-size:32px}.landing .sub{color:var(--muted);margin-top:0}.landing label{color:var(--muted);flex-direction:column;gap:4px;margin:24px 0 16px;display:flex}.landing h2{margin-top:32px;font-size:15px}.recent{padding:0;list-style:none}.recent a{color:var(--fg);font-weight:500}.project{flex-direction:column;height:100vh;display:flex}header{border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:10px;padding:6px 12px;display:flex}.brand{color:var(--accent);font-weight:700;text-decoration:none}.logo{letter-spacing:-.01em;white-space:nowrap;font-family:Latin Modern Roman,CMU Serif,Georgia,Times New Roman,serif;font-weight:700}.logo .e{text-transform:none;margin:0 -.08em 0 -.13em;position:relative;top:.22em}.title{background:0 0;border-color:#0000;width:22ch;font-weight:600}.title:hover:not([readonly]),.title:focus{border-color:var(--line);background:var(--bg)}.spacer{flex:1}.badge{background:var(--warn);color:#fff;border-radius:4px;padding:1px 6px;font-size:12px}.status{color:var(--muted);font-size:12px}.status:before{content:"●";margin-right:4px}.status.online:before{color:var(--ok)}.status.connecting:before{color:var(--warn)}.status.offline:before{color:var(--err)}.peers{gap:3px;display:flex}.peer{color:#fff;text-transform:uppercase;cursor:pointer;border:2px solid #0000;border-radius:50%;place-items:center;width:24px;height:24px;padding:0;font-size:11px;display:grid}.peer:hover,.peer:focus-visible{border-color:var(--fg)}main{flex:1;min-height:0;display:grid}aside{border-right:1px solid var(--line);background:var(--panel);flex-direction:column;min-height:0;display:flex}aside .tools{flex-wrap:wrap;gap:6px;padding:8px;display:flex}.filetree{flex-direction:column;flex:1;min-height:0;display:flex}.filetree .where{min-height:0;padding:0 10px 4px}.files li.dir .path{font-weight:500}.files li.folder-sel{box-shadow:inset 2px 0 0 var(--accent)}.files li.drop{background:color-mix(in srgb, var(--accent) 28%, transparent)}.files{flex:1;margin:0;padding:0 0 8px;list-style:none;overflow:auto}.files li{cursor:pointer;white-space:nowrap;align-items:center;gap:6px;padding:3px 10px;display:flex}.files li:hover{background:color-mix(in srgb, var(--fg) 6%, transparent)}.files li.active{background:color-mix(in srgb, var(--accent) 18%, transparent)}.files .icon{width:1em;color:var(--muted);text-align:center}.files .path{text-overflow:ellipsis;flex:1;overflow:hidden}.files .acts{gap:2px;display:none}.files li:hover .acts{display:flex}.files .acts button{color:var(--muted);background:0 0;border:none;padding:0 4px;font-size:11px}aside .hint{padding:8px 10px;font-size:12px}.editor{border-right:1px solid var(--line);min-width:0;min-height:0;overflow:hidden}.editor .cm-editor{height:100%;font-size:14px}.editor .cm-scroller{font-family:ui-monospace,SF Mono,Menlo,monospace}.binary{flex-direction:column;gap:8px;height:100%;padding:16px;display:flex}.binary img{object-fit:contain;background:repeating-conic-gradient(#ccc 0 25%, #fff 0 50%) 0 0 / 16px 16px;align-self:start;max-width:100%;max-height:80%}.binary iframe{border:1px solid var(--line);flex:1}.right{flex-direction:column;min-width:0;min-height:0;display:flex}.pdfbar{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:4px 8px;font-size:12px;display:flex}.pdf{background:#7d7d7d;flex-direction:column;flex:1;align-items:center;gap:12px;padding:12px;display:flex;overflow:auto}.pdf canvas{background:#fff;max-width:100%;box-shadow:0 1px 4px #0006;height:auto!important}.logbox{flex-direction:column;flex:none;min-height:60px;display:flex}.logbox[hidden]{display:none}.hsplit{cursor:row-resize;background:var(--line);touch-action:none;outline:none;flex:none;height:5px;position:relative}.hsplit:after{content:"";position:absolute;inset:-4px 0}.hsplit:hover,.hsplit:focus-visible{background:var(--accent)}.log{background:var(--panel);white-space:pre-wrap;flex:1;min-height:0;margin:0;padding:8px;font-size:12px;overflow:auto}body.resizing-v{cursor:row-resize;-webkit-user-select:none;user-select:none}body.resizing-v canvas,body.resizing-v .cm-editor{pointer-events:none}.pdfbar .spacer{flex:1}.pdfbar{gap:6px}.pdfbar button.on{border-color:var(--accent)}.err{color:var(--err)}dialog.share{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:10px;width:min(640px,92vw)}dialog.share label{color:var(--muted);margin:12px 0 4px;font-size:12px;display:block}dialog::backdrop{background:#00000059}main{grid-template-columns:220px 5px minmax(0,1fr) 5px minmax(260px,45%)}main>*{min-width:0}.split{cursor:col-resize;background:var(--line);touch-action:none;outline:none;position:relative}.split:after{content:"";position:absolute;inset:0 -4px}.split:hover,.split:focus-visible,body.resizing .split:active{background:var(--accent)}.syncarrows{z-index:5;flex-direction:column;gap:6px;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.syncarrows[hidden],main.no-right .syncarrows{display:none}.syncarrows button{cursor:pointer;background:var(--panel);border:1px solid var(--line);width:24px;height:24px;color:var(--fg);border-radius:50%;padding:0;font-size:13px;line-height:1;box-shadow:0 1px 3px #00000040}.syncarrows button:hover{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}.ctxmenu{z-index:100;background:var(--panel);border:1px solid var(--line);border-radius:6px;flex-direction:column;min-width:160px;padding:4px;display:flex;position:fixed;box-shadow:0 4px 16px #0000004d}.ctxmenu button{text-align:left;background:0 0;border:0;border-radius:4px;padding:6px 10px}.ctxmenu button:hover,.ctxmenu button:focus-visible{background:var(--accent);color:var(--accent-fg);outline:none}.cm-flash{animation:1.6s ease-out cmflash}@keyframes cmflash{0%{background:#ffd40073}to{background:0 0}}main.no-left>aside,main.no-left>.split:first-of-type,main.no-right>.right,main.no-right>.split:last-of-type,main.no-editor>.editor{visibility:hidden;overflow:hidden}body.resizing{cursor:col-resize;-webkit-user-select:none;user-select:none}body.resizing iframe,body.resizing canvas,body.resizing .cm-editor{pointer-events:none}aside,.editor{border-right:none}.pane-toggle{padding:2px 8px}.pane-toggle.off{color:var(--muted)}@media (max-width:900px){.split{visibility:hidden}}.progress{background:var(--panel);border-bottom:1px solid var(--line);height:22px;font-size:12px;position:relative}.progress .bar{background:color-mix(in srgb, var(--accent) 35%, transparent);width:0;transition:width .2s;position:absolute;inset:0 auto 0 0}.progress span{padding:0 8px;line-height:22px;position:relative}.progress.busy .bar{background:repeating-linear-gradient(-45deg, color-mix(in srgb, var(--accent) 30%, transparent) 0 10px, color-mix(in srgb, var(--accent) 15%, transparent) 10px 20px);background-size:28px 28px;animation:1s linear infinite stripes}@keyframes stripes{to{background-position:28px 0}}dialog.dlg{border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:10px;width:min(620px,94vw);max-height:90vh;padding:18px 22px;overflow:auto}dialog.dlg h3{margin:0 0 4px}dialog.dlg h5{color:var(--muted);margin:12px 0 6px;font-size:12px}dialog.dlg h4{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:18px 0 6px;font-size:13px}.radios{flex-direction:column;gap:6px;display:flex}.radio{border:1px solid var(--line);cursor:pointer;border-radius:8px;align-items:flex-start;gap:8px;padding:6px 8px;display:flex}.radio:has(input:checked){border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, transparent)}.radio span{flex-direction:column;display:flex}.radio input{margin-top:3px}.field{color:var(--muted);flex-direction:column;gap:4px;margin:10px 0;font-size:12px;display:flex}.check{align-items:center;gap:8px;margin:10px 0;display:flex}.grid{grid-template-columns:max-content 1fr;align-items:center;gap:8px 12px;display:grid}select{font:inherit;border:1px solid var(--line);background:var(--bg);color:var(--fg);border-radius:6px;padding:4px 6px}.cmds pre{background:var(--panel);white-space:pre-wrap;word-break:break-all;border-radius:6px;padding:8px;font-size:12px}.row.end{justify-content:flex-end;margin-top:18px}details{margin-top:12px}.right .tabs,aside .tabs{scrollbar-width:none;border-bottom:1px solid var(--line);background:var(--panel);gap:2px;padding:4px 6px 0;display:flex;overflow-x:auto}.right .tab,aside .tab{color:var(--muted);white-space:nowrap;background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;flex-shrink:0;padding:4px 10px}.right .tab.active,aside .tab.active{background:var(--bg);color:var(--fg);border-color:var(--line);margin-bottom:-1px}.right .pane{flex-direction:column;flex:1;min-height:0;display:flex}.right .pane[hidden]{display:none}.assistant{flex-direction:column;height:100%;min-height:0;display:flex}.ai-bar{border-bottom:1px solid var(--line);align-items:center;gap:6px;padding:6px 8px;display:flex}.ai-bar select{max-width:44%}.ai-bar .model{flex:1;min-width:0}.ai-log{flex-direction:column;flex:1;gap:8px;padding:10px 12px;display:flex;overflow:auto}.ai-user{background:color-mix(in srgb, var(--accent) 16%, transparent);white-space:pre-wrap;border-radius:10px 10px 2px;align-self:flex-end;max-width:88%;padding:6px 10px}.ai-turn{flex-direction:column;gap:6px;display:flex}.ai-text{overflow-wrap:anywhere;line-height:1.5}.ai-text pre,.ai-think pre{background:var(--panel);white-space:pre-wrap;border-radius:6px;padding:8px;font-size:12px;overflow:auto}.ai-text code{background:var(--panel);border-radius:4px;padding:0 4px;font-size:12px}.ai-think summary{cursor:pointer;color:var(--muted);font-size:12px}.ai-think pre{color:var(--muted);max-height:240px;margin:4px 0 0}.ai-tool{color:var(--muted);border-left:2px solid var(--line);padding:2px 8px;font-size:12px}.ai-tool.ok{border-color:var(--ok)}.ai-tool.err{border-color:var(--err)}.ai-tool.pending{border-color:var(--warn)}.ai-note,.ai-warn,.ai-err{background:var(--panel);color:var(--muted);border-radius:6px;padding:6px 8px;font-size:12px}.ai-warn{color:var(--warn)}.ai-err{color:var(--err)}.ai-review{border:1px solid var(--line);border-radius:8px;overflow:hidden}.ai-review .title{background:var(--panel);padding:6px 8px;font-size:12px;font-weight:600}.ai-review .row.end{margin:0;padding:6px 8px}.ai-review.accepted{border-color:var(--ok)}.ai-review.rejected{border-color:var(--err);opacity:.7}.diff{max-height:320px;font:12px/1.45 ui-monospace,SF Mono,Menlo,monospace;overflow:auto}.dl{white-space:pre-wrap;overflow-wrap:anywhere;padding:0 8px 0 0;display:flex}.dl .ln{text-align:right;width:3.5em;color:var(--muted);-webkit-user-select:none;user-select:none;flex:none;padding-right:8px}.dl.del{background:color-mix(in srgb, var(--err) 14%, transparent)}.dl.add{background:color-mix(in srgb, var(--ok) 16%, transparent)}.dl.skip{color:var(--muted);padding-left:8px;font-style:italic}.ai-compose{border-top:1px solid var(--line);flex-direction:column;gap:6px;padding:6px 8px;display:flex}.ai-compose textarea{font:inherit;resize:vertical;border:1px solid var(--line);background:var(--bg);min-height:3em;color:var(--fg);border-radius:6px;flex:1;padding:6px 8px}.ai-compose .row{align-items:flex-end}.ctx{font-size:11px}.small{font-size:12px}.check.small{gap:4px;margin:0}button.danger{color:var(--err);border-color:color-mix(in srgb, var(--err) 50%, var(--line))}button.danger:hover{background:color-mix(in srgb, var(--err) 10%, transparent)}.recent li{border-bottom:1px solid var(--line);flex-direction:column;gap:3px;padding:10px 0;display:flex}.recent .top{align-items:center;gap:8px;min-width:0;display:flex}.recent .pname{color:var(--fg);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.recent .pcode{color:var(--muted);background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:0 4px;font:11px ui-monospace,SF Mono,Menlo,monospace}.recent li.dupe .pcode{color:var(--fg);border-color:var(--warn)}.recent .tag{color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:0 6px;font-size:11px}.recent .tag.ro{color:var(--warn)}.recent .details{overflow-wrap:anywhere;font-size:12px}.recent .icon{color:var(--muted);background:0 0;border:none;padding:0 4px}.recent .icon:hover{color:var(--fg)}.recent .forget:hover{color:var(--err)}.landing h2 small{font-weight:400}.risk{background:color-mix(in srgb, var(--warn) 16%, var(--bg));border-bottom:1px solid color-mix(in srgb, var(--warn) 45%, var(--line));justify-content:space-between;align-items:center;gap:12px;padding:6px 12px;font-size:13px;display:flex}.risk[hidden]{display:none}.risk .actions{flex:none;gap:6px;display:flex}.status.warn:before,.status.warn{color:var(--warn)}.recent .tag.warn{color:var(--warn);border-color:color-mix(in srgb, var(--warn) 50%, var(--line))}.radio.choice{text-align:left;width:100%;font:inherit;color:inherit}.history{flex-direction:column;height:100%;min-height:0;display:flex}.history-body{flex:1;grid-template-rows:minmax(120px,40%) 1fr;min-height:0;display:grid}.versions{border-bottom:1px solid var(--line);margin:0;padding:0;list-style:none;overflow:auto}.versions li{cursor:pointer;border-bottom:1px solid color-mix(in srgb, var(--line) 50%, transparent);padding:6px 10px}.versions li:hover{background:color-mix(in srgb, var(--fg) 5%, transparent)}.versions li.active{background:color-mix(in srgb, var(--accent) 18%, transparent)}.versions li.named .vlabel{font-weight:600}.versions .vlabel{font-size:13px}.version-detail{min-height:0;padding:8px 10px;overflow:auto}.vhead{justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.vfiles{margin:0;padding:0;list-style:none}.vfiles li{cursor:pointer;border-radius:4px;justify-content:space-between;gap:8px;padding:4px 6px;display:flex}.vfiles li:hover{background:color-mix(in srgb, var(--fg) 6%, transparent)}.vstat{color:var(--muted);white-space:nowrap;font-size:12px}.vstat.deleted{color:var(--err)}.vstat.added{color:var(--ok)}.diff.full{border:1px solid var(--line);border-radius:6px;max-height:none}.cm-authors .author{color:var(--muted);white-space:nowrap;text-overflow:ellipsis;border-left:3px solid;max-width:9em;padding:0 6px 0 4px;font-size:10px;display:block;overflow:hidden}.ltabs{background:var(--panel);border-bottom:1px solid var(--line);flex:none;gap:2px;padding:3px 6px 0;display:flex}.ltab{color:var(--muted);background:0 0;border:none;border-radius:4px 4px 0 0;padding:2px 8px;font-size:12px}.ltab.on{color:var(--fg);background:var(--bg)}.ltabs button.scratch{border-radius:5px;align-self:center;margin:0 0 3px;padding:1px 8px;font-size:12px}.problems{background:var(--bg);flex:1;min-height:0;margin:0;padding:0;font-size:12px;list-style:none;overflow:auto}.problems[hidden]{display:none}.problems li{border-bottom:1px solid color-mix(in srgb, var(--line) 50%, transparent);align-items:baseline;gap:8px;padding:4px 8px;display:flex}.problems li.clickable{cursor:pointer}.problems li.clickable:hover{background:color-mix(in srgb, var(--fg) 6%, transparent)}.problems .sev{flex:none;width:1em}.problems .error .sev{color:var(--err)}.problems .warning .sev{color:var(--warn)}.problems .box .sev{color:var(--muted)}.problems .msg{overflow-wrap:anywhere;flex:1}.problems .loc{color:var(--muted);flex:none;font-family:ui-monospace,Menlo,monospace;font-size:11px}.log[hidden]{display:none}.psummary{color:var(--warn);border-radius:999px;padding:1px 8px;font-size:12px}.psummary.has-errors{color:var(--err);border-color:color-mix(in srgb, var(--err) 50%, var(--line))}.pdf .page{flex:none;position:relative}.pdf-mark{pointer-events:none;background:#ffd40073;border-radius:3px;outline:2px solid #e6b800;animation:2.5s ease-out forwards pdfmark;position:absolute}@keyframes pdfmark{0%,70%{opacity:1}to{opacity:0}}.cm-comment{cursor:pointer;background:#ffc80047;border-bottom:2px solid #e6a000cc}.cm-suggest-del{cursor:pointer;background:#c0392b1f;-webkit-text-decoration:line-through #c0392b;text-decoration:line-through #c0392b}.cm-suggest-ins{color:#1e7e34;cursor:pointer;background:#28a74526;border-radius:2px;padding:0 2px;text-decoration:underline}.review{flex-direction:column;height:100%;min-height:0;display:flex}.review-list{flex:1;padding:6px;overflow:auto}.rcard{border:1px solid var(--line);border-left:3px solid #e6a000;border-radius:6px;margin-bottom:6px;padding:6px 8px;font-size:13px}.rcard.suggestion{border-left-color:#28a745}.rcard.resolved{opacity:.6}.rcard.focused{box-shadow:0 0 0 2px var(--accent)}.rhead{cursor:pointer;flex-wrap:wrap;align-items:baseline;gap:4px;display:flex}.rloc{font-family:ui-monospace,monospace;font-size:12px}.rquote{border-left:2px solid var(--line);color:var(--muted);white-space:pre-wrap;max-height:4.5em;margin:4px 0;padding-left:6px;overflow:hidden}.rtext,.rreply{white-space:pre-wrap;margin:4px 0}.rreply{border-left:2px solid var(--line);padding-left:10px}.rsuggest{white-space:pre-wrap;margin:4px 0;font-family:ui-monospace,monospace;font-size:12px}.rsuggest del{color:#c0392b}.rsuggest ins{color:#1e7e34}.ractions{align-items:center;gap:4px;margin-top:4px;display:flex}.ractions input{flex:1;min-width:0}.review .ai-bar{flex-wrap:wrap}.review .ai-bar button,.review .ai-bar label{white-space:nowrap}aside .tabs{background:var(--bg)}aside .tab.active{background:var(--panel)}aside .tab{padding:4px 8px}.lpane{flex-direction:column;flex:1;min-height:0;display:flex}.lpane[hidden]{display:none}.navpanel{flex-direction:column;flex:1;min-height:0;font-size:13px;display:flex}.searchrow{align-items:center;gap:3px;padding:6px 6px 0;display:flex}.searchrow input{flex:1;min-width:0}.searchrow input.bad{outline:2px solid var(--err)}.searchrow .opt{padding:2px 5px;font-family:ui-monospace,monospace;font-size:11px}.searchrow .opt.on{background:var(--accent);color:#fff;border-color:var(--accent)}.searchinfo{padding:4px 8px}.results,.outline{flex:1;margin:0;padding:0 0 8px;list-style:none;overflow:auto}.results .rfile{padding:6px 8px 2px;font-family:ui-monospace,monospace;font-size:12px;font-weight:600}.results .hit{cursor:pointer;align-items:baseline;gap:6px;padding:2px 8px;display:flex}.results .hit:hover,.outline li:hover{background:var(--bg)}.results .ln{text-align:right;min-width:2.5em;font-size:11px}.results .ctx{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,monospace;font-size:12px;overflow:hidden}.results mark{color:inherit;background:#ffc80073}.results .hit button{visibility:hidden;padding:0 4px}.results .hit:hover button{visibility:visible}.wordcount{border-bottom:1px solid var(--line);padding:8px 10px}.outline li{cursor:pointer;align-items:baseline;gap:6px;padding:3px 8px;display:flex}.outline .otitle{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.outline .lvl0{font-weight:600}.refdlg{width:min(560px,92vw)}.bibpreview{background:var(--panel);white-space:pre-wrap;border-radius:6px;max-height:40vh;padding:8px;font-size:12px;overflow:auto}.tgrid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.tgrid .choice{text-align:left}.importdlg .row input{flex:1;min-width:0}.members{margin:6px 0;padding:0;list-style:none}.members li{border-bottom:1px solid var(--line);align-items:baseline;gap:6px;padding:4px 0;display:flex}.members li.revoked .mname{color:var(--muted);text-decoration:line-through}.share .row input{flex:1;min-width:0}.radio.disabled{opacity:.55;cursor:not-allowed}.radio.disabled input{cursor:not-allowed}
