/* 产品化第 4 步：实体档案（目录 /research/entities 与单个档案 /research/entities/{id}）。
   目录：工具条（查找、类型筛选、计数）、正式表格、未建档主体；单个档案：此前 → 最新两栏、按年分组的事件时间线（层级色点）、关系与所在专题。
   页头与章节沿用 pages.css 的 .doc-page.list-page 与 .doc-section；颜色只用 --ss-* 令牌，不写内联样式（CSP style-src 'self'），不用绿色。 */

/* ===== 目录 ===== */
.entity-register .entity-toolbar{gap:8px 14px}
.entity-register .entity-kinds .chip-count{margin-left:6px;color:inherit;opacity:.75;font-variant-numeric:tabular-nums}
.entity-register .entity-total{margin:0 0 0 auto;color:var(--ss-muted);font-size:var(--ss-text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}
.entity-empty{margin:4px 0 12px;color:var(--ss-muted);font-size:var(--ss-text-md);line-height:1.6}
table.entity-table th:nth-child(2){width:5.5rem}
table.entity-table th:nth-child(3),table.entity-table th:nth-child(4){width:4.5rem}
table.entity-table th:nth-child(5){width:38%}
table.entity-table a.entity-name{color:var(--ss-primary-text);font-weight:600;text-decoration:none}
table.entity-table a.entity-name:hover{text-decoration:underline;text-underline-offset:3px}
table.entity-table .entity-num{font-variant-numeric:tabular-nums}
table.entity-table .entity-latest-date{color:var(--ss-ink-2);font-variant-numeric:tabular-nums}
table.entity-table .entity-none{color:var(--ss-muted)}
.entity-candidates{margin-top:20px}
.entity-candidates>.hint{margin:0 0 8px}
.entity-candidate-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0 24px;margin:0;padding:0;list-style:none}
.entity-candidate{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--ss-line)}
.entity-candidate-text{display:flex;flex-direction:column;min-width:0}
.entity-candidate-text strong{color:var(--ss-ink);font-weight:600;overflow-wrap:anywhere}
.entity-candidate-text .sub,.entity-page .sub{color:var(--ss-muted);font-size:var(--ss-text-xs);line-height:1.5}
button.entity-candidate-add{flex:none;min-height:30px;padding:3px 10px;font-size:var(--ss-text-sm)}

/* ===== 此前 → 最新 ===== */
.entity-change{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:stretch;gap:12px}
.entity-change.is-single{grid-template-columns:minmax(0,1fr)}
.entity-state{display:flex;flex-direction:column;gap:4px;padding:12px 14px;border:1px solid var(--ss-line);border-top:3px solid var(--ss-line-2);background:var(--ss-surface)}
.entity-change>.entity-state:last-child{border-top-color:var(--ss-accent)}
.entity-state-key{color:var(--ss-muted);font-size:var(--ss-text-xs);font-weight:500;letter-spacing:.12em}
.entity-state-when{margin:0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);line-height:1.5;overflow-wrap:anywhere}
.entity-state-date{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ss-ink)}
.entity-state-text{margin:0;color:var(--ss-ink);font-family:var(--ss-font-serif);font-size:var(--ss-text-lg);line-height:1.6;overflow-wrap:anywhere}
.entity-arrow{align-self:center;color:var(--ss-accent-text);font-size:var(--ss-text-xl);font-weight:600}
.entity-levels{margin:10px 0 0;color:var(--ss-ink-2);font-size:var(--ss-text-sm);line-height:1.6}

/* ===== 事件时间线 ===== */
.entity-timeline-section>.hint{margin:0 0 8px}
.entity-timeline,.entity-year-events{margin:0;padding:0;list-style:none}
.entity-year{display:grid;grid-template-columns:4.5rem minmax(0,1fr);column-gap:12px;padding:6px 0;border-top:1px solid var(--ss-line)}
.entity-year:first-child{border-top:0}
.entity-year-label{margin:0;padding-top:6px;color:var(--ss-ink);font:600 var(--ss-text-md)/1.5 var(--ss-font);font-variant-numeric:tabular-nums}
.entity-event{position:relative;display:grid;grid-template-columns:14px minmax(0,1fr);column-gap:8px;padding:6px 0}
.entity-event-dot{width:8px;height:8px;margin-top:9px;border-radius:2px;background:var(--level-color,var(--ss-muted))}
.entity-event-main{min-width:0}
.entity-event-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;margin:0;line-height:1.6}
.entity-event-date{color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}
a.entity-event-title{color:var(--ss-primary-text);font-weight:600;text-decoration:none;overflow-wrap:anywhere}
a.entity-event-title:hover{text-decoration:underline;text-underline-offset:3px}
.entity-event-finding{margin:2px 0 0;color:var(--ss-ink);font-size:var(--ss-text-md);line-height:1.6}
.entity-event.is-discarded :is(a.entity-event-title,.entity-event-finding){color:var(--ss-muted)}

/* ===== 关系与所在专题 ===== */
.entity-relations{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 32px}
.entity-relation-block h3{margin:0 0 6px;color:var(--ss-ink-2);font-size:var(--ss-text-sm);font-weight:600}
.entity-actor-list,.entity-relation-list,.entity-topic-list{margin:0;padding:0;list-style:none}
:is(.entity-actor,.entity-relation,.entity-topic){display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:2px 12px;padding:6px 0;border-bottom:1px solid var(--ss-line)}
.entity-actor>a,.entity-topic>a{color:var(--ss-primary-text);font-weight:500}
.entity-relation-text{display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;color:var(--ss-ink)}
.entity-predicate{padding:0 6px;border-radius:var(--ss-radius-tag);background:var(--ss-surface-2);color:var(--ss-ink-2);font-size:var(--ss-text-sm)}

/* ===== 窄屏 ===== */
@media(max-width:800px){
  .entity-register .entity-total{margin-left:0}
  .entity-change{grid-template-columns:minmax(0,1fr)}
  .entity-arrow{justify-self:center;transform:rotate(90deg)}
  .entity-relations{grid-template-columns:minmax(0,1fr)}
  table.entity-table th:nth-child(5){width:auto}
}
@media(max-width:480px){
  .entity-year{grid-template-columns:minmax(0,1fr)}
  .entity-year-label{padding-top:0}
  :is(button.entity-candidate-add,.entity-kinds button.chip){min-height:44px}
  table.entity-table :is(th,td):nth-child(4){display:none}
}

/* ===== 强制配色与打印 ===== */
@media(forced-colors:active){
  .entity-event-dot{forced-color-adjust:none;background:CanvasText}
  .entity-state{border-color:CanvasText}
}
@media print{
  .entity-register .entity-toolbar,button.entity-candidate-add,.entity-page .page-actions{display:none}
  .entity-event,.entity-state{break-inside:avoid}
}
