diff --git a/src/app.css b/src/app.css
index cb3f754..213fbca 100644
--- a/src/app.css
+++ b/src/app.css
@@ -31,8 +31,32 @@
}
:root {
- --color-sync-ahead: #e0a040;
+ --color-sync-ahead: var(--color-warning);
--color-sync-behind: #7aacff;
+
+ /* Status colours. Both themes keep these above 4.5:1 on their backgrounds. */
+ --color-success: var(--color-success);
+ --color-danger: #ef7676;
+ --color-warning: var(--color-warning);
+ --color-info: #7aacff;
+ --color-accent-solid: #126f84;
+ --color-accent-solid-hover: #17879f;
+ --color-on-accent: #ffffff;
+ --color-on-status: #141820;
+
+ /* Overlay tints. Light on dark, dark on light — never white on white. */
+ --app-hover-tint: rgba(255, 255, 255, 0.06);
+ --app-raise-tint: rgba(255, 255, 255, 0.035);
+ --app-soft-tint: rgba(255, 255, 255, 0.018);
+ --app-hairline: rgba(255, 255, 255, 0.07);
+ --app-active-tint: rgba(255, 255, 255, 0.1);
+ --app-hairline-strong: rgba(255, 255, 255, 0.16);
+ --app-overlay-shadow: 0 24px 80px rgba(0, 0, 0, 0.45);
+ --app-menu-shadow: 0 8px 22px rgba(0, 0, 0, 0.5);
+ --app-drawer-shadow: -12px 0 30px rgba(0, 0, 0, 0.5);
+ --app-float-shadow: 0 12px 30px rgba(0, 0, 0, 0.66), 0 0 0 1px rgba(0, 0, 0, 0.32);
+ --app-edge-shadow: 0 1px 0 rgba(0, 0, 0, 0.32);
+ --app-sunken-tint: rgba(0, 0, 0, 0.16);
--app-color-scheme: dark;
--app-bg: #222328;
--app-button-bg: #32363d;
@@ -56,11 +80,11 @@
--code-input-bg: #22252a;
--code-hover-bg: #30343a;
--code-add-text: #5dd88a;
- --code-add-strong: #4eca76;
+ --code-add-strong: var(--color-success);
--code-add-bg: rgba(78, 202, 118, 0.09);
--code-add-gutter-bg: rgba(78, 202, 118, 0.1);
- --code-delete-text: #ef8080;
- --code-delete-strong: #e86060;
+ --code-delete-text: var(--color-danger);
+ --code-delete-strong: var(--color-danger);
--code-delete-bg: rgba(232, 96, 96, 0.1);
--code-delete-gutter-bg: rgba(232, 96, 96, 0.12);
--code-hunk-text: #7aacff;
@@ -75,44 +99,63 @@
--color-ink-muted: #475569;
--color-ink-faint: #647287;
--color-ink-dim: #52607a;
- --color-ink-quiet: #5c6a80;
+ --color-ink-quiet: #55627a;
- --color-surface: rgba(255, 255, 255, 0.86);
- --color-surface-alt: #f3f6fb;
- --color-surface-dim: rgba(244, 247, 252, 0.92);
- --color-surface-hover: rgba(226, 233, 245, 0.82);
- --color-surface-raised: rgba(255, 255, 255, 0.94);
+ --color-surface: #ffffff;
+ --color-surface-alt: #f1f4f9;
+ --color-surface-dim: #f7f9fc;
+ --color-surface-hover: #eef2f7;
+ --color-surface-raised: #ffffff;
--color-surface-solid: #ffffff;
- --color-border: rgba(61, 89, 142, 0.24);
- --color-border-subtle: rgba(34, 49, 78, 0.11);
- --color-border-input: rgba(46, 117, 182, 0.28);
+ --color-border: #dfe4ec;
+ --color-border-subtle: #eaedf3;
+ --color-border-input: #cbd3e0;
--color-primary: #315fd6;
--color-primary-dark: #284cb4;
--color-accent: #0c7691;
- --color-bar: rgba(248, 251, 255, 0.94);
- --color-bar-text: #172033;
- --color-bar-muted: #64728a;
+ --color-success: #1f7a43;
+ --color-danger: #c0392b;
+ --color-warning: #8a5a00;
+ --color-info: #315fd6;
+ --color-accent-solid: #0c7691;
+ --color-accent-solid-hover: #0a6377;
+ --color-on-accent: #ffffff;
+ --color-on-status: #ffffff;
+
+ --app-hover-tint: rgba(16, 25, 43, 0.05);
+ --app-raise-tint: rgba(16, 25, 43, 0.03);
+ --app-soft-tint: rgba(16, 25, 43, 0.018);
+ --app-hairline: #eaedf3;
+ --app-active-tint: rgba(16, 25, 43, 0.08);
+ --app-hairline-strong: #dfe4ec;
+ --app-overlay-shadow: 0 16px 48px rgba(16, 25, 43, 0.16);
+ --app-menu-shadow: 0 6px 16px rgba(16, 25, 43, 0.12), 0 0 0 1px rgba(16, 25, 43, 0.04);
+ --app-drawer-shadow: -8px 0 24px rgba(16, 25, 43, 0.1);
+ --app-float-shadow: 0 8px 24px rgba(16, 25, 43, 0.12), 0 0 0 1px rgba(16, 25, 43, 0.05);
+ --app-edge-shadow: 0 1px 0 rgba(16, 25, 43, 0.06);
+ --app-sunken-tint: #f4f6fa;
+
+ --color-bar: #ffffff;
+ --color-bar-text: #10192b;
+ --color-bar-muted: #64718a;
--app-color-scheme: light;
- --app-bg:
- radial-gradient(circle at 12% 0%, rgba(49, 95, 214, 0.12), transparent 30%),
- radial-gradient(circle at 82% 4%, rgba(15, 143, 181, 0.12), transparent 28%),
- linear-gradient(135deg, #f7f9fd 0%, #eef3f9 48%, #f8fafc 100%);
- --app-button-bg: linear-gradient(180deg, rgba(255, 255, 255, 0.96), rgba(235, 240, 249, 0.95));
- --app-input-bg: rgba(255, 255, 255, 0.9);
+ --app-bg: #f4f6fa;
+ --app-button-bg: #ffffff;
+ --app-input-bg: #ffffff;
--app-select-option-bg: #ffffff;
- --app-panel-highlight: linear-gradient(180deg, rgba(255,255,255,0.72), transparent 70%);
- --app-panel-shadow: 0 18px 48px rgba(28, 44, 74, 0.12), inset 0 1px 0 rgba(255,255,255,0.86);
- --app-dialog-backdrop: rgba(222, 229, 241, 0.56);
+ --app-panel-highlight: none;
+ --app-panel-shadow: 0 1px 2px rgba(16, 25, 43, 0.04);
+ --app-dialog-backdrop: rgba(16, 25, 43, 0.32);
--app-dialog-bg: #ffffff;
--app-dialog-chrome: #f4f7fc;
- --app-dialog-shadow: 0 24px 72px rgba(28, 44, 74, 0.2), 0 2px 12px rgba(28,44,74,0.1);
+ --app-dialog-shadow: 0 16px 48px rgba(16, 25, 43, 0.16), 0 2px 8px rgba(16, 25, 43, 0.06);
--app-settings-row-bg: #f8fafd;
- --app-scrollbar-thumb: #c2cada;
- --app-scrollbar-thumb-hover: #aeb8cb;
+ --app-scrollbar-thumb: #c6cdd9;
+ --app-scrollbar-thumb-hover: #a4aec0;
--code-surface: #fbfcfe;
--code-surface-raised: #f1f5fa;
@@ -270,7 +313,7 @@
border: 1px solid var(--color-border);
border-radius: 8px;
background: var(--color-surface-solid);
- box-shadow: 0 18px 50px rgba(0,0,0,0.5);
+ box-shadow: var(--app-overlay-shadow);
}
.select-menu-group {
display: flex;
@@ -341,7 +384,7 @@
.select-menu-option:hover:not(:disabled), .select-menu-option.active:not(:disabled) {
border-color: var(--color-border-subtle);
color: var(--color-ink);
- background: rgba(255,255,255,0.06);
+ background: var(--app-hover-tint);
}
.select-menu-option.selected { color: var(--color-ink); }
.select-menu-option:disabled { cursor: not-allowed; opacity: 0.42; }
@@ -478,7 +521,7 @@
background:
linear-gradient(180deg, #20253f 0%, #151827 72%),
#151827;
- box-shadow: 0 24px 80px rgba(0,0,0,0.42), inset 0 1px 0 rgba(255,255,255,0.05);
+ box-shadow: var(--app-overlay-shadow), inset 0 1px 0 rgba(255,255,255,0.05);
}
.branch-filter-dialog-head {
@@ -507,7 +550,7 @@
border: 1px solid rgba(94,110,156,0.18);
border-radius: 7px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.035);
+ background: var(--app-raise-tint);
}
.dialog-icon-button:hover {
@@ -539,7 +582,7 @@
border-color: rgba(94,110,156,0.16);
border-radius: 999px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.035);
+ background: var(--app-raise-tint);
font-size: 10.5px;
font-weight: 800;
}
@@ -629,7 +672,7 @@
white-space: nowrap;
}
.pill-count { color: var(--color-ink-dim); background: rgba(94, 110, 156, 0.15); }
- .pill-active { color: #4eca76; background: rgba(78, 202, 118, 0.13); }
+ .pill-active { color: var(--color-success); background: rgba(78, 202, 118, 0.13); }
.blank-state {
display: grid;
@@ -654,10 +697,10 @@
white-space: nowrap;
letter-spacing: 0.02em;
}
- .status-badge.modified { color: #e0a040; background: rgba(224,160,64,0.13); border-color: rgba(224,160,64,0.22); }
+ .status-badge.modified { color: var(--color-warning); background: rgba(224,160,64,0.13); border-color: rgba(224,160,64,0.22); }
.status-badge.added,
- .status-badge.untracked { color: #4eca76; background: rgba(78,202,118,0.11); border-color: rgba(78,202,118,0.22); }
- .status-badge.deleted { color: #e86060; background: rgba(232,96,96,0.11); border-color: rgba(232,96,96,0.22); }
+ .status-badge.untracked { color: var(--color-success); background: rgba(78,202,118,0.11); border-color: rgba(78,202,118,0.22); }
+ .status-badge.deleted { color: var(--color-danger); background: rgba(232,96,96,0.11); border-color: rgba(232,96,96,0.22); }
.status-badge.renamed { color: #7aacff; background: rgba(122,172,255,0.11); border-color: rgba(122,172,255,0.22); }
.status-badge.conflicted { color: #d060c0; background: rgba(208,96,192,0.11); border-color: rgba(208,96,192,0.22); }
.status-badge.unknown,
@@ -715,7 +758,7 @@
font-weight: 700;
letter-spacing: 0.01em;
color: var(--color-bar-text);
- border-right: 1px solid rgba(255,255,255,0.06);
+ border-right: 1px solid var(--app-hairline);
}
.titlebar-brand-icon {
display: grid;
@@ -733,7 +776,7 @@
.tb-version {
margin-left: 1px;
- color: rgba(255,255,255,0.32);
+ color: var(--color-bar-muted);
font-size: 10px;
font-weight: 600;
font-family: var(--font-mono);
@@ -760,7 +803,7 @@
.titlebar-context svg { color: var(--color-accent); flex: 0 0 auto; }
.tb-repo { flex: 0 1 160px; min-width: 0; color: var(--color-bar-muted); font-size: 12px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
- .tb-sep { flex: 0 0 auto; color: rgba(255,255,255,0.22); font-size: 13px; }
+ .tb-sep { flex: 0 0 auto; color: var(--color-bar-muted); font-size: 13px; }
.tb-branch { flex: 1 1 auto; min-width: 0; max-width: 220px; color: #f5f7ff; font-size: 12px; font-weight: 700; font-family: var(--font-mono); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.tb-sync-group { display: inline-flex; align-items: center; gap: 4px; min-width: max-content; }
@@ -816,7 +859,7 @@
min-width: 0;
border: 1px solid var(--color-border-subtle);
border-radius: 7px;
- background: rgba(255,255,255,0.018);
+ background: var(--app-soft-tint);
}
.repo-action-group > .repo-action,
.repo-action-group > .repo-history-wrap > .repo-action {
@@ -867,7 +910,7 @@
.repo-action-count.behind { color: var(--color-sync-behind); }
.repo-action-count.ahead { color: var(--color-sync-ahead); }
.repo-action.sync-primary.publish-local {
- color: #f0bd6b;
+ color: var(--color-warning);
background: linear-gradient(180deg, rgba(224,160,64,.1), rgba(224,160,64,.045));
}
.repo-action.sync-primary.publish-local:hover:not(:disabled) {
@@ -882,7 +925,7 @@
padding: 0 4px;
border: 1px dashed rgba(240,189,107,.5);
border-radius: 4px;
- color: #f0bd6b;
+ color: var(--color-warning);
background: rgba(224,160,64,.08);
font-family: var(--font-mono);
font-size: 7.5px;
@@ -914,7 +957,7 @@
border: 1px solid var(--color-border);
border-radius: 9px;
background: var(--color-surface-raised);
- box-shadow: 0 16px 42px rgba(0,0,0,0.36);
+ box-shadow: var(--app-menu-shadow);
}
.repo-history-menu > button {
display: grid;
@@ -970,7 +1013,7 @@
box-shadow: 0 1px 3px rgba(0,0,0,0.28);
transition: transform 140ms ease;
}
- .repo-auto-toggle.active { color: #4eca76; }
+ .repo-auto-toggle.active { color: var(--color-success); }
.repo-auto-toggle.active .repo-switch { background: #26924f; }
.repo-auto-toggle.active .repo-switch > span { transform: translateX(12px); }
.repo-switch.busy { box-shadow: 0 0 0 3px rgba(78,202,118,0.12); }
@@ -992,15 +1035,15 @@
transition: background 120ms ease, color 120ms ease;
-webkit-app-region: no-drag;
}
- .tb-action:hover:not(:disabled) { background: rgba(255,255,255,0.06); border-color: transparent; color: #d6def0; }
+ .tb-action:hover:not(:disabled) { background: var(--app-hover-tint); border-color: transparent; color: var(--color-bar-text); }
.tb-action:disabled { opacity: 0.3; cursor: not-allowed; }
- .tb-action.auto-toggle.active { color: #4eca76; }
- .tb-action.auto-toggle.active:hover:not(:disabled) { color: #6ee090; background: rgba(78,202,118,0.1); }
+ .tb-action.auto-toggle.active { color: var(--color-success); }
+ .tb-action.auto-toggle.active:hover:not(:disabled) { color: var(--color-success); background: rgba(78,202,118,0.1); }
.tb-action-label { font-size: 12px; font-weight: 600; }
- .titlebar-divider { width: 1px; margin: 8px 6px; background: rgba(255,255,255,0.08); flex-shrink: 0; }
+ .titlebar-divider { width: 1px; margin: 8px 6px; background: var(--app-active-tint); flex-shrink: 0; }
- .titlebar-controls { display: flex; align-items: stretch; height: 100%; border-left: 1px solid rgba(255,255,255,0.06); }
+ .titlebar-controls { display: flex; align-items: stretch; height: 100%; border-left: 1px solid var(--app-hairline); }
.tb-btn {
display: flex;
@@ -1018,7 +1061,7 @@
transition: background 120ms ease, color 120ms ease;
-webkit-app-region: no-drag;
}
- .tb-btn:hover:not(:disabled) { background: rgba(255,255,255,0.08); border-color: transparent; color: #d6def0; }
+ .tb-btn:hover:not(:disabled) { background: var(--app-active-tint); border-color: transparent; color: var(--color-bar-text); }
.tb-btn.close:hover:not(:disabled) { background: #c0392b; color: #ffffff; }
/* --- Top bar (repo form) --- */
@@ -1074,10 +1117,10 @@
max-width: 260px;
position: relative;
border-right: 1px solid var(--color-border-subtle);
- background: rgba(255,255,255,0.012);
+ background: var(--app-soft-tint);
transition: background 120ms ease;
}
- .repo-tab-wrap:hover { background: rgba(255,255,255,0.035); }
+ .repo-tab-wrap:hover { background: var(--app-raise-tint); }
.repo-tab-wrap.active {
background: linear-gradient(180deg, rgba(90,140,248,0.14), rgba(23,29,43,0.96));
box-shadow: inset 0 -3px 0 var(--color-primary);
@@ -1225,7 +1268,7 @@
.repo-section {
border: 1px solid var(--color-border-subtle);
border-radius: 8px;
- background: rgba(255,255,255,0.018);
+ background: var(--app-soft-tint);
overflow: hidden;
}
.repo-section + .repo-section { margin-top: 12px; }
@@ -1236,7 +1279,7 @@
min-height: 38px;
padding: 0 12px;
border-bottom: 1px solid var(--color-border-subtle);
- background: rgba(255,255,255,0.045);
+ background: var(--app-raise-tint);
}
.repo-section h2 {
margin: 0;
@@ -1272,7 +1315,7 @@
grid-template-columns: minmax(0, 1fr) auto auto;
align-items: stretch;
min-height: 36px;
- border-bottom: 1px solid rgba(255,255,255,0.035);
+ border-bottom: 1px solid var(--app-hairline);
}
.repo-row:last-child { border-bottom: 0; }
.repo-row-main {
@@ -1334,7 +1377,7 @@
min-width: 36px;
padding: 0;
border: 0;
- border-left: 1px solid rgba(255,255,255,0.035);
+ border-left: 1px solid var(--app-hairline);
border-radius: 0;
background: transparent;
color: var(--color-ink-faint);
@@ -1421,7 +1464,7 @@
background:
linear-gradient(135deg, rgba(232,96,96,0.18), rgba(100,108,255,0.08)),
rgba(12,13,24,0.96);
- box-shadow: 0 18px 54px rgba(0,0,0,0.46), 0 0 0 1px rgba(255,255,255,0.035) inset;
+ box-shadow: var(--app-overlay-shadow), 0 0 0 1px var(--app-hairline) inset;
backdrop-filter: blur(18px);
pointer-events: auto;
animation: error-toast-in 180ms cubic-bezier(.2,.8,.2,1) both;
@@ -1464,16 +1507,16 @@
min-width: 28px;
min-height: 28px;
padding: 0;
- border-color: rgba(255,255,255,0.1);
+ border-color: var(--color-bar-muted);
border-radius: 8px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.04);
+ background: var(--app-raise-tint);
}
.error-toast-close:hover:not(:disabled) {
- border-color: rgba(255,255,255,0.2);
+ border-color: var(--color-bar-muted);
color: #fff;
- background: rgba(255,255,255,0.1);
+ background: var(--app-active-tint);
}
.error-toast-timeout {
@@ -1514,7 +1557,7 @@
border-top: 2px solid var(--color-accent);
color: var(--color-ink);
background: var(--app-dialog-bg);
- box-shadow: 0 18px 48px rgba(0,0,0,0.42);
+ box-shadow: var(--app-overlay-shadow);
animation: update-toast-in 180ms cubic-bezier(.2,.8,.2,1) both;
}
.update-toast.error {
@@ -1834,12 +1877,12 @@
gap: 5px;
padding: 3px 7px;
border: 1px dashed rgba(224,160,64,.38);
- color: #f0bd6b;
+ color: var(--color-warning);
background: rgba(224,160,64,.09);
}
.sync-stats .sync-local-only strong {
padding: 0;
- color: #f0bd6b;
+ color: var(--color-warning);
background: transparent;
font-size: 10.5px;
font-weight: 850;
@@ -1929,7 +1972,7 @@
padding: 8px;
border: 1px solid var(--color-border-subtle);
border-radius: 8px;
- background: rgba(255,255,255,0.02);
+ background: var(--app-soft-tint);
}
.change-lane.inactive { opacity: 0.5; }
.lane-header { display: flex; align-items: center; gap: 8px; }
@@ -1983,7 +2026,7 @@
border-color: rgba(94,110,156,0.18);
border-radius: 6px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.018);
+ background: var(--app-soft-tint);
}
.stash-toggle:hover:not(:disabled) {
@@ -2009,7 +2052,7 @@
border: 1px solid var(--color-border-subtle);
border-radius: 7px;
color: var(--color-ink);
- background: rgba(255,255,255,0.035);
+ background: var(--app-raise-tint);
font-size: 12px;
}
@@ -2132,7 +2175,7 @@
border-color: rgba(94,110,156,0.18);
border-radius: 6px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.018);
+ background: var(--app-soft-tint);
}
.branch-create-toggle:hover:not(:disabled) {
border-color: rgba(65,209,255,0.3);
@@ -2170,7 +2213,7 @@
}
.branch-create-action.confirm {
border-color: rgba(78,202,118,0.34);
- color: #6ee090;
+ color: var(--color-success);
background: rgba(78,202,118,0.11);
}
@@ -2186,7 +2229,7 @@
padding: 4px 6px;
border-color: transparent;
border-radius: 7px;
- background: rgba(255,255,255,0.02);
+ background: var(--app-soft-tint);
color: var(--color-ink-faint);
font-size: 10px;
font-weight: 800;
@@ -2196,7 +2239,7 @@
}
.branch-group-toggle:hover:not(:disabled) {
border-color: var(--color-border-subtle);
- background: rgba(255,255,255,0.05);
+ background: var(--app-raise-tint);
color: var(--color-ink-muted);
}
.branch-group-toggle svg { color: var(--color-ink-faint); }
@@ -2281,7 +2324,7 @@
background: rgba(78,202,118,0.08);
}
.branch-folder-row svg { color: var(--color-ink-faint); }
- .branch-folder-row.current svg { color: #4eca76; }
+ .branch-folder-row.current svg { color: var(--color-success); }
.branch-folder-name {
overflow: hidden;
color: var(--color-ink-muted);
@@ -2345,7 +2388,7 @@
border: 1px solid var(--color-border);
border-radius: 8px;
background: var(--color-surface-solid);
- box-shadow: 0 18px 50px rgba(0,0,0,0.5);
+ box-shadow: var(--app-overlay-shadow);
}
.branch-context-menu {
@@ -2395,7 +2438,7 @@
display: inline-grid;
place-items: center;
flex: 0 0 auto;
- color: #83adff;
+ color: var(--color-info);
background: rgba(90,140,248,0.12);
border: 1px solid rgba(90,140,248,0.2);
}
@@ -2454,7 +2497,7 @@
padding: 0 5px;
border: 1px solid rgba(90,140,248,0.18);
border-radius: 5px;
- color: #83adff;
+ color: var(--color-info);
background: rgba(90,140,248,0.1);
font: 700 9.5px/1 var(--font-mono);
}
@@ -2538,7 +2581,7 @@
.status-context-menu button:hover:not(:disabled),
.repo-tab-context-menu button:hover:not(:disabled) {
border-color: var(--color-border-subtle);
- background: rgba(255,255,255,0.06);
+ background: var(--app-hover-tint);
color: var(--color-ink);
}
@@ -2608,7 +2651,7 @@
border-color: rgba(94,110,156,0.18);
border-radius: 6px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.018);
+ background: var(--app-soft-tint);
}
.explorer-bulk-button:hover:not(:disabled) {
border-color: rgba(65,209,255,0.3);
@@ -2640,13 +2683,13 @@
.explorer-row svg.file-icon.style { color: #c678dd; }
.explorer-row svg.file-icon.json { color: #e0c15c; }
.explorer-row svg.file-icon.config { color: #9aa6d6; }
- .explorer-row svg.file-icon.script { color: #4eca76; }
+ .explorer-row svg.file-icon.script { color: var(--color-success); }
.explorer-row svg.file-icon.text { color: #b8c2e0; }
.explorer-row svg.file-icon.image { color: #54c7ec; }
.explorer-row svg.file-icon.audio { color: #d98cf0; }
.explorer-row svg.file-icon.video { color: #ff8ba7; }
.explorer-row svg.file-icon.archive { color: #d8a657; }
- .explorer-row svg.file-icon.sheet { color: #4eca76; }
+ .explorer-row svg.file-icon.sheet { color: var(--color-success); }
.explorer-row svg.file-icon.database { color: #5fc5d9; }
.explorer-row svg.file-icon.font { color: #f0d080; }
.explorer-row .language-icon {
@@ -2753,7 +2796,7 @@
padding: 8px 10px;
border: 1px solid rgba(232,96,96,0.28);
border-radius: 6px;
- color: #ef8080;
+ color: var(--color-danger);
background: rgba(232,96,96,0.08);
font-size: 12px;
line-height: 1.35;
@@ -2823,7 +2866,7 @@
border: 1px solid rgba(94,110,156,0.18);
border-radius: 999px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.025);
+ background: var(--app-soft-tint);
font-size: 9px;
font-weight: 800;
line-height: 1.3;
@@ -2899,7 +2942,7 @@
border-radius: 7px;
color: var(--color-ink-muted);
background: color-mix(in srgb, #d8a74a 4%, var(--color-surface-solid));
- box-shadow: 0 12px 30px rgba(0, 0, 0, 0.34), inset 2px 0 0 rgba(216, 167, 74, 0.5);
+ box-shadow: var(--app-float-shadow), inset 2px 0 0 color-mix(in srgb, var(--color-warning) 55%, transparent);
opacity: 0;
pointer-events: none;
transform: translateY(-3px);
@@ -3034,7 +3077,7 @@
border: 1px dashed rgba(240,189,107,.58);
border-left-style: solid;
border-radius: 0 5px 5px 0;
- color: #f0bd6b;
+ color: var(--color-warning);
background: linear-gradient(90deg, rgba(224,160,64,.13), rgba(224,160,64,.06));
font-family: var(--font-mono);
font-size: 7.5px;
@@ -3134,8 +3177,8 @@
align-items: center;
gap: 2px;
padding-left: 4px;
- border-left: 1px solid rgba(255,255,255,.12);
- color: #f0bd6b;
+ border-left: 1px solid var(--app-hairline);
+ color: var(--color-warning);
font-family: var(--font-sans);
font-size: 8.5px;
font-weight: 850;
@@ -3150,7 +3193,7 @@
border-color: transparent;
border-radius: 4px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.025);
+ background: var(--app-soft-tint);
font-family: var(--font-mono);
font-size: 9.5px;
font-weight: 800;
@@ -3201,7 +3244,7 @@
border: 1px solid rgba(94,110,156,.18);
border-radius: 5px;
color: var(--color-ink-dim);
- background: rgba(255,255,255,.025);
+ background: var(--app-soft-tint);
font-family: var(--font-mono);
font-size: 9px;
font-weight: 700;
@@ -3255,7 +3298,7 @@
padding: 4px 7px;
text-align: left;
border-color: rgba(94,110,156,0.16);
- background: rgba(255,255,255,0.03);
+ background: var(--app-soft-tint);
}
.commit-file-button:hover:not(:disabled) { border-color: rgba(65,209,255,0.22); background: rgba(65,209,255,0.055); }
.commit-file-button strong { overflow: hidden; color: var(--color-ink-muted); font-family: var(--font-mono); font-size: 11.5px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
@@ -3279,7 +3322,7 @@
padding: 0;
border-color: rgba(94,110,156,0.16);
border-radius: 7px;
- background: rgba(255,255,255,0.035);
+ background: var(--app-raise-tint);
color: var(--color-ink-dim);
}
.commit-menu-button:hover:not(:disabled),
@@ -3552,8 +3595,8 @@
line-height: 1.5;
}
.compare-target-help svg { flex: 0 0 auto; margin-top: 1px; color: var(--color-accent); }
- .compare-target-warning { border-color: color-mix(in srgb, #e0a040 30%, var(--color-border-subtle)); background: color-mix(in srgb, #e0a040 7%, var(--color-surface-raised)); }
- .compare-target-warning svg { color: #e0a040; }
+ .compare-target-warning { border-color: color-mix(in srgb, var(--color-warning) 30%, var(--color-border-subtle)); background: color-mix(in srgb, var(--color-warning) 7%, var(--color-surface-raised)); }
+ .compare-target-warning svg { color: var(--color-warning); }
.compare-summary { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 10px; padding: 10px 12px; }
.compare-range { display: flex; align-items: center; gap: 7px; color: var(--color-ink-muted); }
@@ -4167,7 +4210,7 @@
padding: 0 10px;
border: 1px solid var(--color-border-subtle);
border-radius: 8px;
- background: rgba(255,255,255,0.03);
+ background: var(--app-soft-tint);
color: var(--color-ink-dim);
font-size: 12.5px;
font-weight: 700;
@@ -4178,10 +4221,11 @@
background: var(--color-surface-hover);
}
.ai-provider-option.active {
- border-color: rgba(100,108,255,0.5);
- color: #f5f7ff;
- background: linear-gradient(180deg, rgba(100,108,255,0.22), rgba(65,209,255,0.1));
+ border-color: color-mix(in srgb, var(--color-primary) 55%, transparent);
+ color: var(--color-ink);
+ background: color-mix(in srgb, var(--color-primary) 16%, var(--color-surface));
}
+ .ai-provider-option.active svg { color: var(--color-primary); }
.new-branch-form {
display: flex;
flex-direction: column;
@@ -4213,7 +4257,7 @@
.init-repository-path-control { display: grid !important; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.init-repository-path-control > input { grid-column: 1; }
.init-repository-browse { grid-column: 2; display: inline-flex; align-items: center; gap: 6px; height: 36px; font-size: 11.5px; white-space: nowrap; }
- .init-repository-error { color: var(--color-danger, #ff6b78) !important; }
+ .init-repository-error { color: var(--color-danger) !important; }
.init-repository-actions { padding-top: 2px; }
.init-repository-actions > button { font-size: 11.5px; }
.merge-branch-header { padding: 15px 17px; }
@@ -4388,7 +4432,7 @@
.dialog-file-row.prepared { background: rgba(78,202,118,0.08); border-color: rgba(78,202,118,0.22); }
.dialog-file-row.prepared.active { background: rgba(78,202,118,0.13); border-color: rgba(78,202,118,0.32); }
.dialog-file-row strong { overflow: hidden; color: var(--color-ink); font-family: var(--font-mono); font-size: 12px; font-weight: 600; text-overflow: ellipsis; white-space: nowrap; }
- .dialog-file-row svg { color: #4eca76; }
+ .dialog-file-row svg { color: var(--color-success); }
.dialog-diff { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
@@ -4524,7 +4568,7 @@
.dialog-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; border-top: 1px solid var(--color-border-subtle); background: var(--app-dialog-chrome); }
.dialog-footer-info { color: var(--color-ink-dim); font-size: 13px; font-weight: 700; }
- .prepared-tag { display: inline-flex; align-items: center; gap: 4px; margin-right: auto; color: #4eca76; font-size: 12px; font-weight: 700; }
+ .prepared-tag { display: inline-flex; align-items: center; gap: 4px; margin-right: auto; color: var(--color-success); font-size: 12px; font-weight: 700; }
.discard-confirm-body {
display: grid;
@@ -4553,12 +4597,12 @@
flex: 0 0 auto;
border: 1px solid rgba(255, 90, 103, 0.28);
border-radius: 8px;
- color: #ff9aa4;
+ color: var(--color-danger);
background: rgba(255, 90, 103, 0.09);
}
.branch-delete-heading-icon.force {
border-color: rgba(255, 174, 92, 0.34);
- color: #ffc07a;
+ color: var(--color-warning);
background: rgba(255, 151, 61, 0.1);
}
.discard-warning-icon {
@@ -4568,7 +4612,7 @@
height: 42px;
border: 1px solid rgba(255, 90, 103, 0.32);
border-radius: 10px;
- color: #ff9aa4;
+ color: var(--color-danger);
background: rgba(255, 90, 103, 0.1);
}
.discard-confirm-copy {
@@ -4589,7 +4633,7 @@
border: 1px solid var(--color-border-subtle);
border-radius: 6px;
color: var(--color-ink);
- background: rgba(0, 0, 0, 0.18);
+ background: var(--app-sunken-tint);
font-family: var(--font-mono);
font-size: 12px;
white-space: pre-wrap;
@@ -4609,7 +4653,7 @@
padding: 10px 11px;
border: 1px solid var(--color-border-subtle);
border-radius: 8px;
- background: rgba(0, 0, 0, 0.16);
+ background: var(--app-sunken-tint);
box-shadow: inset 3px 0 0 rgba(255, 90, 103, 0.48);
}
.branch-delete-target-icon {
@@ -4649,7 +4693,7 @@
.branch-delete-body .discard-warning-text {
padding: 9px 10px;
border-left: 2px solid rgba(255, 90, 103, 0.55);
- color: #f2aeb5;
+ color: var(--color-danger);
background: rgba(255, 90, 103, 0.055);
font-size: 11.5px;
font-weight: 600;
@@ -4691,7 +4735,7 @@
}
.worktree-summary > div strong { color: var(--color-ink); font-family: var(--font-mono); font-size: 14px; }
.worktree-summary > div span { overflow: hidden; color: var(--color-ink-faint); font-size: 10.5px; font-weight: 700; text-overflow: ellipsis; white-space: nowrap; }
- .worktree-summary > div.attention strong { color: #ffc07a; }
+ .worktree-summary > div.attention strong { color: var(--color-warning); }
.worktree-summary > .btn-primary { align-self: center; margin: 0 14px; white-space: nowrap; }
.worktree-error {
display: flex;
@@ -4731,7 +4775,7 @@
padding: 3px;
border: 1px solid var(--color-border-subtle);
border-radius: 8px;
- background: rgba(0, 0, 0, 0.14);
+ background: var(--app-sunken-tint);
}
.worktree-mode-tabs button {
display: flex;
@@ -4785,7 +4829,7 @@
display: grid;
place-items: start center;
padding-top: 18px;
- background: rgba(0,0,0,0.1);
+ background: var(--app-sunken-tint);
}
.worktree-rail::before {
content: "";
@@ -4830,7 +4874,7 @@
border: 1px solid var(--color-border-subtle);
border-radius: 999px;
color: var(--color-ink-faint);
- background: rgba(255,255,255,0.025);
+ background: var(--app-soft-tint);
font-size: 8.5px;
font-weight: 800;
letter-spacing: 0.04em;
@@ -4838,16 +4882,16 @@
}
.worktree-badges span.active { border-color: rgba(78, 202, 118, 0.25); color: #77d99a; background: rgba(78, 202, 118, 0.08); }
.worktree-badges span.locked { border-color: rgba(111, 140, 255, 0.26); color: #aebcff; background: rgba(111, 140, 255, 0.08); }
- .worktree-badges span.danger { border-color: rgba(255, 151, 61, 0.3); color: #ffc07a; background: rgba(255, 151, 61, 0.08); }
+ .worktree-badges span.danger { border-color: rgba(255, 151, 61, 0.3); color: var(--color-warning); background: rgba(255, 151, 61, 0.08); }
.worktree-path { display: flex; align-items: center; gap: 5px; min-width: 0; color: var(--color-ink-faint); }
.worktree-path code { overflow: hidden; font-family: var(--font-mono); font-size: 10.5px; text-overflow: ellipsis; white-space: nowrap; }
.worktree-meta { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 12px; color: var(--color-ink-faint); font-size: 9.5px; }
.worktree-meta span { display: inline-flex; align-items: center; gap: 4px; }
.worktree-meta span.dirty,
- .worktree-meta span.danger { color: #ffc07a; }
+ .worktree-meta span.danger { color: var(--color-warning); }
.worktree-card-main > footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding-top: 2px; }
.worktree-card-actions { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 5px; }
- .worktree-card-actions .danger { border-color: rgba(255, 90, 103, 0.2); color: #ff9aa4; background: rgba(255, 90, 103, 0.06); }
+ .worktree-card-actions .danger { border-color: rgba(255, 90, 103, 0.2); color: var(--color-danger); background: rgba(255, 90, 103, 0.06); }
.worktree-dialog-footer {
display: flex;
align-items: center;
@@ -4878,7 +4922,7 @@
}
.worktree-confirm-body > div { display: grid; gap: 10px; min-width: 0; }
.worktree-confirm-body p { margin: 0; color: var(--color-ink-muted); font-size: 12px; line-height: 1.45; }
- .worktree-confirm-body code { overflow: auto; padding: 8px; border: 1px solid var(--color-border-subtle); border-radius: 6px; color: var(--color-ink); background: rgba(0,0,0,0.16); font-size: 10.5px; }
+ .worktree-confirm-body code { overflow: auto; padding: 8px; border: 1px solid var(--color-border-subtle); border-radius: 6px; color: var(--color-ink); background: var(--app-sunken-tint); font-size: 10.5px; }
.worktree-lock-body { padding: 18px 16px; }
.worktree-lock-body label > span { display: flex; align-items: baseline; justify-content: space-between; }
.worktree-lock-body small { color: var(--color-ink-faint); font-size: 9.5px; font-weight: 500; }
@@ -5579,7 +5623,7 @@
min-width: 0;
padding: 10px 12px;
border-bottom: 1px solid var(--color-border-subtle);
- background: rgba(0,0,0,0.12);
+ background: var(--app-sunken-tint);
}
.file-search-history-head span {
color: var(--color-ink-faint);
@@ -5667,7 +5711,7 @@
background:
linear-gradient(180deg, #222743 0%, #111321 42%),
#111321;
- box-shadow: 0 32px 90px rgba(0, 0, 0, 0.68), 0 0 0 1px rgba(255,255,255,0.04) inset;
+ box-shadow: var(--app-overlay-shadow), 0 0 0 1px var(--app-hairline) inset;
overflow: hidden;
}
@@ -5675,7 +5719,7 @@
display: grid;
gap: 12px;
padding: 20px 22px 18px;
- border-bottom: 1px solid rgba(255,255,255,0.07);
+ border-bottom: 1px solid var(--app-hairline);
background:
linear-gradient(135deg, rgba(100,108,255,0.24), rgba(189,52,254,0.18) 46%, rgba(65,209,255,0.09)),
var(--color-bar);
@@ -5696,7 +5740,7 @@
height: 50px;
flex-shrink: 0;
border-radius: 12px;
- border: 1px solid rgba(255,255,255,0.16);
+ border: 1px solid var(--app-hairline-strong);
color: #ffffff;
background:
linear-gradient(135deg, rgba(65,209,255,0.32), rgba(100,108,255,0.5) 46%, rgba(189,52,254,0.48));
@@ -5753,16 +5797,16 @@
height: 30px;
flex-shrink: 0;
padding: 0;
- border: 1px solid rgba(255,255,255,0.12);
+ border: 1px solid var(--app-hairline);
border-radius: 8px;
- background: rgba(255,255,255,0.04);
+ background: var(--app-raise-tint);
color: #aeb8ff;
cursor: pointer;
transition: background 0.12s, color 0.12s;
}
.cred-close:hover:not(:disabled) {
- background: rgba(255,255,255,0.1);
- border-color: rgba(255,255,255,0.2);
+ background: var(--app-active-tint);
+ border-color: var(--color-bar-muted);
color: #ffffff;
}
@@ -5772,7 +5816,7 @@
gap: 14px;
padding: 18px 22px 20px;
overflow: auto;
- background: linear-gradient(180deg, rgba(255,255,255,0.025), transparent);
+ background: linear-gradient(180deg, var(--app-soft-tint), transparent);
}
.cred-segment {
@@ -6006,7 +6050,7 @@
.resolve-toolbar button { min-height: 30px; padding: 0 10px; font-size: 12.5px; }
.resolve-toolbar-label { color: var(--color-ink-dim); font-size: 12px; font-weight: 800; }
- .resolve-status { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; font-size: 12px; font-weight: 700; color: #e0a040; }
+ .resolve-status { display: inline-flex; align-items: center; gap: 5px; margin-left: auto; font-size: 12px; font-weight: 700; color: var(--color-warning); }
.resolve-textarea {
width: 100%;
@@ -6092,7 +6136,7 @@
.resolve-split-marker {
grid-column: 1 / -1;
padding: 3px 8px;
- color: #e0a040;
+ color: var(--color-warning);
background: rgba(224,160,64,0.12);
font-family: var(--font-mono);
font-size: 11px;
@@ -6130,14 +6174,14 @@
.resolve-conflict { display: grid; gap: 6px; padding: 8px; border: 1px solid rgba(224,160,64,0.25); border-radius: 6px; background: rgba(224,160,64,0.06); }
.resolve-conflict.unresolved { border-color: rgba(232,96,96,0.3); background: rgba(232,96,96,0.06); }
.resolve-conflict-bar { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px; }
- .resolve-conflict-label { color: #e0a040; font-size: 12px; font-weight: 800; }
+ .resolve-conflict-label { color: var(--color-warning); font-size: 12px; font-weight: 800; }
.resolve-choice-buttons { display: flex; flex-wrap: wrap; gap: 4px; }
.resolve-choice-buttons button { min-height: 24px; padding: 0 8px; font-size: 11.5px; }
.resolve-choice-buttons button.active { border-color: var(--color-primary); color: #ffffff; background: var(--color-primary); }
.resolve-side { display: grid; gap: 3px; padding: 6px; border: 1px solid var(--color-border-subtle); border-radius: 6px; border-left-width: 3px; }
- .resolve-side.ours { border-left-color: #4eca76; background: rgba(78,202,118,0.06); }
+ .resolve-side.ours { border-left-color: var(--color-success); background: rgba(78,202,118,0.06); }
.resolve-side.theirs { border-left-color: #5a8cf8; background: rgba(90,140,248,0.06); }
.resolve-side.dimmed { opacity: 0.4; filter: grayscale(0.5); }
@@ -6152,11 +6196,11 @@
.resolve-line.context { color: var(--color-ink-muted); }
.resolve-binary { display: grid; align-content: start; gap: 12px; padding: 4px; }
- .resolve-binary-note { display: flex; align-items: center; gap: 8px; padding: 10px; border: 1px solid rgba(224,160,64,0.28); border-radius: 6px; color: #e0a040; background: rgba(224,160,64,0.07); font-size: 13px; }
+ .resolve-binary-note { display: flex; align-items: center; gap: 8px; padding: 10px; border: 1px solid rgba(224,160,64,0.28); border-radius: 6px; color: var(--color-warning); background: rgba(224,160,64,0.07); font-size: 13px; }
.resolve-binary-options { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.resolve-binary-card { display: grid; gap: 6px; justify-items: start; padding: 14px; border: 1px solid var(--color-border-subtle); border-left-width: 3px; border-radius: 8px; text-align: left; background: var(--color-surface-raised); }
- .resolve-binary-card.ours { border-left-color: #4eca76; }
+ .resolve-binary-card.ours { border-left-color: var(--color-success); }
.resolve-binary-card.theirs { border-left-color: #5a8cf8; }
.resolve-binary-card.active { box-shadow: 0 0 0 2px var(--color-primary) inset; border-color: var(--color-primary); }
.resolve-binary-card strong { color: var(--color-ink); font-size: 18px; }
@@ -6166,10 +6210,27 @@
.resolve-path { overflow: hidden; color: var(--color-ink-faint); font-family: var(--font-mono); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
}
-:root[data-theme="light"] button:hover:not(:disabled) {
+:root[data-theme="light"] button:hover:not(:disabled):not(.primary):not(.btn-primary):not(.btn-danger):not(.create-review):not(.issue-create-button) {
background: var(--color-surface-hover);
}
+/* Filled buttons keep their own colour on hover — the neutral hover above
+ would otherwise leave light text on a grey surface. */
+button.primary:hover:not(:disabled),
+button.primary:focus-visible:not(:disabled),
+button.create-review:hover:not(:disabled),
+button.create-review:focus-visible:not(:disabled),
+button.issue-create-button:hover:not(:disabled),
+button.issue-create-button:focus-visible:not(:disabled),
+:root[data-theme="light"] button.primary:hover:not(:disabled),
+:root[data-theme="light"] button.primary:focus-visible:not(:disabled),
+:root[data-theme="light"] button.create-review:hover:not(:disabled),
+:root[data-theme="light"] button.issue-create-button:hover:not(:disabled) {
+ border-color: var(--color-accent-solid-hover);
+ color: var(--color-on-accent);
+ background: var(--color-accent-solid-hover);
+}
+
:root[data-theme="light"] input:focus,
:root[data-theme="light"] textarea:focus,
:root[data-theme="light"] select:focus {
@@ -6211,7 +6272,7 @@
:root[data-theme="light"] .repo-toolbar {
border-color: var(--color-border);
- background: rgba(255,255,255,0.78);
+ background: #ffffff;
}
:root[data-theme="light"] .titlebar-brand-icon img {
@@ -6514,7 +6575,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
.status-lane.staged-lane {
background:
- linear-gradient(180deg, color-mix(in srgb, #2da44e 2.5%, transparent), transparent 120px),
+ linear-gradient(180deg, color-mix(in srgb, var(--color-success) 2.5%, transparent), transparent 120px),
var(--color-surface-solid);
}
.status-flow-divider {
@@ -6579,7 +6640,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
.staged-lane .status-lane-count {
color: #55bd72;
- background: color-mix(in srgb, #2da44e 12%, transparent);
+ background: color-mix(in srgb, var(--color-success) 12%, transparent);
}
.status-file-list {
min-height: 0;
@@ -6609,7 +6670,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.status-file-actions { display: flex; margin-left: 5px; opacity: 0; transition: opacity 120ms ease; }
.status-file-row:hover .status-file-actions, .status-file-row:focus-within .status-file-actions { opacity: 1; }
.status-file-actions button { width: 28px; min-width: 28px; min-height: 28px; padding: 0; border-color: transparent; background: transparent; }
-.status-file-actions .danger:hover:not(:disabled) { color: #e86060; background: rgba(232,96,96,.1); }
+.status-file-actions .danger:hover:not(:disabled) { color: var(--color-danger); background: rgba(232,96,96,.1); }
.status-folder-row {
display: grid;
grid-template-columns: 14px 15px minmax(0, 1fr) auto;
@@ -6684,7 +6745,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.branch-row, .explorer-row, .stash-row { border-radius: var(--ui-radius-sm); }
.branch-row.current, .explorer-row.active { background: color-mix(in srgb, var(--color-primary) 11%, var(--color-surface-solid)); box-shadow: inset 3px 0 0 var(--color-primary); }
.branch-group-toggle { background: transparent; }
-.explorer-row .status-badge { min-width: 18px; overflow: hidden; color: #d9891b; background: transparent; text-indent: -999px; }
+.explorer-row .status-badge { min-width: 18px; overflow: hidden; color: var(--color-warning); background: transparent; text-indent: -999px; }
.explorer-row .status-badge::after { content: "M"; float: right; text-indent: 0; }
.history-panel { min-height: 0; }
@@ -6739,15 +6800,15 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
.workspace-statusbar > span { display: inline-flex; align-items: center; gap: 5px; white-space: nowrap; }
.workspace-status-spacer { flex: 1 1 auto; }
-.workspace-health > span { width: 8px; height: 8px; border-radius: 50%; background: #d9891b; }
-.workspace-health.clean > span { background: #2da44e; }
+.workspace-health > span { width: 8px; height: 8px; border-radius: 50%; background: var(--color-warning); }
+.workspace-health.clean > span { background: var(--color-success); }
.workspace-statusbar .ahead { color: var(--color-sync-ahead); }
.workspace-statusbar .behind { color: var(--color-sync-behind); }
.workspace-statusbar .workspace-local-only {
padding: 2px 6px;
border: 1px dashed rgba(224,160,64,.42);
border-radius: 4px;
- color: #f0bd6b;
+ color: var(--color-warning);
background: rgba(224,160,64,.08);
font-family: var(--font-mono);
font-size: 9px;
@@ -6755,7 +6816,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
letter-spacing: .02em;
}
.workspace-auto i { width: 7px; height: 7px; border-radius: 50%; background: var(--color-ink-faint); }
-.workspace-auto.active i { background: #2da44e; }
+.workspace-auto.active i { background: var(--color-success); }
.app-version {
padding-left: 12px;
border-left: 1px solid var(--color-border-subtle);
@@ -6849,7 +6910,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
inset 0 -3px 0 var(--color-accent),
inset 1px 0 0 #4c535b,
inset -1px 0 0 #4c535b,
- inset 0 1px 0 rgba(255, 255, 255, 0.045);
+;
}
:root:not([data-theme="light"]) .repo-tab-add {
border-left-color: #454b53;
@@ -6860,13 +6921,13 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
border-bottom-color: #505760;
background: #30343a;
box-shadow:
- inset 0 1px 0 rgba(255, 255, 255, 0.035),
+,
0 2px 0 #191b1f;
}
:root:not([data-theme="light"]) .repo-action-group {
border-color: #596169;
background: #292d32;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
+ box-shadow: none;
}
:root:not([data-theme="light"]) .repo-action-group > .repo-action,
:root:not([data-theme="light"]) .repo-action-group > .repo-history-wrap > .repo-action {
@@ -6910,7 +6971,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
inset 0 -3px 0 var(--color-primary),
inset 1px 0 0 #b7c1cd,
inset -1px 0 0 #b7c1cd,
- inset 0 1px 0 rgba(255, 255, 255, 0.95);
+;
}
:root[data-theme="light"] .repo-tab-add {
@@ -6971,7 +7032,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .repo-tab-wrap {
- background: rgba(255,255,255,0.5);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-tab-wrap.active {
@@ -6980,7 +7041,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .repo-tab-wrap:hover,
:root[data-theme="light"] .repo-tab.management:hover:not(:disabled) {
- background: rgba(255,255,255,0.9);
+ background: #ffffff;
}
:root[data-theme="light"] .repo-tab.management.active {
@@ -7010,7 +7071,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
background:
linear-gradient(135deg, rgba(210,55,75,0.11), rgba(49,95,214,0.05)),
rgba(255,255,255,0.96);
- box-shadow: 0 18px 48px rgba(28,44,74,0.18), 0 0 0 1px rgba(255,255,255,0.8) inset;
+ box-shadow: 0 18px 48px rgba(28,44,74,0.18);
}
:root[data-theme="light"] .error-toast-icon {
@@ -7039,7 +7100,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .update-toast {
- box-shadow: 0 22px 56px rgba(28,44,74,0.18), 0 0 0 1px rgba(255,255,255,0.75) inset;
+ box-shadow: 0 22px 56px rgba(28,44,74,0.18);
}
:root[data-theme="light"] .branch-filter-backdrop {
@@ -7074,7 +7135,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .repo-section {
- background: rgba(255,255,255,0.62);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-section > header {
@@ -7082,7 +7143,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .repo-empty {
- background: rgba(255,255,255,0.48);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-summary,
@@ -7121,7 +7182,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .commit-body {
- background: rgba(255,255,255,0.72);
+ background: #ffffff;
}
:root[data-theme="light"] .graph-row + .graph-row .commit-body {
@@ -7356,7 +7417,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .cred-card {
border-color: rgba(49, 95, 214, 0.22);
background: #ffffff;
- box-shadow: 0 28px 72px rgba(28, 44, 74, 0.2), 0 0 0 1px rgba(255,255,255,0.82) inset;
+ box-shadow: 0 28px 72px rgba(28, 44, 74, 0.2);
}
:root[data-theme="light"] .cred-hero {
@@ -7370,7 +7431,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
border-color: rgba(49,95,214,0.2);
color: #ffffff;
background: linear-gradient(135deg, #4d8dff, #0c7691);
- box-shadow: 0 12px 26px rgba(49,95,214,0.2), inset 0 1px 0 rgba(255,255,255,0.24);
+ box-shadow: 0 12px 26px rgba(49,95,214,0.2);
}
:root[data-theme="light"] .cred-hero-label { color: #315fd6; }
@@ -7392,18 +7453,18 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .cred-seg-btn.active {
border-color: rgba(49,95,214,0.26);
background: linear-gradient(135deg, rgba(49,95,214,0.12), rgba(15,143,181,0.08));
- box-shadow: 0 8px 18px rgba(28,44,74,0.1), inset 0 1px 0 rgba(255,255,255,0.9);
+ box-shadow: 0 8px 18px rgba(28,44,74,0.1);
}
:root[data-theme="light"] .cred-seg-btn:hover:not(.active) {
color: var(--color-ink);
- background: rgba(255,255,255,0.68);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .cred-close {
border-color: var(--color-border-subtle);
color: var(--color-ink-dim);
- background: rgba(255,255,255,0.76);
+ background: #ffffff;
}
:root[data-theme="light"] .cred-close:hover:not(:disabled) {
@@ -7436,7 +7497,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .cred-input input,
:root[data-theme="light"] .cred-expiry input[type="date"] {
border-color: var(--color-border-input);
- background: rgba(255,255,255,0.92);
+ background: #ffffff;
color-scheme: light;
}
@@ -7461,7 +7522,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
background:
linear-gradient(180deg, rgba(255,255,255,0.96), rgba(244,247,252,0.94)),
var(--color-surface-raised);
- box-shadow: 0 18px 44px rgba(28,44,74,0.16), inset 0 1px 0 rgba(255,255,255,0.9);
+ box-shadow: 0 18px 44px rgba(28,44,74,0.16);
}
/* Custom tooltip — appended to body, not clipped by overflow:hidden parents */
@@ -7479,7 +7540,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
white-space: pre-wrap;
word-break: break-all;
pointer-events: none;
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.5);
+ box-shadow: var(--app-menu-shadow);
}
@keyframes spin { to { transform: rotate(360deg); } }
@@ -7807,10 +7868,10 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
width: 38px;
height: 38px;
border-radius: 9px;
- color: #d9891b;
- background: color-mix(in srgb, #d9891b 12%, transparent);
+ color: var(--color-warning);
+ background: color-mix(in srgb, var(--color-warning) 12%, transparent);
}
-.ai-review-summary-icon.clean { color: #2da44e; background: color-mix(in srgb, #2da44e 12%, transparent); }
+.ai-review-summary-icon.clean { color: var(--color-success); background: color-mix(in srgb, var(--color-success) 12%, transparent); }
.ai-review-summary-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.ai-review-summary-line > strong { color: var(--color-ink); font-size: 14px; }
.ai-review-summary p { margin: 5px 0 0; color: var(--color-ink-muted); font-size: 12.5px; line-height: 1.45; }
@@ -7822,8 +7883,8 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
letter-spacing: .06em;
text-transform: uppercase;
}
-.ai-review-risk.low { color: #2da44e; background: color-mix(in srgb, #2da44e 12%, transparent); }
-.ai-review-risk.medium { color: #b96500; background: color-mix(in srgb, #d9891b 13%, transparent); }
+.ai-review-risk.low { color: var(--color-success); background: color-mix(in srgb, var(--color-success) 12%, transparent); }
+.ai-review-risk.medium { color: #b96500; background: color-mix(in srgb, var(--color-warning) 13%, transparent); }
.ai-review-risk.high { color: #d1242f; background: color-mix(in srgb, #d1242f 12%, transparent); }
.ai-review-findings { min-height: 0; padding: 10px; overflow: auto; background: var(--app-dialog-bg); }
.ai-review-finding {
@@ -7838,11 +7899,11 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
.ai-review-finding + .ai-review-finding { margin-top: 8px; }
.ai-review-finding.critical { border-left-color: #d1242f; }
-.ai-review-finding.warning { border-left-color: #d9891b; }
+.ai-review-finding.warning { border-left-color: var(--color-warning); }
.ai-review-finding.info { border-left-color: var(--color-primary); }
.ai-review-finding-icon { display: grid; place-items: start center; padding-top: 1px; color: var(--color-primary); }
.ai-review-finding.critical .ai-review-finding-icon { color: #d1242f; }
-.ai-review-finding.warning .ai-review-finding-icon { color: #d9891b; }
+.ai-review-finding.warning .ai-review-finding-icon { color: var(--color-warning); }
.ai-review-finding-title { display: flex; align-items: center; gap: 7px; }
.ai-review-finding-title span { color: var(--color-ink-faint); font-size: 9px; font-weight: 850; letter-spacing: .07em; text-transform: uppercase; }
.ai-review-finding-title strong { color: var(--color-ink); font-size: 12.5px; }
@@ -7874,7 +7935,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.sync-fields select, .remote-add input, .remote-edit input { width: 100%; height: 35px; border: 1px solid var(--color-border-input); border-radius: 7px; color: var(--color-ink); background: var(--app-input-bg); font-size: 11px; }
.sync-fields select { padding: 0 9px; }
.remote-list { display: grid; gap: 5px; }
-.sync-action-error { display: grid; gap: 4px; margin-bottom: 5px; padding: 10px 11px; border: 1px solid rgba(232,96,96,.28); border-radius: 8px; color: #ef8888; background: rgba(232,96,96,.08); }
+.sync-action-error { display: grid; gap: 4px; margin-bottom: 5px; padding: 10px 11px; border: 1px solid rgba(232,96,96,.28); border-radius: 8px; color: var(--color-danger); background: rgba(232,96,96,.08); }
.sync-action-error strong { font-size: 11px; }
.sync-action-error span { font: 9.5px/1.45 var(--font-mono); overflow-wrap: anywhere; }
.sync-action-status { margin-bottom: 5px; padding: 9px 11px; border: 1px solid rgba(90,140,248,.28); border-radius: 8px; color: var(--color-accent); background: rgba(90,140,248,.08); font-size: 10.5px; font-weight: 700; }
@@ -7888,7 +7949,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.remote-confirm strong { color: var(--color-ink); font-size: 11px; }
.remote-confirm span { color: var(--color-ink-faint); font-size: 9.5px; }
.remote-edit input, .remote-add input { padding: 0 9px; }
-.remote-delete { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 8px; border: 0; border-radius: 6px; color: #e86060; background: transparent; font-size: 10px; font-weight: 750; }
+.remote-delete { display: inline-flex; align-items: center; gap: 5px; height: 30px; padding: 0 8px; border: 0; border-radius: 6px; color: var(--color-danger); background: transparent; font-size: 10px; font-weight: 750; }
.remote-delete:hover { background: rgba(235,87,87,.1); }
.btn-danger { display: inline-flex; align-items: center; justify-content: center; gap: 5px; min-height: 34px; padding: 0 11px; border: 1px solid rgba(232,96,96,.38); border-radius: 7px; color: #fff; background: #c84f4f; font-size: 10.5px; font-weight: 750; }
.btn-danger:hover:not(:disabled) { background: #dd5b5b; }
@@ -7974,7 +8035,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
.ai-review-suggestion strong { color: var(--color-ink-dim); font-size: 9.5px; text-transform: uppercase; letter-spacing: .05em; }
.ai-review-suggestion span { color: var(--color-ink-muted); font-size: 11.5px; line-height: 1.45; }
-.ai-review-clean-state { display: grid; place-items: center; align-content: center; min-height: 280px; gap: 8px; color: #2da44e; text-align: center; }
+.ai-review-clean-state { display: grid; place-items: center; align-content: center; min-height: 280px; gap: 8px; color: var(--color-success); text-align: center; }
.ai-review-clean-state strong { color: var(--color-ink); font-size: 14px; }
.ai-review-clean-state span { color: var(--color-ink-faint); font-size: 12px; }
.ai-review-footer p { margin: 0; color: var(--color-ink-faint); font-size: 10.5px; }
@@ -8050,47 +8111,47 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.status-lane-actions { width: 100%; justify-content: flex-start; }
}
-/* Muted light theme -----------------------------------------------------
- A lower-luminance light palette for long sessions. The hierarchy stays
- light and readable without using pure white for every working surface. */
+/* Light theme surfaces --------------------------------------------------
+ White working surfaces on a soft neutral page, separated by hairlines
+ instead of grey fills — the usual look of current desktop apps. */
:root[data-theme="light"] {
- --ui-shadow: 0 10px 26px rgba(29, 39, 52, 0.12);
- --app-bg: #cfd5dc;
- --app-button-bg: #e2e7eb;
- --app-input-bg: #e9edf0;
- --app-select-option-bg: #e7ebef;
- --app-dialog-backdrop: rgba(91, 103, 117, 0.38);
- --app-dialog-bg: #e2e6ea;
- --app-dialog-chrome: #d7dde3;
- --app-settings-row-bg: #dce2e7;
- --app-scrollbar-thumb: #aab4be;
- --app-scrollbar-thumb-hover: #929eaa;
+ --ui-shadow: 0 1px 2px rgba(16, 25, 43, 0.05), 0 1px 3px rgba(16, 25, 43, 0.06);
+ --app-bg: #f4f6fa;
+ --app-button-bg: #ffffff;
+ --app-input-bg: #ffffff;
+ --app-select-option-bg: #ffffff;
+ --app-dialog-backdrop: rgba(16, 25, 43, 0.32);
+ --app-dialog-bg: #ffffff;
+ --app-dialog-chrome: #f7f9fc;
+ --app-settings-row-bg: #f7f9fc;
+ --app-scrollbar-thumb: #c6cdd9;
+ --app-scrollbar-thumb-hover: #a4aec0;
- --color-ink: #202832;
- --color-ink-muted: #4d5a68;
- --color-ink-faint: #687583;
- --color-ink-dim: #596674;
- --color-ink-quiet: #62707e;
- --color-surface: #e2e6ea;
- --color-surface-alt: #d8dde3;
- --color-surface-dim: #dce1e6;
- --color-surface-hover: #cfd6de;
- --color-surface-raised: #e7ebee;
- --color-surface-solid: #e1e5e9;
- --color-border: #9faab5;
- --color-border-subtle: #bbc3cc;
- --color-border-input: #98a5b2;
- --color-bar: #d6dce2;
- --color-bar-text: #202832;
- --color-bar-muted: #596674;
+ --color-ink: #10192b;
+ --color-ink-muted: #3f4a5c;
+ --color-ink-faint: #64718a;
+ --color-ink-dim: #4d5a70;
+ --color-ink-quiet: #55627a;
+ --color-surface: #ffffff;
+ --color-surface-alt: #f1f4f9;
+ --color-surface-dim: #f7f9fc;
+ --color-surface-hover: #eef2f7;
+ --color-surface-raised: #ffffff;
+ --color-surface-solid: #ffffff;
+ --color-border: #dfe4ec;
+ --color-border-subtle: #eaedf3;
+ --color-border-input: #cbd3e0;
+ --color-bar: #ffffff;
+ --color-bar-text: #10192b;
+ --color-bar-muted: #64718a;
- --code-surface: #e1e5e9;
- --code-surface-raised: #d9dfe5;
- --code-surface-subtle: #dce2e7;
- --code-surface-muted: #d4dae0;
- --code-surface-meta: #ced5dc;
- --code-input-bg: #e8ecef;
- --code-hover-bg: #cfd7df;
+ --code-surface: #ffffff;
+ --code-surface-raised: #f7f9fc;
+ --code-surface-subtle: #f4f6fa;
+ --code-surface-muted: #f1f4f9;
+ --code-surface-meta: #eef2f7;
+ --code-input-bg: #ffffff;
+ --code-hover-bg: #eef2f7;
}
:root[data-theme="light"] .titlebar {
@@ -8100,51 +8161,51 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .repo-tabbar {
- border-bottom-color: #929da8;
- background: #cbd2d9;
- box-shadow: inset 0 -1px 0 #aeb7c0;
+ border-bottom-color: var(--color-border);
+ background: var(--color-surface-dim);
+ box-shadow: inset 0 -1px 0 var(--color-border-subtle);
}
:root[data-theme="light"] .repo-tab-wrap,
:root[data-theme="light"] .repo-tab-add {
- border-color: #aeb8c2;
- background: #d3d9df;
+ border-color: var(--color-border);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-tab-wrap:hover,
:root[data-theme="light"] .repo-tab.management:hover:not(:disabled) {
- background: #c8d0d8;
+ background: var(--color-surface-hover);
}
:root[data-theme="light"] .repo-tab-wrap.active,
:root[data-theme="light"] .repo-tab.management.active {
- background: #e3e7eb;
+ background: var(--color-surface-dim);
box-shadow:
inset 0 -3px 0 var(--color-primary),
- inset 1px 0 0 #9faab5,
- inset -1px 0 0 #9faab5;
+ inset 1px 0 0 var(--color-surface-hover),
+ inset -1px 0 0 var(--color-surface-hover);
}
:root[data-theme="light"] .repo-toolbar {
- border-top-color: #aeb7c0;
- border-bottom-color: #929da8;
- background: #d5dbe1;
- box-shadow: 0 2px 0 #b9c1c9;
+ border-top-color: var(--color-border);
+ border-bottom-color: var(--color-border);
+ background: var(--color-surface);
+ box-shadow: 0 2px 0 var(--color-border-subtle);
}
:root[data-theme="light"] .repo-action-group {
- border-color: #98a4af;
- background: #e0e5e9;
+ border-color: var(--color-border);
+ background: var(--color-surface);
box-shadow: 0 1px 2px rgba(29, 39, 52, 0.1);
}
:root[data-theme="light"] .repo-action-group > .repo-action,
:root[data-theme="light"] .repo-action-group > .repo-history-wrap > .repo-action {
- border-right-color: #aeb8c2;
+ border-right-color: var(--color-border);
}
:root[data-theme="light"] .workspace {
- box-shadow: inset 0 1px 0 #aab4be;
+ box-shadow: inset 0 1px 0 var(--color-border-subtle);
}
:root[data-theme="light"] .repo-management,
@@ -8153,7 +8214,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
}
:root[data-theme="light"] .repo-section {
- background: #dbe0e5;
+ background: var(--color-surface);
}
:root[data-theme="light"] .repo-section > header,
@@ -8162,7 +8223,7 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .stash-toolbar,
:root[data-theme="light"] .dialog-footer,
:root[data-theme="light"] .cred-header {
- background: #d2d8de;
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-empty,
@@ -8173,20 +8234,20 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .commit-ref-detail-item,
:root[data-theme="light"] .cred-card,
:root[data-theme="light"] .cred-body {
- background: #e0e4e8;
+ background: var(--color-surface);
}
:root[data-theme="light"] .graph-gutter {
- background: #d2d8de;
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .graph-row:hover .commit-body {
- background: #d3dae1;
+ background: var(--color-surface-hover);
}
:root[data-theme="light"] .branch-filter-dialog,
:root[data-theme="light"] .status-panel-overlay-card {
- background: #e2e6ea;
+ background: var(--color-surface);
}
:root[data-theme="light"] .cred-input input,
@@ -8194,66 +8255,66 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
background: var(--app-input-bg);
}
-/* Shared dark-mode accent language in the muted light theme. */
+/* The light theme keeps the cyan accent, in shades that stay readable on white. */
:root[data-theme="light"] {
- --color-primary: #25a7c7;
- --color-primary-dark: #188ca9;
- --color-accent: #2eb5d1;
- --color-ink: #222328;
- --color-ink-muted: #3f4852;
- --color-ink-faint: #66707a;
- --color-ink-dim: #515b65;
- --color-ink-quiet: #5c6670;
- --color-bar-text: #222328;
- --color-bar-muted: #59636d;
+ --color-primary: #0c7691;
+ --color-primary-dark: #0a6377;
+ --color-accent: #0c7691;
+ --color-ink: #10192b;
+ --color-ink-muted: #3f4a5c;
+ --color-ink-faint: #64718a;
+ --color-ink-dim: #4d5a70;
+ --color-ink-quiet: #55627a;
+ --color-bar-text: #10192b;
+ --color-bar-muted: #64718a;
}
:root[data-theme="light"] .btn-primary {
- border-color: #2eb5d1;
- color: #f0f1f2;
- background: #126f84;
+ border-color: var(--color-primary-dark);
+ color: #ffffff;
+ background: var(--color-primary);
box-shadow: none;
}
:root[data-theme="light"] .btn-primary:hover:not(:disabled) {
- border-color: #55c5dc;
+ border-color: var(--color-primary);
color: #ffffff;
- background: #147c94;
+ background: var(--color-primary-dark);
}
:root[data-theme="light"] .btn-secondary,
:root[data-theme="light"] .dialog-icon-button {
- border-color: #909ca8;
- color: #2f3943;
- background: #d2d8de;
+ border-color: var(--color-border);
+ color: var(--color-ink-muted);
+ background: var(--color-surface);
}
:root[data-theme="light"] .btn-secondary:hover:not(:disabled),
:root[data-theme="light"] .dialog-icon-button:hover:not(:disabled) {
- border-color: #778591;
- color: #222328;
- background: #c3cbd3;
+ border-color: var(--color-border);
+ color: var(--color-ink);
+ background: var(--color-surface-hover);
}
:root[data-theme="light"] .repo-action-group {
- border-color: #909ca8;
- background: #d2d8de;
- box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.32);
+ border-color: var(--color-border);
+ background: var(--color-surface-dim);
+ box-shadow: none;
}
:root[data-theme="light"] .repo-action {
- color: #35404a;
+ color: var(--color-ink);
}
:root[data-theme="light"] .repo-action-group > .repo-action,
:root[data-theme="light"] .repo-action-group > .repo-history-wrap > .repo-action {
- border-right-color: #aab4be;
+ border-right-color: var(--color-border);
}
:root[data-theme="light"] .repo-action:hover:not(:disabled),
:root[data-theme="light"] .repo-action.active {
- color: #222328;
- background: #c3cbd3;
+ color: var(--color-ink);
+ background: var(--color-surface-hover);
}
:root[data-theme="light"] .repo-action.sync-primary,
@@ -8263,44 +8324,44 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
/* Repository tabs stay light while sharing the cyan dark-theme accent. */
:root[data-theme="light"] .repo-tabbar {
- border-bottom-color: #929da8;
- background: #cbd2d9;
- box-shadow: inset 0 -1px 0 #aeb7c0;
+ border-bottom-color: var(--color-border);
+ background: var(--color-surface-dim);
+ box-shadow: inset 0 -1px 0 var(--color-border-subtle);
}
:root[data-theme="light"] .repo-tabs-scroll {
- border-left-color: #aeb8c2;
+ border-left-color: var(--color-border);
}
:root[data-theme="light"] .repo-tab-wrap,
:root[data-theme="light"] .repo-tab.management,
:root[data-theme="light"] .repo-tab-add {
- border-color: #aeb8c2;
- color: #3f4852;
- background: #d3d9df;
+ border-color: var(--color-border);
+ color: var(--color-ink);
+ background: var(--color-surface-dim);
}
:root[data-theme="light"] .repo-tab-wrap:hover,
:root[data-theme="light"] .repo-tab.management:hover:not(:disabled),
:root[data-theme="light"] .repo-tab-add:hover:not(:disabled) {
- color: #222328;
- background: #c5ced6;
+ color: var(--color-ink);
+ background: var(--color-surface-hover);
}
:root[data-theme="light"] .repo-tab-wrap.active,
:root[data-theme="light"] .repo-tab.management.active {
- color: #222328;
- background: #e3e7eb;
+ color: var(--color-ink);
+ background: var(--color-surface-dim);
box-shadow:
inset 0 -3px 0 var(--color-accent),
- inset 1px 0 0 #9faab5,
- inset -1px 0 0 #9faab5;
+ inset 1px 0 0 var(--color-surface-hover),
+ inset -1px 0 0 var(--color-surface-hover);
}
:root[data-theme="light"] .repo-tab > svg,
:root[data-theme="light"] .repo-tab-close,
:root[data-theme="light"] .repo-tab-add {
- color: #66707a;
+ color: var(--color-ink);
}
:root[data-theme="light"] .repo-tab-wrap.active .repo-tab,
@@ -8312,13 +8373,13 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
:root[data-theme="light"] .repo-tab-wrap.active .repo-tab span,
:root[data-theme="light"] .repo-tab.management.active span {
- color: #222328;
+ color: var(--color-ink);
}
:root[data-theme="light"] .repo-tab-close:hover:not(:disabled),
:root[data-theme="light"] .repo-tab-close:focus-visible:not(:disabled) {
- color: #222328;
- background: #c3cbd3;
+ color: var(--color-ink);
+ background: var(--color-surface-hover);
}
/* Appearance presets --------------------------------------------------- */
@@ -8920,14 +8981,14 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
.repo-tab-close:hover:not(:disabled),
.repo-tab-close:focus-visible:not(:disabled) {
color: #ffffff;
- background: #d93641;
- box-shadow: inset 0 0 0 1px #f0646d;
+ background: var(--color-danger);
+ box-shadow: inset 0 0 0 1px var(--color-danger);
}
:root[data-theme="light"] .repo-tab-close:hover:not(:disabled),
:root[data-theme="light"] .repo-tab-close:focus-visible:not(:disabled) {
color: #ffffff;
- background: #c92f3a;
+ background: var(--color-danger);
box-shadow: inset 0 0 0 1px #a9212b;
}
@@ -8981,15 +9042,15 @@ input:focus, textarea:focus, select:focus { box-shadow: 0 0 0 3px color-mix(in s
/* All dialog dismiss buttons share hover and keyboard-focus feedback. */
:root :is(.dialog-close, .dialog-icon-button, .cred-close, .help-close, [data-dialog-close]):is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) {
color: #ffffff;
- border-color: #f0646d;
- background: #d93641;
+ border-color: var(--color-danger);
+ background: var(--color-danger);
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08);
}
:root[data-theme="light"] :is(.dialog-close, .dialog-icon-button, .cred-close, .help-close, [data-dialog-close]):is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) {
color: #ffffff;
border-color: #a9212b;
- background: #c92f3a;
+ background: var(--color-danger);
}
:root :is(.dialog-close, .dialog-icon-button, .cred-close, .help-close, [data-dialog-close]):is(:hover, :focus-visible):not(:disabled):not([aria-disabled="true"]) svg {
@@ -9114,7 +9175,7 @@ section > header.page-header.page-header {
}
:root .cred-hero:has(> .unified-dialog-header) { padding: 0 0 14px; background: var(--app-dialog-bg); }
:root .cred-hero:has(> .unified-dialog-header) > :is(.cred-hero-copy,.cred-security-note) { margin: 12px 18px 0; }
-:root { --dialog-close-hover-ink: #f0646d; }
+:root { --dialog-close-hover-ink: var(--color-danger); }
:root[data-theme="light"] { --dialog-close-hover-ink: #b4232f; }
:root .unified-dialog-header :is(.dialog-close,.dialog-icon-button,.help-close,.cred-close,[data-dialog-close]):hover:not(:disabled):not([aria-disabled="true"]) {
color: var(--dialog-close-hover-ink);
diff --git a/src/lib/RepoTabs.svelte b/src/lib/RepoTabs.svelte
index dde4dcf..59f5792 100644
--- a/src/lib/RepoTabs.svelte
+++ b/src/lib/RepoTabs.svelte
@@ -138,7 +138,7 @@
/* Animate the preview only. On drop, the new DOM order replaces the
transforms in the same render, so resetting them must not animate. */
.reordering .repository-tab{transition:transform 160ms ease}
- .reordering .repository-tab.dragging{z-index:2;transition:none;background:var(--color-surface-raised);border-color:var(--color-accent);box-shadow:0 2px 12px #0005}
+ .reordering .repository-tab.dragging{z-index:2;transition:none;background:var(--color-surface-raised);border-color:var(--color-accent);box-shadow:var(--app-menu-shadow)}
.repository-navigation.reordering,.reordering .repository-select{cursor:grabbing}
.repository-select{touch-action:pan-y;user-select:none}
@media(prefers-reduced-motion:reduce){.reordering .repository-tab{transition:none}}
diff --git a/src/lib/components/AiCommitSplitDialog.svelte b/src/lib/components/AiCommitSplitDialog.svelte
index bbce012..2c7958b 100644
--- a/src/lib/components/AiCommitSplitDialog.svelte
+++ b/src/lib/components/AiCommitSplitDialog.svelte
@@ -87,7 +87,7 @@
.split-intro p{margin:0;line-height:1.5}
.split-groups{display:grid;gap:10px;padding:14px 18px;overflow:auto}
article{display:grid;gap:10px;padding:13px;border:1px solid var(--color-border-subtle);border-radius:9px;background:var(--color-surface-raised)}
- article.empty{border-color:#d88a45}
+ article.empty{border-color:var(--color-warning)}
article>header{display:flex;align-items:center;gap:8px;color:var(--color-ink)}
article>header span{margin-left:auto;color:var(--color-ink-faint);font-size:11px}
label{display:grid;gap:5px;color:var(--color-ink-faint);font-size:10px;font-weight:800;text-transform:uppercase}
@@ -100,5 +100,5 @@
code{min-width:0;flex:1;overflow:hidden;text-overflow:ellipsis;color:var(--color-ink-muted);font-size:11px;white-space:nowrap}
:global(.split-file-target){width:110px;flex:0 0 110px}
:global(.split-file-target .select-menu-trigger){height:28px;min-height:28px;font-size:11px}
- .dialog-footer p.invalid{color:#e0a040}
+ .dialog-footer p.invalid{color:var(--color-warning)}
diff --git a/src/lib/components/BisectDialog.svelte b/src/lib/components/BisectDialog.svelte
index 9462eeb..cde89ac 100644
--- a/src/lib/components/BisectDialog.svelte
+++ b/src/lib/components/BisectDialog.svelte
@@ -111,16 +111,16 @@
.commit-field{display:grid;gap:6px;padding:10px;border:1px solid var(--color-border-subtle);border-radius:7px;background:var(--color-surface-raised)}
.field-title{display:flex;align-items:center;gap:6px;color:var(--color-ink);font-size:11px;font-weight:700}
.field-title em{margin-left:auto;padding:1px 5px;border-radius:4px;font-size:9px;font-style:normal;font-weight:800;text-transform:uppercase}
- .good-field .field-title :global(svg),.good-field .field-title em{color:#69c986}
- .good-field .field-title em{background:color-mix(in srgb,#69c986 10%,transparent)}
- .bad-field .field-title :global(svg),.bad-field .field-title em{color:#ef737b}
- .bad-field .field-title em{background:color-mix(in srgb,#ef737b 10%,transparent)}
+ .good-field .field-title :global(svg),.good-field .field-title em{color:var(--color-success)}
+ .good-field .field-title em{background:color-mix(in srgb,var(--color-success) 10%,transparent)}
+ .bad-field .field-title :global(svg),.bad-field .field-title em{color:var(--color-danger)}
+ .bad-field .field-title em{background:color-mix(in srgb,var(--color-danger) 10%,transparent)}
.bisect-fields input{height:32px;font-family:var(--font-mono);font-size:11.5px}
.bisect-fields small{color:var(--color-ink-faint);font-size:9.5px;line-height:1.35}
- .bisect-notice{display:flex;align-items:flex-start;gap:8px;padding:9px 11px;border:1px solid color-mix(in srgb,#e2ad4e 28%,var(--color-border));border-radius:7px;color:var(--color-ink-muted);background:color-mix(in srgb,#e2ad4e 6%,var(--color-surface));font-size:11.5px;line-height:1.4}
- .bisect-notice :global(svg){flex:0 0 auto;color:#e2ad4e}
- .bisect-notice.error{border-color:color-mix(in srgb,#e45c65 40%,var(--color-border));color:#ef979d;background:color-mix(in srgb,#c92f3a 8%,var(--color-surface))}
- .bisect-notice.error :global(svg){color:#ef6972}
+ .bisect-notice{display:flex;align-items:flex-start;gap:8px;padding:9px 11px;border:1px solid color-mix(in srgb,var(--color-warning) 28%,var(--color-border));border-radius:7px;color:var(--color-ink-muted);background:color-mix(in srgb,var(--color-warning) 6%,var(--color-surface));font-size:11.5px;line-height:1.4}
+ .bisect-notice :global(svg){flex:0 0 auto;color:var(--color-warning)}
+ .bisect-notice.error{border-color:color-mix(in srgb,var(--color-danger) 40%,var(--color-border));color:#ef979d;background:color-mix(in srgb,var(--color-danger) 8%,var(--color-surface))}
+ .bisect-notice.error :global(svg){color:var(--color-danger)}
.bisect-progress{display:flex;align-items:center;justify-content:space-between;color:var(--color-ink-muted);font-size:11px}
.bisect-progress strong{color:var(--color-primary)}
.bisect-current{padding:14px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-surface)}
@@ -133,9 +133,9 @@
.verdict{min-height:58px;justify-content:flex-start;padding:8px 11px;text-align:left}
.verdict>span{display:grid;gap:2px}
.verdict small{color:var(--color-ink-faint);font-size:9.5px}
- .verdict.good{color:#69c986}.verdict.bad{color:#ef737b}.verdict.skip{color:#ddb45c}
- .bisect-result{padding:16px;border:1px solid color-mix(in srgb,#ef737b 36%,var(--color-border));border-radius:8px;background:color-mix(in srgb,#c92f3a 7%,var(--color-surface))}
- .bisect-result>div:last-child>span{color:#ef838b;font-size:10px;font-weight:800;text-transform:uppercase}
+ .verdict.good{color:var(--color-success)}.verdict.bad{color:var(--color-danger)}.verdict.skip{color:var(--color-warning)}
+ .bisect-result{padding:16px;border:1px solid color-mix(in srgb,var(--color-danger) 36%,var(--color-border));border-radius:8px;background:color-mix(in srgb,var(--color-danger) 7%,var(--color-surface))}
+ .bisect-result>div:last-child>span{color:var(--color-danger);font-size:10px;font-weight:800;text-transform:uppercase}
.result-copy{margin:0}
.bisect-footer{justify-content:flex-end;padding-block:9px}
.bisect-footer .reset{margin-right:auto}
diff --git a/src/lib/components/BranchPanel.svelte b/src/lib/components/BranchPanel.svelte
index 3790512..4fa1e89 100644
--- a/src/lib/components/BranchPanel.svelte
+++ b/src/lib/components/BranchPanel.svelte
@@ -841,17 +841,17 @@
width: 100%;
min-height: 0;
padding: 6px 8px;
- border: 1px solid color-mix(in srgb, #4eca76 26%, transparent);
+ border: 1px solid color-mix(in srgb, var(--color-success) 26%, transparent);
border-radius: 7px;
- background: linear-gradient(90deg, color-mix(in srgb, #4eca76 11%, transparent), transparent 85%);
+ background: linear-gradient(90deg, color-mix(in srgb, var(--color-success) 11%, transparent), transparent 85%);
color: var(--color-ink);
text-align: left;
}
.bp-current:hover:not(:disabled) {
- border-color: color-mix(in srgb, #4eca76 42%, transparent);
- background: linear-gradient(90deg, color-mix(in srgb, #4eca76 17%, transparent), transparent 90%);
+ border-color: color-mix(in srgb, var(--color-success) 42%, transparent);
+ background: linear-gradient(90deg, color-mix(in srgb, var(--color-success) 17%, transparent), transparent 90%);
}
- .bp-current-icon { display: grid; place-items: center; color: #4eca76; }
+ .bp-current-icon { display: grid; place-items: center; color: var(--color-success); }
.bp-current-text { display: grid; min-width: 0; gap: 1px; }
.bp-current-text strong,
.bp-current-text small {
@@ -1037,7 +1037,7 @@
width: 6px;
height: 6px;
border-radius: 999px;
- background: #4eca76;
+ background: var(--color-success);
}
/* Branch rows */
@@ -1059,8 +1059,8 @@
.bp-head-tag {
padding: 1px 5px;
border-radius: 4px;
- color: #4eca76;
- background: color-mix(in srgb, #4eca76 14%, transparent);
+ color: var(--color-success);
+ background: color-mix(in srgb, var(--color-success) 14%, transparent);
font: 700 9px/1.3 var(--font-mono);
letter-spacing: 0.04em;
}
@@ -1087,15 +1087,15 @@
.bp-branch.current {
color: var(--color-ink);
font-weight: 700;
- background: color-mix(in srgb, #4eca76 9%, transparent);
- box-shadow: inset 2px 0 0 #4eca76;
+ background: color-mix(in srgb, var(--color-success) 9%, transparent);
+ box-shadow: inset 2px 0 0 var(--color-success);
}
- .bp-branch.current .bp-icon { color: #4eca76; }
- .bp-branch.current:hover { background: color-mix(in srgb, #4eca76 14%, transparent); }
+ .bp-branch.current .bp-icon { color: var(--color-success); }
+ .bp-branch.current:hover { background: color-mix(in srgb, var(--color-success) 14%, transparent); }
.bp-branch.flash { animation: bp-flash 900ms ease-out; }
@keyframes bp-flash {
- 0%, 30% { background: color-mix(in srgb, #4eca76 30%, transparent); }
- 100% { background: color-mix(in srgb, #4eca76 9%, transparent); }
+ 0%, 30% { background: color-mix(in srgb, var(--color-success) 30%, transparent); }
+ 100% { background: color-mix(in srgb, var(--color-success) 9%, transparent); }
}
diff --git a/src/lib/components/CloneRepositoryDialog.svelte b/src/lib/components/CloneRepositoryDialog.svelte
index 706ab40..ef7023e 100644
--- a/src/lib/components/CloneRepositoryDialog.svelte
+++ b/src/lib/components/CloneRepositoryDialog.svelte
@@ -536,7 +536,7 @@
.repository-state, .integration-empty { display: grid; place-items: center; align-content: center; min-height: 188px; padding: 20px; color: var(--color-ink-faint); text-align: center; }
.repository-state { gap: 7px; font-size: 10.5px; }
.repository-state strong, .integration-empty strong { color: var(--color-ink); font-size: 11px; }
- .repository-state-error strong { color: #e86060; }
+ .repository-state-error strong { color: var(--color-danger); }
.repository-state-error span { max-width: 520px; line-height: 1.45; }
.integration-empty { min-height: 260px; gap: 8px; }
.integration-empty :global(svg) { color: var(--color-accent); }
diff --git a/src/lib/components/CommandPalette.svelte b/src/lib/components/CommandPalette.svelte
index 5d26ea9..5d5ce8e 100644
--- a/src/lib/components/CommandPalette.svelte
+++ b/src/lib/components/CommandPalette.svelte
@@ -144,7 +144,7 @@
diff --git a/src/lib/components/CreateReviewDialog.svelte b/src/lib/components/CreateReviewDialog.svelte
index e0fc748..a3a2f90 100644
--- a/src/lib/components/CreateReviewDialog.svelte
+++ b/src/lib/components/CreateReviewDialog.svelte
@@ -178,5 +178,5 @@
diff --git a/src/lib/components/GitLfsDialog.svelte b/src/lib/components/GitLfsDialog.svelte
index d1b057c..13e5332 100644
--- a/src/lib/components/GitLfsDialog.svelte
+++ b/src/lib/components/GitLfsDialog.svelte
@@ -209,7 +209,7 @@
diff --git a/src/lib/components/MergeProgressNotice.svelte b/src/lib/components/MergeProgressNotice.svelte
index cd1ba1b..c63cbec 100644
--- a/src/lib/components/MergeProgressNotice.svelte
+++ b/src/lib/components/MergeProgressNotice.svelte
@@ -24,7 +24,7 @@
diff --git a/src/lib/components/RepositoryDashboard.svelte b/src/lib/components/RepositoryDashboard.svelte
index 7b70906..d5ee581 100644
--- a/src/lib/components/RepositoryDashboard.svelte
+++ b/src/lib/components/RepositoryDashboard.svelte
@@ -244,17 +244,17 @@
diff --git a/src/lib/components/ResolveDialog.svelte b/src/lib/components/ResolveDialog.svelte
index b5bc3fb..b8ec74d 100644
--- a/src/lib/components/ResolveDialog.svelte
+++ b/src/lib/components/ResolveDialog.svelte
@@ -368,12 +368,12 @@
.conflict-workbench button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:30px;padding:5px 10px;border:1px solid var(--color-border-input);border-radius:3px;background:transparent;color:var(--color-ink);font-size:13px;font-weight:400;white-space:nowrap}
.conflict-workbench button:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-ink-faint)}.conflict-workbench button:disabled{opacity:.45;cursor:default}.conflict-workbench button:focus-visible{outline:2px solid var(--color-accent);outline-offset:-2px}
.workbench-header{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:52px;padding:10px 16px;border-bottom:1px solid var(--color-border);background:var(--app-dialog-chrome)}h2{display:flex;align-items:center;gap:10px;margin:0;font-size:15px;font-weight:600}.header-actions{display:flex;gap:12px;align-items:center}.header-actions .close-button{border:0;padding:6px}
- .workbench-body{display:flex;flex:1;min-height:0}.file-sidebar{display:flex;flex-direction:column;flex:0 0 220px;min-width:0;border-right:1px solid var(--color-border);padding:0 10px}.files-heading{padding:14px 10px 12px;font-size:13px;color:var(--color-ink-muted)}.file-list{flex:1;overflow:auto}.file-sidebar .file-item{display:flex;width:100%;gap:12px;padding:10px 10px;border:1px solid transparent;align-items:flex-start;justify-content:flex-start;text-align:left;white-space:normal}.file-sidebar .file-item.selected{background:var(--color-surface);border-left-color:var(--color-accent)}.file-copy{display:grid;gap:5px;flex:1;min-width:0}.file-copy strong{font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.file-copy small{font-size:13px;color:#eda33d}.file-item :global(svg){flex-shrink:0}.open-dot{height:11px;width:11px;background:#eda33d;border-radius:50%;margin-top:5px;flex-shrink:0}.ready,.file-copy small.ready,.file-item :global(svg.ready){color:#68c878}.file-progress{border-top:1px solid var(--color-border);padding:12px 10px;color:var(--color-ink-muted)}
+ .workbench-body{display:flex;flex:1;min-height:0}.file-sidebar{display:flex;flex-direction:column;flex:0 0 220px;min-width:0;border-right:1px solid var(--color-border);padding:0 10px}.files-heading{padding:14px 10px 12px;font-size:13px;color:var(--color-ink-muted)}.file-list{flex:1;overflow:auto}.file-sidebar .file-item{display:flex;width:100%;gap:12px;padding:10px 10px;border:1px solid transparent;align-items:flex-start;justify-content:flex-start;text-align:left;white-space:normal}.file-sidebar .file-item.selected{background:var(--color-surface);border-left-color:var(--color-accent)}.file-copy{display:grid;gap:5px;flex:1;min-width:0}.file-copy strong{font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.file-copy small{font-size:13px;color:var(--color-warning)}.file-item :global(svg){flex-shrink:0}.open-dot{height:11px;width:11px;background:var(--color-warning);border-radius:50%;margin-top:5px;flex-shrink:0}.ready,.file-copy small.ready,.file-item :global(svg.ready){color:var(--color-success)}.file-progress{border-top:1px solid var(--color-border);padding:12px 10px;color:var(--color-ink-muted)}
.conflict-main{display:flex;flex-direction:column;flex:1;min-width:0;min-height:0}.file-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:0 10px;padding:10px 6px;border-bottom:1px solid var(--color-border);min-height:48px}.file-header h3{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin:0}.file-header nav{display:flex;align-items:center;gap:12px;white-space:nowrap}.file-header nav span{margin-right:8px}.file-header nav button{padding:7px 9px}
.comparison-toolbar{display:flex;gap:10px;align-items:center;padding:8px 12px;flex-wrap:wrap}.comparison-toolbar>span{color:var(--color-ink-muted)}.bulk-actions{display:flex}.bulk-actions>button+button{border-left:0}.comparison-toolbar .manual-button{margin-left:auto;border:0;color:var(--ours);padding-right:0}
.comparison-scroll{flex:1.25;min-height:150px;overflow:auto;margin:0 10px;border:1px solid var(--color-border)}.comparison-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:start;min-width:760px}.side-heading{position:sticky;top:0;z-index:2;background:var(--app-dialog-bg);padding:7px 10px;border-top:2px solid var(--ours);font-size:13px}.theirs-heading{border-color:var(--theirs);border-left:1px solid var(--color-border)}
.code-line{display:flex;min-width:0;line-height:20px;min-height:20px;font-family:var(--font-mono);font-size:13px}.code-line>span{flex:0 0 44px;text-align:right;padding-right:14px;color:var(--color-ink-faint);user-select:none}.code-line code{font:inherit;white-space:pre;overflow-x:auto;min-width:0;flex:1;padding-right:12px}.incoming-line{border-left:1px solid var(--color-border)}.ours-line{background:color-mix(in srgb,var(--ours) 13%,transparent)}.theirs-line{background:color-mix(in srgb,var(--theirs) 13%,transparent)}.dimmed code{opacity:.45}
- .conflict-decision{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:7px 10px;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-surface) 45%,var(--app-dialog-bg));scroll-margin-top:36px}.conflict-decision strong{font-weight:500;margin-right:12px}.pending{color:#eda33d}.conflict-decision .accept-ours{color:var(--ours);border-color:color-mix(in srgb,var(--ours) 65%,var(--color-border))}.conflict-decision .accept-theirs{color:var(--theirs);border-color:color-mix(in srgb,var(--theirs) 65%,var(--color-border))}.conflict-decision .chosen{background:color-mix(in srgb,var(--ours) 10%,transparent)}.conflict-decision .accept-theirs.chosen{background:color-mix(in srgb,var(--theirs) 10%,transparent)}.decision-label{color:var(--ours);font-size:12px}.both-control{position:relative}.both-menu{position:absolute;right:0;top:100%;z-index:5;min-width:220px;padding:4px;background:var(--app-dialog-chrome);border:1px solid var(--color-border-input);box-shadow:var(--app-panel-shadow)}.both-menu button{width:100%;border:0;text-align:left;justify-content:flex-start}
+ .conflict-decision{grid-column:1/-1;display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding:7px 10px;border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-surface) 45%,var(--app-dialog-bg));scroll-margin-top:36px}.conflict-decision strong{font-weight:500;margin-right:12px}.pending{color:var(--color-warning)}.conflict-decision .accept-ours{color:var(--ours);border-color:color-mix(in srgb,var(--ours) 65%,var(--color-border))}.conflict-decision .accept-theirs{color:var(--theirs);border-color:color-mix(in srgb,var(--theirs) 65%,var(--color-border))}.conflict-decision .chosen{background:color-mix(in srgb,var(--ours) 10%,transparent)}.conflict-decision .accept-theirs.chosen{background:color-mix(in srgb,var(--theirs) 10%,transparent)}.decision-label{color:var(--ours);font-size:12px}.both-control{position:relative}.both-menu{position:absolute;right:0;top:100%;z-index:5;min-width:220px;padding:4px;background:var(--app-dialog-chrome);border:1px solid var(--color-border-input);box-shadow:var(--app-panel-shadow)}.both-menu button{width:100%;border:0;text-align:left;justify-content:flex-start}
.result-preview{display:flex;flex:1;min-height:120px;flex-direction:column;margin:10px 10px 0;border:1px solid var(--color-border)}.result-preview header{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 10px;border-bottom:1px solid var(--color-border)}.result-preview strong{font-weight:500;font-size:13px}.preview-code{overflow:auto;flex:1;padding:6px 0}.preview-code code{overflow:visible}.file-actions{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:48px;padding:8px 12px;border-top:1px solid var(--color-border)}.file-actions>span{color:var(--color-ink-muted)}.file-actions button{background:var(--color-surface)}.workbench-footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:10px 16px;border-top:1px solid var(--color-border);min-height:52px}.workbench-footer>span{color:var(--color-ink-muted)}.workbench-footer .apply-button{background:var(--color-primary);border-color:var(--color-primary);color:white;padding:6px 12px;font-weight:500}.workbench-footer .apply-button:hover:not(:disabled){background:var(--color-primary-dark)}
.empty-message{flex:1;padding:32px;color:var(--color-ink-muted)}.manual-editor{flex:1.25;min-height:150px;resize:none;margin:0 10px;padding:14px;font:13px/20px var(--font-mono);background:var(--app-input-bg);color:var(--color-ink);border:1px solid var(--color-border-input)}.binary-content{flex:1;padding:24px}.binary-content p{display:flex;gap:10px;align-items:center;color:var(--color-ink-muted)}.binary-options{display:flex;gap:16px;margin-top:24px}.binary-options button{flex:1;flex-direction:column;gap:12px;padding:24px;white-space:normal}.binary-options button.chosen{border-color:var(--ours);background:color-mix(in srgb,var(--ours) 10%,transparent)}
.conflict-backdrop{display:flex;align-items:center;justify-content:center}
diff --git a/src/lib/components/ReviewCenter.svelte b/src/lib/components/ReviewCenter.svelte
index 6553574..7dffb51 100644
--- a/src/lib/components/ReviewCenter.svelte
+++ b/src/lib/components/ReviewCenter.svelte
@@ -611,33 +611,33 @@