
.np-result-wrapper[data-v-75f41027] {
  display: flex;
  flex-direction: column;
}
.np-result-header[data-v-75f41027] {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--talent-border-primary);
  background: var(--talent-bg-primary);
}
.project-info[data-v-75f41027] {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}
.project-name[data-v-75f41027] {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  font-weight: 600;
  color: var(--talent-text-primary);
}
.project-name i[data-v-75f41027] {
  color: var(--talent-primary);
}
.level-tag[data-v-75f41027] {
  padding: 0.125rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 12px;
  border: 1px solid var(--talent-border-primary);
}
.level-national[data-v-75f41027] {
  background: var(--talent-primary-lightest);
  color: var(--talent-primary);
  border-color: var(--talent-primary-lighter);
}
.level-provincial[data-v-75f41027] {
  background: #fef3c7;
  color: #b45309;
  border-color: #f59e0b;
}
.project-brief[data-v-75f41027] {
  color: var(--talent-text-tertiary);
  font-size: 12px;
}
.meta-info[data-v-75f41027] {
  display: flex;
  align-items: center;
  gap: 1rem;
  color: var(--talent-text-secondary);
}
.meta-item[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  font-size: 13px;
}
.np-result-content[data-v-75f41027] {
  padding: 1rem 1.25rem;
}
.view-toggle[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 0.75rem;
}
.toggle-label[data-v-75f41027] {
  color: var(--talent-text-tertiary);
  font-size: 13px;
}
.toggle-btn[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  height: 32px;
  padding: 0 16px;
  border-radius: 9999px;
  background: #ffffff;
  border: 1px solid #d1d5db;
  cursor: pointer;
  transition: all 0.2s ease;
  font-size: 13px;
  color: #374151;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  font-weight: 500;
}
.toggle-btn[data-v-75f41027]:hover {
  border-color: #3b82f6;
  background: #eff6ff;
  color: #1e40af;
}
.toggle-btn.active[data-v-75f41027] {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
  border-color: #2563eb;
  color: #ffffff;
  font-weight: 600;
  box-shadow: 0 2px 4px rgba(59, 130, 246, 0.25);
}
.toggle-btn.active[data-v-75f41027]:hover {
  background: linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%);
  color: #1e3a8a;
  box-shadow: 0 4px 8px rgba(59, 130, 246, 0.35);
}

/* AI 按钮与禁用态复用切换按钮样式 */
.toggle-btn.ai-run[data-v-75f41027] { margin-left: 8px; display: inline-flex; align-items: center;
}
.toggle-btn.ai-run.disabled[data-v-75f41027] { opacity: 0.6; cursor: not-allowed;
}
.stats-view .card[data-v-75f41027] {
  background: var(--talent-bg-primary);
  border: 1px solid var(--talent-border-primary);
  border-radius: 0.5rem;
  padding: 0.75rem 1rem;
}

/* AI 视图样式 */
.ai-view[data-v-75f41027] { background: var(--talent-bg-primary); border: 1px solid var(--talent-border-primary); border-radius: 0.5rem; padding: 0.75rem 1rem; min-height: 320px;
}
.ai-toolbar[data-v-75f41027] { display: flex; justify-content: flex-end; margin-bottom: 8px;
}
.ai-action[data-v-75f41027] { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid var(--talent-border-primary); border-radius: 6px; background: var(--talent-bg-primary); color: var(--talent-text-secondary); cursor: pointer;
}
.ai-action[data-v-75f41027]:disabled { opacity: 0.6; cursor: not-allowed;
}
.ai-loading[data-v-75f41027] { display: inline-flex; align-items: center; gap: 8px; color: #606266; font-size: 13px;
}
.ai-empty[data-v-75f41027] { color: var(--talent-text-tertiary); font-size: 13px;
}
.ai-html[data-v-75f41027] { background: #fff; border: 1px solid #e8e8e8; border-radius: 8px; padding: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); min-height: 280px; overflow: auto;
}
.stats-grid[data-v-75f41027] {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 0.75rem;
  margin-bottom: 0.75rem;
}
.metric-label[data-v-75f41027] {
  font-size: 12px;
  color: var(--talent-text-tertiary);
  margin-bottom: 6px;
  white-space: nowrap;
}
.metric-value[data-v-75f41027] {
  font-size: 22px;
  font-weight: 700;
  color: var(--talent-text-primary);
}

/* 统一顶部卡片尺寸 */
.stats-grid .card.metric[data-v-75f41027] {
  min-height: 110px;
  display: flex;
  flex-direction: column;
  justify-content: center;
}
.metric-row[data-v-75f41027] {
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
}
.metric-value[data-v-75f41027] {
  white-space: nowrap;
}
.stats-sections[data-v-75f41027] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.section-title[data-v-75f41027] {
  font-weight: 600;
  color: var(--talent-text-primary);
  margin-bottom: 0.5rem;
}
.echart[data-v-75f41027] {
  width: 100%;
  height: 300px;
}
.echarts-row[data-v-75f41027] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.loading-state[data-v-75f41027] {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: var(--talent-text-secondary);
}
.empty-state[data-v-75f41027] {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 320px;
  color: var(--talent-text-secondary);
}
.empty-icon[data-v-75f41027] { margin-bottom: 0.75rem;
}
.empty-icon i[data-v-75f41027] { font-size: 40px; color: var(--talent-text-light);
}
.empty-title[data-v-75f41027] { font-size: 18px; font-weight: 600; color: var(--talent-text-primary);
}
.empty-desc[data-v-75f41027] { font-size: 13px; color: var(--talent-text-tertiary); margin-top: 0.25rem;
}
.np-table[data-v-75f41027] {
  border: 1px solid var(--talent-border-primary);
  border-radius: 0.5rem;
  overflow: hidden;
}
.np-table-header[data-v-75f41027], .np-table-row[data-v-75f41027] {
  display: grid;
  grid-template-columns: 64px 1.6fr 120px 120px 220px 2fr 120px;
  gap: 0.5rem;
  align-items: center;
}
.np-table-header[data-v-75f41027] {
  background: var(--talent-bg-tertiary);
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--talent-border-primary);
  font-size: 13px;
  color: var(--talent-text-secondary);
  font-weight: 600;
}
.np-table-row[data-v-75f41027] {
  padding: 0.75rem 1rem;
  border-bottom: 1px solid var(--talent-border-primary);
  background: var(--talent-bg-primary);
  transition: background-color var(--talent-animation-normal) var(--talent-easing);
}
.np-table-row[data-v-75f41027]:hover { background: var(--talent-bg-secondary);
}
.np-table-row[data-v-75f41027]:last-child { border-bottom: none;
}
.np-table-row.blocked[data-v-75f41027] { opacity: 0.75;
}
.col.rank[data-v-75f41027] { color: var(--talent-text-tertiary);
}
.name-line[data-v-75f41027] { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 2px;
}
.name[data-v-75f41027] { font-weight: 700; color: #2563eb;
}
.desc-line[data-v-75f41027] { color: var(--talent-text-secondary); font-size: 12px; line-height: 1.2;
}
.desc-line .college[data-v-75f41027],
.desc-line .title[data-v-75f41027] { color: var(--talent-text-secondary); font-size: 12px;
}
.desc-line .title[data-v-75f41027] { font-weight: 400;
}
.sep[data-v-75f41027] { margin: 0 0.375rem; color: var(--talent-text-light);
}
.progress[data-v-75f41027] {
  position: relative;
  height: 8px;
  border-radius: 999px;
  background: #e5e7eb;
  overflow: hidden;
  min-width: 120px;
}
.progress .bar[data-v-75f41027] { height: 100%; border-radius: inherit;
}
.progress.primary .bar[data-v-75f41027] { background: var(--talent-primary);
}
.progress.hard .bar[data-v-75f41027] { background: #60a5fa;
}
.progress.merit .bar[data-v-75f41027] { background: #34d399;
}
.percent[data-v-75f41027] { font-size: 12px; color: var(--talent-text-secondary); margin-left: 0.5rem;
}
.metrics-line[data-v-75f41027] { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.25rem;
}
.metrics-line[data-v-75f41027]:last-child { margin-bottom: 0;
}
.metric-label[data-v-75f41027] { width: 52px; color: var(--talent-text-tertiary); font-size: 12px; text-align: right;
}
.status-text[data-v-75f41027] { font-size: 12px; color: var(--talent-text-secondary);
}
.tag[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 12px;
  border: 1px solid var(--talent-border-primary);
  color: var(--talent-text-secondary);
}
.tag.danger[data-v-75f41027] { background: #fee2e2; color: #b91c1c; border-color: #fecaca;
}
.view-btn[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  gap: 0.375rem;
  padding: 0.375rem 0.75rem;
  border: 1px solid var(--talent-border-primary);
  border-radius: 0.375rem;
  background: var(--talent-bg-primary);
  color: var(--talent-text-secondary);
  cursor: pointer;
}
.view-btn[data-v-75f41027]:hover { background: var(--talent-primary-lightest); color: var(--talent-primary); border-color: var(--talent-primary);
}
.level-badge[data-v-75f41027] {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 12px;
  border: 1px solid var(--talent-border-primary);
  white-space: nowrap;
}
.level-badge.lv-national[data-v-75f41027] { background: #dbeafe; color: #1e40af; border-color: #bfdbfe;
}
.level-badge.lv-provincial[data-v-75f41027] { background: #ffedd5; color: #9a3412; border-color: #fed7aa;
}
.level-badge.lv-city[data-v-75f41027] { background: #ecfccb; color: #365314; border-color: #d9f99d;
}
.level-badge.lv-school[data-v-75f41027] { background: #e0e7ff; color: #3730a3; border-color: #c7d2fe;
}
.level-badge.lv-other[data-v-75f41027] { background: #f1f5f9; color: #334155; border-color: #e2e8f0;
}

/* 空态下 blocked 的适配度文本 */
.blocked-text[data-v-75f41027] { color: #e53935; font-weight: 600; font-size: 13px;
}

/* 硬门槛缺口 胶囊展示（与 SelfPage 风格接近） */
.gap-title[data-v-75f41027] { font-size: 12px; color: var(--talent-text-tertiary); margin-bottom: 6px;
}
.capsule-wrap[data-v-75f41027] { display: flex; flex-wrap: wrap; gap: 6px;
}
.capsule[data-v-75f41027] { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 999px; border: 1px solid var(--talent-border-primary); background: var(--talent-bg-primary);
}
.capsule.fail[data-v-75f41027] { background: #fee2e2; border-color: #fecaca; color: #b91c1c;
}
.capsule-text[data-v-75f41027] { font-size: 12px;
}
.capsule-meta[data-v-75f41027] { font-size: 11px; color: #9ca3af; margin-left: 6px;
}
@media (max-width: 1024px) {
.np-table-header[data-v-75f41027], .np-table-row[data-v-75f41027] {
    grid-template-columns: 56px 1.6fr 110px 110px 170px 1.7fr 96px;
}
}
@media (max-width: 768px) {
.np-table-header[data-v-75f41027], .np-table-row[data-v-75f41027] {
    grid-template-columns: 48px 1.6fr 90px 90px 140px 1.1fr 88px;
}
.progress[data-v-75f41027] { min-width: 100px;
}
.stats-sections[data-v-75f41027] { grid-template-columns: 1fr;
}
}
@media (max-width: 640px) {
.np-table-header[data-v-75f41027], .np-table-row[data-v-75f41027] {
    grid-template-columns: 40px 1.7fr 80px 80px 120px 0.9fr 76px;
}
.metric-label[data-v-75f41027] { width: 48px;
}
.progress[data-v-75f41027] { min-width: 90px;
}
}

/* ===== 弹窗样式（人才×项目明细） ===== */
.npd-title[data-v-75f41027] { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: #111827;
}
.npd-sep[data-v-75f41027] { margin: 0 4px; color: #9ca3af;
}
.npd-content[data-v-75f41027] { display: grid; gap: 12px;
}
.npd-meta[data-v-75f41027] { display: grid; gap: 6px; padding: 8px 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px;
}
.npd-meta-row[data-v-75f41027] { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #374151;
}
.npd-label[data-v-75f41027] { width: 72px; color: #6b7280; text-align: right; flex-shrink: 0;
}
.npd-dot[data-v-75f41027] { margin: 0 6px; color: #9ca3af;
}
.npd-kpis[data-v-75f41027] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
.npd-kpi[data-v-75f41027] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 8px 10px;
}
.npd-kpi-label[data-v-75f41027] { font-size: 12px; color: #6b7280; margin-bottom: 4px;
}
.npd-kpi-value[data-v-75f41027] { font-weight: 800; font-size: 18px; color: #111827;
}
.npd-alert[data-v-75f41027] { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; border-radius: 8px; padding: 8px 10px; border: 1px solid #e5e7eb;
}
.npd-alert.danger[data-v-75f41027] { background: #fef2f2; color: #b91c1c; border-color: #fecaca;
}
.npd-section[data-v-75f41027] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 10px 12px;
}
.npd-section-title[data-v-75f41027] { font-weight: 700; font-size: 13px; color: #111827; margin-bottom: 8px;
}
.npd-capsules[data-v-75f41027] { display: flex; flex-wrap: wrap; gap: 8px;
}
.npd-capsule[data-v-75f41027] { display: inline-flex; flex-direction: column; gap: 2px; padding: 6px 10px; border-radius: 8px; border: 1px solid #e5e7eb; background: #f9fafb;
}
.npd-capsule.fail[data-v-75f41027] { background: #fef2f2; color: #b91c1c; border-color: #fecaca;
}
.npd-cap-title[data-v-75f41027] { font-size: 12px; font-weight: 600;
}
.npd-cap-meta[data-v-75f41027] { font-size: 11px; color: #6b7280;
}
.npd-criteria[data-v-75f41027] { display: grid; grid-template-columns: 1fr; gap: 6px;
}
.npd-criterion[data-v-75f41027] { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fafafa;
}
.npd-criterion.ok[data-v-75f41027] { background: #f0fdf4; border-color: #d1fae5;
}
.npd-criterion.deficit[data-v-75f41027] { background: #fef2f2; border-color: #fecaca;
}
.npd-criterion-name[data-v-75f41027] { font-size: 13px; color: #374151; font-weight: 600;
}
.npd-criterion-meta[data-v-75f41027] { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; color: #6b7280;
}
.npd-criterion-ratio[data-v-75f41027] { font-weight: 700; color: #374151;
}
.npd-tag[data-v-75f41027] { color: #b91c1c; font-weight: 700;
}
.npd-empty[data-v-75f41027] { font-size: 12px; color: #6b7280;
}
.npd-footer[data-v-75f41027] { display: flex; justify-content: flex-end; gap: 8px;
}

/* ===== 复刻 HomePage 新增待办的弹窗风格（overlay + dialog） ===== */
.npd-overlay[data-v-75f41027] {
  position: fixed;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(4px);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3000;
}
.npd-dialog[data-v-75f41027] {
  width: 760px;
  max-width: calc(100vw - 40px);
  background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
  border-radius: 16px;
  box-shadow: 0 12px 40px rgba(2, 6, 23, 0.2), 0 0 0 1px rgba(99, 102, 241, 0.12) inset;
  border: 1px solid rgba(226, 232, 240, 0.9);
  overflow: hidden;
  animation: npd-pop-in-75f41027 140ms cubic-bezier(.21,.9,.21,1.02);
}
@keyframes npd-pop-in-75f41027 {
from { transform: translateY(6px) scale(.98); opacity: 0;
}
to { transform: translateY(0) scale(1); opacity: 1;
}
}
.npd-header[data-v-75f41027] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 16px;
  background: linear-gradient(90deg, rgba(59,130,246,.08), rgba(99,102,241,.08));
  border-bottom: 1px solid #e2e8f0;
}
.npd-title[data-v-75f41027] { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: #0f172a;
}
.npd-close[data-v-75f41027] { border: none; background: transparent; padding: 6px; border-radius: 8px; color: #475569; cursor: pointer;
}
.npd-close[data-v-75f41027]:hover { background: rgba(15,23,42,.06);
}
.npd-body[data-v-75f41027] { padding: 16px; max-height: calc(80vh - 120px); overflow: auto;
}
.npd-footer[data-v-75f41027] { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 16px 16px; border-top: 1px solid #e2e8f0; background: #fff;
}

/* 胶囊按钮（与 HomePage 保持一致） */
.npd-capsule-btn[data-v-75f41027] {
  -moz-appearance: none;
       appearance: none;
  -webkit-appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 30px;
  padding: 0 14px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
  border: 1px solid transparent;
  transition: background-color .2s ease, color .2s ease, box-shadow .2s ease, border-color .2s ease, transform .06s ease;
}
.npd-capsule-btn[data-v-75f41027]:active { transform: translateY(1px);
}
.npd-capsule-btn.primary[data-v-75f41027] { background-color: #2563eb; color: #fff; border-color: #2563eb; box-shadow: 0 2px 8px rgba(37, 99, 235, .25);
}
.npd-capsule-btn.primary[data-v-75f41027]:hover { background-color: #1d4ed8; border-color: #1d4ed8;
}
.npd-capsule-btn.ghost[data-v-75f41027] { background-color: #ffffff; color: #1f2937; border-color: #e5e7eb;
}
.npd-capsule-btn.ghost[data-v-75f41027]:hover { background-color: #f9fafb;
}

/* ========== 复刻 TalentFilterList 的人才等级徽章渐变风格 ========== */
.talent-level-badge[data-v-75f41027] {
  display: inline-block;
  padding: 2px 10px;
  border-radius: 999px;
  font-size: 12px;
  line-height: 18px;
  color: #fff;
  font-weight: 500;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1), 0 1px 2px rgba(0, 0, 0, 0.06);
}

/* 国家级 - 红色渐变 */
.talent-level-badge.level-national[data-v-75f41027] {
  background: linear-gradient(135deg, #ef4444 0%, #dc2626 50%, #b91c1c 100%);
}

/* 省部级 - 橙色渐变 */
.talent-level-badge.level-provincial[data-v-75f41027] {
  background: linear-gradient(135deg, #f59e0b 0%, #d97706 50%, #b45309 100%);
}

/* 厅局级 - 绿色渐变 */
.talent-level-badge.level-department[data-v-75f41027] {
  background: linear-gradient(135deg, #10b981 0%, #059669 50%, #047857 100%);
}

/* 地市级 - 蓝色渐变 */
.talent-level-badge.level-city[data-v-75f41027] {
  background: linear-gradient(135deg, #3b82f6 0%, #2563eb 50%, #1d4ed8 100%);
}

/* 校级 - 靛蓝色渐变 */
.talent-level-badge.level-school[data-v-75f41027] {
  background: linear-gradient(135deg, #6366f1 0%, #4f46e5 50%, #4338ca 100%);
}

/* 其他 - 灰色渐变 */
.talent-level-badge.level-other[data-v-75f41027] {
  background: linear-gradient(135deg, #6b7280 0%, #4b5563 50%, #374151 100%);
}

/* ===== 现代化进度条（NP Result 专用） ===== */
.npres-progress-container[data-v-75f41027] {
  position: relative;
  width: 100%;
  height: 20px;
  background: linear-gradient(to bottom, #f1f5f9, #e2e8f0);
  border-radius: 999px;
  overflow: hidden;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.06);
  min-width: 140px;
}
.npres-progress-container.small[data-v-75f41027] { height: 18px; min-width: 120px;
}
.npres-progress-bar[data-v-75f41027] {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  border-radius: 999px;
  transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.2s ease;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.npres-progress-bar.primary[data-v-75f41027] {
  background: linear-gradient(90deg, #3b82f6 0%, #2563eb 60%, #1d4ed8 100%);
}
.npres-progress-bar.hard[data-v-75f41027] {
  background: linear-gradient(90deg, #60a5fa 0%, #3b82f6 100%);
}
.npres-progress-bar.merit[data-v-75f41027] {
  background: linear-gradient(90deg, #34d399 0%, #10b981 100%);
}
.npres-progress-text[data-v-75f41027] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 12px;
  font-weight: 700;
  color: #ffffff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  letter-spacing: 0.2px;
  z-index: 1;
}


.school-result-wrapper[data-v-d0d870a4] {
  display: flex;
  flex-direction: column;
}
.school-result-header[data-v-d0d870a4] {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--talent-border-primary);
  background: var(--talent-bg-primary);
}
.project-info[data-v-d0d870a4] { display: flex; flex-direction: column; gap: 0.25rem;
}
.project-name[data-v-d0d870a4] { display: flex; align-items: center; gap: 0.5rem; font-weight: 600; color: var(--talent-text-primary);
}
.project-name i[data-v-d0d870a4] { color: var(--talent-primary);
}
.code-tag[data-v-d0d870a4] { padding: 0.125rem 0.5rem; border-radius: 0.375rem; font-size: 12px; border: 1px solid var(--talent-border-primary); color: var(--talent-text-secondary);
}
.status-tag[data-v-d0d870a4] { padding: 0.125rem 0.5rem; border-radius: 0.375rem; font-size: 12px; border: 1px solid var(--talent-border-primary);
}
.status-completed[data-v-d0d870a4] { background: #ecfdf5; color: #047857; border-color: #a7f3d0;
}
.status-running[data-v-d0d870a4] { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe;
}
.status-failed[data-v-d0d870a4] { background: #fee2e2; color: #b91c1c; border-color: #fecaca;
}
.status-pending[data-v-d0d870a4] { background: #f3f4f6; color: #374151; border-color: #e5e7eb;
}
.project-brief[data-v-d0d870a4] { color: var(--talent-text-tertiary); font-size: 12px;
}
.meta-info[data-v-d0d870a4] { display: flex; align-items: center; gap: 1rem; color: var(--talent-text-secondary);
}
.meta-item[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 0.375rem; font-size: 13px;
}
.school-result-content[data-v-d0d870a4] { padding: 1rem 1.25rem;
}
.view-toggle[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 8px; margin-bottom: 0.75rem;
}
.toggle-label[data-v-d0d870a4] { color: var(--talent-text-tertiary); font-size: 13px;
}
.toggle-btn[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 6px; height: 32px; padding: 0 16px; border-radius: 9999px; background: #ffffff; border: 1px solid #d1d5db; cursor: pointer; transition: all 0.2s ease; font-size: 13px; color: #374151; -webkit-user-select: none; -moz-user-select: none; user-select: none; font-weight: 500;
}
.toggle-btn[data-v-d0d870a4]:hover { border-color: #3b82f6; background: #eff6ff; color: #1e40af;
}
.toggle-btn.active[data-v-d0d870a4] { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); border-color: #2563eb; color: #ffffff; font-weight: 600; box-shadow: 0 2px 4px rgba(59, 130, 246, 0.25);
}
.toggle-btn.active[data-v-d0d870a4]:hover { background: linear-gradient(135deg, #60a5fa 0%, #3b82f6 100%); color: #1e3a8a; box-shadow: 0 4px 8px rgba(59, 130, 246, 0.35);
}
.toggle-btn.ai-run[data-v-d0d870a4] { margin-left: 8px; display: inline-flex; align-items: center;
}
.toggle-btn.ai-run.disabled[data-v-d0d870a4] { opacity: 0.6; cursor: not-allowed;
}
.loading-state[data-v-d0d870a4] { display: flex; align-items: center; gap: 0.5rem; color: var(--talent-text-secondary);
}
.empty-state[data-v-d0d870a4] { display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 320px; color: var(--talent-text-secondary);
}
.empty-icon[data-v-d0d870a4] { margin-bottom: 0.75rem;
}
.empty-icon i[data-v-d0d870a4] { font-size: 40px; color: var(--talent-text-light);
}
.empty-title[data-v-d0d870a4] { font-size: 18px; font-weight: 600; color: var(--talent-text-primary);
}
.empty-desc[data-v-d0d870a4] { font-size: 13px; color: var(--talent-text-tertiary); margin-top: 0.25rem;
}
.school-table[data-v-d0d870a4] { border: 1px solid var(--talent-border-primary); border-radius: 0.5rem; overflow: hidden;
}
.school-table-header[data-v-d0d870a4], .school-table-row[data-v-d0d870a4] { display: grid; grid-template-columns: 64px 1.6fr 220px 140px 120px 120px; gap: 0.5rem; align-items: center;
}
.school-table-header[data-v-d0d870a4] { background: var(--talent-bg-tertiary); padding: 0.75rem 1rem; border-bottom: 1px solid var(--talent-border-primary); font-size: 13px; color: var(--talent-text-secondary); font-weight: 600;
}
.school-table-row[data-v-d0d870a4] { padding: 0.75rem 1rem; border-bottom: 1px solid var(--talent-border-primary); background: var(--talent-bg-primary); transition: background-color var(--talent-animation-normal) var(--talent-easing);
}
.school-table-row[data-v-d0d870a4]:hover { background: var(--talent-bg-secondary);
}
.school-table-row[data-v-d0d870a4]:last-child { border-bottom: none;
}
.school-table-row.unqualified[data-v-d0d870a4] { opacity: 0.85;
}
.name-line[data-v-d0d870a4] { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 2px;
}
.name[data-v-d0d870a4] { font-weight: 700; color: #2563eb;
}
.desc-line[data-v-d0d870a4] { color: var(--talent-text-secondary); font-size: 12px; line-height: 1.2;
}
.desc-line .college[data-v-d0d870a4],
.desc-line .title[data-v-d0d870a4] { color: var(--talent-text-secondary); font-size: 12px;
}
.desc-line .title[data-v-d0d870a4] { font-weight: 400;
}
.sep[data-v-d0d870a4] { margin: 0 0.375rem; color: var(--talent-text-light);
}
.progress[data-v-d0d870a4] { position: relative; height: 8px; border-radius: 999px; background: #e5e7eb; overflow: hidden; min-width: 120px;
}
.progress .bar[data-v-d0d870a4] { height: 100%; border-radius: inherit;
}
.progress.primary .bar[data-v-d0d870a4] { background: var(--talent-primary);
}
.percent[data-v-d0d870a4] { font-size: 12px; color: var(--talent-text-secondary); margin-left: 0.5rem;
}
.level-tag[data-v-d0d870a4] { display: inline-flex; align-items: center; padding: 0.125rem 0.5rem; border-radius: 0.375rem; font-size: 12px; border: 1px solid var(--talent-border-primary); color: var(--talent-text-secondary);
}
.level-high[data-v-d0d870a4] { background: #ecfdf5; color: #047857; border-color: #a7f3d0;
}
.level-medium[data-v-d0d870a4] { background: #eff6ff; color: #1d4ed8; border-color: #bfdbfe;
}
.level-low[data-v-d0d870a4] { background: #fffbeb; color: #92400e; border-color: #fcd34d;
}
.level-very-low[data-v-d0d870a4] { background: #fee2e2; color: #b91c1c; border-color: #fecaca;
}
.qualified-text[data-v-d0d870a4] { font-size: 12px;
}
.qualified-text.yes[data-v-d0d870a4] { color: #047857;
}
.qualified-text.no[data-v-d0d870a4] { color: #b91c1c;
}
.tag[data-v-d0d870a4] { display: inline-flex; align-items: center; padding: 0.125rem 0.5rem; border-radius: 0.375rem; font-size: 12px; border: 1px solid var(--talent-border-primary); color: var(--talent-text-secondary);
}
.tag.danger[data-v-d0d870a4] { background: #fee2e2; color: #b91c1c; border-color: #fecaca;
}
.view-btn[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.75rem; border: 1px solid var(--talent-border-primary); border-radius: 0.375rem; background: var(--talent-bg-primary); color: var(--talent-text-secondary); cursor: pointer;
}
.view-btn[data-v-d0d870a4]:hover { background: var(--talent-primary-lightest); color: var(--talent-primary); border-color: var(--talent-primary);
}
.level-badge[data-v-d0d870a4] {
  display: inline-flex;
  align-items: center;
  padding: 0.125rem 0.5rem;
  border-radius: 0.375rem;
  font-size: 12px;
  border: 1px solid var(--talent-border-primary);
  white-space: nowrap;
}
.level-badge.lv-national[data-v-d0d870a4] { background: #dbeafe; color: #1e40af; border-color: #bfdbfe;
}
.level-badge.lv-provincial[data-v-d0d870a4] { background: #ffedd5; color: #9a3412; border-color: #fed7aa;
}
.level-badge.lv-city[data-v-d0d870a4] { background: #ecfccb; color: #365314; border-color: #d9f99d;
}
.level-badge.lv-school[data-v-d0d870a4] { background: #e0e7ff; color: #3730a3; border-color: #c7d2fe;
}
.level-badge.lv-other[data-v-d0d870a4] { background: #f1f5f9; color: #334155; border-color: #e2e8f0;
}
.stats-view .card[data-v-d0d870a4] { background: var(--talent-bg-primary); border: 1px solid var(--talent-border-primary); border-radius: 0.5rem; padding: 0.75rem 1rem;
}
.stats-grid[data-v-d0d870a4] { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 0.75rem; margin-bottom: 0.75rem;
}
.metric-label[data-v-d0d870a4] { font-size: 12px; color: var(--talent-text-tertiary); margin-bottom: 6px;
}
.metric-value[data-v-d0d870a4] { font-size: 22px; font-weight: 700; color: var(--talent-text-primary);
}
.stats-sections[data-v-d0d870a4] { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem;
}
.section-title[data-v-d0d870a4] { font-weight: 600; color: var(--talent-text-primary); margin-bottom: 0.5rem;
}
.echart[data-v-d0d870a4] { width: 100%; height: 300px;
}
.echarts-row[data-v-d0d870a4] { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem;
}

/* AI 视图样式 */
.ai-view[data-v-d0d870a4] { background: var(--talent-bg-primary); border: 1px solid var(--talent-border-primary); border-radius: 0.5rem; padding: 0.75rem 1rem; min-height: 320px;
}
.ai-toolbar[data-v-d0d870a4] { display: flex; justify-content: flex-end; margin-bottom: 8px;
}
.ai-action[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 6px; padding: 6px 12px; border: 1px solid var(--talent-border-primary); border-radius: 6px; background: var(--talent-bg-primary); color: var(--talent-text-secondary); cursor: pointer;
}
.ai-action[data-v-d0d870a4]:disabled { opacity: 0.6; cursor: not-allowed;
}
.ai-loading[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 8px; color: #606266; font-size: 13px;
}
.ai-empty[data-v-d0d870a4] { color: var(--talent-text-tertiary); font-size: 13px;
}
.ai-html[data-v-d0d870a4] { background: #fff; border: 1px solid #e8e8e8; border-radius: 8px; padding: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); min-height: 280px; overflow: auto;
}
@media (max-width: 1024px) {
.school-table-header[data-v-d0d870a4], .school-table-row[data-v-d0d870a4] { grid-template-columns: 56px 1.6fr 180px 120px 100px 100px;
}
}
@media (max-width: 768px) {
.school-table-header[data-v-d0d870a4], .school-table-row[data-v-d0d870a4] { grid-template-columns: 48px 1.6fr 160px 110px 90px 90px;
}
.progress[data-v-d0d870a4] { min-width: 96px;
}
.scres-progress-container[data-v-d0d870a4] { min-width: 120px;
}
.stats-sections[data-v-d0d870a4] { grid-template-columns: 1fr;
}
}
@media (max-width: 640px) {
.school-table-header[data-v-d0d870a4], .school-table-row[data-v-d0d870a4] { grid-template-columns: 40px 1.7fr 140px 100px 80px 80px;
}
.progress[data-v-d0d870a4] { min-width: 84px;
}
.scres-progress-container[data-v-d0d870a4] { min-width: 110px;
}
}

/* ===== 弹窗样式（人才×项目明细） ===== */
.npd-title[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: #111827;
}
.npd-sep[data-v-d0d870a4] { margin: 0 4px; color: #9ca3af;
}
.npd-content[data-v-d0d870a4] { display: grid; gap: 12px;
}
.npd-meta[data-v-d0d870a4] { display: grid; gap: 6px; padding: 8px 10px; background: #f9fafb; border: 1px solid #e5e7eb; border-radius: 8px;
}
.npd-meta-row[data-v-d0d870a4] { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #374151;
}
.npd-label[data-v-d0d870a4] { width: 72px; color: #6b7280; text-align: right; flex-shrink: 0;
}
.npd-dot[data-v-d0d870a4] { margin: 0 6px; color: #9ca3af;
}
.npd-kpis[data-v-d0d870a4] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
.npd-kpi[data-v-d0d870a4] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 8px 10px;
}
.npd-kpi-label[data-v-d0d870a4] { font-size: 12px; color: #6b7280; margin-bottom: 4px;
}
.npd-kpi-value[data-v-d0d870a4] { font-weight: 800; font-size: 18px; color: #111827;
}
.npd-alert[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; border-radius: 8px; padding: 8px 10px; border: 1px solid #e5e7eb;
}
.npd-alert.danger[data-v-d0d870a4] { background: #fef2f2; color: #b91c1c; border-color: #fecaca;
}
.npd-section[data-v-d0d870a4] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 10px 12px;
}
.npd-section-title[data-v-d0d870a4] { font-weight: 700; font-size: 13px; color: #111827; margin-bottom: 8px;
}
.npd-capsules[data-v-d0d870a4] { display: flex; flex-wrap: wrap; gap: 8px;
}
.npd-capsule[data-v-d0d870a4] { display: inline-flex; flex-direction: column; gap: 2px; padding: 6px 10px; border-radius: 8px; border: 1px solid #e5e7eb; background: #f9fafb;
}
.npd-capsule.fail[data-v-d0d870a4] { background: #fef2f2; color: #b91c1c; border-color: #fecaca;
}
.npd-cap-title[data-v-d0d870a4] { font-size: 12px; font-weight: 600;
}
.npd-cap-meta[data-v-d0d870a4] { font-size: 11px; color: #6b7280;
}
.npd-criteria[data-v-d0d870a4] { display: grid; grid-template-columns: 1fr; gap: 6px;
}
.npd-criterion[data-v-d0d870a4] { display: flex; align-items: center; justify-content: space-between; padding: 6px 10px; border: 1px solid #e5e7eb; border-radius: 8px; background: #fafafa;
}
.npd-criterion.ok[data-v-d0d870a4] { background: #f0fdf4; border-color: #d1fae5;
}
.npd-criterion.deficit[data-v-d0d870a4] { background: #fef2f2; border-color: #fecaca;
}
.npd-criterion-name[data-v-d0d870a4] { font-size: 13px; color: #374151; font-weight: 600;
}
.npd-criterion-meta[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 10px; font-size: 12px; color: #6b7280;
}
.npd-criterion-ratio[data-v-d0d870a4] { font-weight: 700; color: #374151;
}
.npd-tag[data-v-d0d870a4] { color: #b91c1c; font-weight: 700;
}
.npd-empty[data-v-d0d870a4] { font-size: 12px; color: #6b7280;
}
.npd-footer[data-v-d0d870a4] { display: flex; justify-content: flex-end; gap: 8px;
}

/* 分析要点样式 */
.npd-points[data-v-d0d870a4] { display: grid; grid-template-columns: 1fr; gap: 8px;
}
.npd-point-group[data-v-d0d870a4] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 8px 10px;
}
.npd-point-title[data-v-d0d870a4] { font-weight: 700; font-size: 13px; margin-bottom: 6px;
}
.npd-point-title.good[data-v-d0d870a4] { color: #047857;
}
.npd-point-title.bad[data-v-d0d870a4] { color: #b91c1c;
}
.npd-point-title.tip[data-v-d0d870a4] { color: #1d4ed8;
}
.npd-point-list[data-v-d0d870a4] { margin: 0; padding-left: 18px;
}

/* 资格与情形样式 */
.npd-qual-grid[data-v-d0d870a4] { display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.npd-qual-card[data-v-d0d870a4] { border: 1px solid #e5e7eb; border-radius: 8px; background: #fff; padding: 8px 10px;
}
.npd-qual-title[data-v-d0d870a4] { font-weight: 700; font-size: 13px; margin-bottom: 6px;
}
.npd-qual-subtitle[data-v-d0d870a4] { font-weight: 600; font-size: 12px; color: #6b7280; margin: 6px 0 2px;
}
.npd-qual-items[data-v-d0d870a4] { display: grid; gap: 4px;
}
.npd-qual-item[data-v-d0d870a4] { display: flex; justify-content: space-between; font-size: 12px; color: #374151;
}
.npd-qual-item .yes[data-v-d0d870a4] { color: #047857; font-weight: 700;
}
.npd-qual-item .no[data-v-d0d870a4] { color: #b91c1c; font-weight: 700;
}

/* 弹窗容器 */
.npd-overlay[data-v-d0d870a4] { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.45); backdrop-filter: blur(4px); display: flex; align-items: center; justify-content: center; z-index: 3000;
}
.npd-dialog[data-v-d0d870a4] { width: 760px; max-width: calc(100vw - 40px); background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%); border-radius: 16px; box-shadow: 0 12px 40px rgba(2, 6, 23, 0.2), 0 0 0 1px rgba(99, 102, 241, 0.12) inset; border: 1px solid rgba(226, 232, 240, 0.9); overflow: hidden; animation: npd-pop-in-d0d870a4 140ms cubic-bezier(.21,.9,.21,1.02);
}
@keyframes npd-pop-in-d0d870a4 {
from { transform: translateY(6px) scale(.98); opacity: 0;
}
to { transform: translateY(0) scale(1); opacity: 1;
}
}
.npd-header[data-v-d0d870a4] { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px; background: linear-gradient(90deg, rgba(59,130,246,.08), rgba(99,102,241,.08)); border-bottom: 1px solid #e2e8f0;
}
.npd-title[data-v-d0d870a4] { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; color: #0f172a;
}
.npd-close[data-v-d0d870a4] { border: none; background: transparent; padding: 6px; border-radius: 8px; color: #475569; cursor: pointer;
}
.npd-close[data-v-d0d870a4]:hover { background: rgba(15,23,42,.06);
}
.npd-body[data-v-d0d870a4] { padding: 16px; max-height: calc(80vh - 120px); overflow: auto;
}
.npd-footer[data-v-d0d870a4] { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 16px 16px; border-top: 1px solid #e2e8f0; background: #fff;
}

/* 胶囊按钮 */
.npd-capsule-btn[data-v-d0d870a4] { -moz-appearance: none; appearance: none; -webkit-appearance: none; display: inline-flex; align-items: center; justify-content: center; height: 30px; padding: 0 14px; border-radius: 999px; font-size: 13px; font-weight: 600; cursor: pointer; -webkit-user-select: none; -moz-user-select: none; user-select: none; border: 1px solid transparent; transition: background-color .2s ease, color .2s ease, box-shadow .2s ease, border-color .2s ease, transform .06s ease;
}
.npd-capsule-btn[data-v-d0d870a4]:active { transform: translateY(1px);
}
.npd-capsule-btn.primary[data-v-d0d870a4] { background-color: #2563eb; color: #fff; border-color: #2563eb; box-shadow: 0 2px 8px rgba(37, 99, 235, .25);
}
.npd-capsule-btn.primary[data-v-d0d870a4]:hover { background-color: #1d4ed8; border-color: #1d4ed8;
}
.npd-capsule-btn.ghost[data-v-d0d870a4] { background-color: #ffffff; color: #1f2937; border-color: #e5e7eb;
}
.npd-capsule-btn.ghost[data-v-d0d870a4]:hover { background-color: #f9fafb;
}

/* ===== 现代化进度条（School Result 专用） ===== */
.scres-progress-container[data-v-d0d870a4] {
  position: relative;
  width: 100%;
  height: 20px;
  background: linear-gradient(to bottom, #f1f5f9, #e2e8f0);
  border-radius: 999px;
  overflow: hidden;
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.06);
  min-width: 140px;
}
.scres-progress-bar[data-v-d0d870a4] {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  border-radius: 999px;
  transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1), background 0.2s ease;
  box-shadow: 0 1px 2px rgba(0, 0, 0, 0.12);
}
.scres-progress-bar.primary[data-v-d0d870a4] {
  background: linear-gradient(90deg, #3b82f6 0%, #2563eb 60%, #1d4ed8 100%);
}
.scres-progress-text[data-v-d0d870a4] {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 12px;
  font-weight: 700;
  color: #ffffff;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.35);
  letter-spacing: 0.2px;
  z-index: 1;
}


.talent-analysis-page .talent-centered-container { margin-left: auto;
}
.cards-toolbar { border: 1px solid #e5e7eb; border-radius: 10px; padding: 10px 12px; background: #fff; margin-bottom: 12px;
}
.toolbar-row { display: grid; grid-template-columns: 1.1fr 0.8fr 2fr auto auto auto; gap: 10px; align-items: center;
}
.toolbar-group.slider { display: grid; grid-template-columns: 86px 1fr; align-items: center;
}
.toolbar-label { font-size: 12px; color: #6b7280;
}
.toolbar-input .el-input__inner, .toolbar-select .el-input__inner { font-size: 13px;
}
.result-count { font-size: 12px; color: #6b7280;
}
.kpi-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 12px;
}
.kpi-card { border: 1px solid #e5e7eb; border-radius: 10px; padding: 10px 12px; background: #fff;
}
.kpi-title { font-size: 12px; color: #6b7280; margin-bottom: 6px;
}
.kpi-value { font-weight: 800; font-size: 22px; color: #111827;
}
.kpi-value .unit { font-size: 12px; font-weight: 600; color: #6b7280; margin-left: 2px;
}
.kpi-value.high { color: #047857;
}
.kpi-value.medium { color: #92400e;
}
.kpi-value.low { color: #b91c1c;
}
.kpi-value.ok { color: #0f766e;
}
.kpi-desc { font-size: 12px; color: #6b7280; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.charts-grid { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px; margin-bottom: 12px;
}
.chart-card { grid-column: span 6; border: 1px solid #e5e7eb; border-radius: 10px; background: #fff; padding: 8px 10px 10px;
}
.chart-card.wide { grid-column: span 12;
}
.chart-card-header { display: flex; align-items: center; justify-content: flex-end; padding: 2px 2px 4px;
}
.chart-ops { display: flex; align-items: center; gap: 6px;
}
.topn-selector { display: inline-flex; align-items: center; background: #f3f4f6; border-radius: 6px; padding: 2px; gap: 2px;
}
.topn-option { padding: 4px 10px; font-size: 12px; color: #6b7280; cursor: pointer; border-radius: 4px; transition: all 0.2s ease; -webkit-user-select: none; -moz-user-select: none; user-select: none; font-weight: 500;
}
.topn-option:hover { background: #e5e7eb; color: #374151;
}
.topn-option.active { background: #3b82f6; color: #fff; font-weight: 600; box-shadow: 0 1px 3px rgba(59, 130, 246, 0.3);
}
.project-cards { display: grid; grid-template-columns: repeat(auto-fill,minmax(340px,1fr)); gap: 14px;
}
.project-card { border: 1px solid #e5e7eb; border-radius: 10px; padding: 12px; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,0.04); will-change: auto; contain: layout style paint;
}
.project-card.hoverable:hover { box-shadow: 0 2px 4px rgba(0,0,0,0.06);
}
.project-card.highlight { border-color: #2563eb; box-shadow: 0 0 0 2px rgba(37,99,235,0.25), 0 2px 6px rgba(0,0,0,0.06);
}
.project-card-header { display: flex; align-items: center; justify-content: space-between; font-weight: 600; margin-bottom: 10px; gap: 8px;
}
.title-wrap { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1; overflow: hidden;
}
.project-title { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: 14px; color: #111827; line-height: 20px;
}
.level-chip { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; height: 20px; padding: 0 8px; border-radius: 10px; font-size: 11px; font-weight: 600; line-height: 1; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 120px; border: 1px solid transparent;
}
.level-chip.national { background:#fff1f2; color:#be123c; border-color:#fecdd3;
}
.level-chip.provincial { background:#eff6ff; color:#1d4ed8; border-color:#dbeafe;
}
.fit-percent { flex-shrink: 0; padding: 3px 10px; border-radius: 10px; color: #374151; font-size: 12px; line-height: 1; font-weight: 600; background:#f3f4f6; border: 1px solid #e5e7eb; white-space: nowrap;
}
.fit-percent.high { background:#ecfdf5; color:#047857; border-color:#a7f3d0;
}
.fit-percent.medium { background:#fffbeb; color:#92400e; border-color:#fcd34d;
}
.fit-percent.low { background:#fef2f2; color:#b91c1c; border-color:#fecaca;
}
.fit-percent.blocked { background:#fef2f2; color:#b91c1c; border-color:#fecaca;
}
.metrics-row { display: flex; align-items: center; gap: 8px; margin: 6px 0 4px; flex-wrap: wrap;
}
.metric-chip { display: inline-flex; align-items: center; padding: 3px 8px; border-radius: 6px; font-size: 12px; font-weight: 600; line-height: 1.2; border: 1px solid #e5e7eb; background:#f9fafb; color:#374151; white-space: nowrap;
}
.metric-chip.neutral { background:#f9fafb; color:#374151; border-color:#e5e7eb;
}
.metric-chip.danger { background:#fef2f2; color:#b91c1c; border-color:#fecaca;
}
.list-section { margin-top: 10px; border-top: none;
}
.section-title { font-size: 12px; color: #6b7280; margin: 0 0 6px; font-weight: 600; border-bottom: none; padding-bottom: 0; line-height: 1.4;
}
.gap-list, .breakdown-list { margin: 0; padding-left: 0; color: #4b5563; font-size: 12px; list-style: none;
}
.gap-list li, .breakdown-list li { position: relative; padding: 4px 0 4px 12px; margin: 0; line-height: 1.6;
}
.gap-list li::before, .breakdown-list li::before { content: '•'; position: absolute; left: 0; color: #9ca3af; font-weight: bold;
}
.deficit-tag { color: #e53935; margin-left: 6px; font-weight: 600;
}
.hard-summary { font-size: 12px; color: #4b5563; background: #f8fafc; border: 1px solid #e5e7eb; border-radius: 8px; padding: 8px;
}
.project-card-body, .chart-body { transform: translateZ(0);
}
.chart-body { width: 100%; height: 340px;
}
.chart-body.heatmap { height: 400px; min-height: 360px;
}
@media (max-width: 1400px) {
.project-cards { grid-template-columns: repeat(auto-fill,minmax(300px,1fr));
}
.toolbar-row { grid-template-columns: 1fr 1fr 2fr auto auto auto;
}
.chart-card { grid-column: span 6;
}
.chart-card.wide { grid-column: span 12;
}
}
@media (max-width: 1024px) {
.kpi-grid { grid-template-columns: repeat(2, 1fr);
}
.charts-grid { grid-template-columns: repeat(6, 1fr);
}
.chart-card { grid-column: span 6;
}
.chart-card.wide { grid-column: span 6;
}
}
@media (max-width: 768px) {
.project-cards { grid-template-columns: 1fr;
}
.toolbar-row { grid-template-columns: 1fr;
}
.charts-grid { grid-template-columns: 1fr;
}
.chart-card, .chart-card.wide { grid-column: span 1;
}
}

