/* ============================================================
   月旦评 · 宣纸墨韵  Design System v2
   典出东汉「月旦评」：宣纸为底、松烟为字、朱砂为印、赭金为界
   双主题：宣纸（默认） / 墨夜 data-theme="ink"
   ============================================================ */

/* ---------- 色板 & 变量 ---------- */
:root {
    /* 纸 / 墨 */
    --bg: #f6f1e6;
    --bg-elev: #efe7d6;
    --bg-card: #fffdf7;
    --bg-card-hover: #fffefb;
    --border: #ddd0b7;
    --border-soft: rgba(93, 73, 45, .10);
    --text: #2a2620;
    --text-dim: #605849;
    --text-muted: #7b6f5c;

    /* 朱砂 / 赭金 / 竹青 */
    --accent: #b23a2e;
    --gold: #9a6b2f;
    --gold-light: #7a5020;
    --gold-dark: #93382c;
    --approve: #3f7a5a;
    --oppose: #8b8275;

    --cinnabar-rgb: 178, 58, 46;
    --ochre-rgb: 154, 107, 47;
    --jade-rgb: 63, 122, 90;
    --gold-rgb: 154, 107, 47;
    --accent-soft: rgba(178, 58, 46, .08);
    --series-a: #b23a2e;
    --series-b: #3f6f8f;
    --ink-rgb: 42, 38, 32;

    --shadow: 0 3px 14px rgba(94, 72, 42, .07);
    --shadow-lg: 0 16px 40px rgba(94, 72, 42, .16);
    --paper-grain: .5;

    --max-w: 1120px;
    --radius: 4px;
    --radius-sm: 3px;

    --font-serif: "Noto Serif CJK SC", "Source Han Serif SC", "Songti SC", "STSong", "Noto Serif SC", "SimSun", Georgia, serif;
    --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Noto Sans CJK SC", "Helvetica Neue", Arial, sans-serif;
}

html[data-theme="ink"] {
    --bg: #14110d;
    --bg-elev: #1c1813;
    --bg-card: #221d17;
    --bg-card-hover: #2b241c;
    --border: #3b3227;
    --border-soft: rgba(236, 216, 180, .09);
    --text: #efe5d0;
    --text-dim: #b6a88e;
    --text-muted: #a1947e;

    --accent: #d2604f;
    --gold: #d8b072;
    --gold-light: #efd6a8;
    --gold-dark: #a47c46;
    --approve: #74c493;
    --oppose: #8b8275;

    --cinnabar-rgb: 210, 96, 79;
    --ochre-rgb: 216, 176, 114;
    --jade-rgb: 116, 196, 147;
    --gold-rgb: 216, 176, 114;
    --accent-soft: rgba(210, 96, 79, .13);
    --series-a: #d2604f;
    --series-b: #7ba7c9;
    --ink-rgb: 239, 229, 208;

    --shadow: 0 3px 16px rgba(0, 0, 0, .38);
    --shadow-lg: 0 18px 44px rgba(0, 0, 0, .55);
    --paper-grain: .16;
}

/* ---------- 基础 ---------- */
* { box-sizing: border-box; margin: 0; padding: 0; }

html { font-size: 16px; scroll-behavior: smooth; }

body {
    font-family: var(--font-sans);
    background: var(--bg);
    color: var(--text);
    line-height: 1.75;
    -webkit-font-smoothing: antialiased;
    min-height: 100vh;
    position: relative;
    overflow-x: hidden;
    transition: background-color .35s, color .35s;
}

/* 宣纸纤维纹理（SVG 噪点，无外部依赖） */
body::before {
    content: "";
    position: fixed;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    opacity: var(--paper-grain);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.055'/%3E%3C/svg%3E");
    mix-blend-mode: multiply;
}
html[data-theme="ink"] body::before { mix-blend-mode: screen; }

.site-header, .site-main, .site-footer { position: relative; z-index: 1; }

::selection { background: rgba(var(--cinnabar-rgb), .22); color: var(--text); }

::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: var(--bg); }
::-webkit-scrollbar-thumb { background: var(--border); border: 2px solid var(--bg); border-radius: 8px; }
::-webkit-scrollbar-thumb:hover { background: var(--gold); }

a { color: var(--gold); text-decoration: none; transition: color .2s, border-color .2s, background-color .2s; }
a:hover { color: var(--accent); }

h1, h2, h3, h4 { font-family: var(--font-serif); font-weight: 600; letter-spacing: .04em; }
button, input, select, textarea { font-family: inherit; }
button { cursor: pointer; }

.container { max-width: var(--max-w); margin: 0 auto; padding: 0 24px; }
.container-narrow { max-width: 880px; margin: 0 auto; padding: 0 24px; }

/* ---------- 顶部导航 ---------- */
.site-header {
    position: sticky; top: 0; z-index: 100;
    background: color-mix(in srgb, var(--bg) 88%, transparent);
    backdrop-filter: blur(14px) saturate(1.2);
    border-bottom: 1px solid var(--border);
    box-shadow: 0 1px 0 rgba(var(--ochre-rgb), .12);
}
.site-header::before {
    content: "";
    display: block; height: 3px;
    background: linear-gradient(90deg, var(--accent) 0 18%, rgba(var(--ochre-rgb), .55) 18% 82%, var(--accent) 82% 100%);
}
.nav-wrap { display: flex; align-items: center; gap: 30px; height: 68px; }

.logo { display: flex; align-items: center; gap: 11px; flex: 0 0 auto; color: inherit; }
.logo:hover { color: inherit; }
.logo-seal {
    width: 38px; height: 38px; flex: 0 0 38px;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 13px; font-weight: 700;
    line-height: 1.05; text-align: center; letter-spacing: 0;
    color: #fff8ec;
    background: var(--accent);
    border: 1px solid var(--accent);
    border-radius: 3px;
    box-shadow: inset 0 0 0 2px rgba(255, 248, 236, .5), 0 2px 6px rgba(var(--cinnabar-rgb), .28);
    transform: rotate(-4deg);
    transition: transform .3s;
}
.logo:hover .logo-seal { transform: rotate(0deg) scale(1.05); }
.logo-text { display: flex; flex-direction: column; line-height: 1.15; }
.logo-zh {
    font-family: var(--font-serif);
    font-size: 20px; font-weight: 700; letter-spacing: .22em;
    color: var(--text);
}
.logo-en { font-size: 9px; letter-spacing: .2em; color: var(--text-muted); text-transform: uppercase; margin-top: 3px; }

.nav { display: flex; gap: 2px; flex: 1; }
.nav a {
    position: relative;
    padding: 8px 13px;
    color: var(--text-dim);
    font-family: var(--font-serif);
    font-size: 14.5px; letter-spacing: .12em;
    white-space: nowrap;
}
.nav a::after {
    content: ""; position: absolute; left: 50%; bottom: 2px;
    width: 0; height: 2px; background: var(--accent);
    transform: translateX(-50%); transition: width .25s;
}
.nav a:hover, .nav a.active { color: var(--accent); }
.nav a:hover::after, .nav a.active::after { width: 60%; }

.nav-tagline {
    font-family: var(--font-serif); font-size: 12px; letter-spacing: .22em;
    color: var(--text-muted); white-space: nowrap;
    padding-left: 18px; border-left: 1px solid var(--border);
}
.nav-tools { display: flex; align-items: center; gap: 8px; }
.theme-toggle, .menu-toggle {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 11px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 2px;
    color: var(--text-dim);
    font-size: 12px; letter-spacing: .08em;
    transition: all .2s;
}
.theme-toggle:hover, .menu-toggle:hover { color: var(--accent); border-color: var(--accent); background: rgba(var(--cinnabar-rgb), .05); }
.tt-icon { font-size: 14px; line-height: 1; }
.menu-toggle { display: none; }

/* ---------- 按钮 ---------- */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    padding: 11px 26px; border-radius: 2px;
    font-family: var(--font-serif);
    font-size: 14.5px; font-weight: 600; letter-spacing: .12em;
    border: 1px solid transparent;
    transition: all .22s ease;
    background: none; color: inherit;
}
.btn-primary {
    background: var(--gold-dark);
    color: #fffaf0;
    border-color: var(--gold-dark);
    box-shadow: 0 3px 10px rgba(var(--cinnabar-rgb), .2);
}
html[data-theme="ink"] .btn-primary { color: #17130e; }
.btn-primary:hover {
    background: var(--accent); border-color: var(--accent);
    color: #fffaf0; transform: translateY(-2px);
    box-shadow: 0 8px 20px rgba(var(--cinnabar-rgb), .3);
}
.btn-ghost { border-color: var(--border); color: var(--text-dim); background: color-mix(in srgb, var(--bg-card) 55%, transparent); }
.btn-ghost:hover { border-color: var(--gold); color: var(--gold); background: var(--bg-card); transform: translateY(-2px); }

/* ---------- 首页 · 卷首 ---------- */
.hero-banner {
    position: relative;
    overflow: hidden;
    padding: 76px 0 0;
    text-align: center;
    background:
        radial-gradient(ellipse 55% 60% at 50% 28%, rgba(var(--ochre-rgb), .10), transparent 70%),
        linear-gradient(180deg, var(--bg-elev) 0%, var(--bg) 84%);
    border-bottom: 1px solid var(--border);
}
.hero-banner::after {
    content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--ochre-rgb), .55), transparent);
}
.hero-mountains {
    position: absolute; left: 0; right: 0; bottom: -1px;
    width: 100%; height: 190px;
    opacity: .5;
    pointer-events: none;
}
.hero-mountains .mount-far { fill: rgba(var(--ochre-rgb), .12); }
.hero-mountains .mount-near { fill: rgba(var(--ink-rgb), .055); }
html[data-theme="ink"] .hero-mountains { opacity: .8; }
html[data-theme="ink"] .hero-mountains .mount-near { fill: rgba(0, 0, 0, .28); }

.hero-container { position: relative; z-index: 2; }
.hero-kicker {
    display: inline-flex; align-items: center; gap: 14px;
    font-family: var(--font-serif); font-size: 12px; letter-spacing: .34em;
    color: var(--text-muted); margin-bottom: 26px;
}
.kicker-line { width: 34px; height: 1px; background: var(--border); }
.hero-seal {
    position: absolute; top: 4px; right: 8%;
    width: 66px; height: 66px;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 21px; font-weight: 700;
    line-height: 1.05; letter-spacing: .05em;
    color: var(--accent);
    border: 2px solid var(--accent);
    border-radius: 4px;
    transform: rotate(7deg);
    opacity: .82;
    box-shadow: inset 0 0 0 3px var(--bg), inset 0 0 0 4px rgba(var(--cinnabar-rgb), .45);
    flex-direction: column;
    line-height: 1.15;
}
.hero-seal::after { content: ""; position: absolute; inset: 6px; border: 1px solid rgba(var(--cinnabar-rgb), .3); }
.hero-sub {
    color: var(--gold);
    font-family: var(--font-serif);
    font-size: 13px; letter-spacing: .5em;
    margin-bottom: 18px; text-indent: .5em;
}
.hero-title {
    font-size: clamp(34px, 5.2vw, 58px);
    line-height: 1.48; font-weight: 600; letter-spacing: .14em;
    margin-bottom: 20px;
    color: var(--text);
    text-shadow: 0 1px 0 var(--bg-card);
}
.hero-accent { color: var(--accent); position: relative; }
.hero-accent::after {
    content: ""; position: absolute; left: 6%; right: 6%; bottom: 2px; height: 6px;
    background: rgba(var(--cinnabar-rgb), .13); z-index: -1; border-radius: 2px;
}
.hero-desc {
    color: var(--text-dim); font-size: 15px; letter-spacing: .04em;
    max-width: 620px; margin: 0 auto 30px; line-height: 1.9;
}
.hero-cta { display: flex; gap: 14px; justify-content: center; flex-wrap: wrap; }

.hero-stats {
    display: flex; justify-content: center; gap: 0;
    margin: 62px auto 0; padding: 0 0 30px;
    max-width: 660px;
}
.hero-stat {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px;
    border-left: 1px solid var(--border);
}
.hero-stat:first-child { border-left: 0; }
.hero-stat strong {
    font-family: var(--font-serif); font-size: 28px; font-weight: 600;
    color: var(--gold-light); line-height: 1.2;
    font-variant-numeric: tabular-nums;
}
.hero-stat span { font-size: 11.5px; color: var(--text-muted); letter-spacing: .18em; }

/* ---------- 通用区块 ---------- */
.section { padding: 58px 0; }
.section-alt {
    background: var(--bg-elev);
    border-top: 1px solid var(--border-soft);
    border-bottom: 1px solid var(--border-soft);
}
.section-header {
    display: flex; justify-content: space-between; align-items: baseline;
    margin-bottom: 26px; gap: 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--border);
}
.section-header h1, .section-header h2 {
    font-size: 23px; font-weight: 600; letter-spacing: .14em;
    display: flex; align-items: center; gap: 12px;
    color: var(--text);
}
.section-header h1::before, .section-header h2::before {
    content: ""; display: inline-block; width: 4px; height: 20px;
    background: var(--accent); border-radius: 1px; flex: 0 0 auto;
}
.section-header h3 { font-size: 17px; font-weight: 600; letter-spacing: .1em; }
.section-header .section-sub {
    color: var(--text-muted); font-size: 12.5px; letter-spacing: .08em;
    margin-top: 2px;
}
.section-sub { color: var(--text-muted); font-size: 13px; letter-spacing: .06em; }
.section-more {
    font-size: 12.5px; color: var(--text-muted); white-space: nowrap;
    font-family: var(--font-serif);
}
.section-more:hover { color: var(--accent); }
.eyebrow {
    display: inline-block; margin-bottom: 10px;
    font-family: var(--font-serif); font-size: 11.5px; letter-spacing: .3em;
    color: var(--accent);
}
.col-title {
    font-size: 17px; font-weight: 600; letter-spacing: .12em;
    margin-bottom: 16px; padding-left: 12px;
    border-left: 3px solid var(--accent);
}
.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 40px; }
.empty-hint {
    color: var(--text-muted); font-size: 13px; padding: 20px;
    background: var(--bg-card); border: 1px dashed var(--border);
    border-radius: var(--radius); text-align: center;
}

/* ---------- 今日人物 ---------- */
.daily-wrap { padding-top: 40px; }
.daily-card {
    position: relative;
    display: flex; gap: 32px; align-items: center;
    padding: 34px 42px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background:
        radial-gradient(circle at 88% 12%, rgba(var(--ochre-rgb), .12), transparent 55%),
        var(--bg-card);
    box-shadow: var(--shadow);
    overflow: hidden;
}
.daily-card::before {
    content: ""; position: absolute; inset: 7px;
    border: 1px solid var(--border-soft); pointer-events: none;
}
.daily-card::after {
    content: "今日"; position: absolute; top: 16px; right: 20px;
    writing-mode: vertical-rl; letter-spacing: .35em;
    font-family: var(--font-serif); font-size: 11px; color: var(--text-muted);
}
.daily-avatar {
    width: 112px; height: 112px; flex: 0 0 auto;
    position: relative;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 48px; color: #fffaf0;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--gold-dark), var(--accent));
    box-shadow: 0 0 0 6px rgba(var(--cinnabar-rgb), .08), 0 8px 22px rgba(var(--cinnabar-rgb), .22);
}
.daily-avatar::after {
    content: ""; position: absolute; inset: -7px;
    border: 1px dashed rgba(var(--cinnabar-rgb), .35); border-radius: 50%;
}
.daily-body { position: relative; z-index: 1; flex: 1; min-width: 0; }
.daily-eyebrow {
    font-family: var(--font-serif); font-size: 12px; letter-spacing: .26em;
    color: var(--accent); margin-bottom: 6px;
}
.daily-name { margin: 0 0 4px; font-size: 36px; line-height: 1.3; letter-spacing: .1em; }
.daily-name a { color: var(--text); }
.daily-name a:hover { color: var(--accent); }
.daily-meta { font-size: 12.5px; color: var(--text-muted); margin-bottom: 12px; letter-spacing: .06em; }
.daily-bio { font-size: 14px; color: var(--text-dim); line-height: 1.85; margin: 0 0 14px; max-width: 640px; }
.daily-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 18px; }
.daily-tag {
    font-family: var(--font-serif); font-size: 12.5px; padding: 4px 13px; border-radius: 2px;
    color: var(--text-dim); background: rgba(var(--ochre-rgb), .07);
    border: 1px solid rgba(var(--ochre-rgb), .3);
}
.daily-tag em { font-style: normal; color: var(--accent); margin-left: 5px; font-variant-numeric: tabular-nums; }
.daily-cta { display: inline-flex; }

/* ---------- 人物卡片网格 ---------- */
.person-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(152px, 1fr)); }
.person-grid.small { grid-template-columns: repeat(auto-fill, minmax(116px, 1fr)); }

.person-card {
    position: relative; overflow: hidden;
    display: flex; flex-direction: column; align-items: center;
    padding: 26px 14px 20px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    color: var(--text);
    box-shadow: var(--shadow);
    transition: transform .26s ease, box-shadow .26s ease, border-color .26s ease;
    text-align: center;
}
.person-card::before {
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px;
    background: linear-gradient(90deg, transparent, rgba(var(--cinnabar-rgb), .6), transparent);
    opacity: 0; transition: opacity .26s;
}
.person-card::after {
    content: ""; position: absolute; bottom: 8px; right: 9px;
    width: 9px; height: 9px;
    border-right: 1px solid rgba(var(--ochre-rgb), .35);
    border-bottom: 1px solid rgba(var(--ochre-rgb), .35);
}
.person-card:hover {
    transform: translateY(-5px);
    border-color: rgba(var(--cinnabar-rgb), .55);
    box-shadow: var(--shadow-lg);
    color: var(--text);
}
.person-card:hover::before { opacity: 1; }

.pc-avatar {
    width: 60px; height: 60px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 25px; font-weight: 600;
    color: var(--gold-light);
    background: radial-gradient(circle at 34% 28%, var(--bg-card-hover), var(--bg-elev));
    border: 1px solid rgba(var(--ochre-rgb), .45);
    box-shadow: 0 0 0 5px rgba(var(--ochre-rgb), .06);
    margin-bottom: 13px;
    transition: all .3s;
}
.person-card:hover .pc-avatar {
    background: linear-gradient(145deg, var(--gold-dark), var(--accent));
    color: #fffaf0;
    border-color: var(--accent);
    transform: rotate(-6deg);
}
.person-card.mini .pc-avatar { width: 46px; height: 46px; font-size: 20px; margin-bottom: 9px; }
.pc-info { text-align: center; min-width: 0; width: 100%; }
.pc-name {
    font-family: var(--font-serif); font-size: 16px; font-weight: 600;
    color: var(--text); letter-spacing: .1em;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.person-card:hover .pc-name { color: var(--accent); }
.pc-cat { font-size: 11.5px; color: var(--text-muted); margin-top: 3px; }
.pc-meta { font-size: 11px; color: var(--text-muted); }
.pc-votes {
    position: absolute; top: 9px; right: 9px;
    font-size: 10.5px; color: var(--gold);
    background: rgba(var(--ochre-rgb), .09);
    border: 1px solid rgba(var(--ochre-rgb), .25);
    padding: 2px 8px; border-radius: 2px;
    font-variant-numeric: tabular-nums;
}
.person-card.mini .pc-name { font-size: 14px; }

/* ---------- 维度卡片 ---------- */
.dim-grid { display: grid; gap: 14px; grid-template-columns: repeat(auto-fill, minmax(168px, 1fr)); }
.dim-card {
    position: relative;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 26px 18px 22px; text-align: center;
    box-shadow: var(--shadow);
    transition: transform .25s, border-color .25s, box-shadow .25s;
}
.dim-card::before {
    content: ""; position: absolute; top: 8px; left: 8px; width: 14px; height: 14px;
    border-top: 1px solid rgba(var(--cinnabar-rgb), .4);
    border-left: 1px solid rgba(var(--cinnabar-rgb), .4);
}
.dim-card:hover { transform: translateY(-4px); border-color: rgba(var(--cinnabar-rgb), .5); box-shadow: var(--shadow-lg); }
.dim-index {
    display: block; font-family: var(--font-serif); font-size: 11.5px;
    letter-spacing: .24em; color: var(--accent); margin-bottom: 8px;
}
.dim-emoji { font-size: 24px; margin-bottom: 8px; filter: grayscale(.3); }
.dim-name { font-size: 17px; font-weight: 600; color: var(--text); letter-spacing: .16em; }
.dim-desc { font-size: 12px; color: var(--text-muted); margin-top: 7px; line-height: 1.7; }

/* ---------- 人物画像页 ---------- */
.person-hero {
    position: relative;
    background: linear-gradient(180deg, var(--bg-elev) 0%, var(--bg) 100%);
    padding: 52px 0 42px;
    border-bottom: 1px solid var(--border);
}
.person-hero::after {
    content: ""; position: absolute; bottom: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(var(--ochre-rgb), .5), transparent);
}
.hero-inner { display: flex; gap: 36px; align-items: flex-start; }
.person-avatar { flex-shrink: 0; }
.person-avatar img {
    width: 128px; height: 128px; object-fit: cover;
    border-radius: var(--radius); border: 1px solid var(--border);
}
.avatar-placeholder {
    width: 128px; height: 128px; border-radius: var(--radius);
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 62px; font-weight: 600;
    color: #fffaf0;
    background: linear-gradient(145deg, var(--gold-dark), var(--accent));
    border: 1px solid var(--gold-dark);
    box-shadow: var(--shadow-lg);
}
.person-meta { min-width: 0; flex: 1; }
.person-name { font-size: 40px; font-weight: 600; letter-spacing: .16em; margin-bottom: 4px; }
.person-alt { color: var(--text-muted); font-size: 14px; margin-bottom: 14px; font-family: var(--font-serif); }
.person-tags-inline { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.chip {
    background: var(--bg-card); border: 1px solid var(--border);
    padding: 3px 12px; border-radius: 2px; font-size: 12px;
    color: var(--text-dim);
}
a.chip:hover { border-color: var(--accent); color: var(--accent); }
.chip-cat { border-color: rgba(var(--cinnabar-rgb), .45); color: var(--accent); background: rgba(var(--cinnabar-rgb), .05); }
.person-bio { color: var(--text-dim); font-size: 14.5px; max-width: 700px; line-height: 1.9; }
.person-actions { display: flex; gap: 12px; flex-wrap: wrap; align-items: center; margin-top: 18px; }

.person-compare-link {
    display: inline-block; padding: 7px 16px;
    font-family: var(--font-serif); font-size: 13px;
    color: var(--gold); border: 1px solid rgba(var(--ochre-rgb), .5);
    border-radius: 2px; background: transparent;
}
.person-compare-link:hover { background: rgba(var(--ochre-rgb), .09); border-color: var(--gold); color: var(--accent); }
.share-card-btn { margin-top: 0 !important; }

/* ---------- 雷达图 ---------- */
.radar-wrap { display: grid; grid-template-columns: 1fr 230px; gap: 40px; align-items: center; padding: 20px 0; }
.radar-chart { height: 500px; width: 100%; }
.radar-legend { display: flex; flex-direction: column; gap: 10px; }
.legend-item {
    display: grid; grid-template-columns: 24px 1fr auto; align-items: center; gap: 8px;
    padding: 8px 13px; background: var(--bg-card);
    border: 1px solid var(--border); border-left: 2px solid rgba(var(--ochre-rgb), .55);
    border-radius: var(--radius-sm);
}
.dim-glyph { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; flex: 0 0 auto; vertical-align: -5px; border: 1px solid rgba(var(--ochre-rgb), .5); border-radius: 4px; background: rgba(var(--ochre-rgb), .07); color: var(--gold); font-family: var(--font-serif); font-size: 12px; line-height: 1; }
.legend-name { font-size: 13px; color: var(--text-dim); }
.legend-score { font-family: var(--font-serif); font-size: 15px; font-weight: 600; color: var(--gold-light); font-variant-numeric: tabular-nums; }

/* ---------- 标签投票 ---------- */
.section-vote { background: var(--bg-elev); }
.dim-block { margin-bottom: 34px; }
.dim-title {
    font-family: var(--font-serif);
    font-size: 16px; font-weight: 600; padding: 10px 0 10px 0;
    border-bottom: 1px solid var(--border); margin-bottom: 16px;
    display: flex; align-items: center; gap: 9px; letter-spacing: .14em;
}
.dim-title::before { content: ""; width: 3px; height: 15px; background: var(--accent); }
.dim-title .dim-glyph { width: 24px; height: 24px; font-size: 13px; }
.dim-desc { font-size: 12px; color: var(--text-muted); font-weight: 400; letter-spacing: 0; margin-left: 6px; }

.tag-vote-grid { display: grid; gap: 10px; grid-template-columns: repeat(auto-fill, minmax(236px, 1fr)); }
.tag-card {
    position: relative;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 14px 15px;
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
    box-shadow: var(--shadow);
    transition: border-color .2s, transform .2s, box-shadow .2s, opacity .2s;
}
.tag-card:hover { border-color: rgba(var(--cinnabar-rgb), .5); transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.tag-info { flex: 1; min-width: 0; }
.tag-name {
    font-family: var(--font-serif); font-size: 15.5px; font-weight: 600;
    display: block; margin-bottom: 8px; color: var(--text); letter-spacing: .06em;
}
a.tag-name:hover { color: var(--accent); }
.tag-bar { height: 4px; background: var(--border-soft); border-radius: 2px; overflow: hidden; margin-bottom: 5px; }
.bar-approve {
    height: 100%; border-radius: 2px;
    background: linear-gradient(90deg, var(--gold), var(--accent));
    transition: width .4s ease;
}
.tag-stats { font-size: 11px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.stat-approve { color: var(--accent); }
.tag-actions { display: flex; gap: 5px; }
.btn-vote {
    display: flex; align-items: center; gap: 3px;
    background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: 2px; padding: 6px 9px;
    color: var(--text-dim); font-size: 12px;
    transition: all .18s;
}
.btn-vote:hover { border-color: var(--gold); color: var(--text); }
.btn-vote.active.btn-approve { background: rgba(var(--jade-rgb), .13); border-color: var(--approve); color: var(--approve); }
.btn-vote.active.btn-oppose { background: rgba(var(--cinnabar-rgb), .1); border-color: var(--accent); color: var(--accent); }
.btn-icon { display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
.btn-icon svg { display: block; }
.btn-num { min-width: 12px; font-variant-numeric: tabular-nums; }

/* ---------- 标签云 / 争议 ---------- */
.tag-cloud {
    display: flex; flex-wrap: wrap; gap: 10px 14px;
    padding: 24px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    align-items: baseline; box-shadow: var(--shadow);
}
.cloud-tag { color: var(--text-dim); cursor: default; font-family: var(--font-serif); transition: color .2s, transform .2s; }
.cloud-tag:hover { color: var(--accent); transform: translateY(-2px); }
.controversy-list { list-style: none; display: flex; flex-direction: column; gap: 10px; }
.controversy-list li { display: grid; grid-template-columns: 90px 1fr 92px; gap: 10px; align-items: center; font-size: 13px; }
.controversy-list.approve li { grid-template-columns: 1fr 60px; }
.ct-name { color: var(--text); font-family: var(--font-serif); }
.ct-bar { display: flex; height: 6px; background: var(--border-soft); border-radius: 3px; overflow: hidden; }
.ct-approve { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--accent)); }
.ct-oppose { display: block; height: 100%; background: rgba(var(--ochre-rgb), .30); }
.ct-rate { text-align: right; color: var(--text-dim); font-size: 12px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.ct-rate .yes { color: var(--accent); font-weight: 600; }
.approve-rate { color: var(--gold-light); font-weight: 600; }

/* ---------- 列表 / 引言 / 生平 ---------- */
.simple-list { list-style: none; display: flex; flex-direction: column; gap: 6px; }
.simple-list li { color: var(--text-dim); font-size: 14px; padding-left: 16px; position: relative; }
.simple-list li::before { content: "·"; position: absolute; left: 0; color: var(--accent); }
.quote-list { list-style: none; display: flex; flex-direction: column; gap: 12px; }
.quote-list li {
    padding: 14px 18px; background: var(--bg-card);
    border-left: 3px solid var(--accent);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    color: var(--text-dim); font-family: var(--font-serif); font-size: 15px;
}
.bio-full {
    position: relative;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); padding: 30px 34px;
    color: var(--text-dim); font-size: 15px; line-height: 2.15;
    box-shadow: var(--shadow);
}
.bio-full::before {
    content: ""; position: absolute; top: 9px; left: 9px; width: 18px; height: 18px;
    border-top: 1px solid rgba(var(--ochre-rgb), .4); border-left: 1px solid rgba(var(--ochre-rgb), .4);
}

/* ---------- 表单件（通用） ---------- */
.tag-input, .tag-dim-select, .search-input, .search-select,
.entry-input, .login-input, .compare-select,
.cm-form input, .cm-form textarea, .cm-report select,
.nf-form input, .nf-form select, .nf-form textarea {
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text);
    font-size: 14px;
    padding: 10px 14px;
    transition: border-color .2s, box-shadow .2s;
}
.tag-input::placeholder, .entry-input::placeholder, .search-input::placeholder,
.cm-form input::placeholder, .cm-form textarea::placeholder,
.nf-form input::placeholder, .nf-form textarea::placeholder { color: var(--text-muted); }
.tag-input:focus, .tag-dim-select:focus, .search-input:focus, .search-select:focus,
.entry-input:focus, .login-input:focus, .compare-select:focus,
.cm-form input:focus, .cm-form textarea:focus,
.nf-form input:focus, .nf-form select:focus, .nf-form textarea:focus {
    outline: none; border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(var(--cinnabar-rgb), .09);
}

/* 游客添加标签 */
.tag-submit-box {
    margin-bottom: 32px; padding: 20px 22px;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-left: 3px solid var(--accent);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
.tag-submit-form { display: flex; gap: 10px; flex-wrap: wrap; }
.tag-input { flex: 1; min-width: 220px; }
.tag-dim-select { min-width: 130px; }
.tag-submit-hint { margin-top: 10px; font-size: 12px; line-height: 1.7; color: var(--text-muted); }
.tag-card { transition: opacity .2s, transform .2s, background .2s, border-color .2s, box-shadow .2s; }
.tag-card-new { animation: tagIn .45s ease; }
@keyframes tagIn { from { opacity: 0; transform: translateY(-8px) scale(.96); } to { opacity: 1; transform: none; } }
.tag-badge, .entry-flag {
    margin-left: 6px; padding: 1px 6px; font-size: 10.5px;
    color: var(--accent); border: 1px solid rgba(var(--cinnabar-rgb), .5);
    border-radius: 2px; vertical-align: middle; white-space: nowrap;
}

/* 轻提示 */
.toast-box {
    position: fixed; left: 50%; bottom: 34px; transform: translateX(-50%);
    display: flex; flex-direction: column; align-items: center; gap: 8px; z-index: 9999;
}
.toast {
    padding: 10px 20px;
    background: var(--bg-card); border: 1px solid var(--border);
    border-left: 3px solid var(--gold);
    border-radius: var(--radius-sm); color: var(--text);
    font-size: 13.5px; box-shadow: var(--shadow-lg);
    opacity: 0; transform: translateY(10px);
    transition: opacity .28s, transform .28s;
}
.toast.show { opacity: 1; transform: none; }
.toast-error { border-left-color: var(--accent); color: var(--accent); }

/* ---------- 功业 / 名言 条目 ---------- */
.entry-col { min-width: 0; }
.entry-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 4px; }
.entry-head .col-title { margin: 0; }
.entry-count { margin-left: 6px; font-size: 12px; color: var(--text-muted); font-weight: 400; font-family: var(--font-sans); }
.entry-add-toggle, .btn-link {
    background: none; border: none; padding: 0;
    color: var(--accent); font-size: 13px; font-family: var(--font-serif);
    white-space: nowrap;
}
.entry-add-toggle:hover, .btn-link:hover { color: var(--gold); text-decoration: underline; }
.entry-form { display: flex; gap: 8px; margin: 14px 0 4px; }
.entry-input { flex: 1; min-width: 0; font-size: 13.5px; }
.entry-form .btn { padding: 9px 18px; font-size: 13px; white-space: nowrap; }
.entry-hint { margin: 6px 0 10px; font-size: 12px; color: var(--text-muted); line-height: 1.7; }
.entry-list { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.entry-item {
    display: grid; grid-template-columns: 28px 1fr auto; gap: 12px; align-items: start;
    padding: 13px 16px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    transition: border-color .2s, box-shadow .2s;
}
.entry-item:hover { border-color: rgba(var(--ochre-rgb), .55); box-shadow: var(--shadow); }
.entry-rank { font-family: var(--font-serif); font-size: 14px; color: var(--gold); font-variant-numeric: tabular-nums; padding-top: 2px; text-align: center; }
.entry-body { min-width: 0; }
.entry-text { margin: 0 0 6px; font-size: 14px; line-height: 1.75; color: var(--text); word-break: break-word; }
.entry-col[data-kind="quote"] .entry-text { color: var(--gold-light); font-family: var(--font-serif); font-size: 15px; }
.entry-meta { display: flex; gap: 6px; font-size: 11.5px; color: var(--text-muted); }
.entry-item .tag-actions { gap: 6px; }
.entry-empty { margin: 14px 0 0; padding: 22px; text-align: center; font-size: 13px; color: var(--text-muted); border: 1px dashed var(--border); border-radius: var(--radius); }
.entry-rest { margin-top: 14px; }
.entry-rest summary { cursor: pointer; font-size: 13px; color: var(--text-dim); padding: 6px 0; list-style: none; }
.entry-rest summary::-webkit-details-marker { display: none; }
.entry-rest summary::before { content: "▸ "; color: var(--accent); }
.entry-rest[open] summary::before { content: "▾ "; }
.entry-rest summary:hover { color: var(--accent); }

/* ---------- 人物库筛选 / 分页 ---------- */
.cat-filter { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.cat-chip, .tagrank-tab {
    padding: 6px 15px; border-radius: 999px; font-size: 12.5px;
    background: var(--bg-card); border: 1px solid var(--border); color: var(--text-dim);
    font-family: var(--font-serif); letter-spacing: .04em;
}
.cat-chip:hover, .tagrank-tab:hover { color: var(--accent); border-color: rgba(var(--cinnabar-rgb), .55); }
.cat-chip.active, .tagrank-tab.active {
    background: var(--gold-dark); color: #fffaf0; border-color: var(--gold-dark);
}
html[data-theme="ink"] .cat-chip.active, html[data-theme="ink"] .tagrank-tab.active { color: #17130e; }
.person-search { display: flex; gap: 10px; flex-wrap: wrap; align-items: center; margin-bottom: 18px; }
.search-input { flex: 1 1 260px; min-width: 200px; }
.search-select { min-width: 130px; }
.search-submit { padding: 10px 24px; }
.search-reset { font-size: 13px; color: var(--text-muted); }
.search-reset:hover { color: var(--accent); }
.pagination { display: flex; gap: 8px; justify-content: center; align-items: center; margin-top: 36px; flex-wrap: wrap; }
.page-link {
    padding: 7px 15px; border-radius: var(--radius-sm); font-size: 13px;
    background: var(--bg-card); border: 1px solid var(--border); color: var(--text-dim);
}
.page-link:hover { color: var(--accent); border-color: var(--accent); }
.page-link.active { background: var(--gold-dark); color: #fffaf0; border-color: var(--gold-dark); }
html[data-theme="ink"] .page-link.active { color: #17130e; }
.page-gap { color: var(--text-muted); font-size: 13px; }

/* ---------- 榜单 ---------- */
.ranking-list { display: flex; flex-direction: column; gap: 8px; }
.rank-item {
    display: grid; grid-template-columns: 46px 40px 160px 1fr auto; gap: 14px; align-items: center;
    padding: 12px 22px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    transition: all .22s;
}
.rank-item:hover { border-color: rgba(var(--cinnabar-rgb), .55); transform: translateX(5px); box-shadow: var(--shadow); }
.rank-num { font-family: var(--font-serif); font-size: 19px; font-weight: 600; color: var(--text-muted); text-align: center; font-variant-numeric: tabular-nums; }
.rank-num.top { color: var(--accent); font-size: 24px; }
.rank-avatar {
    width: 36px; height: 36px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: rgba(var(--ochre-rgb), .10); border: 1px solid rgba(var(--ochre-rgb), .28);
    font-family: var(--font-serif); font-size: 15px; color: var(--gold);
}
.rank-item.is-top .rank-avatar { border-color: rgba(var(--cinnabar-rgb), .55); color: var(--accent); background: rgba(var(--cinnabar-rgb), .08); }
.rank-main { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.rank-name { font-family: var(--font-serif); font-weight: 600; font-size: 16px; letter-spacing: .08em; }
.rank-cat { color: var(--text-muted); font-size: 12.5px; }
.rank-meter { height: 4px; border-radius: 2px; background: rgba(var(--ochre-rgb), .13); overflow: hidden; }
.rank-meter i { display: block; height: 100%; border-radius: 2px; background: linear-gradient(90deg, var(--gold), var(--accent)); }
.rank-meter--soft i { background: linear-gradient(90deg, rgba(var(--ochre-rgb), .45), var(--gold)); }
.rank-score { color: var(--gold-light); font-weight: 600; white-space: nowrap; font-variant-numeric: tabular-nums; }
.rank-content { color: var(--text-dim); font-size: 13.5px; line-height: 1.6; }
.rank-muted { color: var(--text-muted); font-size: 12px; font-weight: 400; }
.kind-badge { margin-left: 6px; padding: 1px 7px; font-size: 11px; border: 1px solid var(--border); border-radius: 2px; color: var(--text-muted); white-space: nowrap; }
.kind-achievement { color: var(--accent); border-color: rgba(var(--cinnabar-rgb), .45); }
.entry-controversy { grid-template-columns: 46px 40px 110px 1fr auto; }
.entry-controversy .rank-name { font-size: 15px; }

/* ---------- 朝代时间线 / 国别 ---------- */
.timeline { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; margin-top: 30px; }
.timeline-item { position: relative; }
.timeline-dot { display: none; }
.timeline-body {
    height: 100%; display: flex; flex-direction: column;
    padding: 18px 20px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: var(--shadow); transition: all .25s;
}
.timeline-body:hover { border-color: rgba(var(--cinnabar-rgb), .5); transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.timeline-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.timeline-name { font-size: 21px; font-weight: 600; color: var(--text); letter-spacing: .12em; }
.timeline-name:hover { color: var(--accent); }
.timeline-count { font-size: 11.5px; color: var(--accent); border: 1px solid rgba(var(--cinnabar-rgb), .4); border-radius: 999px; padding: 2px 10px; }
.timeline-years { font-size: 12px; color: var(--text-dim); }
.timeline-reps { margin-top: auto; padding-top: 14px; display: flex; gap: 6px; flex-wrap: wrap; }
.timeline-reps a, .country-reps a {
    font-family: var(--font-serif); font-size: 12.5px; color: var(--text-dim);
    padding: 3px 11px; border-radius: 2px;
    background: var(--bg-card); border: 1px solid var(--border);
}
.timeline-reps a:hover, .country-reps a:hover { color: var(--accent); border-color: rgba(var(--cinnabar-rgb), .5); }

@media (max-width: 720px) {
    .timeline { display: block; position: relative; margin-top: 26px; padding-left: 30px; }
    .timeline::before {
        content: ""; position: absolute; left: 6px; top: 8px; bottom: 8px; width: 1px;
        background: linear-gradient(180deg, rgba(var(--cinnabar-rgb), .6), rgba(var(--ochre-rgb), .08));
    }
    .timeline-item { padding: 0 0 26px 20px; }
    .timeline-item:last-child { padding-bottom: 0; }
    .timeline-dot {
        display: block; position: absolute; left: -30px; top: 9px; width: 11px; height: 11px; border-radius: 50%;
        background: var(--bg-card); border: 2px solid var(--accent);
        box-shadow: 0 0 0 4px rgba(var(--cinnabar-rgb), .1);
    }
    .timeline-body { padding: 0; background: none; border: 0; border-radius: 0; box-shadow: none; }
    .timeline-body:hover { transform: none; box-shadow: none; border: 0; }
    .timeline-name { font-size: 19px; }
    .timeline-reps { padding-top: 10px; }
}
.country-grid { margin-top: 28px; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 16px; }
.country-card { padding: 22px 24px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); box-shadow: var(--shadow); transition: all .25s; }
.country-card:hover { border-color: rgba(var(--cinnabar-rgb), .5); transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.country-head { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; }
.country-name { font-size: 20px; font-weight: 600; color: var(--text); }
.country-name:hover { color: var(--accent); }
.country-count { font-size: 12px; color: var(--accent); }
.country-years { margin-top: 4px; font-size: 12px; color: var(--text-dim); }
.country-reps { margin-top: 14px; display: flex; gap: 6px; flex-wrap: wrap; }
.country-reps a { background: rgba(var(--ochre-rgb), .06); border-color: rgba(var(--ochre-rgb), .22); }

/* ---------- 关于页 ---------- */
.about-block { margin-bottom: 30px; }
.about-block h3 { font-size: 17px; color: var(--text); letter-spacing: .12em; margin-bottom: 10px; padding-left: 12px; border-left: 3px solid var(--accent); }
.about-block p { color: var(--text-dim); margin-bottom: 8px; font-size: 15px; line-height: 1.95; }
.about-block ul { padding-left: 22px; color: var(--text-dim); font-size: 15px; }
.about-block li { margin-bottom: 6px; }
.about-block strong { color: var(--text); }
.about-block.warning {
    padding: 18px 22px; background: rgba(var(--cinnabar-rgb), .05);
    border: 1px solid rgba(var(--cinnabar-rgb), .3);
    border-left: 3px solid var(--accent); border-radius: var(--radius);
}
.about-block.warning h3 { color: var(--accent); }

/* ---------- 人物对比 ---------- */
.compare-picker-section { padding-top: 48px; }
.compare-picker { margin-top: 28px; padding: 32px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.compare-picker-row { display: grid; grid-template-columns: 1fr auto 1fr; gap: 20px; align-items: end; }
.compare-select-wrap label { display: block; margin-bottom: 8px; font-size: 12.5px; color: var(--text-muted); letter-spacing: .1em; }
.compare-select { width: 100%; }
.compare-vs { padding-bottom: 11px; font-family: var(--font-serif); font-size: 17px; font-weight: 700; color: var(--accent); letter-spacing: .1em; }
.compare-submit { margin-top: 24px; width: 100%; }
.compare-tip { margin: 12px 0 0; font-size: 12px; color: var(--text-muted); text-align: center; }
.compare-hot { margin-top: 44px; }
.compare-hot-title { margin: 0 0 16px; font-size: 16px; font-weight: 600; color: var(--text); letter-spacing: .12em; }
.compare-hot-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; }
.compare-hot-card {
    display: flex; flex-direction: column; gap: 4px; padding: 16px 18px;
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius); transition: all .25s;
}
.compare-hot-card:hover { border-color: rgba(var(--cinnabar-rgb), .5); transform: translateY(-3px); box-shadow: var(--shadow); }
.compare-hot-label { color: var(--text); font-family: var(--font-serif); font-size: 14.5px; }
.compare-hot-sub { color: var(--text-muted); font-size: 12px; }
.compare-breadcrumb { margin: 0 0 20px; font-size: 12.5px; color: var(--text-muted); }
.compare-breadcrumb a { color: var(--gold); }
.compare-hero { padding-bottom: 8px; }
.compare-hero-grid { display: grid; grid-template-columns: 1fr auto 1fr; gap: 20px; align-items: center; text-align: center; }
.compare-person {
    display: block; padding: 30px 22px; background: var(--bg-card);
    border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: var(--shadow); transition: all .25s;
}
.compare-person:hover { border-color: rgba(var(--cinnabar-rgb), .55); transform: translateY(-3px); box-shadow: var(--shadow-lg); }
.compare-side-label { display: inline-block; margin-bottom: 8px; font-size: 11px; letter-spacing: .2em; color: var(--text-muted); }
.compare-person h1 { margin: 0 0 8px; font-size: 32px; font-weight: 600; color: var(--text); letter-spacing: .14em; }
.compare-person-meta { margin: 0 0 10px; font-size: 12.5px; color: var(--text-muted); }
.compare-person-wins { margin: 0; font-size: 13px; color: var(--accent); }
.compare-hero-vs { font-family: var(--font-serif); font-size: 22px; font-weight: 700; color: var(--gold); letter-spacing: .1em; }
.compare-hero-sum { margin: 22px 0 0; text-align: center; font-size: 13.5px; color: var(--text-dim); }
.compare-chart { background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); padding: 10px; box-shadow: var(--shadow); }
.compare-table { width: 100%; border-collapse: collapse; }
.compare-table th { padding: 9px 6px; font-size: 12px; font-weight: 500; color: var(--text-muted); border-bottom: 1px solid var(--border); font-family: var(--font-serif); }
.compare-table td { padding: 11px 6px; text-align: center; border-bottom: 1px solid var(--border-soft); font-size: 13.5px; }
.compare-dim-cell { color: var(--text-dim); white-space: nowrap; }
.compare-score-cell { font-variant-numeric: tabular-nums; color: var(--text-muted); }
.compare-score-cell.win { color: var(--accent); font-weight: 600; }
.compare-table-note { margin: 14px 0 0; font-size: 11.5px; color: var(--text-muted); line-height: 1.7; }
.compare-vote { padding: 30px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); text-align: center; box-shadow: var(--shadow); }
.compare-vote-title { margin: 0 0 6px; font-size: 19px; font-weight: 600; color: var(--text); }
.compare-vote-sub { margin: 0 0 22px; font-size: 12.5px; color: var(--text-muted); }
.compare-vote-btns { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.compare-vote-btn {
    display: flex; flex-direction: column; gap: 4px; padding: 18px;
    background: var(--bg-elev); border: 1px solid var(--border);
    border-radius: var(--radius); font-family: inherit; transition: all .22s;
}
.compare-vote-btn:hover { border-color: var(--accent); transform: translateY(-2px); }
.compare-vote-btn.active { border-color: var(--accent); background: rgba(var(--cinnabar-rgb), .08); }
.compare-vote-name { font-size: 14px; color: var(--text); }
.compare-vote-rate { font-family: var(--font-serif); font-size: 24px; font-weight: 600; color: var(--gold-light); font-variant-numeric: tabular-nums; }
.compare-vote-count { font-size: 12px; color: var(--text-muted); }
.compare-vote-total { margin: 16px 0 0; font-size: 12px; color: var(--text-muted); }

/* 分享卡弹窗 */
.share-modal { position: fixed; inset: 0; z-index: 1000; display: flex; align-items: center; justify-content: center; padding: 20px; }
.share-modal[hidden] { display: none; }
.share-modal-backdrop { position: absolute; inset: 0; background: rgba(20, 16, 12, .76); backdrop-filter: blur(3px); }
.share-modal-panel {
    position: relative; width: min(560px, 94vw); max-height: 92vh; overflow-y: auto;
    padding: 22px; background: var(--bg-elev);
    border: 1px solid var(--border); border-radius: var(--radius);
    box-shadow: var(--shadow-lg);
}
.share-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 14px; }
.share-modal-head h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--text); }
.share-modal-close { background: none; border: none; cursor: pointer; color: var(--text-muted); font-size: 24px; line-height: 1; padding: 0 4px; }
.share-modal-close:hover { color: var(--accent); }
.share-card-preview { border: 1px solid var(--border); border-radius: var(--radius); overflow: hidden; background: var(--bg); }
.share-card-preview img { display: block; width: 100%; height: auto; }
.share-modal-actions { display: flex; gap: 10px; margin-top: 16px; }
.share-modal-actions .btn { flex: 1; text-align: center; }

/* ---------- 标签榜 / 标签详情 ---------- */
.tagrank-head { margin-bottom: 24px; }
.tagrank-head h1 { margin: 0 0 8px; font-size: 32px; font-weight: 600; color: var(--text); letter-spacing: .12em; }
.tagrank-head .section-sub { margin: 0; }
.tagrank-head strong { color: var(--accent); }
.tagrank-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 32px; }
.tagrank-block { margin-bottom: 36px; }
.tagrank-block-head {
    display: flex; align-items: flex-end; justify-content: space-between; gap: 12px;
    padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--border);
}
.tagrank-block-head h2 { margin: 0 0 4px; font-size: 19px; font-weight: 600; color: var(--text); letter-spacing: .1em; }
.tagrank-block-desc { margin: 0; font-size: 12.5px; color: var(--text-muted); }
.tagrank-block-note { font-size: 11.5px; color: var(--text-muted); white-space: nowrap; }
.tagrank-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 4px 26px; margin: 0; padding: 0; list-style: none; }
.tagrank-item { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border-soft); }
.tagrank-num { width: 24px; flex: 0 0 24px; font-family: var(--font-serif); font-size: 13px; color: var(--text-muted); text-align: right; font-variant-numeric: tabular-nums; }
.tagrank-main { flex: 1; min-width: 0; display: flex; align-items: center; gap: 8px; }
.tagrank-name { font-family: var(--font-serif); font-size: 14.5px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.tagrank-name:hover { color: var(--accent); }
.tagrank-dim { flex: 0 0 auto; padding: 1px 8px; font-size: 11.5px; color: var(--text-muted); border: 1px solid var(--border); border-radius: 999px; }
.tagrank-stat { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--text-muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tagrank-rate { color: var(--accent); }
.tagrank-people { color: var(--text-dim); }
.tagrank-empty { padding: 28px; text-align: center; font-size: 13px; color: var(--text-muted); background: var(--bg-card); border: 1px dashed var(--border); border-radius: var(--radius); }
.tagrank-footnote { margin: 10px 0 0; padding-top: 16px; border-top: 1px solid var(--border); font-size: 12px; line-height: 1.8; color: var(--text-muted); }
.tagrank-more { margin-top: 14px; }
.tagrank-more summary {
    display: inline-flex; align-items: center; gap: 6px; cursor: pointer; list-style: none;
    padding: 7px 16px; font-size: 12.5px; color: var(--text-dim);
    background: var(--bg-card); border: 1px solid var(--border); border-radius: 999px;
    transition: all .2s;
}
.tagrank-more summary::-webkit-details-marker { display: none; }
.tagrank-more summary::after { content: "▾"; font-size: 10px; opacity: .75; }
.tagrank-more[open] summary::after { content: "▴"; }
.tagrank-more summary:hover { color: var(--accent); border-color: rgba(var(--cinnabar-rgb), .5); }
.tagrank-more ol { margin-top: 8px; }

.tagdetail-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; }
.tagdetail-head-main h1 { margin: 0 0 10px; font-size: 34px; font-weight: 600; color: var(--text); }
.tagdetail-meta { display: flex; flex-wrap: wrap; gap: 14px; margin: 0 0 12px; font-size: 12.5px; color: var(--text-muted); }
.tagdetail-dim { color: var(--accent); }
.tagdetail-desc { max-width: 720px; margin: 0; font-size: 14px; line-height: 1.9; color: var(--text-dim); }
.tagdetail-rate { flex: 0 0 auto; padding: 16px 26px; text-align: center; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.tagdetail-rate strong { display: block; font-family: var(--font-serif); font-size: 32px; font-weight: 600; color: var(--accent); font-variant-numeric: tabular-nums; }
.tagdetail-rate span { font-size: 11.5px; color: var(--text-muted); }
.tagperson-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 12px; margin-top: 18px; }
.tagperson-card { display: block; padding: 16px 18px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); transition: all .25s; }
.tagperson-card:hover { border-color: rgba(var(--cinnabar-rgb), .5); transform: translateY(-3px); box-shadow: var(--shadow); }
.tagperson-top { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.tagperson-avatar { display: flex; align-items: center; justify-content: center; width: 38px; height: 38px; flex: 0 0 38px; font-family: var(--font-serif); font-size: 17px; color: #fffaf0; background: var(--gold-dark); border-radius: 50%; }
.tagperson-name { display: block; font-family: var(--font-serif); font-size: 15px; color: var(--text); }
.tagperson-dynasty { display: block; font-size: 11.5px; color: var(--text-muted); }
.tagperson-bar { height: 5px; overflow: hidden; background: var(--border-soft); border-radius: 3px; }
.tagperson-bar span { display: block; height: 100%; background: linear-gradient(90deg, var(--gold), var(--accent)); border-radius: 3px; }
.tagperson-stat { display: flex; justify-content: space-between; margin-top: 8px; font-size: 11.5px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.tagdetail-related { margin-top: 40px; }
.tagdetail-related h3 { margin: 0 0 14px; font-size: 15px; font-weight: 600; color: var(--text); }
.tagdetail-chips { display: flex; flex-wrap: wrap; gap: 8px; }
.tagdetail-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 13px; font-size: 12.5px; color: var(--text-dim); background: var(--bg-card); border: 1px solid var(--border); border-radius: 999px; }
.tagdetail-chip span { font-size: 10.5px; color: var(--text-muted); }
.tagdetail-chip:hover { color: var(--accent); border-color: rgba(var(--cinnabar-rgb), .5); }

/* ---------- 评论 ---------- */
.comment-count { display: inline-block; margin-left: 6px; padding: 1px 9px; border-radius: 999px; font-size: 12px; color: var(--accent); border: 1px solid rgba(var(--cinnabar-rgb), .4); vertical-align: middle; }
.cm-notice { margin: 0 0 16px; padding: 10px 15px; border-radius: var(--radius); font-size: 13px; }
.cm-ok { background: rgba(var(--jade-rgb), .09); border: 1px solid rgba(var(--jade-rgb), .35); color: var(--approve); }
.cm-err { background: rgba(var(--cinnabar-rgb), .08); border: 1px solid rgba(var(--cinnabar-rgb), .35); color: var(--accent); }
.cm-empty { padding: 26px 0; color: var(--text-muted); font-size: 14px; }
.cm-list { display: flex; flex-direction: column; gap: 14px; margin-bottom: 26px; }
.cm-item { padding: 17px 20px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.cm-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 8px; }
.cm-head strong { font-family: var(--font-serif); font-size: 14.5px; color: var(--text); font-weight: 600; }
.cm-head span { font-size: 12px; color: var(--text-muted); }
.cm-content { font-size: 14px; line-height: 1.8; color: var(--text-dim); }
.cm-report { margin-top: 8px; }
.cm-report summary { font-size: 12px; color: var(--text-muted); cursor: pointer; width: fit-content; }
.cm-report form { display: flex; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.cm-report button { padding: 5px 12px; border-radius: var(--radius-sm); border: 1px solid var(--border); background: transparent; color: var(--text-dim); font-size: 12px; }
.cm-report button:hover { color: var(--accent); border-color: var(--accent); }
.cm-form { padding: 22px; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.cm-form-row { margin-bottom: 12px; }
.cm-form input, .cm-form textarea { width: 100%; box-sizing: border-box; }
.cm-form textarea { resize: vertical; }
.cm-hp, .nf-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.cm-form button[type="submit"], .nf-submit {
    padding: 10px 26px; border: 1px solid var(--gold-dark);
    background: var(--gold-dark); color: #fffaf0;
    font-family: var(--font-serif); font-size: 14px; letter-spacing: .12em;
    border-radius: 2px; transition: all .2s;
}
.cm-form button[type="submit"]:hover, .nf-submit:hover { background: var(--accent); border-color: var(--accent); }
html[data-theme="ink"] .cm-form button[type="submit"], html[data-theme="ink"] .nf-submit { color: #17130e; }

/* ---------- 开放接口 / 投稿表单 ---------- */
.dev-wrap { max-width: 900px; }
.dev-intro { padding: 18px 22px; background: var(--bg-card); border: 1px solid var(--border); border-left: 3px solid var(--accent); border-radius: var(--radius); margin-bottom: 28px; }
.dev-intro p { color: var(--text-dim); font-size: 14px; line-height: 1.9; }
.dev-intro strong { color: var(--accent); }
.dev-h3 { font-size: 17px; color: var(--text); margin: 30px 0 12px; padding-left: 12px; border-left: 3px solid var(--accent); }
.dev-table { width: 100%; border-collapse: collapse; font-size: 13px; background: var(--bg-card); border: 1px solid var(--border); }
.dev-table th, .dev-table td { padding: 10px 14px; border-bottom: 1px solid var(--border-soft); text-align: left; color: var(--text-dim); }
.dev-table th { color: var(--text); font-family: var(--font-serif); font-weight: 600; background: var(--bg-elev); }
.dev-table code, .dev-code { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 12.5px; }
.dev-table code { color: var(--accent); }
.dev-method { padding: 2px 8px; border-radius: 2px; font-size: 11px; font-weight: 600; }
.dev-method.get { color: var(--approve); border: 1px solid rgba(var(--jade-rgb), .4); }
.dev-method.post { color: var(--accent); border: 1px solid rgba(var(--cinnabar-rgb), .4); }
.dev-code { display: block; padding: 18px 20px; background: var(--bg-elev); border: 1px solid var(--border); border-radius: var(--radius); color: var(--text-dim); line-height: 1.9; overflow-x: auto; white-space: pre; }
.dev-note { margin-top: 14px; font-size: 13px; color: var(--text-muted); line-height: 1.85; }
.dev-note code { color: var(--accent); background: rgba(var(--ochre-rgb), .07); padding: 1px 5px; border-radius: 2px; }
.submit-section .container-narrow { max-width: 700px; }
.chart-box { background: var(--bg-card); }
.daily-eyebrow::before {
    content: ""; display: inline-block; width: 6px; height: 6px;
    background: var(--accent); transform: rotate(45deg);
    margin-right: 9px; vertical-align: middle;
}
.nf-form { padding: 26px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.nf-row { margin-bottom: 16px; }
.nf-row label { display: block; margin-bottom: 6px; font-size: 13.5px; color: var(--text-dim); }
.nf-row .req { color: var(--accent); }
.nf-form input, .nf-form select, .nf-form textarea { width: 100%; box-sizing: border-box; }
.nf-form textarea { resize: vertical; }
.nf-hint { margin-top: 12px; font-size: 12px; color: var(--text-muted); }
.nf-notice { margin-bottom: 18px; padding: 12px 16px; border-radius: var(--radius); font-size: 13.5px; }
.nf-notice-ok { color: var(--approve); background: rgba(var(--jade-rgb), .09); border: 1px solid rgba(var(--jade-rgb), .35); }
.nf-notice-err { color: var(--accent); background: rgba(var(--cinnabar-rgb), .08); border: 1px solid rgba(var(--cinnabar-rgb), .35); }

/* ---------- 错误页 ---------- */
.error-page { text-align: center; padding: 110px 0 130px; }
.error-code { font-family: var(--font-serif); font-size: 108px; font-weight: 600; color: var(--accent); letter-spacing: .1em; line-height: 1; opacity: .85; }
.error-msg { font-family: var(--font-serif); font-size: 18px; color: var(--text-dim); margin-top: 12px; letter-spacing: .1em; }

/* ---------- 页脚 ---------- */
.site-footer {
    margin-top: 24px;
    border-top: 1px solid var(--border);
    background: var(--bg-elev);
    position: relative;
}
.site-footer::before {
    content: ""; display: block; height: 4px;
    background: repeating-linear-gradient(90deg,
        rgba(var(--ochre-rgb), .45) 0 12px, transparent 12px 16px, rgba(var(--ochre-rgb), .45) 16px 20px, transparent 20px 32px);
    opacity: .5;
}
.footer-wrap { display: flex; justify-content: space-between; align-items: center; gap: 18px; padding: 30px 0; font-size: 13px; flex-wrap: wrap; }
.footer-brand { display: flex; align-items: center; gap: 12px; }
.footer-seal {
    width: 34px; height: 34px; flex: 0 0 34px;
    display: flex; align-items: center; justify-content: center;
    font-family: var(--font-serif); font-size: 12px; font-weight: 700;
    color: #fffaf0; background: var(--accent);
    border: 1px solid var(--accent); border-radius: 2px;
    box-shadow: inset 0 0 0 2px rgba(255, 250, 240, .45);
    transform: rotate(-4deg);
}
.footer-left strong { display: block; font-family: var(--font-serif); font-size: 16px; color: var(--text); letter-spacing: .22em; }
.footer-left span { display: block; font-size: 11.5px; color: var(--text-muted); letter-spacing: .08em; margin-top: 2px; }
.footer-right { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; font-size: 12.5px; }
.footer-right a { color: var(--text-dim); }
.footer-right a:hover { color: var(--accent); }
.divider { color: var(--border); margin: 0 4px; }
.footer-note { width: 100%; padding-top: 14px; margin-top: 4px; border-top: 1px solid var(--border-soft); font-size: 11.5px; color: var(--text-muted); text-align: center; letter-spacing: .06em; }

.back-to-top {
    position: fixed; right: 24px; bottom: 26px; z-index: 90;
    width: 40px; height: 40px;
    display: flex; align-items: center; justify-content: center;
    background: var(--bg-card); color: var(--text-dim);
    border: 1px solid var(--border); border-radius: 2px;
    box-shadow: var(--shadow); font-size: 16px;
    opacity: 0; visibility: hidden; transform: translateY(10px);
    transition: all .28s;
}
.back-to-top.visible { opacity: 1; visibility: visible; transform: none; }
.back-to-top:hover { color: var(--accent); border-color: var(--accent); }

/* ---------- 管理后台 ---------- */
.admin-body { background: var(--bg); min-height: 100vh; }
.admin-header { border-bottom: 1px solid var(--border); background: var(--bg-elev); }
.admin-header-inner { max-width: 1180px; margin: 0 auto; padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.admin-brand { color: var(--text); font-family: var(--font-serif); font-size: 16px; letter-spacing: .14em; }
.admin-brand:hover { color: var(--accent); }
.admin-nav { display: flex; align-items: center; gap: 20px; font-size: 13.5px; }
.admin-nav a { color: var(--text-dim); }
.admin-nav a:hover, .admin-nav a.active { color: var(--accent); }
.admin-main { max-width: 1180px; margin: 0 auto; padding: 34px 24px 64px; }
.admin-title { font-size: 23px; margin: 0 0 24px; font-weight: 600; letter-spacing: .1em; }
.admin-flash { margin-bottom: 20px; padding: 10px 15px; border: 1px solid var(--approve); border-radius: var(--radius); color: var(--approve); font-size: 14px; background: rgba(var(--jade-rgb), .08); }
.admin-flash-error { border-color: var(--accent); color: var(--accent); background: rgba(var(--cinnabar-rgb), .08); }
.admin-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 24px; }
.stat-box { padding: 17px 20px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); display: flex; flex-direction: column; gap: 6px; }
.stat-num { font-family: var(--font-serif); font-size: 26px; color: var(--gold-light); line-height: 1; }
.stat-label { font-size: 12.5px; color: var(--text-muted); }
.admin-filters { display: flex; gap: 10px; flex-wrap: wrap; margin-bottom: 20px; }
.admin-filters .tag-input { max-width: 280px; }
.admin-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: var(--radius); background: var(--bg-card); }
.admin-table { width: 100%; border-collapse: collapse; font-size: 13.5px; min-width: 900px; }
.admin-table th { text-align: left; padding: 12px 14px; color: var(--text-muted); font-weight: 500; font-size: 12.5px; background: var(--bg-elev); border-bottom: 1px solid var(--border); white-space: nowrap; }
.admin-table td { padding: 12px 14px; border-bottom: 1px solid var(--border-soft); color: var(--text); vertical-align: middle; }
.admin-table tbody tr:last-child td { border-bottom: none; }
.admin-table tbody tr:hover { background: rgba(var(--ochre-rgb), .04); }
.admin-table a { color: var(--gold); }
.admin-table a:hover { color: var(--accent); text-decoration: underline; }
.cell-tag { font-weight: 600; }
.cell-dim { color: var(--text-dim); }
.cell-votes { white-space: nowrap; }
.cell-muted { color: var(--text-muted); font-size: 12.5px; }
.reason-badge { display: inline-block; padding: 2px 8px; border-radius: 2px; font-size: 12px; white-space: nowrap; }
.reason-majority_reject { color: var(--accent); border: 1px solid rgba(var(--cinnabar-rgb), .45); }
.reason-cold_start { color: var(--text-dim); border: 1px solid var(--border); }
.reason-active { color: var(--approve); border: 1px solid rgba(var(--jade-rgb), .4); }
.reason-reigning { color: #8a6d1f; border: 1px solid rgba(180, 148, 90, .55); background: rgba(180, 148, 90, .1); margin-left: 4px; }
.inline-form { display: inline; margin: 0; }
.admin-link-btn { background: none; border: none; padding: 0; color: var(--text-dim); font-size: 14px; }
.admin-link-btn:hover { color: var(--accent); }
.admin-pager { display: flex; align-items: center; gap: 16px; margin-top: 20px; font-size: 13.5px; color: var(--text-muted); }
.admin-pager a { color: var(--gold); }
.admin-count { margin-top: 16px; font-size: 13px; color: var(--text-muted); }
.admin-empty { padding: 48px 0; text-align: center; color: var(--text-muted); }
.admin-breadcrumb { margin: 0 0 10px; font-size: 12.5px; color: var(--text-muted); }
.admin-breadcrumb a { color: var(--gold); }
.admin-entry-section { margin-bottom: 36px; }
.admin-entry-head { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.admin-subtitle { margin: 0; font-size: 17px; font-weight: 600; color: var(--text); }
.admin-entry-add { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; padding: 16px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); }
.admin-entry-add .tag-input { flex: 1; min-width: 240px; }
.admin-check { display: flex; align-items: center; gap: 6px; font-size: 12.5px; color: var(--text-dim); white-space: nowrap; }
.admin-entry-edit { display: flex; align-items: center; gap: 8px; }
.admin-entry-edit .tag-input { flex: 1; min-width: 200px; }
.cell-actions { white-space: nowrap; }
.cell-actions form + form { margin-left: 10px; }
.btn-danger { color: var(--accent); }
.row-hidden td { opacity: .6; }
.login-wrap { min-height: 100vh; display: flex; align-items: center; justify-content: center; padding: 24px; }
.login-card { width: 100%; max-width: 350px; padding: 34px 30px; background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius); display: flex; flex-direction: column; gap: 14px; box-shadow: var(--shadow-lg); }
.login-card h1 { margin: 0; font-size: 20px; font-weight: 600; letter-spacing: .14em; color: var(--text); }
.login-sub { margin: -6px 0 4px; font-size: 13px; color: var(--text-muted); }
.login-btn { width: 100%; }
.login-error { margin: 0; padding: 8px 12px; border: 1px solid rgba(var(--cinnabar-rgb), .45); border-radius: var(--radius-sm); color: var(--accent); font-size: 13px; }
.login-back { text-align: center; font-size: 12.5px; color: var(--text-muted); }
.login-back:hover { color: var(--accent); }

/* ---------- 入场动效 ---------- */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .65s ease, transform .65s ease; }
.reveal.in { opacity: 1; transform: none; }

/* ---------- 响应式 ---------- */
@media (max-width: 900px) {
    .nav-wrap { gap: 14px; }
    .nav { gap: 0; }
    .nav a { padding: 8px 9px; font-size: 13.5px; }
    .nav-tagline { display: none; }
    .hero-seal { display: none; }
    .radar-wrap { grid-template-columns: 1fr; gap: 20px; }
    .radar-legend { flex-direction: row; flex-wrap: wrap; }
    .legend-item { flex: 1 0 45%; }
}
@media (max-width: 720px) {
    .container, .container-narrow { padding: 0 18px; }
    .nav-wrap { height: auto; min-height: 60px; flex-wrap: wrap; }
    .menu-toggle { display: inline-flex; order: 3; margin-left: auto; }
    .nav {
        order: 4; flex: 1 0 100%; display: none;
        flex-wrap: wrap; gap: 0;
        padding: 8px 0 14px;
        border-top: 1px solid var(--border);
    }
    .nav.open { display: flex; }
    .nav a { flex: 0 0 25%; text-align: center; font-size: 13px; padding: 7px 2px; }
    .site-header { position: sticky; }
    .theme-toggle { order: 2; margin-left: auto; }
    .theme-toggle .tt-label { display: none; }

    .hero-banner { padding-top: 52px; }
    .hero-kicker { font-size: 10.5px; letter-spacing: .2em; }
    .hero-title { font-size: clamp(28px, 7.4vw, 38px); letter-spacing: .06em; }
    .hero-sub { font-size: 11.5px; letter-spacing: .28em; }
    .hero-desc { font-size: 13.5px; }
    .hero-stats { margin-top: 44px; }
    .hero-stat strong { font-size: 22px; }
    .hero-stat span { font-size: 10px; letter-spacing: .08em; }
    .hero-mountains { height: 120px; }

    .section { padding: 42px 0; }
    .section-header h2, .section-header h1 { font-size: 20px; }
    .daily-card { flex-direction: column; align-items: flex-start; padding: 26px 22px; gap: 20px; }
    .daily-card::after { display: none; }
    .daily-avatar { width: 76px; height: 76px; font-size: 34px; }
    .daily-name { font-size: 28px; }
    .person-grid { grid-template-columns: repeat(auto-fill, minmax(122px, 1fr)); gap: 10px; }
    .person-card { padding: 20px 10px 16px; }
    .pc-avatar { width: 52px; height: 52px; font-size: 22px; }

    .hero-inner { flex-direction: column; text-align: center; align-items: center; gap: 20px; }
    .person-hero { padding: 32px 0; }
    .person-name { font-size: 28px; }
    .person-tags-inline, .person-actions { justify-content: center; }
    .person-bio { text-align: left; }
    .avatar-placeholder, .person-avatar img { width: 96px; height: 96px; font-size: 46px; }
    .two-col { grid-template-columns: 1fr; gap: 30px; }
    .radar-chart { height: 300px; }
    .controversy-list li { grid-template-columns: 56px 1fr 86px; }
    .ct-rate { font-size: 11.5px; }
    .entry-item { grid-template-columns: 24px 1fr; }
    .entry-item .tag-actions { grid-column: 2; justify-content: flex-start; }
    .tag-submit-form { flex-direction: column; }
    .tag-input, .tag-dim-select, .tag-submit-form .btn { width: 100%; }
    .entry-form .btn { padding: 9px 12px; }
    .compare-picker-row { grid-template-columns: 1fr; }
    .compare-vs { padding: 0; text-align: center; }
    .compare-hero-grid { grid-template-columns: 1fr; }
    .compare-hero-vs { font-size: 16px; }
    .compare-person h1 { font-size: 26px; }
    .compare-vote-btns { grid-template-columns: 1fr; }
    .tagrank-list { grid-template-columns: 1fr; }
    .tagrank-block-head { flex-direction: column; align-items: flex-start; gap: 4px; }
    .tagrank-block-note { white-space: normal; }
    .tagdetail-head { flex-direction: column; }
    .tagdetail-rate { width: 100%; }
    .rank-item { grid-template-columns: 32px 32px 1fr auto; gap: 10px; padding: 12px 14px; }
    .rank-avatar { width: 30px; height: 30px; font-size: 13px; }
    .rank-meter { display: none; }
    .rank-cat { display: none; }
    .entry-controversy { grid-template-columns: 26px 30px 1fr; }
    .entry-controversy .rank-content, .entry-controversy .rank-score { grid-column: 3; }
    .timeline-name { font-size: 19px; }
    .country-grid { grid-template-columns: 1fr; }
    .admin-stats { grid-template-columns: repeat(2, 1fr); }
    .admin-main { padding: 24px 16px 48px; }
    .admin-entry-add { flex-direction: column; align-items: stretch; }
    .admin-entry-add .tag-input { min-width: 0; }
    .footer-wrap { flex-direction: column; text-align: center; gap: 16px; }
    .footer-brand { justify-content: center; }
    .footer-right { justify-content: center; }
    .error-code { font-size: 76px; }
    .back-to-top { right: 14px; bottom: 16px; }
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
    .reveal { opacity: 1; transform: none; }
}

/* ==================== 每日一评 & 猜猜他是谁 ==================== */
.dailyq-wrap { padding-top: 8px; }
.dailyq-actions[hidden], .dailyq-result[hidden], .guess-verdict[hidden], .guess-q[hidden] { display: none; }
.dailyq-grid {
    display: grid;
    grid-template-columns: 1.3fr 1fr 1fr;
    gap: 20px;
}
.dailyq-card, .guess-entry-card {
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 14px;
    padding: 26px 28px;
    box-shadow: 0 8px 24px rgba(var(--ink-rgb), .05);
}
.dailyq-eyebrow, .guess-entry-eyebrow {
    font-size: 12px;
    letter-spacing: .14em;
    color: var(--gold);
    margin-bottom: 10px;
}
.dailyq-question {
    font-size: 24px;
    font-weight: 700;
    margin: 0 0 8px;
    line-height: 1.45;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
}
.dailyq-meta {
    font-size: 13.5px;
    color: var(--text-dim);
    margin-bottom: 18px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.dailyq-meta a { color: var(--accent); text-decoration: none; }
.dailyq-meta a:hover { text-decoration: underline; }
.dailyq-dim {
    font-size: 12px;
    color: var(--gold);
    border: 1px solid rgba(var(--ochre-rgb), .35);
    border-radius: 999px;
    padding: 2px 10px;
}
.dailyq-actions { display: flex; gap: 12px; }
.dailyq-btn { display: inline-flex; align-items: center; gap: 7px; }
.dailyq-bar {
    display: flex;
    height: 12px;
    border-radius: 999px;
    overflow: hidden;
    background: var(--border-soft);
    margin-bottom: 10px;
}
.dailyq-bar-approve {
    background: linear-gradient(90deg, var(--gold), var(--accent));
    transition: width .5s ease;
}
.dailyq-bar-oppose {
    background: var(--oppose);
    opacity: .55;
    transition: width .5s ease;
}
.dailyq-nums {
    display: flex;
    justify-content: space-between;
    font-size: 13px;
    color: var(--text-dim);
}
.dailyq-num-approve { color: var(--gold-dark); font-weight: 600; }
.dailyq-num-oppose { color: var(--text-muted); }
.dailyq-hint { margin-top: 10px; font-size: 12.5px; color: var(--text-muted); }

.guess-entry-card {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.guess-entry-title {
    font-size: 22px;
    margin: 0 0 8px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
}
.guess-entry-desc {
    font-size: 13.5px;
    color: var(--text-dim);
    line-height: 1.7;
    margin: 0 0 16px;
}
.guess-entry-btn { margin-top: auto; }
.dailyq-yesterday {
    margin-top: 16px;
    padding-top: 14px;
    border-top: 1px dashed var(--border-soft);
    font-size: 12.5px;
    color: var(--text-muted);
    line-height: 1.7;
}
.dailyq-yesterday a { color: var(--accent); text-decoration: none; }
.dailyq-yesterday a:hover { text-decoration: underline; }

/* 猜猜他是谁 */
.guess-stage { max-width: 920px; margin: 0 auto; }
.guess-progress {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-bottom: 22px;
}
.guess-dot {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    color: var(--text-muted);
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    transition: all .25s ease;
}
.guess-dot.is-current {
    color: #fff;
    background: var(--gold);
    border-color: var(--gold);
    transform: scale(1.1);
}
.guess-dot.is-right { background: var(--approve); border-color: var(--approve); color: #fff; }
.guess-dot.is-wrong { background: var(--accent); border-color: var(--accent); color: #fff; }

.guess-q {
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 16px;
    padding: 28px;
    box-shadow: 0 10px 30px rgba(var(--ink-rgb), .06);
}
.guess-body {
    display: grid;
    grid-template-columns: 340px 1fr;
    gap: 28px;
    align-items: center;
}
.guess-radar-box { text-align: center; }
.guess-radar { width: 100%; height: 300px; }
.guess-radar-note {
    font-size: 12px;
    color: var(--text-muted);
    letter-spacing: .1em;
    margin-top: 4px;
}
.guess-dynasty {
    display: inline-block;
    font-size: 13px;
    color: var(--gold);
    border: 1px solid rgba(var(--ochre-rgb), .4);
    border-radius: 999px;
    padding: 3px 14px;
    margin-bottom: 14px;
}
.guess-hints { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 20px; }
.guess-hint {
    font-size: 13px;
    color: var(--text-dim);
    background: rgba(var(--ochre-rgb), .1);
    border-radius: 6px;
    padding: 5px 12px;
}
.guess-options {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}
.guess-opt {
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    font-size: 16px;
    padding: 13px 10px;
    border-radius: 10px;
    border: 1px solid var(--border-soft);
    background: var(--bg);
    color: var(--text);
    cursor: pointer;
    transition: all .2s ease;
}
.guess-opt:hover:not(:disabled) {
    border-color: var(--gold);
    color: var(--gold-dark);
    transform: translateY(-1px);
}
.guess-opt:disabled { cursor: default; opacity: .75; }
.guess-opt.is-right {
    background: var(--approve);
    border-color: var(--approve);
    color: #fff;
    opacity: 1;
}
.guess-opt.is-wrong {
    background: var(--accent);
    border-color: var(--accent);
    color: #fff;
    opacity: 1;
}
.guess-verdict {
    margin-top: 16px;
    font-size: 15px;
    line-height: 1.8;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
}
.guess-verdict.is-right { color: var(--approve); }
.guess-verdict.is-wrong { color: var(--accent); }
.guess-verdict a { color: var(--gold-dark); }
.guess-next {
    font-size: 13.5px;
    padding: 7px 18px;
    border-radius: 999px;
    border: none;
    background: var(--gold);
    color: #fff;
    cursor: pointer;
    transition: background .2s ease;
}
.guess-next:hover { background: var(--gold-dark); }

.guess-result {
    text-align: center;
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 16px;
    padding: 44px 28px;
    box-shadow: 0 10px 30px rgba(var(--ink-rgb), .06);
}
.guess-score {
    font-size: 52px;
    font-weight: 700;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    color: var(--gold);
    margin-bottom: 8px;
}
.guess-score-sub { font-size: 15px; color: var(--text-dim); margin: 0 0 24px; }
.guess-result-actions {
    display: flex;
    justify-content: center;
    gap: 12px;
    margin-bottom: 16px;
}
.guess-tomorrow { font-size: 12.5px; color: var(--text-muted); margin: 0; }
.guess-empty { text-align: center; padding: 40px 0; color: var(--text-dim); }

@media (max-width: 900px) {
    .dailyq-grid { grid-template-columns: 1fr; }
    .guess-body { grid-template-columns: 1fr; gap: 18px; }
    .guess-radar { height: 260px; }
}
@media (max-width: 720px) {
    .dailyq-card, .guess-entry-card { padding: 20px; }
    .dailyq-question { font-size: 20px; }
    .guess-q { padding: 18px; }
    .guess-options { grid-template-columns: 1fr 1fr; }
    .guess-score { font-size: 40px; }
}

/* ==================== 画像周报 · 近 7 天变化 ==================== */
.wc-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    max-width: 920px;
    margin: 0 auto;
}
.wc-grid:has(> .wc-card:only-child) { grid-template-columns: minmax(0, 480px); justify-content: center; }
.wc-card {
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 16px;
    padding: 22px 24px;
    box-shadow: 0 10px 30px rgba(var(--ink-rgb), .06);
}
.wc-title {
    font-size: 12px;
    letter-spacing: .14em;
    color: var(--gold);
    margin-bottom: 14px;
}
.wc-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.wc-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px dashed var(--border-soft);
}
.wc-row:last-child { border-bottom: none; }
.wc-name {
    flex: 1;
    min-width: 0;
    font-size: 14.5px;
    color: var(--text);
    display: inline-flex;
    align-items: center;
    gap: 8px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.wc-score { font-size: 14px; color: var(--text-dim); font-variant-numeric: tabular-nums; }
.wc-delta {
    flex: none;
    min-width: 58px;
    text-align: right;
    font-size: 13px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.wc-up { color: var(--approve); }
.wc-down { color: #b23a2e; }
.wc-flat { color: var(--text-muted); font-weight: 400; }
.wc-new {
    color: var(--gold-dark);
    font-size: 12px;
    font-weight: 500;
    border: 1px solid rgba(var(--ochre-rgb), .4);
    border-radius: 999px;
    padding: 1px 8px;
}

@media (max-width: 760px) {
    .wc-grid { grid-template-columns: 1fr; }
}

/* ==================== 前世测试 ==================== */
.quiz-intro {
    max-width: 640px;
    margin: 0 auto;
    text-align: center;
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 16px;
    padding: 44px 32px;
    box-shadow: 0 10px 30px rgba(var(--ink-rgb), .06);
}
.quiz-intro-seal {
    width: 64px;
    height: 64px;
    margin: 0 auto 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 30px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    color: var(--gold);
    border: 2px solid rgba(var(--ochre-rgb), .5);
    border-radius: 14px;
}
.quiz-intro-title { font-size: 24px; margin: 0 0 10px; font-family: 'Noto Serif SC', 'Songti SC', serif; }
.quiz-intro-desc { font-size: 14.5px; color: var(--text-dim); line-height: 1.9; margin: 0 0 22px; }
.quiz-intro-note { margin: 16px 0 0; font-size: 12.5px; color: var(--text-muted); }

.quiz-stage { max-width: 760px; margin: 0 auto; }
.quiz-intro[hidden], .quiz-stage[hidden], .quiz-result[hidden],
.quiz-result-body[hidden], .quiz-loading[hidden] { display: none; }
.guess-dot.is-done { background: var(--gold); border-color: var(--gold); color: #fff; }
.quiz-q-eyebrow { font-size: 12px; letter-spacing: .14em; color: var(--gold); margin-bottom: 10px; }
.quiz-q-title {
    font-size: 21px;
    margin: 0 0 20px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    line-height: 1.6;
}
.quiz-options { display: grid; grid-template-columns: 1fr; gap: 10px; }
.quiz-opt {
    display: flex;
    align-items: center;
    gap: 12px;
    text-align: left;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    font-size: 15.5px;
    padding: 13px 16px;
    border-radius: 10px;
    border: 1px solid var(--border-soft);
    background: var(--bg);
    color: var(--text);
    cursor: pointer;
    transition: all .2s ease;
}
.quiz-opt:hover { border-color: var(--gold); color: var(--gold-dark); transform: translateY(-1px); }
.quiz-opt.is-picked { background: var(--gold); border-color: var(--gold); color: #fff; }
.quiz-opt-seal {
    flex: none;
    width: 26px;
    height: 26px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    border: 1px solid currentColor;
    border-radius: 7px;
    opacity: .8;
}

.quiz-result { max-width: 920px; margin: 0 auto; }
.quiz-loading {
    text-align: center;
    padding: 60px 0;
    color: var(--text-dim);
    font-size: 15px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
}
.quiz-result-grid { display: grid; grid-template-columns: 380px 1fr; gap: 24px; align-items: stretch; }
.quiz-radar-box {
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
    box-shadow: 0 10px 30px rgba(var(--ink-rgb), .06);
}
.quiz-radar { width: 100%; height: 340px; }
.quiz-radar-note { font-size: 12px; color: var(--text-muted); letter-spacing: .1em; margin-top: 4px; }
.quiz-matches { display: flex; flex-direction: column; }
.quiz-matches-eyebrow { font-size: 12px; letter-spacing: .14em; color: var(--gold); margin-bottom: 12px; }
.quiz-match-list { display: flex; flex-direction: column; gap: 12px; flex: 1; }
.quiz-match-card {
    display: flex;
    align-items: center;
    gap: 16px;
    background: var(--bg-card);
    border: 1px solid var(--border-soft);
    border-radius: 14px;
    padding: 18px 22px;
    text-decoration: none;
    color: var(--text);
    transition: all .2s ease;
    flex: 1;
}
.quiz-match-card:hover {
    border-color: var(--gold);
    transform: translateY(-2px);
    box-shadow: 0 8px 22px rgba(var(--ink-rgb), .08);
}
.quiz-match-rank {
    flex: none;
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 17px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    color: var(--gold);
    border: 1.5px solid rgba(var(--ochre-rgb), .5);
    border-radius: 10px;
}
.quiz-match-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.quiz-match-name { font-size: 19px; font-weight: 600; font-family: 'Noto Serif SC', 'Songti SC', serif; }
.quiz-match-meta { font-size: 12.5px; color: var(--text-muted); }
.quiz-match-pct {
    flex: none;
    font-size: 26px;
    font-weight: 700;
    color: var(--gold-dark);
    font-family: 'Noto Serif SC', 'Songti SC', serif;
}
.quiz-match-pct small { font-size: 13px; font-weight: 400; margin-left: 2px; color: var(--text-muted); }
.quiz-result-actions { display: flex; justify-content: center; gap: 12px; margin-top: 24px; }
.quiz-result-note { text-align: center; font-size: 12.5px; color: var(--text-muted); margin: 14px 0 0; }

@media (min-width: 1101px) {
    /* 5 张卡：每日一评跨两列，第二行恰好填满三列 */
    .dailyq-card { grid-column: span 2; display: flex; align-items: center; gap: 36px; }
    .dailyq-main { flex: 1; min-width: 0; }
    .dailyq-main .dailyq-meta { margin-bottom: 0; }
    .dailyq-actions { flex: 0 0 auto; flex-direction: column; align-items: stretch; }
    .dailyq-result { flex: 0 0 300px; }
}
@media (max-width: 1100px) {
    .dailyq-grid { grid-template-columns: 1fr 1fr; }
    .dailyq-card { grid-column: 1 / -1; }
}
@media (max-width: 900px) {
    .dailyq-grid { grid-template-columns: 1fr; }
    .dailyq-card { grid-column: auto; }
    .quiz-result-grid { grid-template-columns: 1fr; }
    .quiz-radar { height: 300px; }
}
@media (max-width: 720px) {
    .quiz-intro { padding: 32px 20px; }
    .quiz-match-card { padding: 14px 16px; gap: 12px; }
    .quiz-match-pct { font-size: 22px; }
}

/* ==================== 评论防灌水闪卡 ==================== */
.cq-card {
    border: 1px solid rgba(var(--ochre-rgb), .35);
    border-radius: var(--radius);
    background: var(--bg-card);
    padding: 18px 20px;
    margin-bottom: 16px;
}
.cq-card[hidden] { display: none; }
.cq-head { margin-bottom: 12px; }
.cq-eyebrow { font-size: 12px; letter-spacing: .14em; color: var(--gold); }
.cq-tip { margin: 4px 0 0; font-size: 12.5px; color: var(--text-muted); }
.cq-loading { font-size: 13px; color: var(--text-dim); display: flex; gap: 10px; align-items: center; }
.cq-question {
    font-size: 15.5px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    margin-bottom: 12px;
}
.cq-options { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.cq-opt {
    padding: 10px 14px;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius);
    background: var(--bg);
    color: var(--text);
    font-size: 14px;
    font-family: 'Noto Serif SC', 'Songti SC', serif;
    cursor: pointer;
    transition: all .2s ease;
    text-align: center;
}
.cq-opt:hover { border-color: var(--gold); color: var(--gold-dark); }
.cq-opt.is-picked { background: var(--gold); border-color: var(--gold); color: #fff; }
.cq-opt.is-wrong { background: #b23a2e; border-color: #b23a2e; color: #fff; }
.cq-note { margin-top: 10px; font-size: 12px; color: var(--text-muted); }
.cq-retry {
    padding: 3px 12px;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius);
    background: transparent;
    color: var(--gold-dark);
    font-size: 12.5px;
    cursor: pointer;
}
.cq-retry:hover { border-color: var(--gold); }
@media (max-width: 560px) {
    .cq-options { grid-template-columns: 1fr; }
}

/* ==================== 评论编辑 ==================== */
.cm-edited {
    font-size: 11px;
    color: var(--text-muted);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-sm);
    padding: 1px 6px;
    margin-left: auto;
}
.cm-edit-btn {
    padding: 2px 10px;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text-muted);
    font-size: 12px;
    cursor: pointer;
    margin-left: auto;
}
.cm-edit-btn:hover { color: var(--gold-dark); border-color: var(--gold); }
.cm-edit-area { margin-top: 4px; }
.cm-edit-area textarea {
    width: 100%;
    box-sizing: border-box;
    resize: vertical;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: var(--radius-sm);
    color: var(--text);
    font-size: 14px;
    padding: 10px 14px;
}
.cm-edit-area textarea:focus {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px rgba(var(--cinnabar-rgb), .09);
}
.cm-edit-actions { display: flex; align-items: center; gap: 8px; margin-top: 8px; }
.cm-edit-save {
    padding: 6px 18px;
    border: 1px solid var(--gold-dark);
    background: var(--gold-dark);
    color: #fffaf0;
    font-family: var(--font-serif);
    font-size: 13px;
    border-radius: 2px;
    cursor: pointer;
}
.cm-edit-save:hover { background: var(--accent); border-color: var(--accent); }
.cm-edit-save:disabled { opacity: .6; cursor: default; }
.cm-edit-cancel {
    padding: 6px 14px;
    border: 1px solid var(--border);
    background: transparent;
    color: var(--text-dim);
    font-size: 13px;
    border-radius: 2px;
    cursor: pointer;
}
.cm-edit-cancel:hover { color: var(--accent); border-color: var(--accent); }
.cm-edit-msg { font-size: 12px; color: #b23a2e; }

/* 评论投票 */
.cm-vote { display: flex; gap: 8px; margin-top: 8px; }
.cm-vote-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 10px;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-sm);
    background: transparent;
    color: var(--text-muted);
    font-size: 12px;
    cursor: pointer;
    transition: all .18s;
}
.cm-vote-btn svg { display: block; width: 13px; height: 13px; }
.cm-vote-btn:hover { border-color: var(--gold); color: var(--gold-dark); }
.cm-vote-btn.active.cm-vote-up { background: rgba(var(--jade-rgb), .13); border-color: var(--approve); color: var(--approve); }
.cm-vote-btn.active.cm-vote-down { background: rgba(var(--cinnabar-rgb), .1); border-color: var(--accent); color: var(--accent); }
.cm-vote-num { font-variant-numeric: tabular-nums; }

/* ==================== 擂台辩论 ==================== */
.db-arena { display: flex; align-items: center; gap: 14px; max-width: 640px; margin: 0 auto 24px; }
.db-arena-side { font-size: 14px; font-family: var(--font-serif); color: var(--gold-dark); white-space: nowrap; }
.db-arena-side.db-right { color: var(--series-b); }
.db-arena-bar { flex: 1; height: 10px; border-radius: 5px; background: rgba(63, 111, 143, .22); overflow: hidden; }
.db-arena-fill { height: 100%; background: linear-gradient(90deg, var(--gold), var(--gold-dark)); transition: width .4s ease; }

.db-form { max-width: 640px; margin: 0 auto 32px; background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: var(--radius); padding: 20px; }
.db-side-pick { display: flex; gap: 10px; margin-bottom: 14px; }
.db-pick { flex: 1; cursor: pointer; }
.db-pick input { position: absolute; opacity: 0; pointer-events: none; }
.db-pick span { display: block; text-align: center; padding: 10px; border: 1px solid var(--border); border-radius: var(--radius-sm); font-family: var(--font-serif); font-size: 15px; color: var(--text-dim); transition: all .2s; }
.db-pick-a input:checked + span { background: rgba(197, 160, 89, .12); border-color: var(--gold); color: var(--gold-dark); }
.db-pick-b input:checked + span { background: rgba(63, 111, 143, .1); border-color: var(--series-b); color: var(--series-b); }
.db-nick, .db-content { width: 100%; box-sizing: border-box; background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); font-size: 14px; padding: 10px 14px; }
.db-nick { margin-bottom: 10px; }
.db-content { resize: vertical; font-family: inherit; line-height: 1.7; }
.db-nick:focus, .db-content:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(var(--cinnabar-rgb), .09); }
.db-form-actions { display: flex; gap: 10px; margin-top: 12px; flex-wrap: wrap; }
.db-submit { padding: 8px 24px; background: var(--gold-dark); border: 1px solid var(--gold-dark); color: #fffaf0; font-family: var(--font-serif); font-size: 14px; border-radius: 2px; cursor: pointer; }
.db-submit:hover { background: var(--accent); border-color: var(--accent); }
.db-copy { padding: 8px 16px; background: transparent; border: 1px dashed var(--gold); color: var(--gold-dark); font-size: 13px; border-radius: 2px; cursor: pointer; }
.db-copy:hover { background: rgba(197, 160, 89, .08); }

.db-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; align-items: start; }
.db-col-title { font-family: var(--font-serif); font-size: 16px; padding-bottom: 10px; border-bottom: 2px solid var(--border-soft); margin-bottom: 14px; }
.db-col-a .db-col-title { color: var(--gold-dark); border-color: rgba(197, 160, 89, .4); }
.db-col-b .db-col-title { color: var(--series-b); border-color: rgba(63, 111, 143, .3); }
.db-empty { font-size: 13px; color: var(--text-muted); padding: 18px 0; text-align: center; }
.db-item { background: var(--bg-card); border: 1px solid var(--border-soft); border-radius: var(--radius-sm); padding: 12px 14px; margin-bottom: 10px; }
.db-item-head { display: flex; justify-content: space-between; font-size: 12px; color: var(--text-muted); margin-bottom: 6px; }
.db-item-head strong { color: var(--text-dim); font-size: 13px; }
.db-item-content { font-size: 14px; line-height: 1.7; }
.db-item-foot { display: flex; align-items: center; gap: 14px; margin-top: 8px; }
.db-like { display: inline-flex; align-items: center; gap: 4px; padding: 3px 10px; border: 1px solid var(--border-soft); border-radius: var(--radius-sm); background: transparent; color: var(--text-muted); font-size: 12px; cursor: pointer; transition: all .18s; }
.db-like:hover { border-color: #b23a2e; color: #b23a2e; }
.db-like.active { background: rgba(178, 58, 46, .1); border-color: #b23a2e; color: #b23a2e; }
.db-like-num { font-variant-numeric: tabular-nums; }
@media (max-width: 900px) { .db-grid { grid-template-columns: 1fr; } }

@media print {
    .site-header, .site-footer, .back-to-top, .toast-box, .hero-mountains, .hero-seal { display: none !important; }
    body { background: #fff; color: #000; }
    body::before { display: none; }
    .section, .section-alt { background: #fff; }
    .person-card, .tag-card, .rank-item, .bio-full, .compare-person { box-shadow: none; break-inside: avoid; }
}

/* ==================== 民谥 ==================== */
.epitaph-seal {
    display: inline-flex; align-items: center; justify-content: center;
    margin-left: 14px; padding: 6px 8px;
    font-family: var(--font-serif); font-size: .42em; font-weight: 700;
    line-height: 1.1; letter-spacing: 0; color: #fff8ec;
    background: var(--accent); border: 1px solid var(--accent); border-radius: 3px;
    box-shadow: inset 0 0 0 2px rgba(255, 248, 236, .5), 0 2px 6px rgba(var(--cinnabar-rgb), .28);
    transform: rotate(-3deg); vertical-align: .35em; cursor: default;
}
.epitaph-vacant-seal {
    display: inline-flex; align-items: center; justify-content: center;
    margin-left: 14px; width: 1.5em; height: 1.5em;
    font-family: var(--font-serif); font-size: .42em; line-height: 1;
    color: var(--text-muted); border: 1px dashed var(--border); border-radius: 3px;
    vertical-align: .35em; text-decoration: none; transition: .2s;
}
.epitaph-vacant-seal:hover { color: var(--accent); border-color: var(--accent); }
.chip-posthumous {
    background: rgba(var(--gold-rgb, 180 148 90), .12);
    color: var(--gold, #9a7b45); border-color: rgba(var(--gold-rgb, 180 148 90), .35);
}

.epitaph-throne {
    display: flex; flex-direction: column; align-items: center; gap: 10px;
    padding: 28px 20px; margin-bottom: 24px; text-align: center;
    background: var(--bg-card); border: 1px solid var(--border); border-radius: var(--radius, 10px);
}
.epitaph-throne-label {
    font-size: 12px; letter-spacing: .3em; color: var(--text-muted); text-indent: .3em;
}
.epitaph-throne-word {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 64px; min-height: 64px; padding: 10px 14px;
    font-family: var(--font-serif); font-size: 34px; font-weight: 700; line-height: 1.1;
    color: #fff8ec; background: var(--accent); border-radius: 4px;
    box-shadow: inset 0 0 0 3px rgba(255, 248, 236, .5), 0 4px 14px rgba(var(--cinnabar-rgb), .32);
    transform: rotate(-2deg);
}
.epitaph-throne-meta { font-size: 13px; color: var(--text-muted); }
.epitaph-throne-vacant .epitaph-throne-word {
    background: transparent; color: var(--text-muted);
    border: 1px dashed var(--border); box-shadow: none; font-size: 24px; transform: none;
}

.epitaph-board {
    background: var(--bg-card); border: 1px solid var(--border);
    border-radius: var(--radius, 10px); padding: 18px;
}
.epitaph-cands { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.epitaph-item {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    padding: 10px 12px; border: 1px solid var(--border); border-radius: 8px;
}
.epitaph-word {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 40px; min-height: 40px; padding: 4px 8px;
    font-family: var(--font-serif); font-size: 18px; font-weight: 700;
    color: var(--text); border: 1px solid var(--border); border-radius: 4px;
}
.epitaph-word.is-reigning {
    color: #fff8ec; background: var(--accent); border-color: var(--accent);
    box-shadow: inset 0 0 0 2px rgba(255, 248, 236, .5);
}
.epitaph-by { font-size: 13px; color: var(--text-muted); flex: 1; min-width: 80px; }
.epitaph-nums { font-size: 13px; color: var(--text-muted); }
.epitaph-nums b { color: var(--text); font-size: 15px; }
.epitaph-votes { display: flex; gap: 6px; align-items: center; }
.epitaph-campaign-btn {
    margin-left: 6px; padding: 6px 12px; cursor: pointer;
    font-family: var(--font-serif); font-size: 13px;
    color: var(--text-muted); background: none;
    border: 1px dashed var(--border); border-radius: 6px;
    transition: color .15s, border-color .15s;
}
.epitaph-campaign-btn:hover { color: var(--accent); border-color: var(--accent); }
.epitaph-campaign-btn:disabled { opacity: .6; cursor: wait; }
.epitaph-form { display: flex; gap: 10px; flex-wrap: wrap; }
.epitaph-form input {
    flex: 1; min-width: 140px; padding: 10px 12px;
    border: 1px solid var(--border); border-radius: 8px;
    background: var(--bg); color: var(--text); font-size: 14px;
}
.epitaph-form input:focus { outline: none; border-color: var(--accent); }
.epitaph-history { margin-top: 16px; font-size: 13px; color: var(--text-muted); }
.epitaph-history summary { cursor: pointer; }
.epitaph-history ul { margin: 8px 0 0; padding-left: 20px; line-height: 1.9; }

/* ---------- 每日名签 ---------- */
.qian-card {
    position: relative; padding: 44px 40px 34px; margin-bottom: 20px;
    color: #e9ddc2;
    background: linear-gradient(180deg, #211a13, #171310 55%, #100d0a);
    border: 1px solid rgba(197,160,89,.4); border-radius: 16px;
    box-shadow: 0 14px 40px rgba(20,14,8,.18);
    text-align: center;
}
.qian-cal { display: flex; flex-direction: column; align-items: center; gap: 8px; margin-bottom: 26px; }
.qian-seal {
    display: inline-flex; align-items: center; justify-content: center;
    width: 46px; height: 46px; border-radius: 6px;
    font-family: var(--font-serif); font-size: 15px; font-weight: 700; line-height: 1.15;
    color: #fdf6e9; background: #b23a2e;
    box-shadow: inset 0 0 0 2px rgba(253,246,233,.35);
    writing-mode: vertical-rl; letter-spacing: .1em;
}
.qian-date { font-family: var(--font-serif); font-size: 30px; font-weight: 700; color: #f5eddc; }
.qian-cal-sub { font-size: 13px; color: #a89c85; letter-spacing: .08em; }
.qian-quote {
    margin: 0 auto 22px; max-width: 640px;
    font-family: var(--font-serif); font-size: clamp(21px, 3.4vw, 30px);
    font-weight: 600; line-height: 1.8; color: #f5eddc;
}
.qian-from { font-size: 15px; color: #c5a059; margin-bottom: 26px; }
.qian-from a { color: #d8b878; text-decoration: none; border-bottom: 1px solid rgba(216,184,120,.4); }
.qian-from a:hover { border-bottom-color: #d8b878; }
.qian-dynasty { font-size: 12.5px; color: #a89c85; margin-left: 6px; }
.qian-actions { display: flex; align-items: center; justify-content: center; gap: 14px; flex-wrap: wrap; }
.qian-streak {
    font-size: 13px; color: #d8b878;
    border: 1px dashed rgba(216,184,120,.5); border-radius: 999px; padding: 6px 14px;
}
.qian-yesterday { margin-bottom: 16px; }
.qian-yesterday summary { cursor: pointer; font-size: 14px; color: var(--text-muted); }
.qian-yesterday-body { padding: 14px 4px 4px; }
.qian-yesterday-quote { font-family: var(--font-serif); font-size: 16px; color: var(--text); margin: 0 0 6px; }
.qian-yesterday-from { font-size: 13px; color: var(--text-muted); margin: 0; }
.qian-yesterday-from a { color: var(--accent); text-decoration: none; }
.qian-note { font-size: 12.5px; color: var(--text-muted); text-align: center; }

/* ---------- 今日纪念 ---------- */
.memorial-card {
    position: relative; padding: 44px 40px 36px; margin-bottom: 28px;
    color: #e9ddc2; text-align: center;
    background: linear-gradient(180deg, #211a13, #171310 55%, #100d0a);
    border: 1px solid rgba(197,160,89,.4); border-radius: 16px;
    box-shadow: 0 14px 40px rgba(20,14,8,.18);
}
.memorial-eyebrow { font-size: 13px; letter-spacing: .2em; color: #c5a059; margin-bottom: 16px; }
.memorial-name-row { display: flex; align-items: center; justify-content: center; gap: 14px; margin-bottom: 8px; }
.memorial-name { font-family: var(--font-serif); font-size: clamp(32px, 6vw, 46px); font-weight: 700; color: #f5eddc; }
.memorial-kind-seal {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 44px; height: 44px; padding: 0 8px; border-radius: 6px;
    font-family: var(--font-serif); font-size: 15px; font-weight: 700;
    color: #fdf6e9; background: #b23a2e;
    box-shadow: inset 0 0 0 2px rgba(253,246,233,.35);
}
.memorial-years { font-family: var(--font-serif); font-size: clamp(44px, 8vw, 64px); font-weight: 700; color: #d8b878; line-height: 1.1; }
.memorial-years-unit { font-size: 18px; font-weight: 500; color: #c5a059; margin-left: 8px; }
.memorial-meta { font-size: 14px; color: #a89c85; margin: 10px 0 14px; }
.memorial-bio { max-width: 560px; margin: 0 auto 24px; font-size: 14px; line-height: 1.9; color: #a89c85; }
.memorial-actions { display: flex; justify-content: center; gap: 12px; flex-wrap: wrap; }
.memorial-list-title { font-family: var(--font-serif); font-size: 20px; margin: 0 0 14px; }
.memorial-table-wrap { overflow-x: auto; border: 1px solid var(--border); border-radius: 10px; }
.memorial-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.memorial-table th, .memorial-table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid var(--border-soft); }
.memorial-table th { font-size: 12.5px; color: var(--text-muted); font-weight: 500; background: var(--bg); }
.memorial-table tr:last-child td { border-bottom: none; }
.memorial-table a { color: var(--accent); text-decoration: none; }
.memorial-table a:hover { text-decoration: underline; }
.memorial-badge { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 12px; }
.memorial-badge-birth { color: #a03d2e; background: rgba(178,58,46,.1); }
.memorial-badge-death { color: var(--text-muted); background: var(--border-soft); }
.memorial-round { margin-left: 6px; font-size: 11.5px; color: var(--gold); border: 1px solid rgba(var(--ochre-rgb), .4); border-radius: 999px; padding: 1px 8px; }

/* ---------- 对比页：关键词检索选人 ---------- */
.cmp-search { position: relative; }
.cmp-input {
    width: 100%; padding: 12px 14px; font-size: 15px;
    border: 1px solid var(--border); border-radius: 10px;
    background: var(--bg); color: var(--text);
}
.cmp-input:focus { outline: none; border-color: var(--accent); }
.cmp-dropdown {
    position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 60;
    max-height: 300px; overflow-y: auto;
    background: var(--bg-elev); border: 1px solid var(--border); border-radius: 10px;
    box-shadow: var(--shadow-lg);
}
.cmp-option { display: flex; align-items: baseline; gap: 8px; width: 100%; padding: 10px 14px; cursor: pointer; border: none; background: none; text-align: left; font-size: 14.5px; color: var(--text); }
.cmp-option .cmp-option-meta { font-size: 12px; color: var(--text-muted); }
.cmp-option:hover, .cmp-option.is-active { background: var(--accent-soft); }
.cmp-option-empty { padding: 12px 14px; font-size: 13px; color: var(--text-muted); }

/* ---------- 意见反馈 ---------- */
.fb-form { max-width: 560px; margin: 0 auto; }
.fb-form .tag-input { width: 100%; }
.fb-row { margin-bottom: 16px; }
.fb-row label { display: block; font-size: 13.5px; color: var(--text-muted); margin-bottom: 6px; }
.fb-textarea { resize: vertical; min-height: 120px; line-height: 1.7; }
.fb-hint { margin-top: 10px; font-size: 12.5px; color: var(--text-muted); }
.fb-flash { max-width: 560px; margin: 0 auto 18px; padding: 12px 16px; border-radius: 8px; font-size: 14px; }
.fb-ok { color: var(--approve); background: rgba(var(--jade-rgb), .08); border: 1px solid rgba(var(--jade-rgb), .25); }
.fb-error { color: var(--accent); background: rgba(var(--cinnabar-rgb), .07); border: 1px solid rgba(var(--cinnabar-rgb), .25); }
