:root{
  --ink:#1a1a18; --ink2:#5F5E5A; --ink3:#888780;
  --line:#E5E3DC; --bg:#FBFAF7; --card:#FFFFFF;
  --blue:#185FA5; --blue-bg:#E6F1FB;
  --pink:#993556; --gray-bg:#F1EFE8;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--ink);
  font:15px/1.7 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB",
        "Microsoft YaHei","Source Han Sans SC",sans-serif;
  -webkit-text-size-adjust:100%;
}
a{color:var(--blue);text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:var(--ink3)}
h1,h2{font-weight:600}

/* 顶部 */
.bar{
  display:flex;align-items:center;gap:12px;
  padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:20;
}
.back{font-size:14px}
.bar-title{font-size:14px;color:var(--ink2)}

.draft{
  padding:9px 16px;background:#FAEEDA;border-bottom:1px solid #EF9F27;
  font-size:13px;color:#633806;text-align:center;
}
.hero{padding:26px 20px 18px;text-align:center;background:var(--card);
  border-bottom:1px solid var(--line)}
.stats-line{margin:8px 0 0;font-size:13px;color:var(--ink2);letter-spacing:1px}
.hero h1{margin:0;font-size:24px;letter-spacing:2px}
.hero .sub{margin:6px 0 0;font-size:14px;color:var(--ink2)}
.hero .poem{margin:8px 0 0;font-size:13px;color:var(--ink3);letter-spacing:2px}
.hero .poem .g{font-size:11px;color:var(--ink3);letter-spacing:0}
.hero .stats{margin:12px 0 0;display:flex;flex-wrap:wrap;justify-content:center;
  gap:8px 18px;font-size:13px;color:var(--ink2)}
.hero .stats b{color:var(--ink);font-size:16px}

/* 工具条 */
.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;
  padding:12px 16px;position:sticky;top:0;background:var(--bg);z-index:15}
.group{display:flex;gap:8px;flex-wrap:wrap}
.chip{
  border:1px solid var(--line);background:var(--card);color:var(--ink2);
  border-radius:999px;padding:6px 14px;font-size:13px;cursor:pointer;
  font-family:inherit;min-height:32px;
}
.chip.active{background:var(--blue);border-color:var(--blue);color:#fff}
#q{
  flex:1 1 220px;min-width:180px;border:1px solid var(--line);border-radius:999px;
  padding:8px 14px;font-size:14px;font-family:inherit;background:var(--card);color:var(--ink);
}

/* 世系图舞台 */
#stage{
  position:relative;overflow:hidden;background:var(--card);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  height:62vh;min-height:320px;touch-action:none;cursor:grab;
}
#stage.grabbing{cursor:grabbing}
#inner{transform-origin:0 0;will-change:transform;position:absolute;top:0;left:0}
.tree{display:none}
.tree.show{display:block}
.hint{margin:8px 16px;font-size:12px;color:var(--ink3);text-align:center}

/* 区块 */
.sec{margin:26px 16px 10px;font-size:16px}
.warn{margin:14px 16px;padding:12px 14px;border-radius:10px;
  background:#FAEEDA;border:1px solid #EF9F27;font-size:13px}
.warn b{display:block;margin-bottom:6px}
.warn ul{margin:0;padding-left:18px}

/* 表格 */
.list,.kv{width:100%;border-collapse:collapse;background:var(--card)}
.list{font-size:14px}
.list th,.list td{padding:10px 12px;border-bottom:1px solid var(--line);text-align:left}
.list th{font-size:12px;color:var(--ink3);font-weight:500;background:var(--gray-bg)}
.kv{margin:0 0 8px}
.kv th,.kv td{padding:9px 16px;border-bottom:1px solid var(--line);text-align:left;
  font-size:14px;font-weight:400;vertical-align:top}
.kv th{width:88px;color:var(--ink3);white-space:nowrap}

/* 个人页 */
.person{padding:16px}
.person-head{display:flex;gap:16px;align-items:center;margin-bottom:6px}
.avatar{width:88px;height:110px;object-fit:cover;border-radius:8px;
  background:var(--gray-bg);border:1px solid var(--line);flex:none}
.person h1{margin:0 0 4px;font-size:22px}
.tag-live,.tag-dead{display:inline-block;margin-left:8px;font-size:11px;
  padding:2px 8px;border-radius:999px;vertical-align:middle;font-weight:400}
.tag-live{background:var(--blue-bg);color:var(--blue)}
.tag-dead{background:var(--gray-bg);color:var(--ink3)}
.bio{white-space:pre-wrap;margin:0 16px;font-size:15px;color:#2C2C2A}

.foot{margin:28px 16px 40px;font-size:12px;color:var(--ink3);text-align:center;line-height:1.8}

@media (max-width:600px){
  .hero h1{font-size:21px}
  .list th:nth-child(n+5),.list td:nth-child(n+5){display:none}
}
@media print{
  .toolbar,.hint,.foot{display:none}
  #stage{height:auto;overflow:visible;border:0}
  #inner{transform:none!important;position:static}
}
