/* Cosheaf chrome styles only. Coflat documents own their rendering (vendor editor.css + themes); do not restyle .cf-* or .cm-content document internals here. Exceptions: document-scope host token normalization and overflow containment in the "coflat boundary" section, which should migrate upstream to Coflat. */
@font-face{font-family:"IBM Plex Sans";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-ext-400-italic.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-italic.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-ext-var.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"IBM Plex Sans";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-var.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inconsolata-latin-ext-var.woff2) format("woff2");unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:"Inconsolata";font-style:normal;font-weight:400 700;font-display:swap;src:url(/fonts/inconsolata-latin-var.woff2) format("woff2");unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* tokens */
:root{--cf-font-sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--cf-font-mono:"Inconsolata",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;--cf-bg:#fff;--cf-fg:#020618;--cf-muted:#62748e;--cf-border:#e2e8f0;--cf-hover:#f1f5f9;--cf-surface:#f8fafc;--cf-accent:#0f172b;--cf-accent-fg:#f8fafc;--cf-danger:#9f1239;--cf-danger-border:#f1b4b4;--cf-danger-bg:#fff5f5;--cf-open:#008138;--cf-merged:#6e56cf;--cf-radius:0;--cf-radius-sm:0;--cf-radius-xs:0;--cf-shadow-sm:none;--cf-shadow-pop:0 8px 24px rgb(2 6 24 / .12);--cf-border-strong:#cad5e2;--cf-accent-hover:#1d293d;--cf-ring:#90a1b9}
/* dark color scheme (#153): only the chrome tokens flip. Coflat documents inherit --cf-fg over the transparent app background, so reading surfaces darken too (no .cf-* document restyling). Applied as an explicit Dark choice or, under System, when the OS prefers dark — set as html[data-cosheaf-color-scheme] before paint so there's no flash. NOTE: the palette below is repeated verbatim in the System @media block; plain CSS can't share a block across a selector and a media query, so keep the two in sync when editing colors. */
html[data-cosheaf-color-scheme="dark"]{color-scheme:dark;--cf-bg:#0b1018;--cf-fg:#e6edf6;--cf-muted:#93a4b8;--cf-border:#27313f;--cf-hover:#19212e;--cf-surface:#121a26;--cf-accent:#e6edf6;--cf-accent-fg:#0b1018;--cf-danger:#fca5a5;--cf-danger-border:#7f1d1d;--cf-danger-bg:#2a1416;--cf-open:#4ade80;--cf-merged:#a78bfa;--cf-border-strong:#3b4858;--cf-accent-hover:#cbd5e1;--cf-ring:#64748b;--cf-shadow-pop:0 8px 24px rgb(0 0 0 / .55)}
@media(prefers-color-scheme:dark){html[data-cosheaf-color-scheme="system"]{color-scheme:dark;--cf-bg:#0b1018;--cf-fg:#e6edf6;--cf-muted:#93a4b8;--cf-border:#27313f;--cf-hover:#19212e;--cf-surface:#121a26;--cf-accent:#e6edf6;--cf-accent-fg:#0b1018;--cf-danger:#fca5a5;--cf-danger-border:#7f1d1d;--cf-danger-bg:#2a1416;--cf-open:#4ade80;--cf-merged:#a78bfa;--cf-border-strong:#3b4858;--cf-accent-hover:#cbd5e1;--cf-ring:#64748b;--cf-shadow-pop:0 8px 24px rgb(0 0 0 / .55)}}

/* base */
*{box-sizing:border-box}html,body{height:100%;overflow:clip}html{overscroll-behavior-y:none;zoom:var(--cf-ui-zoom,1)}body{margin:0;background:var(--cf-bg);color:var(--cf-fg);font:14px/1.5 var(--cf-font-sans);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}
/* UI density / display size (#154): one root zoom scales the whole px-based chrome. The fixed frame's height is divided by the zoom so it still fills the viewport exactly (no clipped status bar). Set as html[data-cosheaf-density] before paint to avoid a reflow. */
html[data-cosheaf-density="compact"]{--cf-ui-zoom:.9}html[data-cosheaf-density="comfortable"]{--cf-ui-zoom:1.1}html[data-cosheaf-density="large"]{--cf-ui-zoom:1.25}
button,.button{border:1px solid var(--cf-border);background:transparent;border-radius:var(--cf-radius-xs);padding:3px 8px;cursor:pointer;font-weight:500;font-size:13px;box-shadow:none;transition:background-color .12s,border-color .12s}button:hover,.button:hover{background:var(--cf-hover);border-color:var(--cf-border-strong)}.button.primary,button.primary{background:var(--cf-accent);border-color:var(--cf-accent);color:var(--cf-accent-fg)}.button.primary:hover,button.primary:hover{background:var(--cf-accent-hover);border-color:var(--cf-accent-hover)}.button.danger,button.danger{border-color:var(--cf-danger-border);color:var(--cf-danger);background:var(--cf-bg)}
/* subtle: low-stakes actions (Cancel/escape, toggles) — flat, no border (#138) */
.button.subtle,button.subtle{border-color:transparent;background:transparent;color:var(--cf-muted);font-weight:500}.button.subtle:hover,button.subtle:hover{background:transparent;border-color:transparent;color:var(--cf-fg)}
input,textarea,select{border:1px solid var(--cf-border);border-radius:var(--cf-radius-sm);padding:8px;background:var(--cf-bg);color:var(--cf-fg)}input:focus,textarea:focus,select:focus{border-color:var(--cf-ring);outline:3px solid rgb(15 23 43 / .07)}:where(button,.button,a,summary):focus-visible{outline:2px solid var(--cf-ring);outline-offset:1px}

/* app shell */
.app-frame{display:flex;flex-direction:column;height:calc(100dvh / var(--cf-ui-zoom,1));overflow:clip}.app-main{flex:1;min-height:0;display:flex;overflow:clip}.app-sidebar{flex:none;width:206px;display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--cf-border);background:var(--cf-surface);padding:10px 6px 6px;overflow-y:auto}.sidebar-topnav{display:flex;gap:10px;padding:0 10px 8px;font:12px var(--cf-font-mono);flex-wrap:wrap}.sidebar-topnav a{color:var(--cf-muted)}.sidebar-topnav a:hover{color:var(--cf-fg)}
.sidebar-identity{display:flex;align-items:center;gap:7px;padding:0 10px 9px;min-width:0}.sidebar-identity-link{display:flex;align-items:center;gap:7px;min-width:0;flex:1;color:var(--cf-fg)}.sidebar-identity-link:hover .sidebar-identity-name{color:var(--cf-fg)}.sidebar-identity-name{font-weight:600;font-size:13px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.notif-bell,.settings-gear{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:none;color:var(--cf-muted)}.notif-bell:hover,.notif-bell.active,.settings-gear:hover,.settings-gear.active{color:var(--cf-fg)}.lucide{flex:none;vertical-align:-.125em}.branch-ref{display:inline-flex;align-items:center;gap:3px;vertical-align:middle}.branch-ref .lucide{color:var(--cf-muted)}
.toast-host{position:fixed;bottom:36px;right:14px;z-index:50;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{pointer-events:auto;min-width:180px;max-width:min(360px,calc(100vw - 28px));padding:9px 12px;border-radius:var(--cf-radius);border:1px solid var(--cf-border);background:var(--cf-bg);box-shadow:var(--cf-shadow-pop);font-size:13px;line-height:1.4;color:var(--cf-fg);cursor:pointer;opacity:0;transform:translateY(6px);transition:opacity .18s,transform .18s}.toast--in{opacity:1;transform:none}.toast--success{border-color:var(--cf-accent)}.toast--error{background:var(--cf-danger-bg);color:var(--cf-danger);border-color:var(--cf-danger-border)}
.notif-badge{position:absolute;top:-4px;right:-5px;display:inline-flex;align-items:center;justify-content:center;min-width:14px;height:14px;padding:0 3px;border-radius:999px;background:var(--cf-accent);color:var(--cf-accent-fg);font:700 10px/1 var(--cf-font-mono);box-shadow:0 0 0 1.5px var(--cf-surface)}.notif-badge[hidden]{display:none}
.file-tree{border-top:1px solid var(--cf-border);margin:6px 2px 0;padding-top:6px;min-width:0;font:12px var(--cf-font-mono)}.file-tree-head{color:var(--cf-muted);padding:0 8px 4px;font-weight:600}.ftree-branch{display:flex;align-items:center;gap:5px;min-width:0;font-weight:600;color:var(--cf-fg)}.ftree-branch-icon{flex:0 0 auto;color:var(--cf-muted)}.ftree-branch-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ftree-branch .cf-select{min-width:0;max-width:100%}.ftree-branch-select{min-width:0;max-width:100%;font:inherit;color:inherit;background:transparent;border:0;font-weight:600;cursor:pointer}.ftree-branch .cf-select-trigger{padding:1px 4px;font-weight:600}.ftree-dir>summary{cursor:pointer;list-style:none;display:flex;gap:5px;align-items:center;padding:2px 8px;border-radius:var(--cf-radius-xs);color:var(--cf-fg);white-space:nowrap}.ftree-dir>summary::-webkit-details-marker{display:none}.disclosure-chevron{flex:0 0 auto;color:var(--cf-muted);transition:transform .12s}details[open]>summary>.disclosure-chevron{transform:rotate(90deg)}.ftree-dir>summary:hover{background:var(--cf-hover)}.ftree-children{margin-left:9px;padding-left:5px;border-left:1px solid var(--cf-border)}.ftree-file{display:block;padding:2px 8px;border-radius:var(--cf-radius-xs);color:var(--cf-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ftree-file:hover{background:var(--cf-hover)}.ftree-file.active{background:var(--cf-hover);color:var(--cf-accent);font-weight:600}.ftree-title{display:none}html[data-cosheaf-file-labels="title"] .ftree-name{display:none}html[data-cosheaf-file-labels="title"] .ftree-title{display:inline}.sidebar-workspace{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 10px 10px;min-width:0}.sidebar-workspace a{font-weight:600;font-size:13.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-content{flex:1;min-width:0;overflow-y:auto;overflow-x:hidden;scrollbar-gutter:stable}
.app-statusbar{flex:none;height:28px;display:flex;align-items:center;gap:10px;padding:0 10px;border-top:1px solid var(--cf-border);background:var(--cf-surface);font:12px var(--cf-font-mono);color:var(--cf-muted)}.app-statusbar a{color:inherit}.app-statusbar a:hover{color:var(--cf-fg)}.status-path{display:flex;align-items:center;gap:7px;min-width:0;overflow:hidden;white-space:nowrap}.status-sep{opacity:.55}.status-home{font-size:14px;line-height:1}.status-editor-slot{display:flex;align-items:center;gap:10px;min-width:0;margin-left:auto}
/* #164 editor breadcrumb rename slot: the editable filename lives in the path trail (shown once, as the rename field), not duplicated in the editor action slot */
.status-rename-slot{display:inline-flex;align-items:center;gap:7px;min-width:0}.status-rename-slot:empty{display:none}
/* #147 Workspace identity: keep the owner/repo slug primary; title is available in markup for future display choices. */
.sidebar-workspace a{display:flex;flex-direction:column}.sidebar-workspace .ws-title{display:none;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-workspace .ws-slug{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.status-title{display:none}
.list-row.repo-row{grid-template-columns:minmax(0,1fr) auto}.repo-row-main{display:flex;flex-direction:column;gap:1px;min-width:0}.repo-row-main>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repo-row .ws-title{color:var(--cf-muted);font-size:12.5px}.repo-row:hover .ws-slug{color:var(--cf-fg)}
.app-statusbar .web-editor-statusbar{display:flex;align-items:center;gap:10px;height:auto;border:0;background:transparent;padding:0;font:inherit;color:inherit}.app-statusbar .web-editor-statusbar button{border:0;background:transparent;box-shadow:none;padding:0 2px;color:var(--cf-fg);font:inherit;cursor:pointer}.app-statusbar .web-editor-statusbar button:hover{background:transparent;border-color:transparent;color:var(--cf-accent)}.app-statusbar .web-editor-statusbar button:disabled{color:var(--cf-muted);opacity:.6;cursor:default;text-decoration:none}.app-statusbar .web-editor-status{flex:none;min-width:0;text-align:left}.app-statusbar .web-editor-status--saved{color:var(--cf-accent)}.app-statusbar .web-editor-status--dirty{color:var(--cf-fg);font-weight:600}.app-statusbar .web-editor-status--saving{color:var(--cf-muted)}.app-statusbar .web-editor-status--error{color:var(--cf-danger);font-weight:600}
.app-statusbar .web-editor-path{border:1px solid transparent;background:transparent;color:var(--cf-fg);font:inherit;padding:1px 4px;min-width:90px;max-width:min(380px,30vw)}.app-statusbar .web-editor-path:focus{border-color:var(--cf-border);background:var(--cf-bg);outline:none}.app-statusbar .web-editor-path:disabled{color:var(--cf-muted);background:transparent}.app-statusbar .web-editor-path-pencil{display:inline-flex;align-items:center;justify-content:center;border:0;background:transparent;box-shadow:none;padding:1px;margin-left:-3px;color:var(--cf-muted);cursor:pointer}.app-statusbar .web-editor-path-pencil:hover:not(:disabled),.app-statusbar .web-editor-path-pencil:focus-visible{color:var(--cf-fg)}.app-statusbar .web-editor-path-pencil:disabled{opacity:.5;cursor:default}.app-statusbar .web-editor-asset-input{display:none}.app-statusbar .web-editor-statusbar .dirty-dot{color:var(--cf-accent)}.app-statusbar .web-editor-cancel{color:var(--cf-muted)}.app-statusbar .web-editor-cancel:hover{color:var(--cf-fg)}

/* sidebar nav + in-page subtabs */
.repo-tabs{display:flex;flex-direction:column;gap:1px}.repo-tabs a{padding:3px 10px;color:var(--cf-muted);font:13px var(--cf-font-mono)}.repo-tabs a:hover{color:var(--cf-fg)}.repo-tabs a.active{color:var(--cf-fg)}
.subtabs{display:flex;gap:4px;border-bottom:1px solid var(--cf-border)}.subtabs a{padding:5px 10px;color:var(--cf-muted);border-bottom:2px solid transparent}.subtabs a:hover{color:var(--cf-fg);background:var(--cf-hover);border-radius:var(--cf-radius-xs) var(--cf-radius-xs) 0 0}.subtabs a.active{color:var(--cf-fg);border-bottom:2px solid var(--cf-accent);font-weight:600}.repo-tabs,.subtabs{margin-bottom:6px}.repo-body{padding-bottom:20px}

/* page furniture */
.page,.repo-page{width:100%;max-width:none;margin:0;padding:6px 12px}.auth-page{height:100%;display:grid;place-items:center}.auth-card{width:min(360px,calc(100vw - 32px));display:grid;gap:12px;border:1px solid var(--cf-border);border-radius:var(--cf-radius);box-shadow:var(--cf-shadow-sm);padding:22px;background:var(--cf-bg)}.auth-card h1{margin:0 0 8px}.auth-card label,.edit-page label{display:grid;gap:5px;color:var(--cf-muted)}.auth-notice{margin:0;padding:8px 10px;border-radius:var(--cf-radius);font-size:13px;line-height:1.4}.auth-notice--error{background:var(--cf-danger-bg);color:var(--cf-danger);border:1px solid var(--cf-danger-border)}.auth-notice--info{background:var(--cf-surface);color:var(--cf-fg);border:1px solid var(--cf-border)}.auth-alt{margin:4px 0 0;font-size:13px;color:var(--cf-muted);text-align:center}.auth-alt a{color:var(--cf-fg)}
.page-title,.file-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:3px 0}.page-title--actions-only{justify-content:flex-end}.page-title h1,.file-toolbar h1{margin:0;font-size:20px}.toolbar-actions{display:flex;gap:6px;align-items:center;white-space:nowrap}.action-menu{position:relative;display:inline-flex}.action-menu>summary{list-style:none}.action-menu>summary::-webkit-details-marker{display:none}.action-menu-popover{position:absolute;right:0;top:calc(100% + 4px);z-index:20;min-width:130px;padding:4px;border:1px solid var(--cf-border);border-radius:var(--cf-radius-xs);background:var(--cf-bg);box-shadow:var(--cf-shadow-pop);display:flex;flex-direction:column;gap:1px}.action-menu-popover a{display:block;padding:5px 8px;border-radius:var(--cf-radius-xs);color:var(--cf-fg);font-size:12.5px}.action-menu-popover a:hover{background:var(--cf-hover);text-decoration:none}.newfile{display:inline-flex;gap:6px;align-items:center;margin:0}.newfile-path{height:26px;padding:3px 8px;border:1px solid var(--cf-border);border-radius:var(--cf-radius-xs);background:var(--cf-bg);font:12.5px/1.4 var(--cf-font-mono,monospace);width:min(180px,40vw)}.newfile-path:focus{outline:none;border-color:var(--cf-border-strong)}.page-title h1,.file-toolbar h1,.thread-header h1{letter-spacing:-.015em}
.owner,.eyebrow,.muted{color:var(--cf-muted)}.role,.state{text-transform:uppercase;font:600 10.5px/1.7 var(--cf-font-mono);letter-spacing:.05em;color:var(--cf-muted)}.state.open{color:var(--cf-open)}.state.closed{color:var(--cf-muted)}.state.merged{color:var(--cf-merged)}
.inline-link{color:var(--cf-fg);font-weight:500}.inline-form{display:inline-flex;align-items:center;gap:6px;margin:0}
/* mono metadata accents (the gitdot signature) */
.comment-meta,.file-meta,.meta-pill,.chat-role,.chat-context,.eyebrow,.timeline-event small,.list-row.issue-row small,.list-row.pull-row small,.activity-row>small,.diff-title,.web-editor-statusbar{font-family:var(--cf-font-mono)}
/* mono uppercase section eyebrows */
.relation-panel h2,.review-card h2,.relation-card h3,.rail-panel h2,.settings-section h2,.checkbox-list legend{font:600 11px/1.8 var(--cf-font-mono);text-transform:uppercase;letter-spacing:.07em;color:var(--cf-fg)}

/* flat lists */
.list{border:0;border-radius:0;box-shadow:none;overflow:visible}.list-row{display:grid;grid-template-columns:minmax(0,640px) auto auto;justify-content:start;gap:8px;align-items:center;padding:10px 2px;border-top:1px solid var(--cf-border)}.list-row:first-child{border-top:0}.list-row:hover{background:transparent}.list-row:hover .list-row-title strong,.list-row:hover>strong{color:var(--cf-accent)}.list-row span,.list-row small{color:var(--cf-muted)}.list-row strong{color:var(--cf-fg)}
/* title-first page row (#132): page title primary, path a muted subtitle */
.list-row.page-row{grid-template-columns:minmax(0,1fr)}.page-row .list-row-main small{font-size:12px;font-family:var(--cf-font-mono)}.files-landing-hint{font-size:12px;margin:0 0 8px}.page-row-excerpt{color:var(--cf-muted);font-size:12.5px;line-height:1.45;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.page-search input{height:30px;padding:4px 8px;font-size:13px;width:min(220px,40vw)}.page-search--full{display:flex;gap:8px;align-items:center;margin:6px 0 4px}.page-search--full input{height:34px;flex:1;width:auto}.list-row.search-result{display:flex;flex-direction:column;align-items:stretch;gap:3px}.search-result-head{display:flex;align-items:baseline;gap:8px;min-width:0}.search-result-head strong{font-weight:600}.search-snippet{color:var(--cf-muted);font-size:13px;line-height:1.5}.search-snippet mark{background:color-mix(in srgb,var(--cf-accent) 14%,transparent);color:var(--cf-fg);padding:0 1px;border-radius:2px}
.repo-clone{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:center;border:1px solid var(--cf-border);border-radius:var(--cf-radius);padding:8px 10px;margin:8px 0 10px;background:var(--cf-bg-soft)}.repo-clone-label{display:flex;align-items:center;gap:6px}.repo-clone-label strong{font-weight:600}.repo-clone-label span{font:10px/1 var(--cf-font-mono,monospace);text-transform:uppercase;color:var(--cf-muted);border:1px solid var(--cf-border);border-radius:var(--cf-radius-xs);padding:2px 5px}.repo-clone-row{display:flex;gap:6px;align-items:center;min-width:0}.clone-url{flex:1;min-width:0;height:30px;padding:4px 8px;font:12.5px/1.4 var(--cf-font-mono,monospace)}
/* cross-repo inbox on the home page */
.inbox{margin:10px 0 18px}
.inbox-head{display:flex;align-items:baseline;gap:10px;margin:0 0 4px}.inbox-head h2{margin:0;font-size:15px}.inbox-count{font:12px var(--cf-font-mono,monospace);color:var(--cf-muted)}
.inbox-row{display:flex;align-items:center;gap:10px}.inbox-row form{margin:0}
.inbox-link{display:flex;align-items:center;gap:8px;min-width:0;flex:1;text-decoration:none;color:inherit}.inbox-link strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.inbox-link small{color:var(--cf-muted);font-family:var(--cf-font-mono,monospace);white-space:nowrap}
.inbox-kind{font:10px/1 var(--cf-font-mono,monospace);text-transform:uppercase;padding:2px 5px;border-radius:var(--cf-radius-xs);border:1px solid var(--cf-border);color:var(--cf-muted);flex:0 0 auto}.inbox-kind.pr{border-color:var(--cf-accent);color:var(--cf-accent)}
/* file reader table-of-contents rail (filled by the reader island) */
.cosheaf-document-reader.cf-theme-scope:not(.cf-theme-blueprint-book),.web-editor-shell.cf-theme-scope:not(.cf-theme-blueprint-book){--cf-color-link:#18181b}
html[data-cosheaf-color-scheme="dark"] .cosheaf-document-reader.cf-theme-scope:not(.cf-theme-blueprint-book),html[data-cosheaf-color-scheme="dark"] .web-editor-shell.cf-theme-scope:not(.cf-theme-blueprint-book){--cf-color-link:#fafafa}
.doc-with-toc{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:28px;align-items:start}
.doc-main{min-width:0;padding-left:1.9em}.doc-main :where(h1,h2,h3){scroll-margin-top:14px}
.doc-rail{position:sticky;top:6px;max-height:84vh;overflow:auto;padding-left:14px;border-left:1px solid var(--cf-border);background:transparent}
.doc-view-switch{display:grid;grid-template-columns:repeat(auto-fit,minmax(52px,1fr));gap:2px;margin:0 0 10px;padding-bottom:8px;border-bottom:1px solid var(--cf-border)}
.doc-view-switch a{display:flex;align-items:center;justify-content:center;min-width:0;height:26px;border-radius:var(--cf-radius-xs);color:var(--cf-muted);font:12px var(--cf-font-mono,monospace);text-decoration:none}.doc-view-switch a:hover{background:var(--cf-hover);color:var(--cf-fg);text-decoration:none}.doc-view-switch a.active{background:var(--cf-fg);color:var(--cf-bg);font-weight:600}
.doc-toc-title{margin:0 0 6px;font:600 11px/1 var(--cf-font-mono,monospace);text-transform:uppercase;letter-spacing:.06em;color:var(--cf-muted)}
.doc-toc-link{display:block;padding:2px 0;color:var(--cf-muted);text-decoration:none;line-height:1.35;font-size:12.5px}.doc-toc-link:hover{color:var(--cf-fg)}
.doc-toc-link.lvl-1{padding-left:10px}.doc-toc-link.lvl-2{padding-left:20px;font-size:12px}
@media(max-width:900px){.doc-with-toc{grid-template-columns:1fr}.doc-main{padding-left:0}.doc-rail{position:static;display:block;max-height:none;overflow:visible;padding:10px 0 0;margin-top:12px;border-left:0;border-top:1px solid var(--cf-border)}.doc-toc{display:none}}
.list-row.issue-row,.list-row.pull-row{grid-template-columns:minmax(0,1fr) auto;align-items:start;padding:8px 10px}.list-row-main{display:grid;gap:3px;min-width:0}.list-row-title{display:flex;align-items:baseline;gap:8px;min-width:0}.list-row-title-link{display:flex;align-items:baseline;gap:8px;min-width:0;color:inherit}.list-row-title strong{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.list-row-title .state{flex:0 0 auto}.list-row.issue-row small,.list-row.pull-row small{align-self:center;color:var(--cf-muted)}.list-row-side{display:flex;align-items:center;gap:6px;align-self:center;font-family:var(--cf-font-mono);font-size:12px;white-space:nowrap}.list-row-side .row-who,.list-row-side .row-count{color:var(--cf-fg)}.list-row-side .row-sep{color:var(--cf-muted)}.list-row-side .avatar-chip{width:18px;height:18px;font-size:9px}
.activity-row{grid-template-columns:112px minmax(0,1fr) auto;align-items:start}.activity-row>strong{font-weight:650}.activity-row>span{min-width:0}.activity-row>small{color:var(--cf-muted);white-space:nowrap}.activity-count{display:inline-block;margin-left:8px;border:1px solid var(--cf-border);border-radius:999px;padding:1px 6px;background:var(--cf-surface)}
.branch-row{grid-template-columns:minmax(0,1fr) auto auto}.mini-list .list-row{grid-template-columns:minmax(0,1fr) auto}
.commit-card{border:0;border-radius:0;box-shadow:none;padding:10px 0;display:grid;gap:8px}.commit-card pre{margin:0;white-space:pre-wrap;font:13px/1.4 var(--cf-font-mono)}.commit-card p{margin:0;color:var(--cf-muted)}.empty{border:0;border-radius:0;padding:12px 2px;color:var(--cf-muted)}
.diagnostics-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;border-top:1px solid var(--cf-border);border-bottom:1px solid var(--cf-border);padding:8px 0;margin:8px 0 12px}.diagnostics-summary div{display:grid;gap:1px}.diagnostics-summary strong{font:600 18px/1.2 var(--cf-font-mono);color:var(--cf-fg)}.diagnostics-summary span{font:12px var(--cf-font-mono);color:var(--cf-muted)}.diagnostics-section .list{min-width:0}.diagnostics-row{grid-template-columns:minmax(0,1fr) minmax(0,260px)}.diagnostics-row>a,.diagnostics-row>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cf-muted);font-family:var(--cf-font-mono);font-size:12px}.diagnostics-row a:hover{color:var(--cf-fg)}
.list-meta{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.meta-pill,.label-chip{display:inline-flex;align-items:center;border-radius:999px;padding:1px 6px;font-size:11px;line-height:18px}.meta-pill{border:1px solid var(--cf-border);background:var(--cf-bg);color:var(--cf-muted)}.label-chips{display:inline-flex;gap:4px;flex-wrap:wrap}.label-chip{font-weight:500}

/* filters + forms */
.filter-panel{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:6px;align-items:end;border:0;border-radius:0;background:transparent;padding:8px 0;border-bottom:1px solid var(--cf-border);margin:6px 0}.filter-panel label{display:grid;gap:3px;color:var(--cf-muted);font-size:12px}.filter-panel input,.filter-panel select{height:34px;padding:5px 7px;font-size:13px}.filter-actions{display:flex;gap:6px;align-items:center}
.filter-panel.filter-panel--compact{display:grid;grid-template-columns:1fr;gap:6px;align-items:stretch}.filter-basic{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.filter-basic label,.filter-advanced-grid label{display:grid;gap:3px;color:var(--cf-muted);font-size:12px}.filter-basic input,.filter-basic select,.filter-advanced-grid input,.filter-advanced-grid select{height:34px;padding:5px 7px;font-size:13px}.filter-search{min-width:min(280px,100%);flex:1}.filter-advanced{border-top:1px solid var(--cf-border);padding-top:5px}.filter-advanced summary{cursor:pointer;color:var(--cf-muted);font-size:12px;font-weight:600}.filter-advanced-grid{display:grid;grid-template-columns:repeat(3,minmax(150px,1fr));gap:6px;margin-top:6px}
.state-toggles{display:inline-flex;align-items:center;gap:5px;color:var(--cf-muted);font:13px var(--cf-font-mono)}.state-toggle{border:0;background:transparent;box-shadow:none;padding:0;font:inherit;color:var(--cf-muted);cursor:pointer}.state-toggle:hover{background:transparent;border:0;color:var(--cf-fg)}.state-toggle.active{color:var(--cf-fg);font-weight:600}.link-button{border:0;background:transparent;box-shadow:none;padding:0;font:13px var(--cf-font-mono);color:var(--cf-muted);cursor:pointer}.link-button:hover{background:transparent;border:0;color:var(--cf-fg)}
.form-page{max-width:920px}.compose-form{display:grid;gap:9px;border-top:1px solid var(--cf-border);padding-top:9px}.compose-form label{display:grid;gap:5px;color:var(--cf-muted)}.compose-form input,.compose-form textarea,.compose-form select{width:100%;min-width:0}.compose-form textarea{min-height:150px}.branch-compare{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px}.form-actions{display:flex;gap:6px;align-items:center}.form-error{border:1px solid var(--cf-danger);border-radius:var(--cf-radius);background:var(--cf-danger-bg);color:var(--cf-danger);padding:8px 10px;margin-bottom:10px}
.checkbox-list{display:flex;flex-wrap:wrap;gap:6px;border:0;border-radius:0;margin:0;padding:4px 0}.checkbox-list legend{padding:0}.checkbox-list label{display:flex;align-items:center;gap:6px;color:var(--cf-fg)}.checkbox-list input{width:auto}.checkbox-row{display:flex;align-items:center;gap:8px}
.compact-form{border-top:1px solid var(--cf-border);padding-top:10px}

/* relations */
.relation-panel{border-top:1px solid var(--cf-border);padding:7px 0}.relation-panel h2{margin:0 0 8px}.relation-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.relation-card{display:grid;gap:6px;align-content:start}.relation-card h3{margin:0}.relation-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:center;border-top:1px solid var(--cf-border);padding:5px 0}.inline-add-form{display:grid;grid-template-columns:minmax(90px,1fr) auto;gap:6px;align-items:center}

/* coflat boundary: layout invariants + overflow containment only */
.document{border-top:1px solid var(--cf-border);padding:10px 0}.coflat-reader-island,.cosheaf-document-reader,.cf-rich-diff,.web-editor-shell{--cf-content-max-width:90ch!important;--cf-doc-content-padding-inline:0px!important}
/* repo home: overview header + stats above the README */
.repo-home{margin:0 0 8px}.repo-home-id{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.repo-home-name{margin:0;font-size:20px;letter-spacing:-.015em}.repo-home-owner{color:var(--cf-muted);font:13px var(--cf-font-mono)}.repo-home-badge{font:11px var(--cf-font-mono);color:var(--cf-muted);border:1px solid var(--cf-border);border-radius:999px;padding:1px 8px}.repo-home-desc{margin:5px 0 0;color:var(--cf-fg)}
.repo-home-stats{display:flex;flex-wrap:wrap;gap:8px;margin:11px 0 4px}.repo-stat{display:flex;flex-direction:column;gap:1px;padding:6px 12px;border:1px solid var(--cf-border);border-radius:var(--cf-radius);background:var(--cf-surface);min-width:62px;color:var(--cf-fg)}a.repo-stat:hover{background:var(--cf-hover);border-color:var(--cf-border-strong)}.repo-stat-num{font-weight:600;font-size:15px}.repo-stat-label{font-size:11px;color:var(--cf-muted)}
.repo-readme{border-top:1px solid var(--cf-border);padding-top:10px}.repo-readme-label{font:12px var(--cf-font-mono);color:var(--cf-muted);margin-bottom:6px}.repo-readme .document{border-top:0;padding-top:0}
/* Document title rendered by the reader island (web-reader.ts) to match the editor's rich-mode .cf-doc-title widget, so read and edit views agree. */
.coflat-reader-island .cf-doc-title{display:block;font-size:1.6em;font-weight:700;line-height:1.3;color:var(--cf-fg);margin:0 0 .25em;padding-bottom:.15em;border-bottom:1px solid var(--cf-border)}
/* Reading-width preference (#151, default per #170): Narrow · Normal · Wide. Normal is ~90ch (≈720px, ~100 chars — ch tracks the wider 0 glyph so 90ch ≈ 100 characters) on every Coflat document surface, including the editor. The variables are !important because Coflat theme CSS can be injected after this host stylesheet; Narrow/Wide override --cf-content-max-width on those same surfaces. Set as html[data-cosheaf-reading] before paint. */
html[data-cosheaf-reading="narrow"] :is(.coflat-reader-island,.cosheaf-document-reader,.cf-rich-diff,.web-editor-shell){--cf-content-max-width:66ch!important}
html[data-cosheaf-reading="wide"] :is(.coflat-reader-island,.cosheaf-document-reader,.cf-rich-diff,.web-editor-shell){--cf-content-max-width:110ch!important}.cf-reader.coflat-reader-island :where(.cf-doc-paragraph,.cf-doc-list-item){white-space:normal!important;overflow-wrap:break-word}.markdown-body h1{font-size:30px;line-height:1.15}.markdown-body p{max-width:none}.cf-reader-compact{margin-inline:0;padding:0}.cf-reader-compact .cf-doc-heading:not(.cf-doc-heading--unnumbered)::before,.cf-reader-compact [data-section-number]::before{content:none;counter-increment:none;counter-reset:none;margin-right:0}
.cf-reader .cf-doc-display-math .katex-display{font-size:inherit;margin:0}.cf-reader .cf-doc-display-math .katex-display>.katex{font-size:inherit}
.app-content .cf-doc-display-math{overflow-x:auto;overflow-y:hidden}
/* References section emitted by Coflat's reader (#124): entries are laid out by the vendored editor.css; cosheaf only adds the separation + heading size. */
.cosheaf-document-reader .cf-bibliography{border-top:1px solid var(--cf-border);margin-top:26px;padding-top:14px}
.cosheaf-document-reader .cf-bibliography-heading{font-size:18px;margin:0 0 10px}
.cosheaf-document-reader .cf-bibliography-list{display:grid;gap:7px}

/* threads (issues + pull requests) */
.thread{max-width:none}.thread-header{border-bottom:1px solid var(--cf-border);padding:6px 0}.thread-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.thread-header h1{font-size:21px;margin:3px 0;line-height:1.2}.thread-header h1 span{color:var(--cf-muted);font-weight:400;font-family:var(--cf-font-mono);font-size:16px}.issue-document{border-bottom:1px solid var(--cf-border);padding:8px 0}
.thread-layout{display:grid;grid-template-columns:minmax(0,1fr) 232px;gap:28px;align-items:start}.thread-main{min-width:0}.thread-rail{display:grid;gap:16px;position:sticky;top:12px}.rail-panel{display:grid;gap:8px;border-top:1px solid var(--cf-border);padding-top:8px;align-content:start}.rail-panel h2{margin:0}.rail-panel form{display:grid;gap:6px;margin:0}.rail-panel label{display:grid;gap:4px;color:var(--cf-muted);font-size:12px}.rail-panel select[multiple]{width:100%;min-width:0}.rail-panel .label-chips{display:flex;flex-wrap:wrap;gap:4px}
.thread-rail .relation-grid{grid-template-columns:1fr;gap:10px}.thread-rail .relation-panel{border-top:1px solid var(--cf-border);padding:8px 0 0}.thread-rail .relation-panel h2{margin:0 0 6px}.thread-rail .inline-add-form{grid-template-columns:minmax(0,1fr)}.thread-rail .inline-add-form button{justify-self:start}
/* Comments: compact avatar gutter + a single author·time byline + body. */
.comment{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;border-top:1px solid var(--cf-border);margin:0;padding:12px 0}
.comment-avatar{padding-top:1px}
.comment-byline{display:flex;align-items:center;gap:7px;font-size:12.5px;margin:0 0 3px}.comment-byline .comment-who{font-weight:600}.comment-byline time,.comment-byline .comment-on{color:var(--cf-muted);font-family:var(--cf-font-mono,monospace);font-size:12px}
.comment-text :where(p,ul,ol,pre,blockquote){margin-top:3px;margin-bottom:3px}.comment-text :where(h1,h2,h3,h4){margin-top:6px;margin-bottom:3px}.comment-text .cf-reader,.comment-text .markdown-body{--cf-doc-content-padding-inline:0;padding:0;max-width:none;font-size:13px}
.event,.timeline-event{border-top:1px solid var(--cf-border);margin:0;padding:5px 0;background:transparent}.timeline-event{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.timeline-event small{margin-left:auto;color:var(--cf-muted)}.timeline-event p{flex-basis:100%;margin:2px 0 0}.timeline-event .cf-reader,.timeline-event .markdown-body{--cf-doc-content-padding-inline:0;padding:0;max-width:none;font-size:13px}
.timeline-note{text-align:center;color:var(--cf-muted);font:11px var(--cf-font-mono,monospace);border-top:1px solid var(--cf-border);padding:7px 0;margin:0}
.comment-form,.review-form{display:grid;gap:6px;margin:8px 0}.comment-form textarea,.review-form textarea{min-height:72px}
.merge-actions{display:flex;gap:8px;align-items:center;margin-top:6px}
/* subtle hover-only edit/delete affordance, floated at the comment's top-right */
.comment-actions>summary{position:absolute;top:11px;right:0;list-style:none;cursor:pointer;color:var(--cf-muted);opacity:0;transition:opacity .12s;display:inline-flex;line-height:0}.comment-actions>summary::-webkit-details-marker{display:none}.comment:hover .comment-actions>summary{opacity:.5}.comment-actions>summary:hover,.comment-actions>summary:focus-visible,.comment-actions[open]>summary{opacity:1;color:var(--cf-fg)}.comment-actions form{display:grid;gap:6px;margin-top:6px;justify-items:start}.comment-actions textarea{min-height:60px;width:100%}.comment-action-row{display:flex;gap:6px}.comment-actions form[id]{display:none}
.timeline-collapsed{border-top:1px solid var(--cf-border);padding:6px 0}.timeline-collapsed summary{cursor:pointer;color:var(--cf-muted);font-size:13px;font-weight:600}.timeline-collapsed .timeline-event{margin-left:10px}.commit-row{display:flex;gap:8px;align-items:baseline;border-top:1px solid var(--cf-border);padding:4px 0;color:var(--cf-muted);font:12px var(--cf-font-mono)}.commit-row code{color:var(--cf-fg);flex:0 0 auto}.commit-row .commit-msg{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.commit-group{border-top:1px solid var(--cf-border)}.commit-group>summary{cursor:pointer;color:var(--cf-muted);font:12px var(--cf-font-mono);padding:5px 0;display:flex;gap:6px;align-items:baseline;list-style:none}.commit-group>summary::-webkit-details-marker{display:none}.commit-group>summary time{margin-left:auto}.commit-group[open]>summary{color:var(--cf-fg)}.commit-group .commit-row{border-top:0;padding-left:18px}
.button.small{padding:2px 8px;font-size:12px}
/* avatar chips + thread participants bar */
.avatar-link{display:inline-flex;align-items:center;justify-content:center;color:inherit;text-decoration:none;line-height:0}.avatar-link:focus-visible .avatar-chip{outline:2px solid var(--cf-accent);outline-offset:2px}.avatar-chip{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;font:600 10px/1 var(--cf-font-mono,monospace);color:#fff;background:var(--cf-muted);text-transform:uppercase;flex:0 0 auto}
/* uploaded profile picture (#150): same round footprint as the initials chip, image cropped to cover */
.avatar-chip--photo{position:relative;overflow:hidden}.avatar-chip-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:inherit}
.avatar-edit{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.avatar-preview{display:inline-flex}.avatar-preview .avatar-chip{width:48px;height:48px;font-size:18px}.avatar-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.avatar-controls form{margin:0}.avatar-upload-form{display:flex;align-items:center;gap:8px}
.avatar-chip--0{background:#0f766e}.avatar-chip--1{background:#6e56cf}.avatar-chip--2{background:#9f1239}.avatar-chip--3{background:#0369a1}.avatar-chip--4{background:#92400e}.avatar-chip--5{background:#3f6212}.avatar-chip--6{background:#7c3aed}.avatar-chip--7{background:#0e7490}
.thread-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;border-bottom:1px solid var(--cf-border);padding:0 0 8px;margin:0 0 4px;font-size:12.5px}
.thread-faces{display:inline-flex}.thread-faces .avatar-link{margin-left:-6px}.thread-faces .avatar-link:first-child{margin-left:0}.thread-faces .avatar-chip{box-shadow:0 0 0 2px var(--cf-bg)}
.thread-stats{font-family:var(--cf-font-mono,monospace);font-size:12px;color:var(--cf-muted)}.thread-stats strong{color:var(--cf-fg)}
.thread-jump{margin-left:auto;font-size:12px}.thread-jump:hover{color:var(--cf-fg)}
@media(max-width:800px){.comment{grid-template-columns:1fr}.comment-avatar{display:none}}

/* review + diffs */
.review-page{display:grid;gap:6px}.review-main{min-width:0}.review-bottom{display:grid;gap:6px;border-top:1px solid var(--cf-border);padding-top:8px}.review-card{border:0;border-radius:0;background:transparent;padding:6px 0}.review-card h2{margin:0 0 6px}
/* changed-file switcher reads as tabs/picker, not editable input boxes (#142) */
.changed-files{display:flex;gap:2px;overflow-x:auto;border:0;border-bottom:1px solid var(--cf-border);border-radius:0;padding:0;background:transparent}.changed-files a{display:flex;align-items:center;gap:8px;max-width:360px;padding:5px 9px;border:0;border-radius:var(--cf-radius-xs) var(--cf-radius-xs) 0 0;background:transparent;color:var(--cf-muted);white-space:nowrap}.changed-files a span{min-width:0;overflow:hidden;text-overflow:ellipsis}.changed-files a.active{color:var(--cf-fg);font-weight:600;box-shadow:inset 0 -2px 0 var(--cf-accent)}.changed-files a:hover{background:var(--cf-hover);color:var(--cf-fg)}.changed-files small{color:var(--cf-muted);flex:0 0 auto}.changed-files a small{display:none}
.diff-panel{min-width:0;border:1px solid var(--cf-border);border-radius:var(--cf-radius);overflow:auto;box-shadow:var(--cf-shadow-sm)}.diff-title{display:flex;justify-content:space-between;padding:6px 8px;border-bottom:1px solid var(--cf-border);background:var(--cf-surface)}.diff-controls{display:flex;gap:12px;align-items:center;padding:5px 8px;border-bottom:1px solid var(--cf-border);background:var(--cf-bg)}.diff-controls div{display:flex;gap:4px;align-items:center}.diff-controls span{color:var(--cf-muted);font-size:12px}.diff-controls a,.diff-controls .disabled{font-size:12px;padding:4px 7px;border-radius:var(--cf-radius-xs)}.diff-controls a:hover,.diff-controls a.active{background:var(--cf-hover);color:var(--cf-fg)}.diff-controls .disabled{opacity:.4}
.diff-change-nav{display:flex;gap:6px;align-items:center;margin-left:auto}.diff-change-nav .diff-change-count{color:var(--cf-muted);font-size:12px;white-space:nowrap}.diff-change-nav button{font:inherit;font-size:12px;padding:3px 8px;border:1px solid var(--cf-border);border-radius:var(--cf-radius-xs);background:var(--cf-bg);color:var(--cf-fg);cursor:pointer}.diff-change-nav button:hover{background:var(--cf-hover)}
@keyframes diff-change-flash{from{background:rgb(59 130 246 / .28)}to{background:transparent}}.change-focus{animation:diff-change-flash 1.1s ease-out}.change-focus td{animation:diff-change-flash 1.1s ease-out}
.patch{width:100%;border-collapse:collapse;font:13px/1.45 var(--cf-font-mono)}.patch td{vertical-align:top;padding:0}.patch pre{margin:0;white-space:pre-wrap;word-break:break-word}.patch .sign{width:28px;text-align:center;color:var(--cf-muted);user-select:none}.patch tr.add{background:rgb(34 197 94 / .09)}.patch tr.del{background:rgb(239 68 68 / .09)}.patch tr.hunk{background:var(--cf-hover);color:var(--cf-muted)}
.source-split,.rich-split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0}.source-split section,.rich-split section{min-width:0;border-left:1px solid var(--cf-border);padding:0 8px 10px}.source-split section:first-child,.rich-split section:first-child{border-left:0}.source-split h3,.rich-split h3,.source-after h3{font-size:12px;color:var(--cf-muted);font-weight:500;margin:0 -10px 8px;padding:8px 10px;border-bottom:1px solid var(--cf-border);background:var(--cf-surface)}
.source-lines{width:100%;border-collapse:collapse;font:13px/1.45 var(--cf-font-mono)}.source-lines td{vertical-align:top;padding:0}.source-lines td.line-action{width:26px;text-align:center;padding-right:4px;color:var(--cf-muted);user-select:none}.source-lines td:nth-child(2){width:42px;text-align:right;padding-right:10px;color:var(--cf-muted);user-select:none}.source-lines pre{margin:0;white-space:pre-wrap;word-break:break-word}.source-lines tr.marked{background:rgb(34 197 94 / .09)}.source-split section:first-child .source-lines tr.marked{background:rgb(239 68 68 / .09)}.cf-rich-diff .marked{background:rgb(34 197 94 / .12);border-radius:3px}.rich-split section:first-child .cf-rich-diff .marked{background:rgb(239 68 68 / .12)}
.line-composer{position:relative}.line-composer summary{list-style:none;width:18px;height:18px;border:1px solid var(--cf-border);border-radius:var(--cf-radius-xs);background:transparent;line-height:16px;cursor:pointer;box-shadow:none}.line-composer summary::-webkit-details-marker{display:none}.line-composer form{position:absolute;z-index:3;left:20px;top:0;width:260px;display:grid;gap:6px;border:1px solid var(--cf-border-strong);border-radius:var(--cf-radius);background:var(--cf-bg);padding:8px;box-shadow:var(--cf-shadow-sm)}.line-composer textarea{min-height:74px;font:13px/1.4 var(--cf-font-sans)}
.line-comment{font:13px/1.35 var(--cf-font-sans);border:0;border-left:2px solid var(--cf-border);border-radius:0;margin:3px 0 4px;padding:4px 0 4px 8px;background:transparent}.line-comment span,.file-comment span{color:var(--cf-muted);font-size:12px;margin-left:8px}.line-comment p,.file-comment p{margin:2px 0 0;white-space:pre-wrap}.file-comments{display:grid;gap:4px}.file-comments.empty{border:0;padding:2px 0;color:var(--cf-muted)}.file-comment{border:0;border-left:2px solid var(--cf-border);border-radius:0;padding:3px 0 3px 8px;background:transparent}.file-comment.outdated,.line-comment.outdated{opacity:.72}.rich-after{padding:9px}.rich-split .cf-reader{max-width:none}.diff-side-empty{padding:22px 12px;color:var(--cf-muted);font-style:italic;font-size:13px;text-align:center}
.file-meta{display:flex;gap:8px;margin:2px 0 0;color:var(--cf-muted);font-size:12px}.file-preview{border-top:1px solid var(--cf-border);padding:10px 0}.file-preview-source pre{margin:0;max-height:70vh;overflow:auto;border:1px solid var(--cf-border);border-radius:var(--cf-radius);background:var(--cf-surface);padding:12px;font:13px/1.45 var(--cf-font-mono);white-space:pre-wrap;word-break:break-word}.file-preview-embed object{width:100%;height:72vh;border:1px solid var(--cf-border);border-radius:var(--cf-radius)}.file-preview-image{display:grid;place-items:start}.file-preview-image img{max-width:100%;height:auto;border:1px solid var(--cf-border);border-radius:var(--cf-radius)}.file-preview-fallback{display:grid;gap:10px;justify-items:start;color:var(--cf-muted)}

/* edit pages */
.edit-page{display:flex;flex-direction:column;gap:8px;flex:1;min-height:0}.edit-page .file-toolbar{margin:0}.edit-titlebar h1{display:flex;align-items:center;gap:4px}.edit-page textarea{min-height:62vh;font:13px/1.45 var(--cf-font-mono)}.issue-edit-page{max-width:1100px}.issue-body-editor{min-height:58vh}
.app-content:has(.edit-page){display:flex;flex-direction:column;overflow:hidden}.app-content:has(.edit-page) .repo-page{flex:1;min-height:0;display:flex;flex-direction:column;padding:0 12px}.app-content:has(.edit-page) .repo-body{flex:1;min-height:0;display:flex;flex-direction:column;padding-bottom:0}
.text-edit-page .compose-form{flex:1;min-height:0;display:flex;flex-direction:column;border-top:1px solid var(--cf-border)}.text-edit-page .text-file-editor{flex:1;min-height:200px}.text-edit-page .form-actions{padding:8px 0}.text-file-editor{min-height:64vh;font:13px/1.45 var(--cf-font-mono)}
#web-editor-root{flex:1;min-height:320px;border:0;border-top:1px solid var(--cf-border);border-radius:0;margin:0 -12px;overflow:clip}
/* unsaved local-draft restore prompt (#162) */
.editor-draft-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border-bottom:1px solid var(--cf-border);background:var(--cf-surface);color:var(--cf-fg);padding:6px 12px;font-size:13px}.editor-draft-banner span{margin-right:auto}
/* The editor document measure is the same reading-width contract as the reader. */
.web-editor-shell{height:100%;min-height:0;display:flex;flex-direction:column;background:var(--cf-bg);color:var(--cf-fg)}.web-editor-main{position:relative;min-height:0;flex:1;display:grid;grid-template-columns:minmax(0,1fr);overflow:hidden}.web-editor-main .cm-host{min-width:0;min-height:0;display:flex;flex-direction:column}.web-editor-main .cm-editor{height:100%;min-height:0}.web-editor-main .cm-scroller{padding-right:252px}.web-editor-outline{position:absolute;top:10px;right:16px;bottom:0;width:220px;max-height:none;padding:0 0 0 14px;background:var(--cf-bg);overflow:auto;z-index:2}.web-editor-outline ol{list-style:none;margin:0;padding:0}.web-editor-outline li button{width:100%;border:0;border-radius:var(--cf-radius-xs);background:transparent;text-align:left;padding:2px 0;color:var(--cf-muted);font-size:12.5px;line-height:1.35;box-shadow:none}.web-editor-outline li button:hover{background:transparent;color:var(--cf-fg)}.web-editor-outline p{color:var(--cf-muted);font-size:13px;padding:0;margin:0}.web-editor-loading{padding:16px;color:var(--cf-muted)}
.editor-diagnostics{display:grid;gap:2px;border-bottom:1px solid var(--cf-border);padding:0 0 8px;margin:0 0 8px;font:12px var(--cf-font-mono);color:var(--cf-muted)}.editor-diagnostics a{color:var(--cf-fg);font-weight:600}.editor-diagnostics.has-issues span{color:var(--cf-danger)}
.web-editor-statusbar{height:30px;border-top:1px solid var(--cf-border);display:flex;align-items:center;gap:8px;padding:0 8px;font-size:12px;color:var(--cf-muted);background:var(--cf-bg)}.web-editor-statusbar button,.web-editor-statusbar select{font-size:12px;padding:2px 6px}.web-editor-statusbar button{box-shadow:none}.web-editor-status{flex:1;text-align:center;min-width:80px}.dirty-dot{color:var(--cf-accent)}
.coflat-compose{--cf-content-max-width:none;--cf-doc-content-padding-inline:0}.coflat-compose .coflat-compose-editor{display:grid;gap:4px}.coflat-compose-toolbar{display:flex;gap:4px}.coflat-compose-toolbar button{font-size:12px;padding:2px 8px;box-shadow:none}.coflat-compose-toolbar button.active{background:var(--cf-accent);color:var(--cf-accent-fg,#fff)}.coflat-compose .cm-host{min-height:140px;display:flex;flex-direction:column;border:1px solid var(--cf-border);border-radius:var(--cf-radius-sm);overflow:clip}.coflat-compose .cm-editor{min-height:140px}

/* settings */
.settings-page{display:grid;gap:10px;max-width:980px}.settings-page.account-settings{max-width:760px}.settings-section{display:grid;grid-template-columns:220px minmax(0,1fr);gap:14px;border-top:1px solid var(--cf-border);padding-top:10px}.settings-section-header{display:grid;gap:2px;align-content:start}.settings-section h2{margin:0}.settings-section p{margin:0;color:var(--cf-muted)}.settings-form{display:grid;gap:8px;min-width:0}.settings-row{display:grid;grid-template-columns:190px minmax(0,1fr);gap:8px;align-items:center;color:var(--cf-fg)}.settings-row--textarea{align-items:start}.settings-row>span:first-child{color:var(--cf-muted)}.settings-row input,.settings-row select,.settings-row textarea{width:100%;min-width:0}.settings-row textarea{resize:vertical;font:12.5px/1.4 var(--cf-font-mono,monospace)}.settings-row strong{font-weight:500}.settings-row input[type=checkbox]{width:auto;justify-self:start}.settings-row input[type=checkbox].settings-switch{appearance:none;-webkit-appearance:none;position:relative;width:38px;height:22px;border-radius:11px;background:var(--cf-border);cursor:pointer;flex:none;justify-self:start;transition:background .15s ease;margin:0}.settings-switch::before{content:"";position:absolute;top:2px;left:2px;width:18px;height:18px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.3);transition:transform .15s ease}.settings-row input[type=checkbox].settings-switch:checked{background:var(--cf-accent)}.settings-switch:checked::before{transform:translateX(16px)}.settings-switch:focus-visible{outline:2px solid var(--cf-accent);outline-offset:2px}.settings-inline-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px}.settings-actions{display:flex;align-items:center;gap:10px}.settings-note{display:grid;gap:4px}.ssh-key-list{display:grid;gap:6px}.ssh-key-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid var(--cf-border);border-radius:var(--cf-radius);padding:8px}.ssh-key-main{display:grid;gap:3px;min-width:0}.ssh-key-main code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--cf-muted);font-size:12px}.ssh-key-add-form{display:grid;gap:8px}
[data-testid=settings-labels] .list-row,[data-testid=settings-milestones] .list-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}[data-testid=settings-labels] .list-row>.inline-edit,[data-testid=settings-milestones] .list-row>.inline-edit{margin-left:auto}[data-testid=settings-labels] .list-row form,[data-testid=settings-milestones] .list-row form{margin:0}.inline-edit{min-width:0}.inline-edit>summary{cursor:pointer;color:var(--cf-muted);font-size:12px;list-style:none}.inline-edit>summary::-webkit-details-marker{display:none}.inline-edit>summary:hover{color:var(--cf-fg)}.inline-edit[open]{flex-basis:100%;border:1px solid var(--cf-border);padding:8px;margin:4px 0}.inline-edit[open]>summary{margin-bottom:6px}.add-disclosure{margin-top:6px}.add-disclosure>summary{cursor:pointer;color:var(--cf-muted);font-size:12px;list-style:none;width:fit-content;padding:1px 0}.add-disclosure>summary::-webkit-details-marker{display:none}.add-disclosure>summary:hover,.add-disclosure>summary:focus-visible{color:var(--cf-fg)}.add-disclosure[open]>summary{margin-bottom:6px}

/* chat */
.chat-notice{display:flex;align-items:center;gap:6px;border:1px solid var(--cf-border);border-left:3px solid var(--cf-accent);border-radius:var(--cf-radius);background:var(--cf-surface);color:var(--cf-muted);padding:6px 10px;margin:8px 0;font-size:12.5px}.chat-notice .lucide{flex:none}
.chat-readonly-notice{border:1px solid var(--cf-border);border-left:3px solid var(--cf-accent);border-radius:var(--cf-radius);background:var(--cf-surface);color:var(--cf-muted);padding:6px 8px;margin:7px 0;font-size:13px}
.chat-app{display:flex;border:1px solid var(--cf-border);border-radius:var(--cf-radius);overflow:hidden;height:calc(100dvh - 64px);min-height:390px;box-shadow:var(--cf-shadow-sm)}
.chat-sidebar{flex:0 0 240px;width:240px;border-right:1px solid var(--cf-border);background:var(--cf-surface);display:flex;flex-direction:column;overflow:hidden}
.chat-new-link{margin:8px;padding:6px 8px;text-align:center;border:1px solid var(--cf-accent);border-radius:var(--cf-radius);background:var(--cf-accent);color:var(--cf-accent-fg);font-size:13px}.chat-new-link.active{opacity:.8}
.chat-sessions{flex:1;overflow-y:auto;display:flex;flex-direction:column}.chat-session{display:block;padding:7px 10px;border-top:1px solid var(--cf-border);color:var(--cf-fg);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px}.chat-session:hover{background:var(--cf-hover)}.chat-session.active{background:var(--cf-bg);font-weight:600;box-shadow:inset 2px 0 0 var(--cf-accent)}.chat-sessions-empty{padding:12px;color:var(--cf-muted);font-size:13px}
.chat-main{flex:1;min-width:0;display:flex;flex-direction:column;overflow:hidden;padding:0 12px}.chat-main-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;padding:7px 0 5px;border-bottom:1px solid var(--cf-border)}.chat-main-head h1{margin:0;font-size:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-context{margin:3px 0 0;color:var(--cf-muted);font-size:12px}.chat-blank{color:var(--cf-muted);padding:16px 0}
.chat-thread{flex:1;overflow-y:auto;display:flex;flex-direction:column;margin:0;padding:4px 0}.chat-turn{padding:9px 0;border-bottom:1px solid var(--cf-border);background:transparent}.chat-role{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--cf-muted);margin-bottom:4px}.chat-bubble{max-width:none;font-size:13px;line-height:1.5}.chat-bubble :where(p,ul,ol,pre,blockquote):first-child{margin-top:0}.chat-bubble :where(p,ul,ol,pre,blockquote):last-child{margin-bottom:0}.chat-pending .chat-bubble{color:var(--cf-muted);font-style:italic}
.chat-composer{display:grid;gap:6px;border-top:1px solid var(--cf-border);background:var(--cf-bg);padding:8px 0}.chat-composer textarea{min-height:56px}.chat-composer button{justify-self:end}

/* custom select (#106): flat/square/mono dropdown that progressively enhances every native <select>. Native selects get appearance:none + a custom chevron so the no-JS/pre-enhancement control also matches (no OS chevron); single-line selects keep the same chevron via background. */
select{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2362748e' stroke-width='1.4' stroke-linecap='square'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px}select[multiple]{background-image:none;padding-right:8px}
.cf-select{display:inline-block;position:relative;min-width:0}.cf-select.cf-select--multiple{display:block}select.cf-select-native{position:absolute;width:1px;height:1px;padding:0;margin:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);border:0;white-space:nowrap}
.cf-select-trigger{display:inline-flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;border:1px solid var(--cf-border);border-radius:var(--cf-radius-sm);background:var(--cf-bg);color:var(--cf-fg);padding:8px;font:inherit;font-weight:400;text-align:left;box-shadow:none;cursor:pointer}.cf-select-trigger:hover{background:var(--cf-bg);border-color:var(--cf-border-strong)}.cf-select-trigger:focus-visible{border-color:var(--cf-ring);outline:3px solid rgb(15 23 43 / .07);outline-offset:0}.cf-select-trigger[aria-expanded=true]{border-color:var(--cf-ring)}.cf-select-trigger:disabled{color:var(--cf-muted);cursor:default;opacity:.7}
.cf-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cf-select-value.is-placeholder{color:var(--cf-muted)}.cf-select-chevron{flex:0 0 auto;width:10px;height:6px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2362748e' stroke-width='1.4' stroke-linecap='square'/%3E%3C/svg%3E") no-repeat center}
.filter-panel .cf-select-trigger,.filter-basic .cf-select-trigger,.filter-advanced-grid .cf-select-trigger{height:34px;padding:5px 7px;font-size:13px}.settings-row .cf-select,.compose-form .cf-select{width:100%}.web-editor-statusbar .cf-select{display:inline-block}
.cf-select-listbox{position:fixed;margin:0;padding:3px;border:1px solid var(--cf-border-strong);border-radius:var(--cf-radius);background:var(--cf-bg);color:var(--cf-fg);box-shadow:var(--cf-shadow-pop);overflow-y:auto;z-index:50;max-width:min(440px,calc(100vw - 16px))}.cf-select-listbox:popover-open{display:block}
.cf-select-option{padding:6px 9px;border-radius:0;font-size:13px;line-height:1.4;cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--cf-fg);display:flex;align-items:center;gap:8px}.cf-select-option.is-active{background:var(--cf-hover)}.cf-select-option.is-selected{font-weight:600}.cf-select-option.is-selected::after{content:"\2713";margin-left:auto;color:var(--cf-muted)}.cf-select-option[aria-disabled=true]{color:var(--cf-muted);opacity:.5;cursor:default}.cf-select-option[aria-disabled=true].is-active{background:transparent}
.cf-select-value.has-opt-icon,.cf-select-option.has-opt-icon{display:flex;align-items:center;gap:5px;min-width:0}.cf-opt-icon{flex:none;color:var(--cf-muted)}.cf-opt-label{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* misc */
.cosheaf-ref-button{border:0;background:transparent;border-radius:0;padding:0;color:var(--cf-accent);text-decoration-line:underline;text-decoration-style:dotted;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer;vertical-align:baseline;box-shadow:none}.cosheaf-ref-button:hover{background:transparent;color:var(--cf-accent)}.cosheaf-ref-button:focus-visible{outline:1px solid currentColor;outline-offset:2px}

/* mobile */
@media(max-width:900px){#web-editor-root{margin:0}.web-editor-main .cm-scroller{padding-right:0}.web-editor-outline{display:none}}
@media(max-width:800px){.app-main{flex-direction:column}.app-sidebar{width:auto;flex-direction:row;align-items:center;flex-wrap:wrap;gap:4px 10px;padding:6px 8px;border-right:0;border-bottom:1px solid var(--cf-border)}.app-sidebar .sidebar-identity{padding:0 4px}.app-sidebar .sidebar-topnav{padding:0 4px}.sidebar-workspace{padding:0 6px;flex:none}.repo-tabs{flex-direction:row;flex-wrap:wrap;gap:2px 8px}.repo-tabs a{white-space:nowrap}.repo-tabs a.active{box-shadow:inset 0 -2px 0 var(--cf-accent)}.thread-layout{grid-template-columns:1fr}.thread-rail{position:static}.web-editor-main{grid-template-columns:1fr}.file-tree{display:none}.repo-clone{grid-template-columns:1fr}.repo-clone-row{flex-wrap:wrap}.repo-clone-row .clone-url{flex-basis:100%}.filter-panel,.branch-compare,.relation-grid{grid-template-columns:1fr}.filter-advanced-grid{grid-template-columns:1fr}.filter-basic{align-items:stretch}.filter-actions{width:100%}.list-row,.relation-row,.branch-row{grid-template-columns:1fr}.list-row.issue-row,.list-row.pull-row,.activity-row{grid-template-columns:1fr}.settings-section,.settings-row,.settings-inline-controls{grid-template-columns:1fr}.chat-bubble{max-width:none}.chat-app{flex-direction:column;height:auto}.chat-sidebar{flex:none;width:auto;max-height:200px;border-right:0;border-bottom:1px solid var(--cf-border)}.chat-main-head{display:grid}}
