Spaces:
Sleeping
Sleeping
| /* Global Reset */ | |
| * { | |
| margin: 0; | |
| padding: 0; | |
| box-sizing: border-box; | |
| font-family: 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif; /* Updated Font */ | |
| } | |
| body { | |
| background-color: #f0f2f5; /* Lighter grey background */ | |
| color: #1c1e21; /* Darker text color */ | |
| line-height: 1.5; | |
| display: flex; | |
| height: 100vh; | |
| overflow: hidden; | |
| } | |
| /* Container */ | |
| .container { | |
| display: flex; | |
| width: 100%; | |
| height: 100%; | |
| } | |
| /* Sidebar */ | |
| .sidebar { | |
| width: 260px; /* Slightly wider */ | |
| background-color: #ffffff; /* White background */ | |
| color: #333; /* Dark text for sidebar */ | |
| display: flex; | |
| flex-direction: column; | |
| height: 100%; | |
| border-right: 1px solid #e0e0e0; /* Subtle border */ | |
| flex-shrink: 0; | |
| } | |
| .sidebar-header { | |
| padding: 25px 20px; /* Increased padding */ | |
| text-align: left; /* Align left */ | |
| border-bottom: 1px solid #e0e0e0; | |
| } | |
| .sidebar-header h1 { | |
| font-size: 1.6rem; /* Slightly larger */ | |
| font-weight: 600; | |
| color: #0d6efd; /* Accent color */ | |
| } | |
| .sidebar-menu { | |
| flex-grow: 1; | |
| padding: 15px 0; /* Reduced top/bottom padding */ | |
| } | |
| .sidebar-menu ul { | |
| list-style: none; | |
| } | |
| .sidebar-menu li { | |
| margin-bottom: 5px; /* Reduced margin */ | |
| } | |
| .sidebar-menu a { | |
| display: flex; | |
| align-items: center; | |
| padding: 12px 20px; /* Adjusted padding */ | |
| color: #555; /* Grey text color */ | |
| text-decoration: none; | |
| transition: all 0.2s ease; | |
| border-radius: 5px; /* Slight rounding */ | |
| margin: 0 10px; /* Horizontal margin */ | |
| } | |
| .sidebar-menu a i { | |
| margin-right: 12px; /* Increased icon margin */ | |
| width: 20px; | |
| text-align: center; | |
| font-size: 1.1em; /* Slightly larger icons */ | |
| color: #888; /* Lighter icon color */ | |
| } | |
| .sidebar-menu a:hover, | |
| .sidebar-menu li.active a { | |
| background-color: #e7f3ff; /* Light blue background for hover/active */ | |
| color: #0d6efd; /* Blue text for hover/active */ | |
| } | |
| .sidebar-menu li.active a i, | |
| .sidebar-menu a:hover i { | |
| color: #0d6efd; /* Blue icon for hover/active */ | |
| } | |
| .sidebar-footer { | |
| padding: 15px; | |
| text-align: center; | |
| font-size: 0.8rem; | |
| color: #aaa; /* Lighter grey */ | |
| border-top: 1px solid #e0e0e0; | |
| } | |
| /* Main Content Area */ | |
| .main-content { | |
| flex-grow: 1; | |
| padding: 20px; | |
| overflow-y: auto; /* Enable vertical scroll */ | |
| background-color: #f0f2f5; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 20px; /* Space between sections */ | |
| } | |
| /* Card Style */ | |
| .card { | |
| background-color: #ffffff; | |
| border-radius: 8px; | |
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08); | |
| padding: 20px; | |
| border: 1px solid #e0e0e0; /* Subtle border for cards */ | |
| } | |
| .card h2 { | |
| font-size: 1.2rem; | |
| font-weight: 600; | |
| margin-bottom: 15px; | |
| color: #333; | |
| display: flex; | |
| align-items: center; | |
| } | |
| .card h2 i { | |
| margin-right: 10px; | |
| color: #0d6efd; | |
| } | |
| /* Sections Layout */ | |
| .top-section, | |
| .middle-section { | |
| display: flex; | |
| gap: 20px; | |
| } | |
| .top-section > div, | |
| .middle-section > div { | |
| flex: 1; | |
| min-width: 0; /* Prevent flex overflow */ | |
| } | |
| /* Upload Panel */ | |
| .upload-panel .file-upload-container { | |
| display: flex; | |
| flex-direction: column; | |
| align-items: flex-start; | |
| } | |
| .upload-btn { | |
| background-color: #0d6efd; | |
| color: white; | |
| padding: 10px 20px; | |
| border: none; | |
| border-radius: 5px; | |
| cursor: pointer; | |
| font-size: 1rem; | |
| transition: background-color 0.2s ease; | |
| margin-bottom: 10px; | |
| } | |
| .upload-btn:hover { | |
| background-color: #0b5ed7; | |
| } | |
| .supported-files { | |
| font-size: 0.85rem; | |
| color: #888; | |
| margin-bottom: 10px; | |
| } | |
| /* 文件上传列表容器 */ | |
| .file-list-container { | |
| margin-top: 15px; | |
| width: 100%; | |
| } | |
| /* 文件列表表格样式 */ | |
| .file-list-table { | |
| list-style: none; | |
| padding: 0; | |
| width: 100%; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 5px; | |
| background-color: #f8f9fa; | |
| overflow: hidden; | |
| } | |
| #file-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| max-height: 250px; | |
| overflow-y: auto; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 5px; | |
| background-color: #f8f9fa; | |
| } | |
| #file-list:empty { | |
| border: none; | |
| padding: 0; | |
| margin: 0; | |
| height: 0; | |
| } | |
| #file-list li { | |
| padding: 10px 15px; | |
| border-bottom: 1px solid #e0e0e0; | |
| display: flex; | |
| align-items: center; | |
| font-size: 0.9rem; | |
| position: relative; | |
| background-color: white; | |
| } | |
| #file-list li:nth-child(odd) { | |
| background-color: #f8f9fa; | |
| } | |
| #file-list li:last-child { | |
| border-bottom: none; | |
| } | |
| #file-list li i { | |
| margin-right: 10px; | |
| color: #6c757d; | |
| } | |
| /* 文件信息部分 */ | |
| .file-name { | |
| flex-grow: 1; | |
| font-weight: 500; | |
| color: #333; | |
| white-space: nowrap; | |
| overflow: hidden; | |
| text-overflow: ellipsis; | |
| max-width: 70%; | |
| } | |
| /* 文件状态样式 */ | |
| .file-status { | |
| padding: 3px 8px; | |
| border-radius: 12px; | |
| font-size: 0.8rem; | |
| font-weight: normal; | |
| white-space: nowrap; | |
| margin-left: auto; | |
| } | |
| /* 不同状态的样式 */ | |
| .file-status-uploading { | |
| color: #0d6efd; | |
| background-color: rgba(13, 110, 253, 0.1); | |
| } | |
| .file-status-success { | |
| color: #198754; | |
| background-color: rgba(25, 135, 84, 0.1); | |
| } | |
| .file-status-error { | |
| color: #dc3545; | |
| background-color: rgba(220, 53, 69, 0.1); | |
| } | |
| .file-status-retrying { | |
| color: #fd7e14; | |
| background-color: rgba(253, 126, 20, 0.1); | |
| } | |
| /* Summary & Tags Panel */ | |
| .summary-tags-panel { | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| /* 文件信息部分样式 */ | |
| .file-info-section { | |
| margin-bottom: 15px; | |
| border-bottom: 1px solid #e0e0e0; | |
| padding-bottom: 10px; | |
| } | |
| .file-info-section h4 { | |
| font-size: 1rem; | |
| font-weight: 600; | |
| color: #444; | |
| margin-bottom: 8px; | |
| padding-left: 5px; | |
| border-left: 3px solid #0d6efd; | |
| } | |
| #uploaded-filename { | |
| font-size: 1.25rem; | |
| font-weight: 700; | |
| color: #0d6efd; | |
| margin-bottom: 15px; | |
| padding-left: 10px; | |
| border-left: 4px solid #0d6efd; | |
| display: block; | |
| width: 100%; | |
| } | |
| .summary-section h4 { | |
| font-size: 1rem; | |
| font-weight: 600; | |
| color: #444; | |
| margin-bottom: 8px; | |
| padding-left: 5px; | |
| border-left: 3px solid #0d6efd; | |
| } | |
| /* 文档标签区域 */ | |
| .document-tags-container { | |
| margin-top: 10px; | |
| margin-bottom: 15px; | |
| } | |
| .document-tag-group { | |
| margin-bottom: 12px; | |
| border-left: 2px solid #e7f3ff; | |
| padding-left: 8px; | |
| } | |
| .document-tag-header { | |
| display: flex; | |
| align-items: center; | |
| cursor: pointer; | |
| padding: 5px 8px; | |
| background-color: #f8f9fa; | |
| border-radius: 4px; | |
| margin-bottom: 5px; | |
| } | |
| .document-tag-header:hover { | |
| background-color: #e7f3ff; | |
| } | |
| .document-tag-header i { | |
| margin-right: 8px; | |
| color: #0d6efd; | |
| transition: transform 0.2s ease; | |
| } | |
| .document-tag-header.active i.fa-chevron-right { | |
| transform: rotate(90deg); | |
| } | |
| .document-tag-name { | |
| font-weight: 500; | |
| color: #333; | |
| } | |
| .document-tag-content { | |
| display: none; | |
| padding: 5px 0 5px 20px; | |
| } | |
| .document-tag-content.active { | |
| display: block; | |
| } | |
| /* 标签容器放在文件名下面 */ | |
| #tags-container { | |
| margin-top: 8px; | |
| margin-bottom: 12px; | |
| } | |
| .tag { | |
| display: inline-block; | |
| background-color: #e7f3ff; /* Light blue background */ | |
| color: #0d6efd; /* Blue text */ | |
| padding: 5px 12px; /* Adjusted padding */ | |
| border-radius: 15px; | |
| font-size: 0.85rem; | |
| font-weight: 500; | |
| margin-right: 6px; | |
| margin-bottom: 6px; | |
| } | |
| #summary-area { | |
| flex-grow: 1; | |
| width: 100%; | |
| min-height: 150px; /* 增加高度 */ | |
| padding: 12px 15px; | |
| border: 1px solid #ccc; | |
| border-radius: 5px; | |
| background-color: #f8f9fa; /* Light background for textarea */ | |
| resize: vertical; /* Allow vertical resize */ | |
| outline: none; | |
| font-size: 0.95rem; | |
| line-height: 1.5; | |
| color: #333; | |
| font-family: 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif; | |
| white-space: pre-wrap; /* 保留换行 */ | |
| } | |
| /* Knowledge Folders Panel */ | |
| .knowledge-folders-panel .folder-list { | |
| list-style: none; | |
| padding: 0; | |
| } | |
| .knowledge-folders-panel .folder-list li { | |
| padding: 8px 0; | |
| font-size: 0.95rem; | |
| color: #333; | |
| display: flex; | |
| align-items: center; | |
| border-bottom: 1px dashed #eee; /* Dashed separator */ | |
| } | |
| .knowledge-folders-panel .folder-list li:last-child { | |
| border-bottom: none; | |
| } | |
| .knowledge-folders-panel .folder-list i { | |
| margin-right: 10px; | |
| color: #ffc107; /* Folder icon color */ | |
| } | |
| /* Chat Panel */ | |
| .chat-panel { | |
| display: flex; | |
| flex-direction: column; | |
| overflow: hidden; /* Prevent content overflow */ | |
| height: 450px; /* Fixed height for chat panel */ | |
| } | |
| .chat-history { | |
| flex-grow: 1; | |
| padding: 15px; | |
| overflow-y: auto; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 15px; | |
| background-color: #f8f9fa; /* Light background for chat history */ | |
| border-radius: 5px; | |
| margin-bottom: 15px; | |
| } | |
| .message { | |
| max-width: 85%; /* Slightly wider messages */ | |
| padding: 10px 15px; /* Adjusted padding */ | |
| border-radius: 18px; | |
| line-height: 1.5; | |
| word-wrap: break-word; | |
| } | |
| .user-message { | |
| align-self: flex-end; | |
| background-color: #0d6efd; /* Blue user messages */ | |
| color: white; | |
| border-bottom-right-radius: 5px; | |
| } | |
| .bot-message { | |
| align-self: flex-start; | |
| background-color: #e9ecef; /* Light grey bot messages */ | |
| color: #333; | |
| border-bottom-left-radius: 5px; | |
| } | |
| .input-container { | |
| padding-top: 15px; | |
| display: flex; | |
| align-items: center; /* Align items vertically */ | |
| gap: 10px; | |
| border-top: 1px solid #e0e0e0; | |
| } | |
| #user-input { | |
| flex-grow: 1; | |
| padding: 10px 15px; | |
| border: 1px solid #ccc; | |
| border-radius: 20px; | |
| background-color: #fff; | |
| resize: none; | |
| outline: none; | |
| min-height: 40px; /* Match button height */ | |
| max-height: 100px; /* Limit expansion */ | |
| font-size: 0.95rem; | |
| } | |
| #send-btn { | |
| flex-shrink: 0; | |
| width: 40px; | |
| height: 40px; | |
| border-radius: 50%; | |
| background-color: #0d6efd; | |
| color: white; | |
| border: none; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: background-color 0.2s ease; | |
| } | |
| #send-btn:hover { | |
| background-color: #0b5ed7; | |
| } | |
| .status-indicator { | |
| margin-top: 8px; | |
| font-size: 0.8rem; | |
| color: #dc3545; /* Default to error color */ | |
| min-height: 1em; | |
| } | |
| .status-indicator.success { | |
| color: #198754; /* Green for success */ | |
| } | |
| /* Review Panel */ | |
| .review-panel p { | |
| font-size: 0.95rem; | |
| color: #555; | |
| } | |
| .review-panel strong { | |
| color: #0d6efd; | |
| } | |
| /* Remove old status indicator style from chat header */ | |
| /* #status-indicator { ... } */ | |
| /* Remove old typing indicator styles if they exist */ | |
| /* .typing-indicator { ... } */ | |
| /* .typing-dot { ... } */ | |
| /* @keyframes typingAnimation { ... } */ | |
| /* Adjustments for responsiveness if needed */ | |
| @media (max-width: 1200px) { | |
| .top-section, | |
| .middle-section { | |
| flex-direction: column; | |
| } | |
| .chat-panel { | |
| height: auto; /* Allow chat panel height to adjust */ | |
| min-height: 400px; | |
| } | |
| } | |
| @media (max-width: 768px) { | |
| .sidebar { | |
| width: 100%; | |
| height: auto; | |
| position: static; /* Or fixed/sticky as needed */ | |
| border-right: none; | |
| border-bottom: 1px solid #e0e0e0; | |
| } | |
| .main-content { | |
| padding: 15px; | |
| } | |
| body { | |
| flex-direction: column; | |
| height: auto; | |
| overflow: visible; | |
| } | |
| .container { | |
| flex-direction: column; | |
| height: auto; | |
| } | |
| } | |
| /* 打字指示器样式 */ | |
| .typing-indicator span { | |
| display: inline-block; | |
| width: 6px; | |
| height: 6px; | |
| background-color: #999; | |
| border-radius: 50%; | |
| margin: 0 2px; | |
| animation: typingAnimation 1.4s infinite ease-in-out; | |
| } | |
| .typing-indicator span:nth-child(1) { | |
| animation-delay: 0s; | |
| } | |
| .typing-indicator span:nth-child(2) { | |
| animation-delay: 0.2s; | |
| } | |
| .typing-indicator span:nth-child(3) { | |
| animation-delay: 0.4s; | |
| } | |
| @keyframes typingAnimation { | |
| 0%, 60%, 100% { | |
| transform: translateY(0); | |
| opacity: 0.6; | |
| } | |
| 30% { | |
| transform: translateY(-4px); | |
| opacity: 1; | |
| } | |
| } | |
| /* 文件状态样式 */ | |
| .file-status { | |
| color: #666; | |
| font-size: 0.85rem; | |
| font-style: italic; | |
| } | |
| /* 状态指示器类型 */ | |
| .status-indicator.info { | |
| color: #0d6efd; | |
| } | |
| .status-indicator.success { | |
| color: #198754; | |
| } | |
| .status-indicator.error { | |
| color: #dc3545; | |
| } | |
| /* 添加错误消息样式 */ | |
| .error-message { | |
| background-color: #ffe6e6 ; /* 浅红色背景 */ | |
| border-left: 3px solid #dc3545; /* 红色左边框 */ | |
| } | |
| .error-message .message-content { | |
| color: #721c24; /* 深红色文本 */ | |
| font-size: 0.9rem; | |
| line-height: 1.6; | |
| } | |
| /* 空标签样式 */ | |
| .tag.empty-tag { | |
| background-color: #f0f0f0; /* 灰色背景 */ | |
| color: #666; /* 灰色文本 */ | |
| } | |
| /* 摘要内容区域样式 */ | |
| .summary-content { | |
| width: 100%; | |
| min-height: 150px; | |
| max-height: 400px; | |
| padding: 12px 15px; | |
| border: 1px solid #ccc; | |
| border-radius: 5px; | |
| background-color: #f8f9fa; | |
| overflow-y: auto; | |
| font-size: 0.95rem; | |
| line-height: 1.5; | |
| color: #333; | |
| white-space: pre-wrap; | |
| } | |
| /* 文件标题样式 - 对应Markdown中的## */ | |
| .summary-content h2 { | |
| font-size: 1.1rem; | |
| font-weight: 700; | |
| color: #0d6efd; | |
| margin-top: 15px; | |
| margin-bottom: 10px; | |
| padding-left: 8px; | |
| border-left: 3px solid #0d6efd; | |
| } | |
| /* 摘要标题样式 - 对应Markdown中的### */ | |
| .summary-content h3 { | |
| font-size: 0.95rem; | |
| font-weight: 600; | |
| color: #444; | |
| margin-top: 8px; | |
| margin-bottom: 8px; | |
| padding-left: 5px; | |
| border-left: 2px solid #28a745; | |
| } | |
| /* 摘要中的段落样式 */ | |
| .summary-content p { | |
| margin-bottom: 10px; | |
| } | |
| /* 占位文本样式 */ | |
| .placeholder-text { | |
| color: #999; | |
| font-style: italic; | |
| } | |
| /* 文件分隔线样式 */ | |
| .file-divider { | |
| height: 1px; | |
| background-color: #e0e0e0; | |
| margin: 15px 0; | |
| } | |
| /* 知识图谱页面样式 */ | |
| .knowledge-map-section { | |
| height: calc(100vh - 60px); | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .knowledge-map-panel { | |
| display: flex; | |
| flex-direction: column; | |
| flex-grow: 1; | |
| overflow: hidden; | |
| } | |
| .map-controls { | |
| display: flex; | |
| align-items: center; | |
| padding: 10px 0; | |
| margin-bottom: 15px; | |
| border-bottom: 1px solid #e0e0e0; | |
| flex-wrap: wrap; /* 允许控制项在窄屏幕上换行 */ | |
| } | |
| .control-group { | |
| display: flex; | |
| align-items: center; | |
| margin-right: 20px; | |
| margin-bottom: 5px; /* 在换行时提供一些垂直间距 */ | |
| } | |
| .control-group label { | |
| margin-right: 8px; | |
| font-size: 0.9rem; | |
| color: #555; | |
| } | |
| .map-control-select { | |
| padding: 5px 10px; | |
| border: 1px solid #ccc; | |
| border-radius: 4px; | |
| font-size: 0.9rem; | |
| background-color: #fff; | |
| } | |
| .map-control-btn { | |
| background-color: #0d6efd; | |
| color: white; | |
| padding: 5px 12px; | |
| border: none; | |
| border-radius: 4px; | |
| cursor: pointer; | |
| font-size: 0.9rem; | |
| transition: background-color 0.2s ease; | |
| margin-right: 10px; /* 按钮之间的间距 */ | |
| white-space: nowrap; /* 防止文本换行 */ | |
| display: flex; | |
| align-items: center; | |
| } | |
| .map-control-btn i { | |
| margin-right: 5px; | |
| } | |
| .map-control-btn:hover { | |
| background-color: #0b5ed7; | |
| } | |
| #view-toggle-btn { | |
| background-color: #6c757d; /* 不同的颜色以区分功能 */ | |
| } | |
| #view-toggle-btn:hover { | |
| background-color: #5a6268; | |
| } | |
| /* 添加视图模式指示器 */ | |
| .view-mode-indicator { | |
| margin-left: auto; /* 推到右边 */ | |
| font-size: 0.85rem; | |
| color: #6c757d; | |
| font-style: italic; | |
| } | |
| /* 节点类型样式 */ | |
| .tag-node { | |
| color: #0d6efd; | |
| } | |
| .document-node { | |
| color: #e15759; | |
| } | |
| .category-node { | |
| color: #f28e2c; | |
| } | |
| .knowledge-map-container { | |
| flex-grow: 1; | |
| width: 100%; | |
| height: 70%; | |
| min-height: 400px; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 5px; | |
| background-color: #f8f9fa; | |
| overflow: hidden; | |
| position: relative; | |
| } | |
| .map-info { | |
| margin-top: 15px; | |
| padding-top: 15px; | |
| border-top: 1px solid #e0e0e0; | |
| } | |
| .map-info p { | |
| font-size: 0.9rem; | |
| color: #666; | |
| margin-bottom: 10px; | |
| } | |
| .node-info { | |
| background-color: #f8f9fa; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 5px; | |
| padding: 15px; | |
| margin-top: 10px; | |
| } | |
| .node-info h3 { | |
| font-size: 1.1rem; | |
| font-weight: 600; | |
| color: #333; | |
| margin-bottom: 10px; | |
| padding-left: 8px; | |
| border-left: 3px solid #0d6efd; | |
| } | |
| .node-details { | |
| font-size: 0.95rem; | |
| line-height: 1.5; | |
| color: #444; | |
| } | |
| .node-details .tag-list { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 5px; | |
| margin-top: 8px; | |
| } | |
| .node-details .document-link { | |
| display: inline-flex; | |
| align-items: center; | |
| margin-top: 10px; | |
| background-color: #e7f3ff; | |
| color: #0d6efd; | |
| padding: 6px 12px; | |
| border-radius: 4px; | |
| text-decoration: none; | |
| font-size: 0.9rem; | |
| transition: all 0.2s ease; | |
| } | |
| .node-details .document-link:hover { | |
| background-color: #0d6efd; | |
| color: white; | |
| } | |
| /* 词云链接样式 */ | |
| .node-details .wordcloud-link { | |
| display: inline-flex; | |
| align-items: center; | |
| margin-top: 10px; | |
| margin-left: 10px; | |
| background-color: #e8f5e9; | |
| color: #2e7d32; | |
| padding: 6px 12px; | |
| border-radius: 4px; | |
| text-decoration: none; | |
| font-size: 0.9rem; | |
| transition: all 0.2s ease; | |
| } | |
| .node-details .wordcloud-link:hover { | |
| background-color: #2e7d32; | |
| color: white; | |
| } | |
| /* 文档操作按钮容器 */ | |
| .document-action-buttons { | |
| display: flex; | |
| flex-wrap: wrap; | |
| margin-top: 15px; | |
| } | |
| .document-action-buttons a i { | |
| margin-right: 5px; | |
| } | |
| /* 知识图谱缩放控制器 */ | |
| .zoom-controllers { | |
| position: absolute; | |
| top: 10px; | |
| right: 10px; | |
| z-index: 100; | |
| display: flex; | |
| flex-direction: column; | |
| gap: 5px; | |
| background-color: rgba(255, 255, 255, 0.8); | |
| border-radius: 4px; | |
| padding: 5px; | |
| box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12); | |
| } | |
| .zoom-btn { | |
| width: 36px; | |
| height: 36px; | |
| border-radius: 4px; | |
| background-color: white; | |
| border: 1px solid #ddd; | |
| cursor: pointer; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: all 0.2s ease; | |
| } | |
| .zoom-btn:hover { | |
| background-color: #f0f0f0; | |
| border-color: #ccc; | |
| } | |
| .zoom-btn i { | |
| color: #555; | |
| font-size: 16px; | |
| } | |
| .zoom-btn:hover i { | |
| color: #0d6efd; | |
| } | |
| /* 强调当前活动的节点 */ | |
| .active-node-path { | |
| stroke-width: 2; | |
| stroke: #0d6efd; | |
| } | |
| /* 在知识图谱容器上添加相对定位以支持缩放控制器定位 */ | |
| .knowledge-map-container.draggable { | |
| cursor: grab; | |
| } | |
| .knowledge-map-container.dragging { | |
| cursor: grabbing; | |
| } | |
| /* 词云图布局样式 */ | |
| .wordcloud-mode .node { | |
| font-size: 1.2em; | |
| font-weight: bold; | |
| transition: transform 0.3s ease, font-size 0.3s ease; | |
| } | |
| .wordcloud-mode .node:hover { | |
| transform: scale(1.1); | |
| z-index: 10; | |
| } | |
| .wordcloud-mode .document-node { | |
| color: #0d6efd; | |
| font-size: 1.3em; | |
| } | |
| /* 词云图模态框样式 */ | |
| .wordcloud-modal { | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| width: 100%; | |
| height: 100%; | |
| background-color: rgba(0, 0, 0, 0.7); | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| z-index: 1000; | |
| } | |
| .wordcloud-modal-content { | |
| width: 80%; | |
| max-width: 900px; | |
| max-height: 80vh; | |
| background-color: white; | |
| border-radius: 8px; | |
| overflow: auto; | |
| box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); | |
| display: flex; | |
| flex-direction: column; | |
| } | |
| .wordcloud-modal-header { | |
| padding: 15px 20px; | |
| border-bottom: 1px solid #e0e0e0; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| } | |
| .wordcloud-modal-header h3 { | |
| margin: 0; | |
| color: #333; | |
| font-size: 1.2rem; | |
| } | |
| .close-modal { | |
| background: none; | |
| border: none; | |
| font-size: 1.2rem; | |
| color: #666; | |
| cursor: pointer; | |
| padding: 5px; | |
| border-radius: 50%; | |
| width: 30px; | |
| height: 30px; | |
| display: flex; | |
| align-items: center; | |
| justify-content: center; | |
| transition: background-color 0.2s ease; | |
| } | |
| .close-modal:hover { | |
| background-color: #f0f0f0; | |
| color: #333; | |
| } | |
| .wordcloud-modal-body { | |
| padding: 20px; | |
| overflow-y: auto; | |
| } | |
| .loading-indicator { | |
| text-align: center; | |
| padding: 30px; | |
| color: #666; | |
| } | |
| .loading-indicator i { | |
| font-size: 2rem; | |
| margin-bottom: 10px; | |
| color: #0d6efd; | |
| } | |
| .wordcloud-image-container { | |
| text-align: center; | |
| margin-bottom: 20px; | |
| } | |
| .wordcloud-image { | |
| max-width: 100%; | |
| max-height: 400px; | |
| box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1); | |
| border-radius: 4px; | |
| } | |
| .wordcloud-freq-container { | |
| border-top: 1px solid #e0e0e0; | |
| padding-top: 15px; | |
| margin-top: 15px; | |
| } | |
| .wordcloud-freq-container h4 { | |
| margin-bottom: 10px; | |
| color: #333; | |
| font-size: 1rem; | |
| } | |
| .word-freq-list { | |
| display: flex; | |
| flex-wrap: wrap; | |
| gap: 8px; | |
| max-height: 150px; | |
| overflow-y: auto; | |
| padding: 10px; | |
| background-color: #f8f9fa; | |
| border-radius: 5px; | |
| } | |
| /* 在词云图布局中强调文档节点 */ | |
| .map-control-select option[value="wordcloud"] { | |
| font-weight: bold; | |
| color: #0d6efd; | |
| } | |
| /* 直接生成词云图按钮样式 */ | |
| .generate-cloud-link { | |
| display: inline-flex; | |
| align-items: center; | |
| margin-top: 10px; | |
| margin-left: 10px; | |
| background-color: #fff0e5; | |
| color: #ff6d00; | |
| padding: 6px 12px; | |
| border-radius: 4px; | |
| text-decoration: none; | |
| font-size: 0.9rem; | |
| transition: all 0.2s ease; | |
| } | |
| .generate-cloud-link:hover { | |
| background-color: #ff6d00; | |
| color: white; | |
| } | |
| /* 相关文档样式 */ | |
| .related-docs { | |
| margin-top: 10px; | |
| max-height: 300px; | |
| overflow-y: auto; | |
| border: 1px solid #e0e0e0; | |
| border-radius: 5px; | |
| padding: 10px; | |
| background-color: #f8f9fa; | |
| } | |
| .related-doc-item { | |
| padding: 10px; | |
| border-bottom: 1px solid #eee; | |
| transition: background-color 0.2s ease; | |
| } | |
| .related-doc-item:last-child { | |
| border-bottom: none; | |
| } | |
| .related-doc-item:hover { | |
| background-color: #f0f0f0; | |
| } | |
| .doc-title { | |
| display: block; | |
| font-weight: 500; | |
| color: #333; | |
| margin-bottom: 5px; | |
| } | |
| /* 词云图专用样式增强 */ | |
| #knowledge-map-container.wordcloud-mode { | |
| background-color: #ffffff ; | |
| border: 1px solid #ddd ; | |
| padding: 10px; | |
| overflow: visible ; | |
| min-height: 400px; | |
| } | |
| /* 词云图样式增强 */ | |
| .wordcloud-mode div { | |
| overflow: visible ; | |
| } | |
| /* 确保词云图文字可见 */ | |
| .wordcloud-mode text, | |
| .wordcloud-mode .ec-wordCloud text, | |
| .wordcloud-mode svg text { | |
| fill: #333 ; | |
| fill-opacity: 1 ; | |
| font-weight: bold ; | |
| stroke: none ; | |
| font-family: 'Arial', '微软雅黑', sans-serif ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| } | |
| /* 强制显示SVG元素 */ | |
| .wordcloud-mode svg, | |
| .wordcloud-mode canvas { | |
| display: block ; | |
| visibility: visible ; | |
| opacity: 1 ; | |
| } | |
| /* 去除任何可能引起问题的遮挡元素 */ | |
| .wordcloud-mode * { | |
| pointer-events: auto ; | |
| } | |
| /* 确保词语悬停时的效果 */ | |
| .wordcloud-mode text:hover, | |
| .wordcloud-mode .ec-wordCloud text:hover { | |
| fill: #f00 ; | |
| cursor: pointer; | |
| transform: scale(1.1); | |
| } | |
| /* 词云图词语样式 */ | |
| .ec-wordCloud text { | |
| cursor: pointer; | |
| transition: all 0.3s ease; | |
| text-shadow: 0 2px 1px rgba(0,0,0,0.1); | |
| fill-opacity: 1 ; /* 确保文字不透明 */ | |
| font-weight: bold; | |
| } | |
| .ec-wordCloud text:hover { | |
| fill-opacity: 0.8; | |
| transform: scale(1.1); | |
| text-shadow: 0 2px 4px rgba(0,0,0,0.2); | |
| } | |
| /* 当选择词云图模式时应用特殊样式 */ | |
| .wordcloud-mode .ec-wordCloud { | |
| transform-origin: center center; | |
| animation: wordcloud-appear 1s ease-out; | |
| } | |
| @keyframes wordcloud-appear { | |
| 0% { | |
| opacity: 0; | |
| transform: scale(0.95); | |
| } | |
| 100% { | |
| opacity: 1; | |
| transform: scale(1); | |
| } | |
| } | |
| /* 根据字体大小设置不同样式 */ | |
| .ec-wordCloud text[font-size="24"], | |
| .ec-wordCloud text[font-size="25"], | |
| .ec-wordCloud text[font-size="26"], | |
| .ec-wordCloud text[font-size="27"], | |
| .ec-wordCloud text[font-size="28"], | |
| .ec-wordCloud text[font-size="29"], | |
| .ec-wordCloud text[font-size="30"] { | |
| opacity: 0.9; | |
| } | |
| .ec-wordCloud text[font-size="31"], | |
| .ec-wordCloud text[font-size="32"], | |
| .ec-wordCloud text[font-size="33"], | |
| .ec-wordCloud text[font-size="34"], | |
| .ec-wordCloud text[font-size="35"], | |
| .ec-wordCloud text[font-size="40"] { | |
| opacity: 0.95; | |
| } | |
| .ec-wordCloud text[font-size="41"], | |
| .ec-wordCloud text[font-size="42"], | |
| .ec-wordCloud text[font-size="43"], | |
| .ec-wordCloud text[font-size="44"], | |
| .ec-wordCloud text[font-size="45"], | |
| .ec-wordCloud text[font-size="50"] { | |
| opacity: 1; | |
| font-weight: bold; | |
| } | |
| .ec-wordCloud text[font-size="60"], | |
| .ec-wordCloud text[font-size="70"], | |
| .ec-wordCloud text[font-size="80"], | |
| .ec-wordCloud text[font-size="90"], | |
| .ec-wordCloud text[font-size="100"] { | |
| opacity: 1; | |
| font-weight: bold; | |
| text-shadow: 0 2px 3px rgba(0,0,0,0.2); | |
| } | |
| /* 知识图谱节点样式由JS控制 */ | |
| /* 词云图容器样式 */ | |
| .wordcloud-container { | |
| background-color: #ffffff ; | |
| border: 1px solid #e0e0e0 ; | |
| border-radius: 8px ; | |
| padding: 15px ; | |
| min-height: 400px ; | |
| position: relative ; | |
| margin-top: 20px ; | |
| box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1) ; | |
| } | |
| /* 确保词云图内的文字清晰可见 */ | |
| .wordcloud-container .echarts-for-react text, | |
| .wordcloud-container text { | |
| fill: #333333 ; | |
| font-weight: bold ; | |
| font-family: 'Arial', sans-serif ; | |
| pointer-events: auto ; | |
| cursor: pointer ; | |
| text-shadow: 0px 0px 2px rgba(255, 255, 255, 0.8) ; | |
| transition: all 0.2s ease ; | |
| } | |
| /* 词云图高亮状态 */ | |
| .wordcloud-container text:hover { | |
| fill: #2c85ff ; | |
| transform: scale(1.1) ; | |
| } | |
| /* 词云图加载状态 */ | |
| .wordcloud-loading { | |
| position: absolute ; | |
| top: 50% ; | |
| left: 50% ; | |
| transform: translate(-50%, -50%) ; | |
| text-align: center ; | |
| color: #666 ; | |
| } | |
| /* 相关文档列表样式 */ | |
| .related-docs { | |
| max-height: 300px ; | |
| overflow-y: auto ; | |
| margin-top: 10px ; | |
| border: 1px solid #eee ; | |
| border-radius: 4px ; | |
| padding: 10px ; | |
| } | |
| .related-doc-item { | |
| padding: 8px ; | |
| border-bottom: 1px solid #eee ; | |
| display: flex ; | |
| flex-direction: column ; | |
| } | |
| .related-doc-item:last-child { | |
| border-bottom: none ; | |
| } | |
| .doc-title { | |
| font-weight: bold ; | |
| margin-bottom: 5px ; | |
| } | |
| .document-action-buttons { | |
| display: flex ; | |
| gap: 10px ; | |
| margin-top: 5px ; | |
| } | |
| .document-link, .wordcloud-link { | |
| color: #2c85ff ; | |
| text-decoration: none ; | |
| font-size: 0.9em ; | |
| display: inline-flex ; | |
| align-items: center ; | |
| gap: 4px ; | |
| } | |
| .document-link:hover, .wordcloud-link:hover { | |
| text-decoration: underline ; | |
| } | |
| /* 树形图节点悬停样式 */ | |
| .node:hover { | |
| cursor: pointer ; | |
| filter: brightness(1.1) ; | |
| } | |
| /* 添加知识文件夹相关的样式 */ | |
| .folder-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| } | |
| .folder-item { | |
| margin-bottom: 10px; | |
| border-radius: 6px; | |
| overflow: hidden; | |
| border: 1px solid #e5e7eb; | |
| background-color: #f9fafb; | |
| } | |
| .folder-header { | |
| padding: 10px 15px; | |
| display: flex; | |
| justify-content: space-between; | |
| align-items: center; | |
| cursor: pointer; | |
| background-color: #f3f4f6; | |
| transition: background-color 0.3s; | |
| } | |
| .folder-header:hover { | |
| background-color: #e5e7eb; | |
| } | |
| .folder-toggle { | |
| transition: transform 0.3s; | |
| } | |
| .file-list { | |
| list-style: none; | |
| padding: 0; | |
| margin: 0; | |
| background-color: #ffffff; | |
| } | |
| .file-item { | |
| padding: 8px 15px 8px 35px; | |
| border-top: 1px solid #e5e7eb; | |
| display: flex; | |
| align-items: center; | |
| font-size: 0.9em; | |
| } | |
| .file-item i { | |
| margin-right: 8px; | |
| color: #6b7280; | |
| } | |
| .file-tag { | |
| margin-left: 5px; | |
| font-size: 0.85em; | |
| color: #9ca3af; | |
| font-style: italic; | |
| } | |
| .file-link { | |
| color: #3b82f6; | |
| text-decoration: none; | |
| } | |
| .file-link:hover { | |
| text-decoration: underline; | |
| } | |
| .demo-notice { | |
| margin-top: 15px; | |
| padding: 10px; | |
| border-radius: 6px; | |
| background-color: #fff7ed; | |
| border: 1px solid #ffedd5; | |
| color: #c2410c; | |
| font-size: 0.9em; | |
| } | |
| /* 确保已存在的样式不受影响 */ |