@font-face { font-family: "Atkinson Hyperlegible Mono"; font-style: normal; font-display: swap; font-weight: 200 800; src: url(/fonts/atkinson-hyperlegible-mono-latin-wght-normal.woff2) format("woff2-variations"); 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: "Atkinson Hyperlegible Mono"; font-style: normal; font-display: swap; font-weight: 200 800; src: url(/fonts/atkinson-hyperlegible-mono-latin-ext-wght-normal.woff2) format("woff2-variations"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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: "Atkinson Hyperlegible Mono"; font-style: italic; font-display: swap; font-weight: 200 800; src: url(/fonts/atkinson-hyperlegible-mono-latin-wght-italic.woff2) format("woff2-variations"); 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: "Atkinson Hyperlegible Mono"; font-style: italic; font-display: swap; font-weight: 200 800; src: url(/fonts/atkinson-hyperlegible-mono-latin-ext-wght-italic.woff2) format("woff2-variations"); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, 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; } :root { color-scheme: light dark; --bg: #fbfbfa; --surface: #f2f3f5; --raised: #ffffff; --border: #d6d9de; --text: #16181b; --muted: #4a5260; --accent: #1a45bd; --accent-tint: #e7edfb; --danger: #b42318; --danger-tint: #fdecea; --warn: #855600; --warn-tint: #fdf3dc; --ok: #1a7f37; --ok-tint: #e5f4e9; --task-0: #a4273f; --task-1: #9f3501; --task-2: #376e00; --task-3: #027048; --task-4: #026d64; --task-5: #046a77; --task-6: #06658e; --task-7: #1f58b6; --task-8: #5849b2; --task-9: #793c9f; --task-10: #942e79; --task: var(--accent); --shadow: 0 8px 28px rgb(16 24 40 / 0.18); --font: "Atkinson Hyperlegible Mono", ui-monospace, Menlo, monospace; font: 13px/1.55 var(--font); } @media (prefers-color-scheme: dark) { :root { --bg: #15171a; --surface: #1c1f23; --raised: #23272c; --border: #353b43; --text: #eceff3; --muted: #a9b1bc; --accent: #8ab4ff; --accent-tint: #1e2a40; --danger: #ff9488; --danger-tint: #3a1f1d; --warn: #f2c66d; --warn-tint: #352a14; --ok: #7fd88f; --ok-tint: #1b3322; --task-0: #fe9fa6; --task-1: #ffa383; --task-2: #99d079; --task-3: #68d7a1; --task-4: #37d8c9; --task-5: #2fd4ec; --task-6: #69caff; --task-7: #98bffe; --task-8: #b6b4fe; --task-9: #d7a6fc; --task-10: #f59cd8; --shadow: 0 8px 28px rgb(0 0 0 / 0.5); } } * { box-sizing: border-box; } html, body { height: 100%; margin: 0; background: var(--bg); color: var(--text); } body { display: flex; flex-direction: column; } a { color: var(--accent); text-decoration: none; } a:hover { text-decoration: underline; } code, pre, input, textarea, select, button { font-family: var(--font); font-size: inherit; } pre { margin: 0; white-space: pre-wrap; word-break: break-word; } :focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; } button { padding: 4px 12px; border: 1px solid var(--border); border-radius: 6px; background: var(--raised); color: var(--text); cursor: pointer; } button:hover:not(:disabled) { border-color: var(--muted); } button:disabled { opacity: 0.45; cursor: default; } button.primary { background: var(--accent); border-color: var(--accent); color: var(--bg); font-weight: 700; } button.danger { color: var(--danger); } input, textarea, select { color: var(--text); background: var(--raised); border: 1px solid var(--border); border-radius: 6px; padding: 6px 10px; width: 100%; } input:focus, textarea:focus, select:focus { border-color: var(--accent); outline: none; } textarea { resize: vertical; } .pane-status { display: flex; align-items: center; gap: 10px; margin-left: auto; white-space: nowrap; } .connection { width: 8px; height: 8px; border-radius: 50%; } .connection.up { background: var(--ok); } .connection.down { background: var(--danger); } .connection-label { color: var(--danger); } .connection-label[hidden] { display: none; } .me { color: var(--muted); } .banner { padding: 8px 16px; background: var(--accent-tint); border-bottom: 1px solid var(--border); } .banner input { width: auto; margin: 0 4px; } .panes { flex: 1; display: grid; grid-template-columns: 1fr 1fr; min-height: 0; } .pane { display: flex; flex-direction: column; min-width: 0; min-height: 0; } .pane:focus { outline: none; } .pane + .pane { border-left: 1px solid var(--border); } .pane-tabs { display: flex; gap: 4px; padding: 0 12px; border-bottom: 1px solid var(--border); } .pane-tabs button, .range-tabs button, .modes button { border: none; border-radius: 0; background: transparent; color: var(--muted); border-bottom: 2px solid transparent; } .pane-tabs button { padding: 8px 10px 6px; } .task-bar { display: grid; grid-template-columns: 1fr minmax(0, auto) 1fr; align-items: center; padding: 0 12px; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--task) 12%, var(--bg)); } .task-bar .task-picker { grid-column: 2; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; padding: 6px 10px; border: none; border-radius: 0; background: transparent; color: var(--task); font-weight: 700; } .preview-links { grid-column: 3; justify-self: end; display: flex; gap: 12px; min-width: 0; overflow: hidden; } .preview-link { white-space: nowrap; color: var(--task); } .task-pane > .pane-tabs button.active { border-bottom-color: var(--task); } .task-name, a.task-link { color: var(--task); } .pane-tabs button:hover:not(:disabled), .range-tabs button:hover:not(:disabled), .modes button:hover:not(:disabled) { color: var(--text); } .pane-tabs button.active, .range-tabs button.active, .modes button.active { color: var(--text); border-bottom-color: var(--accent); } .pane-tabs button.attention { background: var(--warn-tint); color: var(--warn); font-weight: 700; } .pane-tabs button.attention:not(.active) { border-bottom-color: var(--warn); } .pane-tabs button .badge { margin-left: 6px; } .pane-tabs button .spinner, .tab-menu button .spinner { display: inline-block; vertical-align: text-top; margin: 0 0 0 2px; } .pane-tabs button[hidden] { display: none; } .pane-tabs button { flex-shrink: 0; white-space: nowrap; } .tab-menu { position: fixed; inset: auto; margin: 0; padding: 4px; border: 1px solid var(--border); border-radius: 6px; background: var(--raised); color: var(--text); box-shadow: var(--shadow); } .tab-menu:popover-open { display: flex; flex-direction: column; } .tab-menu button { border: none; background: transparent; text-align: left; } .tab-menu button:hover { background: var(--surface); } .pane-body, .view, .transcript-view, .changes-view, .files-view, .terminal-view, .inbox-view, .reviews-view, .workflow-view { flex: 1; min-height: 0; display: flex; flex-direction: column; } .view[hidden] { display: none; } .project-view { overflow-y: auto; padding: 8px 16px 16px; } .project h3 { font-size: 12px; margin: 14px 0 4px; } .todo-section { font-size: 12px; color: var(--muted); margin: 10px 0 4px; } .todo-list { list-style: none; margin: 0 0 8px; padding: 0; } .todo-list li { padding: 6px 10px; border-radius: 6px; } .todo-list li.selected { background: var(--accent-tint); } .todo-head { display: flex; align-items: center; gap: 10px; } .todo-title { flex: 1; min-width: 0; } .todo-task { display: flex; align-items: center; gap: 6px; flex-shrink: 0; color: var(--muted); font-size: 11px; } .todo-buttons { display: flex; gap: 6px; flex-shrink: 0; } .todo-body { color: var(--muted); margin-top: 4px; } .todo-link .todo-task { display: inline-flex; vertical-align: middle; } .todo-link button { padding: 0; border: none; background: none; color: var(--accent); } .todo-link button:hover:not(:disabled) { text-decoration: underline; } .todo-sep { color: var(--muted); } .project h2 { font-size: 13px; margin: 16px 0 6px; } .project h2 .repo { font-weight: 400; color: var(--muted); font-size: 11px; margin-left: 6px; } .task-list { list-style: none; margin: 0 0 8px; padding: 0; } .task-list a { display: flex; align-items: center; gap: 10px; padding: 6px 10px; border-radius: 6px; color: var(--text); } .task-list a:hover { background: var(--surface); text-decoration: none; } .task-list li.selected a { background: var(--accent-tint); } .task-state.summary-unread { color: var(--accent); font-weight: 700; } .task-list li.subtask a { padding-left: calc(10px + 20px * (var(--depth) - 1)); } .subtask-mark { color: var(--muted); } .task-title { flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .task-state { color: var(--muted); font-size: 11px; } .empty-row { color: var(--muted); padding: 6px 10px; } .dot { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; box-shadow: inset 0 0 0 1.5px var(--muted); } .dot.running, .dot.working, .dot.merging { background: var(--ok); box-shadow: none; } .dot.answer { background: var(--warn); box-shadow: none; } .dot.error { background: var(--danger); box-shadow: none; } .badge { font-size: 11px; font-weight: 700; background: var(--danger-tint); color: var(--danger); border-radius: 10px; padding: 0 7px; } .inline-form, .stack-form { display: flex; gap: 6px; margin-top: 6px; } .stack-form { flex-direction: column; } .add-project { margin-top: 24px; } .add-project summary { cursor: pointer; color: var(--muted); } .task-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .task-header:empty { display: none; } .head-actions { display: flex; gap: 8px; align-items: center; flex-shrink: 0; } .session-actions { margin-right: auto; } button.compact { --tint: color-mix(in srgb, var(--accent) 25%, var(--raised)); background: linear-gradient(to right, var(--tint) var(--fill), var(--raised) var(--fill)); } button.compact.warn { --tint: color-mix(in srgb, var(--warn) 25%, var(--raised)); border-color: var(--warn); } button.compact.danger { --tint: color-mix(in srgb, var(--danger) 25%, var(--raised)); border-color: var(--danger); } .transcript { flex: 1; overflow-y: auto; padding: 16px; display: flex; flex-direction: column; gap: 12px; border: 1px solid transparent; transition: border-color 0.3s; } .transcript.running { border-color: var(--task); } .scanner { position: relative; flex-shrink: 0; height: 0; margin-top: -12px; } .scanner::before { content: ""; position: absolute; top: 6px; left: 0; width: 84px; height: 2px; background: linear-gradient(90deg, transparent, var(--task), transparent) 0 0 / 30px 100% no-repeat; -webkit-mask: linear-gradient(90deg, #000 2px, transparent 2px) 0 0 / 5px 2px repeat-x; mask: linear-gradient(90deg, #000 2px, transparent 2px) 0 0 / 5px 2px repeat-x; animation: cylon 1.2s ease-in-out infinite alternate; } @keyframes cylon { to { background-position: 100% 0; } } .spinner { --frames: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='50' height='10'%3E%3Cg%3E%3Ccircle cx='1' cy='1' r='1'/%3E%3Ccircle cx='1' cy='5' r='1'/%3E%3Ccircle cx='4' cy='1' r='1'/%3E%3Ccircle cx='6' cy='1' r='1'/%3E%3Ccircle cx='9' cy='1' r='1'/%3E%3Ccircle cx='9' cy='5' r='1'/%3E%3Ccircle cx='11' cy='1' r='1'/%3E%3Ccircle cx='14' cy='1' r='1'/%3E%3Ccircle cx='14' cy='5' r='1'/%3E%3Ccircle cx='14' cy='9' r='1'/%3E%3Ccircle cx='19' cy='1' r='1'/%3E%3Ccircle cx='19' cy='5' r='1'/%3E%3Ccircle cx='19' cy='9' r='1'/%3E%3Ccircle cx='21' cy='9' r='1'/%3E%3Ccircle cx='24' cy='1' r='1'/%3E%3Ccircle cx='24' cy='5' r='1'/%3E%3Ccircle cx='24' cy='9' r='1'/%3E%3Ccircle cx='26' cy='9' r='1'/%3E%3Ccircle cx='29' cy='5' r='1'/%3E%3Ccircle cx='29' cy='9' r='1'/%3E%3Ccircle cx='31' cy='5' r='1'/%3E%3Ccircle cx='31' cy='9' r='1'/%3E%3Ccircle cx='34' cy='9' r='1'/%3E%3Ccircle cx='36' cy='1' r='1'/%3E%3Ccircle cx='36' cy='5' r='1'/%3E%3Ccircle cx='36' cy='9' r='1'/%3E%3Ccircle cx='39' cy='9' r='1'/%3E%3Ccircle cx='41' cy='1' r='1'/%3E%3Ccircle cx='41' cy='5' r='1'/%3E%3Ccircle cx='41' cy='9' r='1'/%3E%3Ccircle cx='46' cy='1' r='1'/%3E%3Ccircle cx='46' cy='5' r='1'/%3E%3Ccircle cx='46' cy='9' r='1'/%3E%3Ccircle cx='49' cy='1' r='1'/%3E%3C/g%3E%3C/svg%3E"); flex-shrink: 0; width: 5px; height: 10px; margin: 5px 1px; background: var(--task); -webkit-mask: var(--frames) 0 0 / 50px 10px no-repeat; mask: var(--frames) 0 0 / 50px 10px no-repeat; animation: braille 0.8s steps(10) infinite; } .spinner[hidden] { display: none; } @keyframes braille { to { -webkit-mask-position: -50px 0; mask-position: -50px 0; } } .empty { color: var(--muted); padding: 32px; text-align: center; } .md { word-break: break-word; } .md > :first-child { margin-top: 0; } .md > :last-child { margin-bottom: 0; } .md p, .md ul, .md ol, .md blockquote, .md pre, .md .copyable, .md .md-table { margin: 0 0 8px; } .md li .copyable, .md li .md-table { margin-top: 6px; } .md ol, .md ul { padding-left: 0; list-style-position: inside; } .md li > ul, .md li > ol { margin: 2px 0; padding-left: 3ch; } .md h3, .md h4, .md h5, .md h6 { margin: 12px 0 4px; font-size: 13px; } .md h3 { font-size: 14px; } .md blockquote { border-left: 3px solid var(--border); padding-left: 10px; color: var(--muted); } .md hr { border: none; border-top: 1px solid var(--border); margin: 10px 0; } .md code { background: var(--surface); border-radius: 4px; padding: 0 4px; } .md pre.md-code { margin: 0; background: var(--surface); border: 1px solid var(--border); border-radius: 6px; padding: 6px 8px; overflow-x: auto; white-space: pre; } .md pre.md-code code { background: none; padding: 0; } .md pre.md-code.diff { padding: 6px 0; font-size: inherit; } .md pre.md-code.diff .line { padding: 0 8px; } .md .md-table { overflow-x: auto; } .md-img img { display: block; max-width: 100%; max-height: 480px; margin: 4px 0; border: 1px solid var(--border); border-radius: 6px; } .md-img-missing { color: var(--muted); } .md table { border-collapse: collapse; } .md th, .md td { border: 1px solid var(--border); padding: 3px 8px; text-align: left; vertical-align: top; } .md th { background: var(--surface); } .msg.user { align-self: flex-end; max-width: 85%; background: var(--accent-tint); padding: 8px 12px; border-radius: 10px; } .msg.user.pending .who { font-style: italic; } .who { font-size: 11px; color: var(--muted); margin-bottom: 2px; } .thinking, .tool, .tool-group { border: 1px solid var(--border); border-radius: 8px; padding: 4px 10px; background: var(--surface); } .tool, .tool-group { font-size: 12px; } .thinking summary, .tool summary, .tool-group summary { cursor: pointer; } .tool-group-body, .subagent-body { display: flex; flex-direction: column; gap: 6px; padding: 6px 0 4px; } .subagent-body:empty { display: none; } .tool-group-body .thinking, .tool-group-body .tool, .subagent-body > .thinking, .subagent-body > .tool, .subagent-body > .tool-group { background: var(--raised); } .tool-count { color: var(--muted); } .thinking summary { color: var(--muted); } .thinking .text { color: var(--muted); padding: 6px 0; } .tool-name { font-weight: 600; } .tool-brief { color: var(--muted); } .subagent-status { float: right; margin-left: 12px; color: var(--accent); } .subagent-status.done { color: var(--muted); } .subagent-status.error { color: var(--danger); } .subagent-tag { margin-right: 8px; color: var(--accent); font-size: 11px; } .msg.agent.subagent { padding-left: 10px; border-left: 1px solid var(--accent); } .subagent-prompt { padding: 6px 0; } .tool-input, .tool-result pre { background: var(--raised); border: 1px solid var(--border); padding: 6px 8px; border-radius: 6px; max-height: 320px; overflow: auto; } .tool .copyable, .tool-result .copyable { margin: 6px 0; } .copyable { position: relative; } .copyable .copy { position: absolute; top: 4px; right: 4px; display: flex; padding: 4px; border-radius: 4px; line-height: 0; color: var(--muted); background: var(--raised); opacity: 0; } .copyable:hover .copy, .copyable .copy:focus-visible { opacity: 1; } @media (hover: none) { .copyable .copy { opacity: 1; } } .tool-result.pending { color: var(--muted); font-style: italic; padding: 4px 0; } .turn-end, .note { font-size: 11px; color: var(--muted); } .turn-end:empty { height: 1px; background: var(--border); } .note.error, .turn-end.error { color: var(--danger); } .snap-row { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--muted); } .snap-row::before, .snap-row::after { content: ""; flex: 1; height: 1px; background: var(--border); } .snap-row button { padding: 0 6px; border-radius: 4px; font-size: 11px; color: var(--accent); background: transparent; position: relative; } .snap-row button.attention { color: var(--warn); font-weight: 700; } .snap-row button .badge { position: absolute; top: -9px; right: -9px; padding: 0 5px; font-size: 10px; line-height: 14px; } .snap-row button .review-mark { position: absolute; top: -7px; right: -7px; } .snap-row button .review-mark.spinner { --frames: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='5'%3E%3Cg%3E%3Ccircle cx='4' cy='1' r='1'/%3E%3Ccircle cx='4' cy='4' r='1'/%3E%3Ccircle cx='1' cy='4' r='1'/%3E%3Ccircle cx='6' cy='1' r='1'/%3E%3Ccircle cx='9' cy='4' r='1'/%3E%3Ccircle cx='6' cy='4' r='1'/%3E%3Ccircle cx='11' cy='1' r='1'/%3E%3Ccircle cx='14' cy='1' r='1'/%3E%3Ccircle cx='11' cy='4' r='1'/%3E%3Ccircle cx='16' cy='1' r='1'/%3E%3Ccircle cx='19' cy='1' r='1'/%3E%3Ccircle cx='19' cy='4' r='1'/%3E%3C/g%3E%3C/svg%3E"); top: -4px; height: 5px; margin: 0; -webkit-mask: var(--frames) 0 0 / 20px 5px no-repeat; mask: var(--frames) 0 0 / 20px 5px no-repeat; animation: square 0.6s steps(4) infinite; } @keyframes square { to { -webkit-mask-position: -20px 0; mask-position: -20px 0; } } .snap-row button .review-mark.clean, .snap-row button .review-mark.skipped { font-size: 11px; font-weight: 700; line-height: 1; } .snap-row button .review-mark.clean { color: var(--ok); } .snap-row button .review-mark.skipped { color: var(--muted); } .note.ask { color: var(--accent); } .note time, .byre-prompt time { float: right; margin-left: 12px; } .byre-prompt time { color: var(--muted); } .byre-prompt .md { padding: 6px 0; } details.note summary { cursor: pointer; } .md-details { margin: 6px 0; } .md-details summary { cursor: pointer; color: var(--accent); } .md-details-body { margin-top: 4px; padding-left: 10px; border-left: 1px solid var(--border); } .folded-turn { display: flex; flex-direction: column; gap: 12px; margin-top: 8px; padding-left: 10px; border-left: 1px solid var(--border); font-size: 13px; color: var(--text); } details.note .md { margin-top: 6px; padding-left: 10px; border-left: 1px solid var(--border); font-size: 12px; color: var(--text); } .composer { border-top: 1px solid var(--border); padding: 12px 16px; background: var(--surface); } .composer:empty { display: none; } .compose textarea { height: calc(4.5lh + 14px); } .task-pane .compose textarea { border-color: var(--task); } .task-pane .compose textarea:focus { box-shadow: 0 0 0 1px var(--task); } .compose-actions { display: flex; justify-content: flex-end; gap: 8px; margin-top: 8px; } .compose-actions select { width: auto; margin-right: auto; } .compose.dropping textarea { border-color: var(--accent); } .compose-images { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; } .compose-note { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding: 6px 10px; border: 1px solid var(--border); border-radius: 6px; background: var(--warn-tint); color: var(--text); font-size: 12px; } .compose-note .remove { margin-left: auto; padding: 0 6px; line-height: 18px; } .compose-images .thumb { position: relative; } .compose-images img, .msg-images img { display: block; max-width: 120px; max-height: 90px; border: 1px solid var(--border); border-radius: 6px; } .compose-images .remove { position: absolute; top: -6px; right: -6px; padding: 0 6px; line-height: 18px; border-radius: 9px; } .msg-images { display: flex; flex-wrap: wrap; gap: 6px; margin: 4px 0; } .msg-images img { max-width: 240px; max-height: 180px; } .inbox-changes { flex-shrink: 0; } .changes-view.compact { flex: none; } .changes-header { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .changes-summary { font-size: 11px; color: var(--muted); } .changes-summary .base { color: var(--muted); } .changes-where { display: flex; flex-direction: column; gap: 4px; min-width: 0; } .snap-where { font-size: 12px; } .snap-step { padding: 0 6px; border-radius: 4px; font-size: 11px; } .adds { color: var(--ok); } .dels { color: var(--danger); } .changes-list { flex: 1; overflow-y: auto; padding: 8px 16px 16px; display: flex; flex-direction: column; gap: 6px; } .file { border: 1px solid var(--border); border-radius: 8px; background: var(--surface); } .file summary { display: flex; align-items: baseline; gap: 10px; padding: 4px 10px; cursor: pointer; } .file .status { width: 1ch; font-weight: 700; color: var(--muted); } .file .status.added { color: var(--ok); } .file .status.deleted { color: var(--danger); } .file .status.renamed, .file .status.modified { color: var(--accent); } .file-path { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .counts, .binary { font-size: 11px; color: var(--muted); white-space: nowrap; } .file-diff { border-top: 1px solid var(--border); background: var(--raised); border-radius: 0 0 8px 8px; overflow-x: auto; } .file-diff .hint, .file-diff .error-text { padding: 6px 10px; } pre.diff { white-space: pre; word-break: normal; padding: 4px 0; font-size: 11px; } pre.diff .line { display: block; padding: 0 10px; min-width: max-content; } pre.diff .add { background: color-mix(in srgb, var(--ok) 14%, transparent); } pre.diff .del { background: color-mix(in srgb, var(--danger) 14%, transparent); } pre.diff .hunk { color: var(--muted); background: var(--surface); } pre.diff .meta { color: var(--muted); } .files-header { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .crumbs { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px; min-width: 0; color: var(--muted); } .crumb { padding: 0 2px; border: none; background: none; color: var(--accent); } .crumb.current { color: var(--text); } .files-summary { font-size: 11px; color: var(--muted); white-space: nowrap; } .files-body { flex: 1; overflow: auto; } .terminal-header { display: flex; align-items: baseline; gap: 12px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .terminal-title { flex: 1; color: var(--muted); } .terminal-status { font-size: 11px; color: var(--muted); white-space: nowrap; } .terminal-screen { flex: 1; min-height: 0; overflow: hidden; padding: 6px 8px; background: var(--bg); } .entries { display: flex; flex-direction: column; padding: 6px 8px 16px; } .entry { display: flex; justify-content: space-between; gap: 12px; padding: 2px 8px; border: none; border-radius: 4px; background: none; color: var(--text); text-align: left; } button.entry:hover { background: var(--surface); } .entry.dir .entry-name { color: var(--accent); } .entry.other { color: var(--muted); } .entry .symlink, .entry-meta { color: var(--muted); } .entry-meta { font-size: 11px; white-space: nowrap; } .entry.ignored .entry-name { color: var(--muted); } pre.file-text { white-space: pre; word-break: normal; padding: 6px 0; font-size: 11px; counter-reset: line; } pre.file-text .line { display: block; min-width: max-content; padding-right: 10px; counter-increment: line; } pre.file-text .line::before { content: counter(line); display: inline-block; width: 6ch; margin-right: 12px; padding-right: 6px; text-align: right; color: var(--muted); border-right: 1px solid var(--border); user-select: none; } .file-cut { padding: 6px 16px 16px; } .range-tabs { display: flex; gap: 4px; flex-shrink: 0; } .range-tabs button { padding: 2px 6px 3px; font-size: 12px; } .inbox-list { flex: 1; overflow-y: auto; padding: 12px 16px 16px; } .card header { display: flex; gap: 10px; align-items: baseline; font-size: 11px; color: var(--muted); } .card header time { margin-left: auto; } .context { margin: 10px 0; } .question { margin: 10px 0 4px; } .why { color: var(--muted); margin: 0 0 8px; } .why strong { color: var(--text); font-weight: 400; } .error-text { color: var(--danger); } .attachments { padding-left: 18px; margin: 6px 0; } .attachments img { max-width: 100%; border-radius: 6px; } .mermaid-source { background: var(--surface); padding: 6px 8px; border-radius: 6px; overflow-x: auto; } .mermaid-diagram { margin: 0 0 8px; overflow-x: auto; } .mermaid-diagram svg { display: block; max-width: 100%; height: auto; } .mermaid-error { color: var(--muted); } .caption { color: var(--muted); font-size: 11px; } .thread { list-style: none; padding: 6px 10px; margin: 8px 0; background: var(--surface); border-radius: 6px; font-size: 11px; } .card-actions { margin-top: 6px; display: flex; flex-direction: column; gap: 6px; } .option { cursor: pointer; } .option input { width: auto; accent-color: var(--accent); } .md li.choice { list-style: none; } .md li + li.choice { margin-top: 8px; } .md.context { container-type: inline-size; } .md ul.choice-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding-left: 0; } @container (max-width: 480px) { .md ul.choice-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } } .md ul.choice-grid > li.choice { margin-top: 0; } .choice-grid .choice-box { height: 100%; } .choice-grid .md-img img { margin: 0 auto; } .choice-box, .pick.choice-box { display: block; padding: 0; overflow: hidden; border: 1px solid var(--border); border-radius: 6px; background: var(--raised); } .choice-box.rec { border-color: color-mix(in srgb, var(--ok) 55%, var(--border)); } .choice-head { display: flex; align-items: baseline; gap: 10px; padding: 6px 10px; background: var(--surface); font-weight: 600; } .choice-box.rec > .choice-head { background: color-mix(in srgb, var(--ok) 12%, var(--surface)); } .choice-name { flex: 1; min-width: 0; } .choice-head .recommended { margin-left: 0; font-weight: 400; } .choice-head input { flex: none; margin: 0; align-self: center; } .choice-detail { padding: 8px 10px; border-top: 1px solid var(--border); } .choice-detail > :last-child { margin-bottom: 0; } .choice-detail > .copyable:first-child { margin-top: 0; } .pick.choice-box:hover, .pick.choice-box:focus-visible { border-color: var(--accent); } .pick.choice-box:hover > .choice-head, .pick.choice-box:focus-visible > .choice-head, .option.choice-box:has(input:focus-visible) > .choice-head { background: var(--accent-tint); } .option.choice-box:has(input:focus-visible) { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent); } .choice-head input:focus-visible { outline: none; } .pick { display: block; padding: 4px 10px; border: 1px solid var(--border); border-radius: 6px; cursor: pointer; } .pick > :last-child, .option > :last-child { margin-bottom: 0; } .pick:hover, .pick:focus-visible { border-color: var(--accent); outline: none; } .pick:focus-visible { box-shadow: 0 0 0 2px var(--accent); } .pick[hidden] { display: none; } .pick.other { color: var(--muted); } .card.submitting .pick { cursor: progress; opacity: 0.6; } .submit-row { display: flex; justify-content: flex-end; } .reply-row { display: flex; align-items: flex-start; gap: 8px; } .reply-row .text-entry { flex: 1; } .text-editor { display: flex; flex-direction: column; gap: 6px; } .text-editor[hidden] { display: none; } .recommended { margin-left: 8px; font-size: 11px; color: var(--ok); } .review-list { flex: 1; overflow-y: auto; padding: 8px 16px 16px; display: flex; flex-direction: column; gap: 12px; } .review { border: 1px solid var(--border); border-radius: 10px; padding: 10px 14px; background: var(--raised); } .reviews-header { display: flex; align-items: center; gap: 8px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .reviews-header[hidden] { display: none; } .review header { display: flex; flex-wrap: wrap; gap: 10px; align-items: baseline; font-size: 11px; color: var(--muted); } .review header time { margin-left: auto; } .review-snapshot { font-weight: 700; color: var(--text); } .review-state.failed { color: var(--warn); } .workflow-header { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px; padding: 8px 16px; border-bottom: 1px solid var(--border); } .workflow-header:empty { display: none; } .workflow-name { font-weight: 700; } .workflow-title { color: var(--muted); } .workflow-scroll { flex: 1; overflow-y: auto; padding: 8px 16px 16px; } .workflow-graph .mermaid-diagram { margin: 0 0 12px; } .workflow-brief { margin: 0 0 12px; } .workflow-brief > summary, .workflow-output > summary { cursor: pointer; color: var(--muted); } .workflow-stages, .workflow-attempts { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; } .workflow-stages { gap: 12px; } .workflow-stage { border: 1px solid var(--border); border-radius: 10px; padding: 10px 14px; background: var(--raised); } .workflow-stage > header, .workflow-attempt-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 10px; } .workflow-stage-name { font-weight: 700; } .workflow-line { font-size: 11px; color: var(--muted); margin-top: 2px; } .workflow-attempts { gap: 8px; margin-top: 8px; } .workflow-attempt { border-top: 1px solid var(--border); padding-top: 8px; } .workflow-attempt.current .workflow-task { font-weight: 700; } .workflow-attempt-n { color: var(--muted); } .workflow-task { color: var(--accent); } .workflow-state { font-size: 11px; color: var(--muted); } .workflow-state.running { color: var(--accent); } .workflow-state.idle, .workflow-state.discarding { color: var(--warn); } .workflow-state.finished, .workflow-state.merged { color: var(--ok); } .workflow-output { margin-top: 6px; } .workflow-output > .md { margin-top: 6px; padding-left: 10px; border-left: 1px solid var(--border); } .findings { list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-direction: column; gap: 8px; } .finding { border-top: 1px solid var(--border); padding-top: 6px; } .finding-head { display: flex; flex-wrap: wrap; gap: 8px; align-items: baseline; } .finding-category, .finding-where { color: var(--muted); font-size: 11px; } .finding-detail { margin-top: 4px; } .finding-diff { margin-top: 6px; border: 1px solid var(--border); border-radius: 6px; overflow-x: auto; background: var(--bg); } .finding-diff .hint { padding: 4px 10px; color: var(--muted); font-size: 11px; } pre.diff .lineno { display: inline-block; min-width: 4ch; margin-right: 8px; text-align: right; color: var(--muted); user-select: none; } pre.diff .mark { box-shadow: inset 3px 0 0 var(--accent); } .review-images { display: flex; flex-wrap: wrap; gap: 10px; margin: 8px 0; } .review-images figure { margin: 0; max-width: 100%; } .review-images img { display: block; max-width: 100%; max-height: 360px; border: 1px solid var(--border); border-radius: 6px; } .review-images figcaption { margin-top: 2px; font-size: 11px; color: var(--muted); } .finding-actions { margin-left: auto; display: flex; gap: 6px; align-items: baseline; } .finding-actions button { padding: 0 8px; border-radius: 4px; font-size: 11px; color: var(--accent); background: transparent; } .finding-actions button.finding-ignore { color: var(--muted); } .finding-done { font-size: 11px; color: var(--muted); } .severity { font-size: 11px; font-weight: 700; color: var(--muted); } .severity.critical, .severity.high { color: var(--danger); } .severity.medium { color: var(--warn); } .hint { color: var(--muted); margin: 0; } .modal { width: min(520px, 90vw); padding: 16px; color: var(--text); background: var(--raised); border: 1px solid var(--border); border-radius: 10px; box-shadow: var(--shadow); } .modal.anchored { margin: 0; inset: auto; } .modal::backdrop { background: rgb(0 0 0 / 0.35); } .modal-text { margin: 0 0 16px; white-space: pre-wrap; overflow-wrap: anywhere; } .modal-field { margin: 0 0 16px; } .merge-into { margin: 0 0 4px; color: var(--muted); } .merge-targets { display: flex; flex-direction: column; gap: 8px; margin: 0 0 16px; } .merge-target { display: flex; align-items: baseline; gap: 8px; cursor: pointer; } .merge-target-hint { display: block; color: var(--muted); font-size: 12px; } .merge-title { display: flex; align-items: center; gap: 8px; margin: 0 0 16px; font-weight: 700; overflow-wrap: anywhere; } .merge-title input { font-weight: 400; } .merge-title-edit { padding: 0 6px; border-color: transparent; background: none; color: var(--muted); font-weight: 400; } .merge-warnings { list-style: none; margin: 0 0 16px; padding: 0; color: var(--warn); } .merge-warning-link { padding: 0; border: none; background: none; color: inherit; text-align: left; text-decoration: underline; } .merge-coauthors { margin: 0 0 16px; color: var(--muted); } .merge-coauthors summary { cursor: pointer; } .merge-coauthors .modal-text { margin: 8px 0 0; color: var(--text); } .shortcuts-title { margin: 0 0 12px; font-size: 1.1em; } .shortcuts-group h3 { margin: 0 0 6px; font-size: 0.9em; color: var(--muted); } .shortcuts-group dl { display: grid; grid-template-columns: max-content 1fr; gap: 4px 16px; margin: 0 0 14px; } .shortcuts-group dd { margin: 0; } .shortcuts-group kbd { font: inherit; padding: 0 6px; border: 1px solid var(--border); border-radius: 4px; background: var(--bg); } .modal .hint { margin-bottom: 16px; } .modal-actions { display: flex; justify-content: flex-end; gap: 8px; } button.danger-primary { background: var(--danger); border-color: var(--danger); color: var(--bg); font-weight: 700; } .switcher-backdrop { position: fixed; inset: 0; background: rgb(0 0 0 / 0.35); } .switcher { position: fixed; width: min(560px, 90vw); background: var(--raised); border: 1px solid var(--border); border-radius: 10px; padding: 10px; box-shadow: var(--shadow); } .switcher-list { list-style: none; margin: 8px 0 0; padding: 0; max-height: 50vh; overflow-y: auto; } .switcher-list li { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border-radius: 6px; cursor: pointer; } .switcher-list .task-title { flex: 1; min-width: 0; } .switcher-list li.new-task { color: var(--accent); } .switcher-list .workflow-name { font-weight: 700; } .switcher-list .workflow-description { display: block; color: var(--muted); } .switcher-list li.selected { background: var(--accent-tint); } .project-name { color: var(--muted); } .settings-view { flex: 1; min-height: 0; overflow-y: auto; padding: 8px 16px 16px; } .settings-view h2 { font-size: 13px; margin: 16px 0 6px; } .push-device p { margin: 0 0 8px; } .push-prefs { margin: 16px 0 0; padding: 8px 12px 10px; border: 1px solid var(--border); border-radius: 8px; display: flex; flex-direction: column; gap: 4px; } .push-prefs legend { color: var(--muted); padding: 0 4px; } .push-prefs label { cursor: pointer; } .push-prefs input { width: auto; accent-color: var(--accent); } .lead-notes ul { margin: 0; padding: 0; list-style: none; } .lead-notes li { display: flex; gap: 12px; align-items: baseline; padding: 6px 0; border-top: 1px solid var(--border); } .lead-notes li span { flex: 1; } .lead-notes button { padding: 0; border: none; background: none; color: var(--accent); } .lead-notes button:hover { text-decoration: underline; } .fatal { padding: 24px; color: var(--danger); } .status-view { flex: 1; min-height: 0; overflow-y: auto; padding: 8px 16px 16px; } .status-section h2 { font-size: 13px; margin: 16px 0 8px; } .status-section h3 { font-size: 12px; color: var(--muted); margin: 12px 0 4px; } .rate-limit + .rate-limit { margin-top: 8px; } .rate-limit .vendor { color: var(--text); font-weight: 700; font-size: 13px; } .rate-limit .resets { margin-left: auto; } .rl-status { font-weight: 700; } .rl-status.ok, .rl-windows .ok { color: var(--ok); } .rl-status.warn, .rl-windows .warn, .task-state.answer { color: var(--warn); } .rl-status.danger, .rl-windows .danger, .problems .danger, .task-state.danger, .task-state.error { color: var(--danger); } .rl-windows { border-collapse: collapse; margin-top: 8px; width: 100%; } .rl-windows th, .rl-windows td { text-align: left; padding: 2px 12px 2px 0; border-bottom: 1px solid var(--border); } .rl-windows .rl-pace-col { width: 40%; } .rl-pace { position: relative; height: 10px; background: var(--surface); border: 1px solid var(--border); border-radius: 2px; } .rl-pace-used { height: 100%; background: color-mix(in srgb, var(--ok) 55%, var(--raised)); } .rl-pace.ahead .rl-pace-used { background: color-mix(in srgb, var(--warn) 55%, var(--raised)); } .rl-pace-now { position: absolute; top: -3px; bottom: -3px; width: 2px; margin-left: -1px; background: var(--text); } .problems { list-style: none; margin: 0; padding: 0; } .problems li { padding: 2px 0; word-break: break-word; } .problems summary { color: var(--muted); cursor: pointer; } .raw-line { margin: 4px 0 0; font-size: 11px; white-space: pre-wrap; word-break: break-all; max-height: 12em; overflow-y: auto; } .rl-windows th { font-weight: 400; font-size: 11px; color: var(--muted); } .kv { display: grid; grid-template-columns: max-content 1fr; gap: 2px 16px; margin: 8px 0 0; } .kv dt { color: var(--muted); } .kv dd { margin: 0; word-break: break-word; }