.kg-panel[data-v-3e820070] {
  height: 100%;
  min-height: 550px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  position: relative;
}
.kg-canvas-wrapper[data-v-3e820070] {
  -ms-flex: 1;
      flex: 1;
  position: relative;
  overflow: hidden;
  background: #f8f9fb;
  border: 1px solid #ebeef5;
  border-radius: 4px;
}
.kg-container[data-v-3e820070] {
  width: 100%;
  height: 100%;
}
.kg-loading[data-v-3e820070],
.kg-empty[data-v-3e820070] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  text-align: center;
  color: #909399;
  z-index: 5;
}
.kg-loading p[data-v-3e820070],
.kg-empty p[data-v-3e820070] {
  margin-top: 12px;
  font-size: 14px;
}
/* Phase-fix #11: 抽取进行中画布角标 */
.kg-extracting-badge[data-v-3e820070] {
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 8;
  padding: 4px 12px;
  background: rgba(24, 144, 255, 0.12);
  border: 1px solid #91d5ff;
  border-radius: 16px;
  color: #1890ff;
  font-size: 12px;
}
.kg-controls[data-v-3e820070] {
  position: absolute;
  right: 20px;
  bottom: 20px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  gap: 8px;
  z-index: 5;
}
.kg-controls .ctrl-btn[data-v-3e820070] {
  background: #fff;
  border: 1px solid #dcdfe6;
  color: #606266;
  transition: all 0.3s;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.06);
}
.kg-controls .ctrl-btn[data-v-3e820070]:hover {
  background: #ecf5ff;
  border-color: #4C8EFA;
  color: #4C8EFA;
}
/* 路径查询浮层 */
.kg-path-overlay[data-v-3e820070] {
  position: absolute;
  top: 16px;
  left: 16px;
  width: 240px;
  background: #fff;
  border: 1px solid #e4e7ed;
  border-radius: 8px;
  z-index: 10;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
}
.kg-path-header[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  padding: 10px 14px;
  color: #303133;
  font-size: 13px;
  font-weight: 600;
  border-bottom: 1px solid #ebeef5;
}
.kg-path-body[data-v-3e820070] {
  padding: 10px 14px;
}
.kg-path-result[data-v-3e820070] {
  margin-top: 6px;
  padding: 6px 8px;
  font-size: 12px;
  color: #4C8EFA;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
}
/* 抽屉样式 */
.ai-drawer[data-v-3e820070] :deep(.ant-drawer-content) {
  background: #fff;
}
.ai-drawer[data-v-3e820070] :deep(.ant-drawer-header) {
  background: #fafafa;
  border-bottom: 1px solid #ebeef5;
}
.ai-drawer[data-v-3e820070] :deep(.ant-drawer-title) {
  color: #303133;
  font-size: 16px;
  font-weight: 600;
}
.ai-drawer[data-v-3e820070] :deep(.ant-drawer-close) {
  color: #909399;
}
.entity-section[data-v-3e820070] {
  margin-bottom: 16px;
}
.entity-desc h4[data-v-3e820070],
.entity-relations h4[data-v-3e820070] {
  color: #303133;
  font-size: 13px;
  margin-bottom: 8px;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}
.entity-desc p[data-v-3e820070] {
  color: #606266;
  font-size: 14px;
  line-height: 1.6;
}
.relation-list[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  gap: 8px;
}
.relation-item[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: #f5f7fa;
  border-radius: 8px;
}
.relation-target[data-v-3e820070] {
  color: #606266;
  font-size: 13px;
}
.entity-action[data-v-3e820070] {
  margin-top: 16px;
}
.entity-action .ant-btn[data-v-3e820070] {
  background: #ecf5ff;
  border: 1px solid #d9ecff;
  color: #4C8EFA;
  border-radius: 8px;
}
.entity-action .ant-btn[data-v-3e820070]:hover {
  background: #d9ecff;
  border-color: #4C8EFA;
  color: #4C8EFA;
}
.entity-chat[data-v-3e820070] {
  margin-top: 12px;
}
.ai-btn-gradient[data-v-3e820070] {
  background: linear-gradient(135deg, #667eea, #764ba2) !important;
  border: none !important;
  border-radius: 8px !important;
  color: #fff !important;
  box-shadow: 0 2px 12px rgba(102, 126, 234, 0.3) !important;
}
/* ===== 图谱底部内联问答 ===== */
.kg-chat-section[data-v-3e820070] {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  border-top: 1px solid #ebeef5;
  background: #fafafa;
}
.kg-chat-input-row[data-v-3e820070] {
  padding: 8px 16px;
}
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input-affix-wrapper) {
  background: transparent;
}
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input) {
  background: #fff !important;
  border: 1px solid #dcdfe6 !important;
  border-radius: 20px !important;
  color: #303133 !important;
  font-size: 13px;
  padding-left: 32px !important;
  transition: all 0.3s;
}
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input:focus),
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input:hover) {
  border-color: #4C8EFA !important;
  box-shadow: 0 0 0 2px rgba(76, 142, 250, 0.15) !important;
}
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input:-ms-input-placeholder) {
  color: #c0c4cc !important;
}
.kg-chat-input-row[data-v-3e820070] :deep(.ant-input::placeholder) {
  color: #c0c4cc !important;
}
.kg-chat-input-row.drag-over[data-v-3e820070] {
  background: rgba(76, 142, 250, 0.08);
  border-radius: 8px;
}
.kg-chat-input-row.drag-over[data-v-3e820070] :deep(.ant-input) {
  border-color: #4C8EFA !important;
  box-shadow: 0 0 0 3px rgba(76, 142, 250, 0.2) !important;
  background: #f0f7ff !important;
}
.kg-chat-body[data-v-3e820070] {
  max-height: 220px;
  overflow-y: auto;
  border-top: 1px solid #ebeef5;
  animation: kgChatFadeIn-data-v-3e820070 0.2s ease-out;
}
.kg-chat-messages[data-v-3e820070] {
  padding: 8px 16px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  gap: 6px;
}
.kg-msg[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
}
.kg-msg.user[data-v-3e820070] {
  -ms-flex-pack: end;
      justify-content: flex-end;
}
.kg-msg.assistant[data-v-3e820070] {
  -ms-flex-pack: start;
      justify-content: flex-start;
}
.kg-msg-bubble[data-v-3e820070] {
  max-width: 85%;
  padding: 8px 12px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 12px;
  word-break: break-word;
  white-space: pre-wrap;
}
.kg-msg.user .kg-msg-bubble[data-v-3e820070] {
  background: linear-gradient(135deg, #667eea, #764ba2);
  color: #fff;
  border-bottom-right-radius: 4px;
}
.kg-msg.assistant .kg-msg-bubble[data-v-3e820070] {
  background: #f0f2f5;
  color: #303133;
  border: 1px solid #e4e7ed;
  border-bottom-left-radius: 4px;
}
.kg-thinking[data-v-3e820070] {
  color: #909399 !important;
  font-size: 12px;
}
@keyframes kgChatFadeIn-data-v-3e820070 {
from {
    opacity: 0;
    max-height: 0;
}
to {
    opacity: 1;
    max-height: 220px;
}
}
/* ===== 操作栏 ===== */
.kg-toolbar[data-v-3e820070] {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  padding: 8px 16px;
  background: #fff;
  border-bottom: 1px solid #ebeef5;
  gap: 12px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
}
.kg-toolbar-left[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 10px;
}
.kg-toolbar-title[data-v-3e820070] {
  font-size: 15px;
  font-weight: 600;
  color: #303133;
}
.kg-toolbar-right[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 8px;
}
/* ===== 任务进度面板 ===== */
.kg-task-panel[data-v-3e820070] {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  border-bottom: 1px solid #ebeef5;
  background: #fafafa;
}
.kg-task-panel.task-running[data-v-3e820070] {
  background: #f0f7ff;
  border-left: 3px solid #1890ff;
}
.kg-task-panel.task-success[data-v-3e820070] {
  background: #f6ffed;
  border-left: 3px solid #52c41a;
}
.kg-task-panel.task-partial_failed[data-v-3e820070] {
  background: #fffbe6;
  border-left: 3px solid #faad14;
}
.kg-task-panel.task-failed[data-v-3e820070] {
  background: #fff2f0;
  border-left: 3px solid #f5222d;
}
.kg-task-header[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 8px;
  padding: 10px 16px;
  border-bottom: 1px solid rgba(0, 0, 0, 0.06);
}
.kg-task-title[data-v-3e820070] {
  font-weight: 600;
  font-size: 14px;
  color: #303133;
}
.kg-task-id[data-v-3e820070] {
  -ms-flex: 1;
      flex: 1;
  font-size: 11px;
  color: #999;
  font-family: monospace;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.kg-task-body[data-v-3e820070] {
  padding: 12px 16px;
}
.task-stat[data-v-3e820070] {
  text-align: center;
  padding: 6px 4px;
}
.task-stat-label[data-v-3e820070] {
  font-size: 11px;
  color: #999;
  margin-bottom: 4px;
}
.task-stat-value[data-v-3e820070] {
  font-size: 16px;
  font-weight: 600;
  color: #303133;
}
.task-stat-value.success[data-v-3e820070] {
  color: #52c41a;
}
.task-stat-value.fail[data-v-3e820070] {
  color: #f5222d;
}
.task-error[data-v-3e820070],
.task-warning[data-v-3e820070] {
  margin-top: 10px;
}
/* ===== 最近任务 ===== */
.recent-task-card[data-v-3e820070] {
  padding: 12px 14px;
  margin-bottom: 10px;
  background: #fafafa;
  border: 1px solid #f0f0f0;
  border-radius: 6px;
  transition: border-color 0.2s;
}
.recent-task-card[data-v-3e820070]:hover {
  border-color: #d9d9d9;
}
.rtc-header[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  margin-bottom: 8px;
}
.rtc-id[data-v-3e820070] {
  font-size: 12px;
  font-family: monospace;
  color: #666;
  max-width: 280px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.rtc-body[data-v-3e820070] {
  margin-bottom: 8px;
}
.rtc-label[data-v-3e820070] {
  display: block;
  font-size: 11px;
  color: #999;
}
.rtc-value[data-v-3e820070] {
  font-size: 12px;
  color: #333;
  font-weight: 500;
}
.rtc-error[data-v-3e820070] {
  color: #f5222d;
  font-size: 11px;
  font-weight: normal;
  word-break: break-all;
  display: block;
  max-height: 40px;
  overflow: hidden;
}
.rtc-footer[data-v-3e820070] {
  text-align: right;
}
/* ===== 实体详情元数据 ===== */
.entity-meta[data-v-3e820070] {
  margin-bottom: 16px;
  padding: 10px 12px;
  background: #f5f7fa;
  border-radius: 6px;
}
.meta-row[data-v-3e820070] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  padding: 3px 0;
  font-size: 13px;
}
.meta-label[data-v-3e820070] {
  color: #909399;
  -ms-flex-negative: 0;
      flex-shrink: 0;
  margin-right: 12px;
}
.meta-value[data-v-3e820070] {
  color: #303133;
  text-align: right;
  word-break: break-all;
}
.meta-value.mono[data-v-3e820070] {
  font-family: monospace;
  font-size: 11px;
  color: #666;
  max-width: 200px;
}

