diff --git a/docs/cookies.html b/docs/cookies.html
index f49dab26..de3c61b7 100644
--- a/docs/cookies.html
+++ b/docs/cookies.html
@@ -8,7 +8,7 @@
diff --git a/frontend/src/components/recorder/SelectorPicker.vue b/frontend/src/components/recorder/SelectorPicker.vue
index ba522aa1..60ea663c 100644
--- a/frontend/src/components/recorder/SelectorPicker.vue
+++ b/frontend/src/components/recorder/SelectorPicker.vue
@@ -662,7 +662,7 @@ const addEffectiveIsOverride = computed(() => {
.selector-picker__item:hover,
.selector-picker__item.is-active {
- background: rgba(59, 125, 216, 0.08);
+ background: rgba(45, 99, 176, 0.08);
}
.selector-picker__item .selector-picker__dot,
@@ -694,7 +694,7 @@ const addEffectiveIsOverride = computed(() => {
font-family: var(--font-mono, monospace);
font-size: 0.85rem;
padding: 3px 6px;
- border: 1px solid var(--color-primary, #3B7DD8);
+ border: 1px solid var(--color-primary, #2D63B0);
border-radius: 3px;
outline: none;
min-width: 0;
@@ -755,14 +755,14 @@ const addEffectiveIsOverride = computed(() => {
border-radius: 3px;
padding: 4px 8px;
cursor: pointer;
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
font-family: var(--font-sans, sans-serif);
font-size: 0.82rem;
text-align: left;
}
.selector-picker__add-btn:hover {
- border-color: var(--color-primary, #3B7DD8);
- background: rgba(59, 125, 216, 0.06);
+ border-color: var(--color-primary, #2D63B0);
+ background: rgba(45, 99, 176, 0.06);
}
.selector-picker--compact .selector-picker__value {
@@ -800,7 +800,7 @@ const addEffectiveIsOverride = computed(() => {
min-width: 0;
}
.selector-picker__effective-input:focus {
- border-color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
}
.selector-picker__effective-input.is-override {
border-color: var(--color-accent, #D4883E);
diff --git a/frontend/src/components/report/ReportXmlView.vue b/frontend/src/components/report/ReportXmlView.vue
index 9c07c50f..4f1b36b3 100644
--- a/frontend/src/components/report/ReportXmlView.vue
+++ b/frontend/src/components/report/ReportXmlView.vue
@@ -294,8 +294,8 @@ onMounted(async () => {
.toolbar-btn:hover {
background: var(--color-bg-hover, #f1f5f9);
- border-color: var(--color-primary, #3B7DD8);
- color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
+ color: var(--color-primary, #2D63B0);
}
.toolbar-select {
@@ -431,7 +431,7 @@ onMounted(async () => {
.xml-view .tag-chip {
font-size: 10px;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
padding: 1px 6px;
border-radius: 8px;
diff --git a/frontend/src/components/repos/PublishModal.vue b/frontend/src/components/repos/PublishModal.vue
index 1edc0da7..4aa4fe35 100644
--- a/frontend/src/components/repos/PublishModal.vue
+++ b/frontend/src/components/repos/PublishModal.vue
@@ -258,7 +258,7 @@ function onCancel() {
}
.publish-message-input:focus {
outline: none;
- border-color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
}
.publish-conflict { display: flex; flex-direction: column; gap: 10px; }
.publish-conflict h4 { margin: 0; color: var(--color-accent, #D4883E); }
diff --git a/frontend/src/layouts/AuthLayout.vue b/frontend/src/layouts/AuthLayout.vue
index 25906159..034dad8a 100644
--- a/frontend/src/layouts/AuthLayout.vue
+++ b/frontend/src/layouts/AuthLayout.vue
@@ -101,8 +101,8 @@ const { t } = useI18n()
position: absolute;
inset: 0;
background-image:
- linear-gradient(rgba(59, 125, 216, 0.03) 1px, transparent 1px),
- linear-gradient(90deg, rgba(59, 125, 216, 0.03) 1px, transparent 1px);
+ linear-gradient(rgba(45, 99, 176, 0.03) 1px, transparent 1px),
+ linear-gradient(90deg, rgba(45, 99, 176, 0.03) 1px, transparent 1px);
background-size: 40px 40px;
z-index: 0;
}
@@ -132,7 +132,7 @@ const { t } = useI18n()
height: 56px;
width: auto;
margin-bottom: 16px;
- filter: drop-shadow(0 2px 8px rgba(59, 125, 216, 0.3));
+ filter: drop-shadow(0 2px 8px rgba(45, 99, 176, 0.3));
}
.hero-tagline {
@@ -167,13 +167,13 @@ const { t } = useI18n()
}
.feature-icon {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
width: 32px;
height: 32px;
display: flex;
align-items: center;
justify-content: center;
- background: rgba(59, 125, 216, 0.1);
+ background: rgba(45, 99, 176, 0.1);
border-radius: 8px;
flex-shrink: 0;
}
@@ -258,7 +258,7 @@ const { t } = useI18n()
.bg-circle-1 {
width: 600px;
height: 600px;
- background: radial-gradient(circle, rgba(59, 125, 216, 0.07) 0%, transparent 70%);
+ background: radial-gradient(circle, rgba(45, 99, 176, 0.07) 0%, transparent 70%);
top: -200px;
right: -150px;
animation: floatSlow 20s ease-in-out infinite;
@@ -276,7 +276,7 @@ const { t } = useI18n()
.bg-circle-3 {
width: 300px;
height: 300px;
- background: radial-gradient(circle, rgba(59, 125, 216, 0.04) 0%, transparent 70%);
+ background: radial-gradient(circle, rgba(45, 99, 176, 0.04) 0%, transparent 70%);
top: 50%;
left: 40%;
transform: translate(-50%, -50%);
diff --git a/frontend/src/layouts/DefaultLayout.vue b/frontend/src/layouts/DefaultLayout.vue
index 7426517f..ee79190f 100644
--- a/frontend/src/layouts/DefaultLayout.vue
+++ b/frontend/src/layouts/DefaultLayout.vue
@@ -78,7 +78,7 @@ onUnmounted(() => {
top: 0;
z-index: 10000;
padding: 8px 16px;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: #fff;
text-decoration: none;
font-weight: 600;
diff --git a/frontend/src/views/DashboardView.vue b/frontend/src/views/DashboardView.vue
index d2a521c6..f444035c 100644
--- a/frontend/src/views/DashboardView.vue
+++ b/frontend/src/views/DashboardView.vue
@@ -167,10 +167,10 @@ function go(to: string) {
.dashboard-card:hover {
transform: translateY(-2px);
box-shadow: 0 6px 18px rgba(16, 25, 51, 0.10);
- border-color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
}
.dashboard-card:focus-visible {
- outline: 3px solid var(--color-primary, #3B7DD8);
+ outline: 3px solid var(--color-primary, #2D63B0);
outline-offset: 3px;
}
@@ -194,7 +194,7 @@ function go(to: string) {
right: 18px;
bottom: 14px;
font-size: 18px;
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
opacity: 0.5;
transition: opacity 0.15s, transform 0.15s;
}
@@ -207,13 +207,13 @@ function go(to: string) {
reads as informational rather than a navigation target. */
.dashboard-card--tip {
cursor: default;
- background: color-mix(in srgb, var(--color-primary, #3B7DD8) 6%, var(--color-bg-card, #fff));
- border-color: color-mix(in srgb, var(--color-primary, #3B7DD8) 30%, var(--color-border, #e2e8f0));
+ background: color-mix(in srgb, var(--color-primary, #2D63B0) 6%, var(--color-bg-card, #fff));
+ border-color: color-mix(in srgb, var(--color-primary, #2D63B0) 30%, var(--color-border, #e2e8f0));
padding-bottom: 22px;
}
.dashboard-card--tip:hover {
transform: none;
box-shadow: none;
- border-color: color-mix(in srgb, var(--color-primary, #3B7DD8) 30%, var(--color-border, #e2e8f0));
+ border-color: color-mix(in srgb, var(--color-primary, #2D63B0) 30%, var(--color-border, #e2e8f0));
}
diff --git a/frontend/src/views/EmergencyBypassView.vue b/frontend/src/views/EmergencyBypassView.vue
index a60c3171..91d06718 100644
--- a/frontend/src/views/EmergencyBypassView.vue
+++ b/frontend/src/views/EmergencyBypassView.vue
@@ -160,14 +160,14 @@ onUnmounted(() => {
.bypass-admin__cta {
padding: 0.5rem 1rem;
- border: 1px solid var(--color-primary, #3B7DD8);
+ border: 1px solid var(--color-primary, #2D63B0);
border-radius: 4px;
font: inherit;
cursor: pointer;
}
.bypass-admin__cta--primary {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
}
diff --git a/frontend/src/views/EnvironmentsView.vue b/frontend/src/views/EnvironmentsView.vue
index 4cddb169..3f1530de 100644
--- a/frontend/src/views/EnvironmentsView.vue
+++ b/frontend/src/views/EnvironmentsView.vue
@@ -819,7 +819,7 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
display: inline-block;
padding: 2px 8px;
background: rgba(60, 181, 161, 0.1);
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
border-radius: 4px;
font-size: 12px;
font-family: monospace;
@@ -889,9 +889,9 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
}
.docker-build-building {
- background: rgba(59, 125, 216, 0.08);
- border: 1px solid rgba(59, 125, 216, 0.25);
- color: var(--color-primary, #3B7DD8);
+ background: rgba(45, 99, 176, 0.08);
+ border: 1px solid rgba(45, 99, 176, 0.25);
+ color: var(--color-primary, #2D63B0);
flex-direction: column;
}
@@ -942,8 +942,8 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
.docker-build-toggle {
margin-left: auto;
background: none;
- border: 1px solid rgba(59, 125, 216, 0.3);
- color: var(--color-primary, #3B7DD8);
+ border: 1px solid rgba(45, 99, 176, 0.3);
+ color: var(--color-primary, #2D63B0);
cursor: pointer;
font-size: 11px;
padding: 2px 8px;
@@ -951,14 +951,14 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
}
.docker-build-toggle:hover {
- background: rgba(59, 125, 216, 0.08);
+ background: rgba(45, 99, 176, 0.08);
}
.docker-build-dot {
width: 8px;
height: 8px;
border-radius: 50%;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
animation: pulse-dot 1.5s ease-in-out infinite;
flex-shrink: 0;
}
@@ -1103,7 +1103,7 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
}
.setup-icon {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
margin-bottom: 16px;
}
@@ -1132,7 +1132,7 @@ function isBrowserConflict(pkg: { name: string; group?: string }): boolean {
display: inline-block;
padding: 4px 12px;
background: rgba(60, 181, 161, 0.1);
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
border-radius: 20px;
font-size: 12px;
font-weight: 500;
diff --git a/frontend/src/views/ExecutionView.vue b/frontend/src/views/ExecutionView.vue
index b724e54b..ba0ed060 100644
--- a/frontend/src/views/ExecutionView.vue
+++ b/frontend/src/views/ExecutionView.vue
@@ -737,7 +737,7 @@ function isTerminal(status: string): boolean {
.selected-row {
background: rgba(60, 181, 161, 0.08) !important;
- border-left: 3px solid var(--color-primary, #3B7DD8);
+ border-left: 3px solid var(--color-primary, #2D63B0);
}
.detail-card {
@@ -772,7 +772,7 @@ function isTerminal(status: string): boolean {
.page-size-select:focus {
outline: none;
- border-color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
box-shadow: 0 0 0 2px rgba(60, 181, 161, 0.15);
}
@@ -838,7 +838,7 @@ function isTerminal(status: string): boolean {
}
.env-prompt-icon {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.env-prompt-body p {
@@ -859,7 +859,7 @@ function isTerminal(status: string): boolean {
display: inline-block;
padding: 3px 10px;
background: rgba(60, 181, 161, 0.1);
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
border-radius: 20px;
font-size: 12px;
font-weight: 500;
@@ -887,7 +887,7 @@ function isTerminal(status: string): boolean {
.icon-btn:hover {
background: var(--color-bg-hover, #f0f2f5);
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.status-cell {
@@ -900,7 +900,7 @@ function isTerminal(status: string): boolean {
width: 14px;
height: 14px;
border: 2px solid var(--color-border, #e2e8f0);
- border-top-color: var(--color-primary, #3B7DD8);
+ border-top-color: var(--color-primary, #2D63B0);
border-radius: 50%;
animation: spin 0.8s linear infinite;
}
@@ -939,8 +939,8 @@ function isTerminal(status: string): boolean {
}
.tab-btn.active {
- color: var(--color-primary, #3B7DD8);
- border-bottom-color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
+ border-bottom-color: var(--color-primary, #2D63B0);
}
.tab-badge {
@@ -1034,7 +1034,7 @@ function isTerminal(status: string): boolean {
}
.rebuild-checkbox input[type="checkbox"] {
- accent-color: var(--color-primary, #3B7DD8);
+ accent-color: var(--color-primary, #2D63B0);
cursor: pointer;
}
diff --git a/frontend/src/views/ExplorerView.vue b/frontend/src/views/ExplorerView.vue
index 20a7b4ec..751edd42 100644
--- a/frontend/src/views/ExplorerView.vue
+++ b/frontend/src/views/ExplorerView.vue
@@ -1686,7 +1686,7 @@ const flatNodes = computed(() => {
}
.env-prompt-icon {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.env-prompt-body p {
@@ -1707,7 +1707,7 @@ const flatNodes = computed(() => {
display: inline-block;
padding: 3px 10px;
background: rgba(60, 181, 161, 0.1);
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
border-radius: 20px;
font-size: 12px;
font-weight: 500;
@@ -1801,7 +1801,7 @@ const flatNodes = computed(() => {
position: absolute;
left: 0; top: 0; bottom: 0;
width: 30%;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
opacity: 0.15;
animation: keyword-loading-slide 1.5s ease-in-out infinite;
}
diff --git a/frontend/src/views/FirstLoginView.vue b/frontend/src/views/FirstLoginView.vue
index 54865e65..ae60f9d5 100644
--- a/frontend/src/views/FirstLoginView.vue
+++ b/frontend/src/views/FirstLoginView.vue
@@ -154,14 +154,14 @@ async function dismissAndGo(path: string) {
}
.welcome-cta--primary {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
}
.welcome-cta--secondary {
background: transparent;
- border-color: var(--color-primary, #3B7DD8);
- color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
+ color: var(--color-primary, #2D63B0);
}
.welcome-skip {
diff --git a/frontend/src/views/LoginView.vue b/frontend/src/views/LoginView.vue
index a5aafa8f..5782efcf 100644
--- a/frontend/src/views/LoginView.vue
+++ b/frontend/src/views/LoginView.vue
@@ -135,7 +135,7 @@ async function handleLogin() {
justify-content: center;
color: white;
margin-bottom: 14px;
- box-shadow: 0 4px 12px rgba(59, 125, 216, 0.3);
+ box-shadow: 0 4px 12px rgba(45, 99, 176, 0.3);
}
.login-header h2 {
@@ -160,7 +160,7 @@ async function handleLogin() {
.login-card .form-input:focus {
background: #ffffff;
border-color: var(--color-primary);
- box-shadow: 0 0 0 3px rgba(59, 125, 216, 0.12);
+ box-shadow: 0 0 0 3px rgba(45, 99, 176, 0.12);
transform: translateY(-1px);
}
diff --git a/frontend/src/views/RecordingLiveView.vue b/frontend/src/views/RecordingLiveView.vue
index 83a58c4d..458e34a1 100644
--- a/frontend/src/views/RecordingLiveView.vue
+++ b/frontend/src/views/RecordingLiveView.vue
@@ -520,7 +520,7 @@ const uptimeLabel = computed(() => {
.recording-live__status.is-browser_ready { background: rgba(44, 152, 70, 0.15); color: #1a5c2a; }
.recording-live__status.is-browser_restarting { background: rgba(212, 136, 62, 0.2); color: #6e3d09; }
.recording-live__status.is-browser_crashed { background: #fee2e2; color: #7f1d1d; }
-.recording-live__status.is-done { background: rgba(59, 125, 216, 0.15); color: #1a3c7a; }
+.recording-live__status.is-done { background: rgba(45, 99, 176, 0.15); color: #1a3c7a; }
.recording-live__status.is-error { background: #fee2e2; color: #7f1d1d; }
/* Story RECORDER-VIS-1 — phase card next to the heading. */
@@ -545,8 +545,8 @@ const uptimeLabel = computed(() => {
color: var(--color-text-muted, #5A6380);
}
.recording-live__restart-browser:hover:not(:disabled) {
- border-color: var(--color-primary, #3B7DD8);
- color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
+ color: var(--color-primary, #2D63B0);
}
.recording-live__restart-browser:disabled {
opacity: 0.45;
@@ -607,7 +607,7 @@ const uptimeLabel = computed(() => {
.recording-live__keyword {
font-weight: 600;
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.recording-live__args {
diff --git a/frontend/src/views/ReportDetailView.vue b/frontend/src/views/ReportDetailView.vue
index 84c935f6..496efe70 100644
--- a/frontend/src/views/ReportDetailView.vue
+++ b/frontend/src/views/ReportDetailView.vue
@@ -489,8 +489,8 @@ async function copyPatch(unifiedDiff: string) {
}
.tab-btn.active {
- color: var(--color-primary, #3B7DD8);
- border-bottom-color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
+ border-bottom-color: var(--color-primary, #2D63B0);
}
.tab-content {
@@ -555,11 +555,11 @@ async function copyPatch(unifiedDiff: string) {
/* AI Analysis Card */
.analysis-card {
- border-left: 4px solid var(--color-primary, #3B7DD8);
+ border-left: 4px solid var(--color-primary, #2D63B0);
}
.analysis-header h3 {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.analysis-body {
diff --git a/frontend/src/views/ReposView.vue b/frontend/src/views/ReposView.vue
index ee9ecdad..f92f1173 100644
--- a/frontend/src/views/ReposView.vue
+++ b/frontend/src/views/ReposView.vue
@@ -1049,10 +1049,10 @@ async function removeMember(member: ProjectMember) {
}
.branch-fallback-btn {
padding: 10px 16px;
- border: 2px solid var(--color-primary, #3B7DD8);
+ border: 2px solid var(--color-primary, #2D63B0);
border-radius: 8px;
background: #EBF4FF;
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
font-size: 14px;
font-weight: 600;
cursor: pointer;
@@ -1060,7 +1060,7 @@ async function removeMember(member: ProjectMember) {
transition: background 0.15s;
}
.branch-fallback-btn:hover {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: #fff;
}
@@ -1092,14 +1092,14 @@ async function removeMember(member: ProjectMember) {
}
.repo-title-link:hover h3,
.repo-title-link:focus-visible h3 {
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.repo-title-link:hover p,
.repo-title-link:focus-visible p {
text-decoration: underline;
}
.repo-title-link:focus-visible {
- outline: 2px solid var(--color-primary, #3B7DD8);
+ outline: 2px solid var(--color-primary, #2D63B0);
outline-offset: 4px;
border-radius: 4px;
}
@@ -1152,15 +1152,15 @@ async function removeMember(member: ProjectMember) {
}
.info-tip:hover,
.info-tip:focus {
- color: var(--color-primary, #3B7DD8);
- border-color: var(--color-primary, #3B7DD8);
- background: color-mix(in srgb, var(--color-primary, #3B7DD8) 14%, transparent);
+ color: var(--color-primary, #2D63B0);
+ border-color: var(--color-primary, #2D63B0);
+ background: color-mix(in srgb, var(--color-primary, #2D63B0) 14%, transparent);
outline: none;
}
.info-tip[aria-expanded="true"] {
- color: var(--color-primary, #3B7DD8);
- border-color: var(--color-primary, #3B7DD8);
- background: color-mix(in srgb, var(--color-primary, #3B7DD8) 18%, transparent);
+ color: var(--color-primary, #2D63B0);
+ border-color: var(--color-primary, #2D63B0);
+ background: color-mix(in srgb, var(--color-primary, #2D63B0) 18%, transparent);
}
/* Click-popover that surfaces the help text. Pinned right of the
icon, fixed max-width so long German strings wrap instead of
@@ -1286,12 +1286,12 @@ async function removeMember(member: ProjectMember) {
height: 16px;
margin-top: 4px;
cursor: pointer;
- accent-color: var(--color-primary, #3B7DD8);
+ accent-color: var(--color-primary, #2D63B0);
flex-shrink: 0;
}
.card-selected {
- outline: 2px solid var(--color-primary, #3B7DD8);
+ outline: 2px solid var(--color-primary, #2D63B0);
outline-offset: -2px;
background: rgba(60, 181, 161, 0.04);
}
diff --git a/frontend/src/views/SsoLinkConsentView.vue b/frontend/src/views/SsoLinkConsentView.vue
index 5084c194..1e3f764c 100644
--- a/frontend/src/views/SsoLinkConsentView.vue
+++ b/frontend/src/views/SsoLinkConsentView.vue
@@ -122,20 +122,20 @@ async function submit(approve: boolean) {
.sso-consent__cta {
padding: 0.6rem 1.5rem;
- border: 1px solid var(--color-primary, #3B7DD8);
+ border: 1px solid var(--color-primary, #2D63B0);
border-radius: 4px;
font: inherit;
cursor: pointer;
}
.sso-consent__cta--primary {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
}
.sso-consent__cta--secondary {
background: transparent;
- color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
}
.sso-consent__cta:disabled {
diff --git a/frontend/src/views/StatsView.vue b/frontend/src/views/StatsView.vue
index 477d595e..de21a183 100644
--- a/frontend/src/views/StatsView.vue
+++ b/frontend/src/views/StatsView.vue
@@ -1260,8 +1260,8 @@ function formatDate(d: string | null) {
background: var(--color-bg-hover, #f8fafc);
}
.tab-btn.active {
- color: var(--color-primary, #3B7DD8);
- border-bottom-color: var(--color-primary, #3B7DD8);
+ color: var(--color-primary, #2D63B0);
+ border-bottom-color: var(--color-primary, #2D63B0);
}
/* Progress */
@@ -1282,7 +1282,7 @@ function formatDate(d: string | null) {
}
.progress-bar {
height: 100%;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
border-radius: 4px;
transition: width 0.3s ease;
}
@@ -1316,7 +1316,7 @@ function formatDate(d: string | null) {
}
.lib-bar-label { width: 140px; font-size: 13px; text-align: right; flex-shrink: 0; }
.lib-bar-track { flex: 1; height: 18px; background: var(--color-bg, #f4f7fa); border-radius: 3px; overflow: hidden; }
-.lib-bar-fill { height: 100%; background: var(--color-primary, #3B7DD8); border-radius: 3px; transition: width 0.3s; }
+.lib-bar-fill { height: 100%; background: var(--color-primary, #2D63B0); border-radius: 3px; transition: width 0.3s; }
.lib-bar-value { width: 100px; font-size: 12px; color: var(--color-text-muted); }
/* Histogram */
@@ -1347,7 +1347,7 @@ function formatDate(d: string | null) {
font-size: 13px;
}
.tag-count {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
border-radius: 10px;
padding: 1px 6px;
@@ -1417,7 +1417,7 @@ function formatDate(d: string | null) {
min-height: 80px;
}
.treemap-block {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
border-radius: 6px;
padding: 10px;
@@ -1522,7 +1522,7 @@ function formatDate(d: string | null) {
}
.heal-kpi__bar {
flex: 1;
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
border-radius: 2px 2px 0 0;
min-height: 2px;
transition: height 0.2s ease;
@@ -1560,9 +1560,9 @@ function formatDate(d: string | null) {
margin-left: 4px;
}
.quarantine-btn:hover:not(:disabled) {
- background: var(--color-primary, #3B7DD8);
+ background: var(--color-primary, #2D63B0);
color: white;
- border-color: var(--color-primary, #3B7DD8);
+ border-color: var(--color-primary, #2D63B0);
}
.quarantine-btn:disabled {
opacity: 0.5;