
.graph-page[data-v-18b65c88] {
  height: calc(100vh - 120px);
}
.graph-layout[data-v-18b65c88] {
  display: -ms-flexbox;
  display: flex;
  height: 100%;
  gap: 16px;
}
.graph-canvas-wrapper[data-v-18b65c88] {
  -ms-flex: 1;
      flex: 1;
  position: relative;
  min-height: 500px;
  border: 1px solid #f0f0f0;
  border-radius: 4px;
  overflow: hidden;
}
.graph-container[data-v-18b65c88] {
  width: 100%;
  height: 100%;
  min-height: 500px;
}
.loading-mask[data-v-18b65c88] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10;
}
.empty-tip[data-v-18b65c88] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
}
.graph-controls[data-v-18b65c88] {
  position: absolute;
  right: 16px;
  bottom: 16px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  gap: 8px;
  z-index: 5;
}
.ctrl-btn[data-v-18b65c88] {
  background: #fff;
  border: 1px solid #d9d9d9;
  color: #666;
  box-shadow: 0 2px 4px rgba(0,0,0,0.1);
}
.ctrl-btn[data-v-18b65c88]:hover {
  color: #1890ff;
  border-color: #1890ff;
}
.entity-panel[data-v-18b65c88] {
  width: 380px;
  min-width: 380px;
  border: 1px solid #f0f0f0;
  border-radius: 4px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  background: #fff;
  overflow: hidden;
}

/* 面板区块头 */
.panel-section-header[data-v-18b65c88] {
  padding: 10px 16px;
  font-weight: 600;
  font-size: 14px;
  color: #333;
  border-bottom: 1px solid #f0f0f0;
  background: #fafafa;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  cursor: pointer;
  -webkit-user-select: none;
      -ms-user-select: none;
          user-select: none;
}

/* ===== 路径查询 ===== */
.path-finder[data-v-18b65c88] {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  border-bottom: 1px solid #f0f0f0;
}
.path-finder-body[data-v-18b65c88] {
  padding: 12px 16px;
  background: #fafbff;
}
.path-field[data-v-18b65c88] {
  margin-bottom: 8px;
}
.path-field label[data-v-18b65c88] {
  display: block;
  font-size: 12px;
  color: #666;
  margin-bottom: 4px;
}
.path-result[data-v-18b65c88] {
  margin-top: 8px;
  padding: 8px;
  background: #fff;
  border: 1px solid #e8e8e8;
  border-radius: 4px;
  font-size: 12px;
}
.path-summary[data-v-18b65c88] {
  color: #52c41a;
  margin-bottom: 6px;
  font-weight: 500;
}
.path-summary.no-path[data-v-18b65c88] {
  color: #faad14;
}

/* ===== 通用课程问答 ===== */
.general-chat[data-v-18b65c88] {
  -ms-flex-negative: 0;
      flex-shrink: 0;
  border-bottom: 1px solid #f0f0f0;
  background: #fafbff;
}
.general-chat-messages[data-v-18b65c88] {
  max-height: 200px;
  overflow-y: auto;
  padding: 10px 16px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  gap: 8px;
}
.chat-msg[data-v-18b65c88] {
  display: -ms-flexbox;
  display: flex;
}
.chat-msg.user[data-v-18b65c88] {
  -ms-flex-pack: end;
      justify-content: flex-end;
}
.chat-msg.assistant[data-v-18b65c88] {
  -ms-flex-pack: start;
      justify-content: flex-start;
}
.chat-msg-bubble[data-v-18b65c88] {
  max-width: 90%;
  padding: 8px 12px;
  font-size: 13px;
  line-height: 1.5;
  border-radius: 12px;
  white-space: pre-wrap;
  word-break: break-word;
}
.chat-msg.user .chat-msg-bubble[data-v-18b65c88] {
  background: #1890ff;
  color: #fff;
  border-bottom-right-radius: 4px;
}
.chat-msg.assistant .chat-msg-bubble[data-v-18b65c88] {
  background: #f0f2f5;
  color: #333;
  border-bottom-left-radius: 4px;
}
.chat-thinking[data-v-18b65c88] {
  color: #999 !important;
  font-size: 12px;
}
.general-chat-input[data-v-18b65c88] {
  padding: 8px 16px 12px;
}
.general-chat-input.drag-over[data-v-18b65c88] {
  background: rgba(24, 144, 255, 0.08);
  border-radius: 4px;
}
.general-chat-input.drag-over textarea[data-v-18b65c88] {
  border-color: #1890ff !important;
  box-shadow: 0 0 0 3px rgba(24, 144, 255, 0.2) !important;
}

/* ===== 实体详情 ===== */
.entity-detail[data-v-18b65c88] {
  -ms-flex: 1;
      flex: 1;
  overflow-y: auto;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
}
.entity-detail-header[data-v-18b65c88] {
  padding: 12px 16px;
  border-bottom: 1px solid #f0f0f0;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 8px;
  -ms-flex-negative: 0;
      flex-shrink: 0;
}
.entity-detail-header h3[data-v-18b65c88] {
  margin: 0;
  font-size: 15px;
}
.entity-detail-body[data-v-18b65c88] {
  padding: 16px;
  -ms-flex: 1;
      flex: 1;
  overflow-y: auto;
}
.entity-empty-hint[data-v-18b65c88] {
  -ms-flex: 1;
      flex: 1;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-direction: column;
      flex-direction: column;
  -ms-flex-pack: center;
      justify-content: center;
  -ms-flex-align: center;
      align-items: center;
  gap: 12px;
  color: #999;
  padding: 24px;
}
.entity-desc[data-v-18b65c88] {
  margin-bottom: 16px;
  color: #666;
  font-size: 13px;
}
.entity-relations h4[data-v-18b65c88],
.entity-chat-section h4[data-v-18b65c88],
.entity-chat-result h4[data-v-18b65c88] {
  font-size: 14px;
  margin-bottom: 8px;
}
.entity-relations ul[data-v-18b65c88] {
  list-style: none;
  padding: 0;
  margin: 0;
}
.entity-relations li[data-v-18b65c88] {
  margin-bottom: 6px;
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 6px;
}
.entity-chat-section[data-v-18b65c88] {
  margin-top: 20px;
  padding-top: 16px;
  border-top: 1px solid #f0f0f0;
}
.entity-chat-result[data-v-18b65c88] {
  margin-top: 16px;
  padding: 12px;
  background: #f6f8fa;
  border-radius: 4px;
}
.answer-text[data-v-18b65c88] {
  white-space: pre-wrap;
  font-size: 13px;
  line-height: 1.6;
  color: #333;
}
.references[data-v-18b65c88] {
  margin-top: 16px;
}
.reference-item[data-v-18b65c88] {
  padding: 8px;
  margin-bottom: 8px;
  background: #fff;
  border: 1px solid #e8e8e8;
  border-radius: 4px;
  font-size: 12px;
}
.ref-doc[data-v-18b65c88] {
  font-weight: bold;
  color: #1890ff;
  margin-bottom: 4px;
}
.ref-content[data-v-18b65c88] {
  color: #666;
  max-height: 60px;
  overflow: hidden;
  text-overflow: ellipsis;
}
.ref-score[data-v-18b65c88] {
  color: #999;
  margin-top: 4px;
}

/* ===== 操作栏 ===== */
.graph-toolbar[data-v-18b65c88] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-pack: justify;
      justify-content: space-between;
  -ms-flex-align: center;
      align-items: center;
  padding: 10px 16px;
  background: #fafafa;
  border-bottom: 1px solid #f0f0f0;
  gap: 12px;
  -ms-flex-wrap: wrap;
      flex-wrap: wrap;
  margin-bottom: 12px;
  border-radius: 4px;
}
.graph-toolbar-left[data-v-18b65c88] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 10px;
}
.graph-toolbar-title[data-v-18b65c88] {
  font-size: 15px;
  font-weight: 600;
  color: #333;
}
.graph-toolbar-right[data-v-18b65c88] {
  display: -ms-flexbox;
  display: flex;
  -ms-flex-align: center;
      align-items: center;
  gap: 8px;
}

/* ===== 任务进度面板 ===== */
.graph-task-panel[data-v-18b65c88] {
  margin-bottom: 12px;
  border: 1px solid #f0f0f0;
  border-radius: 4px;
  background: #fafafa;
}
.graph-task-panel.task-running[data-v-18b65c88] { background: #f0f7ff; border-left: 3px solid #1890ff;
}
.graph-task-panel.task-success[data-v-18b65c88] { background: #f6ffed; border-left: 3px solid #52c41a;
}
.graph-task-panel.task-partial_failed[data-v-18b65c88] { background: #fffbe6; border-left: 3px solid #faad14;
}
.graph-task-panel.task-failed[data-v-18b65c88] { background: #fff2f0; border-left: 3px solid #f5222d;
}
.graph-task-header[data-v-18b65c88] {
  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);
}
.graph-task-title[data-v-18b65c88] { font-weight: 600; font-size: 14px; color: #333;
}
.graph-task-id[data-v-18b65c88] { -ms-flex: 1; flex: 1; font-size: 11px; color: #999; font-family: monospace; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.graph-task-body[data-v-18b65c88] { padding: 12px 16px;
}
.task-stat[data-v-18b65c88] { text-align: center; padding: 4px;
}
.task-stat-label[data-v-18b65c88] { font-size: 11px; color: #999; margin-bottom: 2px;
}
.task-stat-value[data-v-18b65c88] { font-size: 15px; font-weight: 600; color: #333;
}

/* ===== 最近任务 ===== */
.recent-task-card[data-v-18b65c88] {
  padding: 12px 14px; margin-bottom: 10px;
  background: #fafafa; border: 1px solid #f0f0f0; border-radius: 6px;
}
.recent-task-card[data-v-18b65c88]:hover { border-color: #d9d9d9;
}
.rtc-header[data-v-18b65c88] {
  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-18b65c88] { font-size: 12px; font-family: monospace; color: #666; max-width: 280px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.rtc-body[data-v-18b65c88] { margin-bottom: 8px;
}
.rtc-label[data-v-18b65c88] { display: block; font-size: 11px; color: #999;
}
.rtc-value[data-v-18b65c88] { font-size: 12px; color: #333; font-weight: 500;
}
.rtc-error[data-v-18b65c88] { color: #f5222d; font-size: 11px; font-weight: normal; word-break: break-all; display: block; max-height: 40px; overflow: hidden;
}
.rtc-footer[data-v-18b65c88] { text-align: right;
}

