diff --git a/frontend/src/features/history/ui/HistoryList.vue b/frontend/src/features/history/ui/HistoryList.vue
index cb89b5e..ffbafa0 100644
--- a/frontend/src/features/history/ui/HistoryList.vue
+++ b/frontend/src/features/history/ui/HistoryList.vue
@@ -13,7 +13,14 @@
@@ -81,20 +88,26 @@ function duration(analysis: Analysis) {
.history-items {
display: flex;
flex-direction: column;
- gap: 2px;
+ gap: 6px;
+ padding: 12px;
}
.history-item {
display: flex;
align-items: center;
justify-content: space-between;
- padding: 14px 20px;
- border-bottom: 1px solid var(--border);
- transition: background var(--transition);
+ padding: 12px 16px;
+ background: var(--bg-surface);
+ border: 1px solid var(--border);
+ border-radius: var(--radius-sm);
+ transition: all 150ms ease;
cursor: pointer;
}
-.history-item:hover { background: var(--bg-hover); }
+.history-item:hover {
+ border-color: var(--accent);
+ background: var(--bg-elevated);
+}
.item-main { flex: 1; min-width: 0; }
@@ -122,9 +135,14 @@ function duration(analysis: Analysis) {
flex-shrink: 0;
}
+.status-dot {
+ width: 8px;
+ height: 8px;
+}
+
.status-pending { background: rgba(234, 179, 8, 0.15); color: var(--warning); }
.status-running { background: rgba(59, 130, 246, 0.15); color: var(--info); }
-.status-completed { background: rgba(34, 197, 94, 0.15); color: var(--success); }
+.status-completed { background: none; color: var(--success); padding: 0; }
.status-failed { background: rgba(239, 68, 68, 0.15); color: var(--error); }
.item-meta {
diff --git a/frontend/src/features/settings/ui/SettingsPanel.vue b/frontend/src/features/settings/ui/SettingsPanel.vue
index 356585d..e6739a9 100644
--- a/frontend/src/features/settings/ui/SettingsPanel.vue
+++ b/frontend/src/features/settings/ui/SettingsPanel.vue
@@ -40,14 +40,14 @@ const { t } = useI18n()
.settings-panel {
display: flex;
flex-direction: column;
- gap: 20px;
- max-width: 500px;
+ gap: 24px;
+ max-width: 320px;
}
.setting-group {
display: flex;
flex-direction: column;
- gap: 6px;
+ gap: 8px;
}
.setting-label {
@@ -59,33 +59,36 @@ const { t } = useI18n()
}
.setting-toggle {
- display: flex;
+ display: inline-flex;
+ gap: 2px;
background: var(--bg-elevated);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
- overflow: hidden;
+ padding: 3px;
+ width: fit-content;
}
.setting-toggle button {
- flex: 1;
- padding: 8px 16px;
+ padding: 6px 16px;
font-size: 13px;
font-weight: 500;
- color: var(--text-secondary);
+ color: var(--text-muted);
background: transparent;
border: none;
+ border-radius: calc(var(--radius-sm) - 2px);
cursor: pointer;
- transition: all var(--transition);
+ transition: all 200ms ease;
}
.setting-toggle button:hover {
- color: var(--text);
+ color: var(--text-secondary);
background: var(--bg-hover);
}
.setting-toggle button.active {
background: var(--accent-muted);
color: var(--accent);
+ font-weight: 600;
}
.setting-input {
diff --git a/frontend/src/pages/DocumentsPage.vue b/frontend/src/pages/DocumentsPage.vue
index a0fb581..8875995 100644
--- a/frontend/src/pages/DocumentsPage.vue
+++ b/frontend/src/pages/DocumentsPage.vue
@@ -89,19 +89,25 @@ onMounted(() => {
.doc-items {
display: flex;
flex-direction: column;
- gap: 2px;
+ gap: 6px;
+ padding: 12px;
}
.doc-row {
display: flex;
align-items: center;
justify-content: space-between;
- padding: 14px 20px;
- border-bottom: 1px solid var(--border);
- transition: background var(--transition);
+ padding: 12px 16px;
+ background: var(--bg-surface);
+ border: 1px solid var(--border);
+ border-radius: var(--radius-sm);
+ transition: all 150ms ease;
}
-.doc-row:hover { background: var(--bg-hover); }
+.doc-row:hover {
+ border-color: var(--accent);
+ background: var(--bg-elevated);
+}
.doc-row-info {
display: flex;
diff --git a/frontend/src/pages/HomePage.vue b/frontend/src/pages/HomePage.vue
index 8c7241f..8b054e7 100644
--- a/frontend/src/pages/HomePage.vue
+++ b/frontend/src/pages/HomePage.vue
@@ -17,10 +17,12 @@
+
{{ docCount }}
{{ t('home.documents') }}
+
{{ analysisCount }}
{{ t('home.analyses') }}
@@ -171,10 +173,21 @@ onMounted(() => {
}
.stat-card:hover {
- border-color: var(--border-light);
+ border-color: var(--accent);
background: var(--bg-elevated);
}
+.stat-icon {
+ width: 20px;
+ height: 20px;
+ color: var(--text-muted);
+ margin-bottom: 4px;
+}
+
+.stat-card:hover .stat-icon {
+ color: var(--accent);
+}
+
.stat-value {
font-size: 28px;
font-weight: 700;
diff --git a/frontend/src/pages/StudioPage.vue b/frontend/src/pages/StudioPage.vue
index 072719d..2bd6791 100644
--- a/frontend/src/pages/StudioPage.vue
+++ b/frontend/src/pages/StudioPage.vue
@@ -551,12 +551,17 @@ onBeforeUnmount(() => {
display: flex;
align-items: center;
gap: 20px;
+ min-width: 0;
}
.topbar-title {
font-size: 15px;
font-weight: 600;
color: var(--text);
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ min-width: 0;
}
.mode-toggle {