+
);
diff --git a/app/styles/components/dify-dataset-manager/index.css b/app/styles/components/dify-dataset-manager/index.css
index 1d41ce8..50f8bc9 100644
--- a/app/styles/components/dify-dataset-manager/index.css
+++ b/app/styles/components/dify-dataset-manager/index.css
@@ -1,23 +1,896 @@
/**
- * 知识库管理器 - 白色卡片风格
+ * 知识库管理器 - Dify 风格布局
*/
-/* 外层容器 - 直接占满,与大模型对话一致 */
+/* 外层容器 */
.dataset-manager-wrapper {
display: flex;
flex-direction: column;
height: 100%;
+ max-height: 100%;
background: #fff;
overflow: hidden;
border-radius: 0.5rem;
}
+/* ============================================================================
+ * 左右分栏布局
+ * ============================================================================ */
+
+.dataset-layout {
+ display: flex;
+ flex: 1;
+ min-height: 0;
+ height: 100%;
+}
+
+/* 左侧侧边栏 */
+.dataset-sidebar {
+ width: 220px;
+ min-width: 220px;
+ background: #fafafa;
+ border-right: 1px solid #f0f0f0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+}
+
+/* 返回按钮 */
+.sidebar-back {
+ padding: 12px 16px;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+.sidebar-back .back-btn {
+ color: #666;
+ font-size: 13px;
+ padding: 4px 8px;
+ height: auto;
+}
+
+.sidebar-back .back-btn:hover {
+ color: rgb(0 104 74);
+ background: rgba(0, 104, 74, 0.08);
+}
+
+/* 知识库信息头部 */
+.sidebar-header {
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ padding: 20px 16px 12px;
+}
+
+.dataset-icon {
+ width: 40px;
+ height: 40px;
+ background: linear-gradient(135deg, rgb(0 104 74) 0%, rgb(0 140 100) 100%);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ font-size: 18px;
+ flex-shrink: 0;
+}
+
+.dataset-info {
+ flex: 1;
+ min-width: 0;
+ overflow: hidden;
+}
+
+.dataset-name {
+ font-size: 14px;
+ font-weight: 600;
+ color: #1a1a1a;
+ margin: 0 0 4px 0;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.dataset-type {
+ font-size: 12px;
+ color: #999;
+}
+
+/* 统计信息 */
+.sidebar-stats {
+ padding: 0 16px 16px;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+.stat-item {
+ font-size: 12px;
+ color: #666;
+}
+
+/* 导航菜单 */
+.sidebar-menu {
+ flex: 1;
+ padding: 12px 8px;
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.menu-item {
+ display: flex;
+ align-items: center;
+ gap: 10px;
+ padding: 10px 12px;
+ border: none;
+ background: transparent;
+ border-radius: 6px;
+ cursor: pointer;
+ transition: all 0.2s;
+ width: 100%;
+ text-align: left;
+}
+
+.menu-item:hover {
+ background: rgba(0, 104, 74, 0.08);
+}
+
+.menu-item.active {
+ background: rgba(0, 104, 74, 0.12);
+ color: rgb(0 104 74);
+}
+
+.menu-icon {
+ font-size: 16px;
+ color: #666;
+ display: flex;
+ align-items: center;
+}
+
+.menu-item.active .menu-icon {
+ color: rgb(0 104 74);
+}
+
+.menu-label {
+ font-size: 14px;
+ color: #333;
+}
+
+.menu-item.active .menu-label {
+ color: rgb(0 104 74);
+ font-weight: 500;
+}
+
+/* 右侧主内容区 */
+.dataset-main {
+ flex: 1;
+ min-width: 0;
+ display: flex;
+ flex-direction: column;
+ overflow: hidden;
+ background: #fff;
+}
+
+/* ============================================================================
+ * 通用页面样式
+ * ============================================================================ */
+
+/* 页面头部 */
+.page-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ padding: 20px 24px 16px;
+ border-bottom: 1px solid #f0f0f0;
+ flex-shrink: 0;
+ gap: 16px;
+}
+
+.page-header h1 {
+ font-size: 18px;
+ font-weight: 600;
+ color: #1a1a1a;
+ margin: 0 0 4px 0;
+}
+
+.page-description {
+ font-size: 13px;
+ color: #666;
+ margin: 0;
+}
+
+/* 工具栏 */
+.detail-toolbar {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ padding: 16px 24px;
+ flex-shrink: 0;
+}
+
+/* 表格容器 */
+.detail-table-container {
+ flex: 1;
+ min-height: 0;
+ padding: 0 24px 24px;
+ overflow-y: auto;
+}
+
+/* 加载状态 */
+.loading-state {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ padding: 60px 0;
+ gap: 16px;
+}
+
+.loading-text {
+ color: #999;
+ font-size: 14px;
+}
+
+/* 空状态 */
+.empty-state {
+ padding: 60px 0;
+}
+
+/* ============================================================================
+ * 召回测试页面样式
+ * ============================================================================ */
+
+.retrieve-test-page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+}
+
+.retrieve-settings {
+ margin: 16px 24px;
+ flex-shrink: 0;
+}
+
+.search-row {
+ display: flex;
+ gap: 12px;
+ margin-bottom: 16px;
+}
+
+.search-row .search-input {
+ flex: 1;
+}
+
+.options-row {
+ display: flex;
+ gap: 24px;
+ align-items: center;
+ flex-wrap: wrap;
+}
+
+.option-item {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.option-label {
+ font-size: 13px;
+ color: #666;
+}
+
+.option-value {
+ font-size: 13px;
+ color: #333;
+ min-width: 24px;
+}
+
+.retrieve-results {
+ flex: 1;
+ min-height: 0;
+ padding: 0 24px 24px;
+ overflow-y: auto;
+}
+
+.results-header {
+ padding: 8px 0 16px;
+ font-size: 13px;
+ color: #666;
+}
+
+/* ============================================================================
+ * 设置页面样式
+ * ============================================================================ */
+
+.dataset-settings-page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+}
+
+.settings-card {
+ margin: 16px 24px;
+ flex-shrink: 0;
+}
+
+.settings-loading {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+}
+
+.readonly-info {
+ margin-top: 24px;
+ padding-top: 24px;
+ border-top: 1px solid #f0f0f0;
+}
+
+.readonly-info .info-item {
+ display: flex;
+ align-items: center;
+ padding: 8px 0;
+}
+
+.readonly-info .info-label {
+ width: 120px;
+ font-size: 13px;
+ color: #666;
+}
+
+.readonly-info .info-value {
+ font-size: 13px;
+ color: #333;
+}
+
+.form-actions {
+ display: flex;
+ justify-content: flex-end;
+ gap: 12px;
+ margin-top: 24px;
+ padding-top: 24px;
+ border-top: 1px solid #f0f0f0;
+}
+
+/* ============================================================================
+ * 文档列表页面样式
+ * ============================================================================ */
+
+.document-list-page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+}
+
+.document-list-page .page-header {
+ flex-shrink: 0;
+}
+
+.document-list-page .header-left {
+ flex: 1;
+}
+
+.document-list-page .header-actions {
+ display: flex;
+ gap: 12px;
+ align-items: center;
+}
+
+.document-search-bar {
+ padding: 16px 24px;
+ flex-shrink: 0;
+}
+
+.document-table-wrapper {
+ flex: 1;
+ min-height: 0;
+ padding: 0 24px;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+}
+
+.document-table-wrapper .document-table {
+ flex: 1;
+ min-height: 0;
+}
+
+.document-table-wrapper .document-table .ant-table-wrapper,
+.document-table-wrapper .document-table .ant-table,
+.document-table-wrapper .document-table .ant-table-container {
+ height: 100%;
+}
+
+.document-table-wrapper .document-table .ant-table-body {
+ max-height: none !important;
+ overflow-y: auto !important;
+}
+
+.document-list-page .document-pagination {
+ padding: 12px 24px;
+ margin-top: 0;
+}
+
+/* ============================================================================
+ * 文档详情页面样式 - Dify 布局风格 + 项目主题色
+ * ============================================================================ */
+
+.document-detail-page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ overflow: hidden;
+ background: #fff;
+}
+
+.document-detail-empty {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ background: #fff;
+}
+
+.document-detail-content {
+ display: flex;
+ flex: 1;
+ min-height: 0;
+ overflow: hidden;
+}
+
+/* 左侧设置面板 */
+.settings-panel {
+ width: 420px;
+ min-width: 420px;
+ background: #fafafa;
+ padding: 24px;
+ overflow-y: auto;
+ border-right: 1px solid #f0f0f0;
+}
+
+.settings-panel .ant-divider {
+ border-color: #e5e5e5;
+ margin: 20px 0;
+}
+
+.settings-section {
+ margin-bottom: 8px;
+}
+
+.section-title {
+ font-size: 14px;
+ font-weight: 600;
+ color: #1a1a1a;
+ margin: 0 0 16px 0;
+}
+
+/* 分块模式选择器 */
+.mode-selector {
+ margin-bottom: 20px;
+}
+
+.mode-option {
+ display: flex;
+ align-items: flex-start;
+ gap: 12px;
+ padding: 12px 16px;
+ background: #fff;
+ border: 2px solid #e5e5e5;
+ border-radius: 8px;
+ cursor: pointer;
+ transition: all 0.2s;
+}
+
+.mode-option:hover {
+ border-color: rgba(0, 104, 74, 0.5);
+}
+
+.mode-option.active {
+ border-color: #00684a;
+ background: rgba(0, 104, 74, 0.05);
+}
+
+.mode-icon {
+ width: 36px;
+ height: 36px;
+ background: linear-gradient(135deg, #00684a 0%, #008c64 100%);
+ border-radius: 8px;
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ color: #fff;
+ font-size: 18px;
+ flex-shrink: 0;
+}
+
+.mode-info {
+ display: flex;
+ flex-direction: column;
+ gap: 4px;
+}
+
+.mode-name {
+ font-size: 14px;
+ font-weight: 500;
+ color: #1a1a1a;
+}
+
+.mode-desc {
+ font-size: 12px;
+ color: #666;
+ line-height: 1.4;
+}
+
+/* 设置项 */
+.setting-item {
+ margin-bottom: 16px;
+}
+
+.setting-label {
+ display: flex;
+ align-items: center;
+ gap: 6px;
+ font-size: 13px;
+ color: #333;
+ margin-bottom: 8px;
+}
+
+.help-icon {
+ color: #999;
+ font-size: 12px;
+ cursor: help;
+}
+
+.setting-input {
+ background: #fff !important;
+ border-color: #d9d9d9 !important;
+ color: #333 !important;
+}
+
+.setting-input:hover,
+.setting-input:focus {
+ border-color: #00684a !important;
+}
+
+.setting-input::placeholder {
+ color: #999;
+}
+
+.setting-input-with-suffix {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.setting-input-number {
+ flex: 1;
+ background: #fff !important;
+ border-color: #d9d9d9 !important;
+}
+
+.setting-input-number .ant-input-number-input {
+ color: #333 !important;
+}
+
+.setting-input-number:hover,
+.setting-input-number.ant-input-number-focused {
+ border-color: #00684a !important;
+}
+
+.input-suffix {
+ font-size: 13px;
+ color: #666;
+}
+
+/* 复选框组 */
+.checkbox-group {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.checkbox-group .ant-checkbox-wrapper {
+ color: #333;
+ font-size: 13px;
+}
+
+.checkbox-group .ant-checkbox-checked .ant-checkbox-inner {
+ background-color: #00684a;
+ border-color: #00684a;
+}
+
+/* Q&A 分段行 */
+.qa-segment-row {
+ display: flex;
+ align-items: center;
+ gap: 12px;
+}
+
+.qa-segment-row .ant-checkbox-wrapper {
+ color: #333;
+ font-size: 13px;
+}
+
+.qa-segment-row .ant-select {
+ min-width: 100px;
+}
+
+.qa-segment-row .ant-select-selector {
+ background: #fff !important;
+ border-color: #d9d9d9 !important;
+ color: #333 !important;
+}
+
+/* 设置操作按钮 */
+.settings-actions {
+ display: flex;
+ gap: 12px;
+ margin-top: 20px;
+}
+
+.settings-actions .ant-btn {
+ background: #fff;
+ border-color: #d9d9d9;
+ color: #333;
+}
+
+.settings-actions .ant-btn:hover {
+ border-color: #00684a;
+ color: #00684a;
+}
+
+/* 保存操作按钮 */
+.save-actions {
+ margin-top: 20px;
+}
+
+.save-actions .ant-btn-primary {
+ background: #00684a;
+ border-color: #00684a;
+}
+
+.save-actions .ant-btn-primary:hover {
+ background: #005a3f;
+ border-color: #005a3f;
+}
+
+.save-actions .ant-btn-default {
+ background: #fff;
+ border-color: #d9d9d9;
+ color: #333;
+}
+
+.save-actions .ant-btn-default:hover {
+ border-color: #00684a;
+ color: #00684a;
+}
+
+/* 右侧预览面板 */
+.preview-panel {
+ flex: 1;
+ min-width: 0;
+ background: #f5f5f5;
+ padding: 24px;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+}
+
+.preview-card {
+ flex: 1;
+ display: flex;
+ flex-direction: column;
+ background: #fff !important;
+ border: 1px solid #e5e5e5 !important;
+ min-height: 0;
+ overflow: hidden;
+}
+
+.preview-card > .ant-card-head {
+ background: #fafafa;
+ border-bottom: 1px solid #e5e5e5;
+ padding: 12px 16px;
+ min-height: auto;
+ flex-shrink: 0;
+}
+
+.preview-card > .ant-card-head .ant-card-head-title {
+ padding: 0;
+}
+
+.preview-card > .ant-card-body {
+ flex: 1;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding: 16px;
+ min-height: 0;
+ max-height: 100%;
+}
+
+/* 滚动条样式 */
+.preview-card > .ant-card-body::-webkit-scrollbar {
+ width: 6px;
+}
+
+.preview-card > .ant-card-body::-webkit-scrollbar-thumb {
+ background: #d9d9d9;
+ border-radius: 3px;
+}
+
+.preview-card > .ant-card-body::-webkit-scrollbar-thumb:hover {
+ background: #bfbfbf;
+}
+
+.preview-card > .ant-card-body::-webkit-scrollbar-track {
+ background: transparent;
+}
+
+.preview-header {
+ display: flex;
+ align-items: center;
+ gap: 16px;
+ color: #1a1a1a;
+ font-size: 14px;
+}
+
+.preview-header .ant-select-selector {
+ background: #fff !important;
+ border-color: #d9d9d9 !important;
+ color: #333 !important;
+}
+
+.segment-count {
+ color: #666;
+ font-size: 12px;
+}
+
+/* 预览加载状态 */
+.preview-loading {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ gap: 16px;
+}
+
+.preview-loading .loading-text {
+ color: #666;
+}
+
+/* 预览空状态 */
+.preview-empty {
+ display: flex;
+ flex-direction: column;
+ align-items: center;
+ justify-content: center;
+ height: 100%;
+ color: #999;
+}
+
+.preview-empty .empty-icon {
+ font-size: 48px;
+ margin-bottom: 16px;
+ color: #d9d9d9;
+}
+
+.preview-empty p {
+ margin: 0;
+ font-size: 14px;
+}
+
+/* 预览分段列表 */
+.preview-segments {
+ display: flex;
+ flex-direction: column;
+ gap: 12px;
+}
+
+.segment-item {
+ background: #fafafa;
+ border: 1px solid #e5e5e5;
+ border-radius: 8px;
+ padding: 12px;
+}
+
+.segment-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ margin-bottom: 8px;
+}
+
+.segment-index {
+ font-size: 12px;
+ font-weight: 600;
+ color: #00684a;
+}
+
+.segment-chars {
+ font-size: 12px;
+ color: #999;
+}
+
+.segment-content {
+ font-size: 13px;
+ color: #333;
+ line-height: 1.6;
+ white-space: pre-wrap;
+ word-break: break-word;
+}
+
+/* Ant Design 组件主题色覆盖 */
+.document-detail-page .ant-input:hover,
+.document-detail-page .ant-input:focus,
+.document-detail-page .ant-input-number:hover,
+.document-detail-page .ant-input-number-focused {
+ border-color: #00684a;
+}
+
+.document-detail-page .ant-input:focus,
+.document-detail-page .ant-input-focused,
+.document-detail-page .ant-input-number-focused {
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.1);
+}
+
+.document-detail-page .ant-select-focused .ant-select-selector {
+ border-color: #00684a !important;
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.1) !important;
+}
+
+.document-detail-page .ant-select-item-option-selected {
+ background: rgba(0, 104, 74, 0.1) !important;
+}
+
+.document-detail-page .ant-select-item-option-active {
+ background: rgba(0, 104, 74, 0.05) !important;
+}
+
+.document-detail-page .ant-checkbox-checked .ant-checkbox-inner {
+ background-color: #00684a;
+ border-color: #00684a;
+}
+
+.document-detail-page .ant-checkbox-wrapper:hover .ant-checkbox-inner {
+ border-color: #00684a;
+}
+
+/* 响应式调整 */
+@media (max-width: 1200px) {
+ .settings-panel {
+ width: 360px;
+ min-width: 360px;
+ }
+}
+
+@media (max-width: 992px) {
+ .document-detail-content {
+ flex-direction: column;
+ }
+
+ .settings-panel {
+ width: 100%;
+ min-width: 100%;
+ max-height: 50%;
+ }
+
+ .preview-panel {
+ max-height: 50%;
+ }
+}
+
+/* ============================================================================
+ * 旧样式保留(向后兼容)
+ * ============================================================================ */
+
/* 卡片容器 - 无边框阴影,直接融入 */
.dataset-manager-card {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
+ max-height: 100%;
background: #fff;
overflow: hidden;
}
@@ -79,7 +952,7 @@
flex-direction: column;
flex: 1;
min-height: 0;
- padding: 24px;
+ padding: 16px 20px;
overflow: hidden;
}
@@ -89,9 +962,9 @@
justify-content: space-between;
align-items: center;
flex-shrink: 0;
- padding-bottom: 16px;
+ padding-bottom: 12px;
border-bottom: 1px solid #f0f0f0;
- margin-bottom: 16px;
+ margin-bottom: 12px;
}
.dataset-header h1 {
@@ -99,6 +972,50 @@
font-weight: 600;
color: #1a1a1a;
margin: 0;
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+/* 可编辑标题样式 */
+.dataset-header h1.editable-title {
+ cursor: pointer;
+ padding: 4px 8px;
+ margin: -4px -8px;
+ border-radius: 6px;
+ transition: background-color 0.2s;
+}
+
+.dataset-header h1.editable-title:hover {
+ background-color: #f5f5f5;
+}
+
+.dataset-header h1.editable-title .edit-icon {
+ font-size: 14px;
+ color: #999;
+ opacity: 0;
+ transition: opacity 0.2s;
+}
+
+.dataset-header h1.editable-title:hover .edit-icon {
+ opacity: 1;
+}
+
+/* 编辑名称状态 */
+.dataset-name-edit {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.dataset-name-edit .ant-input {
+ border-color: #00684a;
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.1);
+}
+
+.dataset-name-edit .ant-input:focus {
+ border-color: #00684a;
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.2);
}
.dataset-header-actions {
@@ -112,7 +1029,7 @@
justify-content: space-between;
align-items: center;
flex-shrink: 0;
- margin-bottom: 16px;
+ margin-bottom: 12px;
}
.document-list-search {
@@ -125,34 +1042,32 @@
gap: 12px;
}
-/* 表格容器 - 唯一滚动区域 */
+/* 表格容器 */
.document-table-container {
flex: 1;
min-height: 0;
- overflow-y: auto;
- overflow-x: hidden;
+ overflow: hidden;
}
.document-table {
+ height: 100%;
background: transparent;
}
.document-table .ant-table-wrapper,
.document-table .ant-table,
.document-table .ant-table-container {
+ height: 100%;
background: transparent;
}
-/* 固定表头 */
+/* 表头样式 */
.document-table .ant-table-thead > tr > th {
- background: #fafafa;
+ background: #fafafa !important;
font-weight: 600;
font-size: 13px;
color: #1a1a1a;
padding: 8px 12px !important;
- position: sticky;
- top: 0;
- z-index: 10;
}
/* 压缩行高 */
@@ -165,31 +1080,50 @@
background: #f5f7f9;
}
+/* 表格内部滚动区域 */
+.document-table .ant-table-body {
+ scrollbar-width: thin;
+}
+
+.document-table .ant-table-body::-webkit-scrollbar {
+ width: 6px;
+}
+
+.document-table .ant-table-body::-webkit-scrollbar-thumb {
+ background: #d9d9d9;
+ border-radius: 3px;
+}
+
+.document-table .ant-table-body::-webkit-scrollbar-thumb:hover {
+ background: #bfbfbf;
+}
+
/* 固定底部分页器 */
.document-pagination {
display: flex;
justify-content: space-between;
align-items: center;
- padding: 12px 0;
+ padding: 15px 0 4px 0;
border-top: 1px solid #f0f0f0;
flex-shrink: 0;
background: #fff;
+ margin-top: 15px;
}
.pagination-total {
color: #666;
- font-size: 14px;
+ font-size: 13px;
}
.pagination-controls {
display: flex;
align-items: center;
- gap: 12px;
+ gap: 8px;
}
.pagination-info {
color: #666;
- font-size: 14px;
+ font-size: 13px;
}
/* 空状态 */
@@ -254,3 +1188,240 @@
font-size: 16px;
}
}
+
+/* ============================================================================
+ * 分段管理组件样式(页面模式)
+ * ============================================================================ */
+
+/* 分段管理页面容器 */
+.segment-manager-page {
+ display: flex;
+ flex-direction: column;
+ height: 100%;
+ background: #fff;
+ overflow: hidden;
+}
+
+/* 分段管理头部 */
+.segment-manager-header {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ flex-shrink: 0;
+ padding: 16px 24px;
+ border-bottom: 1px solid #f0f0f0;
+}
+
+.segment-header-left {
+ display: flex;
+ align-items: center;
+ gap: 8px;
+}
+
+.segment-manager-header .back-button {
+ font-size: 16px;
+ color: #666;
+ padding: 4px 8px;
+ border-radius: 6px;
+ transition: all 0.2s;
+}
+
+.segment-manager-header .back-button:hover {
+ color: #00684a;
+ background-color: rgba(0, 104, 74, 0.08);
+}
+
+.segment-manager-header .segment-title {
+ font-size: 18px;
+ font-weight: 600;
+ color: #1a1a1a;
+ margin: 0;
+}
+
+/* 分段管理内容区域 */
+.segment-manager-content {
+ flex: 1;
+ min-height: 0;
+ padding: 16px 24px;
+ overflow-y: auto;
+ overflow-x: hidden;
+}
+
+/* Tabs 样式 */
+.segment-manager-content .ant-tabs-tab-active {
+ color: #00684a !important;
+}
+
+.segment-manager-content .ant-tabs-ink-bar {
+ background-color: #00684a !important;
+}
+
+/* 分段内容预览 */
+.segment-content-preview {
+ font-size: 13px;
+ line-height: 1.5;
+ color: #333;
+}
+
+/* 检索结果内容 */
+.retrieve-result-content {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+}
+
+.retrieve-result-content .content-text {
+ font-size: 13px;
+ line-height: 1.6;
+ color: #333;
+}
+
+.retrieve-result-content .answer-text {
+ font-size: 12px;
+ line-height: 1.5;
+ color: #666;
+ padding: 8px 12px;
+ background: #f9f9f9;
+ border-radius: 4px;
+ border-left: 3px solid #00684a;
+}
+
+/* 分段工具栏 */
+.segment-toolbar {
+ margin-bottom: 16px;
+ display: flex;
+ justify-content: space-between;
+}
+
+/* 分段弹窗内的按钮主题色 */
+.ant-modal-root .ant-btn-primary {
+ background-color: #00684a;
+ border-color: #00684a;
+}
+
+.ant-modal-root .ant-btn-primary:hover {
+ background-color: #005a3f;
+ border-color: #005a3f;
+}
+
+/* Switch 组件主题色 */
+.ant-switch-checked {
+ background-color: #00684a !important;
+}
+
+/* Tag 主题色 */
+.ant-tag-success {
+ color: #00684a;
+ border-color: #b7eb8f;
+ background: #f6ffed;
+}
+
+/* Tabs 主题色 */
+.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn {
+ color: #00684a;
+}
+
+.ant-tabs-ink-bar {
+ background-color: #00684a;
+}
+
+.ant-tabs-tab:hover {
+ color: #00684a;
+}
+
+/* Slider 主题色 */
+.ant-slider-track {
+ background-color: #00684a !important;
+}
+
+.ant-slider-handle::after {
+ box-shadow: 0 0 0 2px #00684a !important;
+}
+
+.ant-slider:hover .ant-slider-track {
+ background-color: #005a3f !important;
+}
+
+/* Select 主题色 */
+.ant-select-item-option-selected {
+ background-color: rgba(0, 104, 74, 0.1) !important;
+}
+
+.ant-select:hover .ant-select-selector {
+ border-color: #00684a !important;
+}
+
+.ant-select-focused .ant-select-selector {
+ border-color: #00684a !important;
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.1) !important;
+}
+
+/* Input 主题色 */
+.ant-input:hover,
+.ant-input-affix-wrapper:hover {
+ border-color: #00684a;
+}
+
+.ant-input:focus,
+.ant-input-affix-wrapper:focus,
+.ant-input-focused,
+.ant-input-affix-wrapper-focused {
+ border-color: #00684a;
+ box-shadow: 0 0 0 2px rgba(0, 104, 74, 0.1);
+}
+
+/* 分页组件主题色 */
+.ant-pagination-item-active {
+ border-color: #00684a;
+}
+
+.ant-pagination-item-active a {
+ color: #00684a;
+}
+
+/* ============================================================================
+ * 全局加载/刷新图标颜色 - 统一使用主题绿色
+ * ============================================================================ */
+
+/* Spin 加载动画 */
+.dataset-manager-wrapper .ant-spin .ant-spin-dot-item,
+.segment-manager-page .ant-spin .ant-spin-dot-item {
+ background-color: rgb(0 104 74) !important;
+}
+
+/* Button loading 状态图标 */
+.dataset-manager-wrapper .ant-btn-loading-icon .anticon,
+.segment-manager-page .ant-btn-loading-icon .anticon {
+ color: rgb(0 104 74) !important;
+}
+
+/* 同步中图标 (SyncOutlined spin) */
+.dataset-manager-wrapper .anticon-sync,
+.segment-manager-page .anticon-sync {
+ color: rgb(0 104 74) !important;
+}
+
+/* processing 状态的 Tag 图标 */
+.dataset-manager-wrapper .ant-tag-processing,
+.segment-manager-page .ant-tag-processing {
+ color: rgb(0 104 74) !important;
+ border-color: rgb(0 104 74) !important;
+ background: rgba(0, 104, 74, 0.1) !important;
+}
+
+.dataset-manager-wrapper .ant-tag-processing .anticon,
+.segment-manager-page .ant-tag-processing .anticon {
+ color: rgb(0 104 74) !important;
+}
+
+/* 刷新按钮 loading 状态 */
+.dataset-manager-wrapper .ant-btn .anticon-loading,
+.segment-manager-page .ant-btn .anticon-loading {
+ color: rgb(0 104 74) !important;
+}
+
+/* 确保所有 spin 动画图标都是绿色 */
+.dataset-manager-wrapper .anticon-spin,
+.segment-manager-page .anticon-spin {
+ color: rgb(0 104 74) !important;
+}