From 7ee02e8652ec269bf15f221a94345032a49bbbce Mon Sep 17 00:00:00 2001 From: Christoph Brandau Date: Fri, 18 Sep 2026 10:50:32 +0200 Subject: [PATCH] refactor(theme): centralize status colors and overlay tints in CSS vars Introduce semantic theme variables (e.g. --color-success, --color-danger, --color-warning, --color-info) and a set of overlay/tint/shadow variables (--app-hover-tint, --app-raise-tint, --app-soft-tint, --app-overlay-shadow, --app-menu-shadow, --app-float-shadow, etc.) and use them throughout app.css in place of many hard-coded color, background and shadow values. This change: - replaces literal color tokens used for badges, pills, buttons, menus, toasts, borders and file icons with the new semantic variables - switches several box-shadow and overlay usages to the new shadow vars - harmonizes light-theme surface, border and scrollbar values to explicit variables for easier maintenance No structural or behavioral changes; this is purely a visual/theming refactor to make future theme adjustments and dark/light parity simpler. --- src/app.css | 623 ++++++++++-------- src/lib/RepoTabs.svelte | 2 +- src/lib/components/AiCommitSplitDialog.svelte | 4 +- src/lib/components/BisectDialog.svelte | 22 +- src/lib/components/BranchPanel.svelte | 28 +- .../components/CloneRepositoryDialog.svelte | 2 +- src/lib/components/CommandPalette.svelte | 4 +- src/lib/components/CommitNoteDialog.svelte | 8 +- src/lib/components/ConfirmDialog.svelte | 6 +- src/lib/components/CreateIssueDialog.svelte | 6 +- src/lib/components/CreateReviewDialog.svelte | 2 +- src/lib/components/GitLfsDialog.svelte | 2 +- src/lib/components/HelpOverlay.svelte | 6 +- .../components/IntegrationSettingsPage.svelte | 4 +- src/lib/components/MergeProgressNotice.svelte | 4 +- src/lib/components/RepositoryDashboard.svelte | 20 +- src/lib/components/ResolveDialog.svelte | 4 +- src/lib/components/ReviewCenter.svelte | 56 +- 18 files changed, 432 insertions(+), 371 deletions(-) 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 @@