:root{--bg: #f5f1e8;--panel: #fffdf8;--ink: #2f2a24;--muted: #8a8175;--line: #e3dccd;--accent: #8a3324;--accent-soft: #f3e3dd;--gold: #a9843a;--shadow: 0 1px 3px rgba(80, 60, 30, .08)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:PingFang SC,Hiragino Sans GB,Microsoft YaHei,Songti SC,serif;background:var(--bg);color:var(--ink);font-size:15px;line-height:1.7}.app{min-height:100vh;display:flex;flex-direction:column}.topbar{display:flex;align-items:center;gap:24px;padding:0 28px;height:60px;background:linear-gradient(90deg,#6e2b20,#8a3324);color:#f7ecd9;box-shadow:var(--shadow);position:sticky;top:0;z-index:10}.brand{font-size:20px;font-weight:700;letter-spacing:4px;white-space:nowrap}.tabs{display:flex;gap:6px}.tabs button{border:none;background:transparent;color:#e8d7bd;padding:8px 18px;font-size:15px;border-radius:6px;cursor:pointer}.tabs button:hover{background:#ffffff1f}.tabs button.active{background:#f7ecd9;color:var(--accent);font-weight:600}.content{flex:1;width:100%;max-width:1080px;margin:0 auto;padding:24px 20px 48px}.loading,.fatal{text-align:center;color:var(--muted);padding:80px 0}.fatal{color:var(--accent)}code{background:#efe8d8;padding:1px 6px;border-radius:4px;font-family:SF Mono,Menlo,monospace;font-size:13px}.footer{text-align:center;color:var(--muted);font-size:12.5px;padding:16px;border-top:1px solid var(--line);background:var(--panel)}.search-bar{display:flex;gap:10px;margin-bottom:8px}.search-bar input{flex:1;padding:12px 16px;font-size:16px;border:1px solid var(--line);border-radius:8px;background:#fff}.search-bar input:focus{outline:none;border-color:var(--gold)}.search-meta{color:var(--muted);font-size:13px;margin:6px 2px 16px;min-height:20px}.result-list{display:flex;flex-direction:column;gap:12px}.person-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 18px;box-shadow:var(--shadow)}.person-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;cursor:pointer}.person-name{font-size:18px;font-weight:700;color:var(--accent)}.badge{font-size:12px;padding:1px 9px;border-radius:20px;border:1px solid var(--line);color:var(--muted);background:#faf6ec}.badge.male{color:#2b5d8a;border-color:#cfe0ee;background:#eef5fb}.badge.female{color:#9c3f66;border-color:#ecd0dc;background:#fbf0f4}.person-loc{color:var(--muted);font-size:13px;margin-left:auto}.caret{color:var(--muted);font-size:12px}.person-body{display:flex;gap:18px;margin-top:14px}.person-photo{flex:0 0 120px;width:120px;height:150px;object-fit:cover;border:1px solid var(--line);border-radius:6px;background:#eee}.person-fields{flex:1;min-width:0}.field{display:flex;gap:10px;margin-bottom:6px;font-size:14px}.field .k{color:var(--muted);flex:0 0 70px}.field .v{flex:1}.rawtext{margin-top:8px;padding:12px 14px;background:#faf6ec;border-left:3px solid var(--gold);border-radius:4px;white-space:pre-wrap}mark{background:#ffe9a8;padding:0 1px;border-radius:2px}.pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:22px}.pager button{padding:7px 18px;border:1px solid var(--line);background:var(--panel);border-radius:6px;cursor:pointer;color:var(--ink)}.pager button:disabled{opacity:.4;cursor:default}.pager .page-info{color:var(--muted);font-size:13px}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:22px}.stat-card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;box-shadow:var(--shadow)}.stat-card .num{font-size:30px;font-weight:700;color:var(--accent);line-height:1.2}.stat-card .lbl{color:var(--muted);font-size:13px;margin-top:2px}.stat-card .sub{color:var(--muted);font-size:12px;margin-top:4px}.charts{display:grid;grid-template-columns:1fr 1fr;gap:16px}.chart-panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px 16px;box-shadow:var(--shadow)}.chart-panel.full{grid-column:1 / -1}.chart-panel h3{margin:0 0 4px;font-size:15px}.chart-panel .hint{color:var(--muted);font-size:12px;margin:0 0 8px}.chart{width:100%;height:300px}.chart.tall{height:420px}.note-bar{background:var(--accent-soft);border:1px solid #e3c3b8;color:#6e2b20;border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:18px}@media (max-width: 760px){.charts{grid-template-columns:1fr}.person-body{flex-direction:column}.person-photo{flex-basis:auto}.person-loc{margin-left:0;width:100%}}
