/* 关系户社群 · 独立部署版样式 */
/* 设计系统：纸张底 #F3EFE5 / 墨黑 #1C1913 / 印章红 #C0272D / 琥珀 #B4641F / 墨蓝 #2F6078 */
:root {
  --paper: #F5F2E9;
  --paper-dark: #ECE7D9;
  --ink: #1C1913;
  --ink-soft: #6B6555;
  --seal: #C0272D;
  --amber: #B4641F;
  --blue: #2F6078;
  --line: rgba(28,25,19,0.12);
  --card: #FAF8F1;
  --serif: Georgia, "Songti SC", "SimSun", "Noto Serif SC", serif;
  --sans: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
}
* { margin: 0; padding: 0; box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  line-height: 1.65;
  font-size: 15px;
}
a { color: inherit; text-decoration: none; }
img { max-width: 100%; }
button { font-family: inherit; cursor: pointer; }

/* 顶部极简米白导航（对齐参考图：无深色块，仅细线分隔） */
.mast {
  background: transparent;
  color: var(--ink);
  border-bottom: 1px solid var(--line);
}
.mast-inner {
  max-width: 1180px;
  margin: 0 auto;
  padding: 12px 20px;
  display: flex;
  align-items: center;
  gap: 18px;
}
.mast-brand { display: flex; align-items: center; gap: 10px; cursor: pointer; flex-shrink: 0; }
.mast-logo {
  width: 40px; height: 40px; border-radius: 50%;
  border: 1.5px solid var(--seal);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 700; font-size: 20px; color: var(--seal);
  background: rgba(192,39,45,0.05);
  transform: rotate(-8deg);
}
.mast-title { font-family: var(--serif); font-weight: 700; font-size: 20px; letter-spacing: 2px; color: var(--ink); }
.mast-sub { font-size: 11px; color: var(--ink-soft); letter-spacing: 1px; }
.mast-nav { display: flex; gap: 4px; margin-left: 8px; flex-wrap: wrap; }
.mast-nav a {
  padding: 6px 12px; font-size: 14px; color: var(--ink-soft); border-radius: 4px; border-bottom: 2px solid transparent;
}
.mast-nav a:hover { color: var(--ink); background: rgba(28,25,19,0.04); }
.mast-nav a.active { color: var(--seal); border-bottom-color: var(--seal); }
.mast-actions { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.mast-search-mob { display: none; }
/* 搜索页空态输入 */
.search-page-box { text-align: center; padding: 46px 20px 56px; border: 1px dashed var(--line); border-radius: 14px; background: var(--card); }
.search-page-box .sp-ic { font-size: 34px; }
.hs-tag { display: inline-block; margin: 4px 6px 0 0; padding: 4px 14px; border-radius: 14px; font-size: 13px; color: var(--ink-soft); background: var(--paper-dark); border: 1px solid var(--line); cursor: pointer; transition: all .15s; }
.hs-tag:hover { color: var(--seal); border-color: var(--seal); }
/* 会员档案（个人中心整合） */
.vip-summary { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); gap: 22px; padding: 22px 24px; border: 1px solid rgba(212,168,75,.45); border-radius: 14px; background: linear-gradient(135deg, rgba(212,168,75,.08), rgba(192,39,45,.05)); margin-bottom: 20px; }
.vs-main { display: flex; flex-direction: column; gap: 10px; }
.vs-lv { display: flex; align-items: center; gap: 14px; }
.vs-lv-icon { width: 52px; height: 52px; border-radius: 50%; color: #fff; font-family: var(--serif); font-weight: 800; font-size: 17px; display: inline-flex; align-items: center; justify-content: center; box-shadow: 0 2px 8px rgba(0,0,0,.14); flex-shrink: 0; }
.vs-lv-name { font-family: var(--serif); font-size: 18px; font-weight: 800; }
.vs-premium { display: inline-block; margin-left: 8px; padding: 1px 8px; font-size: 11px; font-weight: 700; color: #fff; background: linear-gradient(135deg, #C9A227, #D4A84B); border-radius: 4px; vertical-align: 2px; }
.vs-lv-sub { font-size: 12.5px; color: var(--ink-soft); margin-top: 2px; }
.vs-exp { display: flex; align-items: baseline; gap: 6px; }
.vs-exp-n { font-family: var(--serif); font-size: 26px; font-weight: 900; color: var(--seal); }
.vs-exp-l { font-size: 12.5px; color: var(--ink-soft); }
.vs-track { height: 10px; border-radius: 5px; background: rgba(28,25,19,.08); overflow: hidden; }
.vs-track-fill { height: 100%; border-radius: 5px; background: linear-gradient(90deg, #C0272D, #D9642B); transition: width .8s; }
.vs-side { display: flex; flex-direction: column; gap: 10px; }
.vs-lev { display: flex; flex-direction: column; gap: 4px; }
.vs-lev-row { display: flex; align-items: center; gap: 8px; font-size: 12.5px; padding: 5px 10px; border-radius: 6px; border: 1px solid transparent; }
.vs-lev-row .vs-lev-n { width: 34px; font-family: var(--serif); font-weight: 800; color: var(--ink-soft); flex-shrink: 0; }
.vs-lev-row .vs-lev-name { width: 52px; font-weight: 700; flex-shrink: 0; }
.vs-lev-row .vs-lev-t { color: var(--ink-soft); font-size: 12px; }
.vs-lev-row.cur { background: rgba(212,168,75,.14); border-color: rgba(212,168,75,.5); }
.vs-lev-row.cur .vs-lev-n, .vs-lev-row.cur .vs-lev-name { color: #A8842A; }
.vs-lev-row.reached .vs-lev-n { color: var(--seal); }
.vs-cta { margin-top: 2px; }
.btn {
  display: inline-flex; align-items: center; gap: 6px;
  border: 1px solid var(--line); background: var(--card); color: var(--ink);
  padding: 8px 16px; border-radius: 6px; font-size: 14px; transition: all .15s;
}
.btn:hover { border-color: var(--ink); }
.btn-primary { background: var(--seal); border-color: var(--seal); color: #fff; }
.btn-primary:hover { background: #a82127; }
.btn-ghost { background: transparent; border-color: var(--line); color: var(--ink); }
.btn-ghost:hover { border-color: var(--ink); }
.btn-sm { padding: 5px 10px; font-size: 13px; }
.btn-amber { background: var(--amber); border-color: var(--amber); color: #fff; }
.btn-blue { background: var(--blue); border-color: var(--blue); color: #fff; }
.btn-block { width: 100%; justify-content: center; }

/* 布局 */
.wrap { max-width: 1180px; margin: 0 auto; padding: 24px 20px 60px; }
.grid-2 { display: grid; grid-template-columns: minmax(0,1fr) 340px; gap: 28px; align-items: start; }
.card {
  background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 20px;
}
.card + .card { margin-top: 16px; }
.seal-row { display: flex; align-items: center; gap: 12px; margin-bottom: 12px; }
.seal-badge {
  width: 34px; height: 34px; border-radius: 50%;
  border: 2px solid var(--seal); color: var(--seal);
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--serif); font-weight: 700; font-size: 16px; flex-shrink: 0;
  background: rgba(192,39,45,0.05);
}
.eyebrow { font-size: 12px; letter-spacing: 3px; color: var(--seal); font-weight: 700; text-transform: uppercase; }
h1.page-title { font-family: var(--serif); font-size: 30px; line-height: 1.3; margin: 6px 0 4px; }
.page-desc { color: var(--ink-soft); font-size: 14px; max-width: 640px; }
.section-title { font-family: var(--serif); font-size: 21px; margin-bottom: 14px; display: flex; align-items: center; gap: 10px; }

/* ============ 首页 Hero（第一版原型：浅色卡片·左文右图） ============ */
.hero {
  border: 1px solid var(--line); border-radius: 18px; overflow: hidden; background: var(--card);
  box-shadow: 0 1px 1px rgba(28,25,19,.04);
  position: relative; margin-bottom: 10px;
}
.hero .inner { display: grid; grid-template-columns: 1.05fr .95fr; min-height: 340px; }
.hero-copy { padding: 44px 46px; display: flex; flex-direction: column; justify-content: center; gap: 16px; }
.hero .overline { color: var(--seal); }
.hero h1 { font-family: var(--serif); font-weight: 900; font-size: 40px; line-height: 1.22; letter-spacing: .5px; color: var(--ink); margin: 0; }
.hero h1 .hl { color: var(--seal); }
.hero p.lead { color: var(--ink-soft); font-size: 15.5px; max-width: 480px; margin: 0; }
.hero-cta { display: flex; gap: 12px; flex-wrap: wrap; margin-top: 6px; }
.hero-cta .btn { padding: 11px 20px; border-radius: 9px; font-weight: 700; font-size: 14.5px; }
.hero-cta .btn.btn-red { background: var(--seal); border-color: var(--seal); color: #fff; }
.hero-cta .btn.btn-red:hover { background: #a82127; transform: translateY(-1px); }
.hero-cta .btn.btn-ghost { background: transparent; border: 1.5px solid var(--line); color: var(--ink-soft); }
.hero-cta .btn.btn-ghost:hover { border-color: var(--ink); color: var(--ink); }
.hero-stats { display: flex; gap: 28px; margin-top: 8px; flex-wrap: wrap; }
.hero-stats .num { font-family: var(--serif); font-weight: 900; font-size: 24px; color: var(--ink); }
.hero-stats .lab { font-size: 12px; color: var(--ink-soft); }
/* ===== 首页图表（后台可配置：环形 / 柱状） ===== */
.home-chart { margin-top: 10px; max-width: 520px; }
.chart-title { display: flex; align-items: center; gap: 8px; font-family: var(--serif); font-weight: 700; font-size: 14.5px; color: var(--ink); margin-bottom: 12px; }
.chart-rule { width: 4px; height: 15px; background: var(--seal); border-radius: 2px; display: inline-block; }
.chart-note { font-size: 11px; font-weight: 400; color: var(--ink-soft); letter-spacing: .05em; }
.chart-ring { display: flex; align-items: center; gap: 22px; flex-wrap: wrap; }
.ring-svg { width: 120px; height: 120px; flex: 0 0 auto; }
.ring-center { position: relative; }
.ring-center b { display: block; font-family: var(--serif); font-size: 22px; color: var(--ink); text-align: center; }
.ring-center span { display: block; font-size: 11px; color: var(--ink-soft); text-align: center; margin-top: 2px; }
.ring-legend { display: flex; flex-direction: column; gap: 7px; flex: 1; min-width: 150px; }
.rl-item { display: flex; align-items: center; gap: 7px; font-size: 12.5px; }
.rl-item i { width: 10px; height: 10px; border-radius: 3px; display: inline-block; flex: 0 0 auto; }
.rl-item em { font-style: normal; color: var(--ink-soft); flex: 1; }
.rl-item b { font-weight: 700; color: var(--ink); font-family: var(--serif); }
.chart-bar { display: flex; flex-direction: column; gap: 10px; }
.cb-item { display: grid; grid-template-columns: 130px 1fr; align-items: center; gap: 12px; }
.cb-info { display: flex; align-items: baseline; gap: 8px; justify-content: space-between; font-size: 12.5px; }
.cb-info span { color: var(--ink-soft); }
.cb-info b { font-family: var(--serif); font-weight: 700; color: var(--ink); }
.cb-track { height: 10px; background: rgba(0, 0, 0, .06); border-radius: 6px; overflow: hidden; }
.cb-fill { height: 100%; border-radius: 6px; min-width: 2px; transition: width .5s ease; }
.hero-img { position: relative; min-height: 300px; background: var(--paper-dark); }
.hero-img img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.hero-tag {
  position: absolute; left: 16px; bottom: 16px; background: var(--ink); color: #E8E1CF;
  padding: 8px 14px; border-radius: 8px; font-size: 12.5px; letter-spacing: .1em; border-left: 3px solid var(--seal);
}
/* 圆形公章（第二版：传统中国公章·双层圆框+环绕文字+五角星，白底衬更醒目） */
.hero-seal {
  position: absolute; top: 14px; right: 14px;
  width: 205px; height: 205px;
  transform: rotate(-10deg);
  z-index: 3;
  background: rgba(253,251,246,.45);
  border-radius: 50%;
  box-shadow: 0 2px 10px rgba(192,39,45,.28);
  filter: drop-shadow(0 2px 6px rgba(192,39,45,.25));
  opacity: 1;
  padding: 6px;
}
.hero-seal svg { width: 100%; height: 100%; display: block; }
.hero-seal:hover { opacity: 1; transform: rotate(-10deg) scale(1.05); transition: .2s; }

/* ============ 区块标题 ============ */
.sec-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 40px 0 18px; flex-wrap: wrap; }
.sec-head .sh-l { display: flex; flex-direction: column; gap: 6px; }
.sec-head .sh-t { display: flex; align-items: center; gap: 12px; }
.sec-head h2 { font-family: var(--serif); font-weight: 900; font-size: 26px; margin: 0; }
.sec-head .rule { height: 3px; width: 44px; background: var(--seal); flex-shrink: 0; }
.sec-head .sub { color: var(--ink-soft); font-size: 13.5px; }
.link-more { display: inline-flex; align-items: center; gap: 5px; color: var(--seal); font-weight: 700; font-size: 13.5px; transition: gap .18s; }
.link-more:hover { gap: 8px; }
.stamp {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--serif); font-weight: 700; font-size: 12px; letter-spacing: .12em;
  padding: 3px 9px; border: 1.6px solid currentColor; border-radius: 4px;
  transform: rotate(-2deg); transform-origin: center; line-height: 1.4; flex-shrink: 0;
}

/* ============ 三大板块（第一版原型：带插画大卡片） ============ */
.pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.pillar {
  border: 1px solid var(--line); border-radius: 14px; overflow: hidden; background: var(--card);
  box-shadow: 0 1px 2px rgba(28,25,19,.06), 0 10px 28px -14px rgba(28,25,19,.18);
  transition: .22s; position: relative; display: flex; flex-direction: column; cursor: pointer;
}
.pillar:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -18px rgba(28,25,19,.35); }
.pillar .pimg { height: 132px; overflow: hidden; position: relative; }
.pillar .pimg img { width: 100%; height: 100%; object-fit: cover; }
.pillar .pbody { padding: 16px 18px 18px; display: flex; flex-direction: column; gap: 8px; flex: 1; }
.pillar .ptitle { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.pillar .pcount { font-size: 12px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 60%; }
.pillar .pbody h3 { font-family: var(--serif); font-weight: 700; font-size: 20px; line-height: 1.35; margin: 0; }
.pillar .pbody p { font-size: 13.5px; color: var(--ink-soft); line-height: 1.6; margin: 0; }
.pillar .pfoot { margin-top: auto; padding-top: 10px; display: flex; justify-content: space-between; align-items: center; }
.pillar .tag.cat { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 5px; font-size: 12px; border: 1px solid currentColor; background: transparent; font-weight: 700; color: var(--c, var(--seal)); }
.pillar.t-guide { --c: var(--seal); }
.pillar.t-vent { --c: var(--amber); }
.pillar.t-observe { --c: var(--blue); }

/* 公告 */
.announce { background: #FBF7F0; color: var(--ink); border: 1px solid rgba(192,39,45,.22); border-left: 3px solid var(--seal); border-radius: 8px; padding: 10px 18px; font-size: 14px; margin-bottom: 20px; display: flex; gap: 8px; align-items: center; }
.announce b { font-family: var(--serif); color: var(--seal); }

/* 帖子列表 */
.filter-bar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; align-items: center; }
.chip {
  padding: 6px 14px; border-radius: 20px; border: 1px solid var(--line); font-size: 13px; background: var(--card); color: var(--ink-soft);
}
.chip:hover { border-color: var(--ink); }
.chip.active { background: var(--ink); color: #fff; border-color: var(--ink); }
.chip.seal.active { background: var(--seal); border-color: var(--seal); }
.chip.amber.active { background: var(--amber); border-color: var(--amber); }
.chip.blue.active { background: var(--blue); border-color: var(--blue); }

.post-item {
  padding: 18px 20px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); cursor: pointer;
  transition: border-color .15s, transform .15s; margin-bottom: 12px;
}
.post-item:hover { border-color: var(--ink); transform: translateX(2px); }
.post-meta { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--ink-soft); margin-bottom: 8px; flex-wrap: wrap; }
.cat-tag { font-size: 11px; padding: 2px 8px; border-radius: 3px; color: #fff; font-weight: 600; letter-spacing: 1px; }
.cat-guide { background: var(--seal); }
.cat-vent { background: var(--amber); }
.cat-observe { background: var(--blue); }
.post-code { font-family: var(--serif); color: var(--ink-soft); letter-spacing: 1px; }
.post-title { font-family: var(--serif); font-size: 18px; font-weight: 700; line-height: 1.4; margin-bottom: 6px; }
.post-excerpt { font-size: 14px; color: var(--ink-soft); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.post-foot { display: flex; gap: 16px; font-size: 12px; color: var(--ink-soft); margin-top: 10px; }

/* 侧栏 */
.side-block { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 18px; margin-bottom: 16px; }
.side-block h3 { font-family: var(--serif); font-size: 16px; margin-bottom: 12px; padding-bottom: 8px; border-bottom: 2px solid var(--seal); display: flex; align-items: center; gap: 8px; }
.hot-list { list-style: none; counter-reset: hot; }
.hot-list li { counter-increment: hot; display: flex; gap: 10px; align-items: flex-start; padding: 8px 0; border-bottom: 1px dashed var(--line); cursor: pointer; }
.hot-list li:last-child { border-bottom: none; }
.hot-list li::before { content: counter(hot); font-family: var(--serif); font-weight: 700; color: var(--seal); font-size: 16px; min-width: 20px; }
.hot-list li:nth-child(n+4)::before { color: var(--ink-soft); }
.hot-list .t { font-size: 13px; line-height: 1.4; }
.hot-list .c { font-size: 11px; color: var(--ink-soft); }

/* 话题 */
.topic-cloud { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.topic-tag { padding: 5px 12px; border-radius: 20px; font-size: 13px; border: 1px solid var(--line); background: var(--card); cursor: pointer; transition: all .15s; }
.topic-tag:hover { border-color: var(--ink); transform: scale(1.03); }
.topic-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.topic-card { border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; background: var(--card); display: flex; align-items: center; gap: 12px; }
.topic-dot { width: 12px; height: 12px; border-radius: 50%; flex-shrink: 0; }
.topic-name { font-size: 14px; font-weight: 600; }
.topic-heat { font-size: 12px; color: var(--ink-soft); }

/* 帖子详情 */
.post-detail-title { font-family: var(--serif); font-size: 26px; line-height: 1.4; margin: 12px 0; }
.post-detail-meta { display: flex; gap: 16px; font-size: 13px; color: var(--ink-soft); margin-bottom: 20px; padding-bottom: 16px; border-bottom: 1px solid var(--line); }
.post-detail-content { font-size: 15.5px; line-height: 1.9; white-space: pre-wrap; }
.post-actions { display: flex; gap: 12px; margin: 22px 0; }
.like-btn.liked { background: var(--seal); border-color: var(--seal); color: #fff; }

/* 评论 */
.comment-box { border: 1px solid var(--line); border-radius: 10px; padding: 16px; background: var(--card); margin-bottom: 20px; }
.comment-list { display: flex; flex-direction: column; gap: 12px; }
.comment-item { border: 1px solid var(--line); border-radius: 8px; padding: 12px 16px; background: var(--card); }
.comment-item.reply { margin-left: 36px; border-style: dashed; }
.comment-head { display: flex; gap: 10px; font-size: 12px; color: var(--ink-soft); margin-bottom: 6px; align-items: center; }
.comment-head b { color: var(--ink); font-size: 13px; }
.comment-body { font-size: 14px; }

/* 表单 */
.form-card { max-width: 460px; margin: 40px auto; }
.field { margin-bottom: 16px; }
.field label { display: block; font-size: 13px; margin-bottom: 6px; color: var(--ink-soft); font-weight: 600; }
.input, textarea.input, select.input {
  width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px;
  font-size: 14px; background: #fff; color: var(--ink); font-family: inherit;
}
.input:focus { outline: none; border-color: var(--seal); box-shadow: 0 0 0 2px rgba(192,39,45,0.12); }
textarea.input { min-height: 120px; resize: vertical; }
.input.error { border-color: var(--seal); }
.field-error { color: var(--seal); font-size: 12px; margin-top: 4px; }
.form-switch { text-align: center; font-size: 13px; color: var(--ink-soft); margin-top: 14px; }
.form-switch a { color: var(--seal); font-weight: 600; }

/* 个人中心 */
.profile-head { display: flex; gap: 20px; align-items: center; padding: 24px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; margin-bottom: 20px; }
.avatar { width: 72px; height: 72px; border-radius: 50%; background: var(--ink); color: #F3EFE5; display: flex; align-items: center; justify-content: center; font-family: var(--serif); font-size: 30px; font-weight: 700; flex-shrink: 0; }
.profile-name { font-family: var(--serif); font-size: 22px; font-weight: 700; }
.profile-sub { color: var(--ink-soft); font-size: 13px; margin-top: 4px; }

/* 树洞安全区 */
.vent-safe { background: linear-gradient(135deg, #5A3A1A, #7A4A20); color: #FBF3E4; border-radius: 12px; padding: 22px 24px; margin-bottom: 20px; display: flex; align-items: center; gap: 16px; }
.vent-safe .pulse { width: 10px; height: 10px; border-radius: 50%; background: #7FE0A0; animation: pulse 1.6s infinite; flex-shrink: 0; }
@keyframes pulse { 0%,100% { opacity: 1; box-shadow: 0 0 0 0 rgba(127,224,160,0.6);} 50% { opacity: .6; box-shadow: 0 0 0 8px rgba(127,224,160,0);} }

/* 后台 */
.admin-body { background: #23201B; }
.admin-shell { display: grid; grid-template-columns: 220px 1fr; min-height: 100vh; }
.admin-side { background: #1C1913; color: #D8CFBC; padding: 20px 0; }
.admin-side .brand { padding: 0 20px 18px; border-bottom: 1px solid rgba(255,255,255,0.08); display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.admin-side a { display: block; padding: 10px 20px; font-size: 14px; color: #B9B09D; }
.admin-side a:hover, .admin-side a.active { color: #fff; background: rgba(192,39,45,0.16); border-left: 3px solid var(--seal); }
.admin-main { padding: 24px 28px; }
.admin-card { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 20px; margin-bottom: 16px; }
.stat-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 20px; }
.stat-cell { background: var(--card); border: 1px solid var(--line); border-radius: 10px; padding: 18px; }
.stat-cell b { font-family: var(--serif); font-size: 28px; display: block; color: var(--seal); }
.stat-cell span { font-size: 13px; color: var(--ink-soft); }
.admin-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.admin-table th, .admin-table td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.admin-table th { color: var(--ink-soft); font-size: 12px; }

/* 页脚 */
.site-footer { background: var(--paper-dark); border-top: 3px solid var(--seal); margin-top: 40px; }
.footer-inner { max-width: 1180px; margin: 0 auto; padding: 32px 20px; }
/* 热门话题标签云 */
.footer-topics { display: flex; align-items: flex-start; gap: 16px; padding-bottom: 22px; margin-bottom: 24px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.footer-topics .ft-label { font-family: var(--serif); font-weight: 700; font-size: 14px; color: var(--ink); white-space: nowrap; padding-top: 4px; }
.footer-topics .ft-tags { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; }
.footer-topics .ft-tag { display: inline-block; padding: 5px 12px; border-radius: 6px; background: var(--card); border: 1px solid var(--line); font-size: 12.5px; color: var(--ink-soft); text-decoration: none; transition: .15s; }
/* 友情链接区 */
.footer-links { display: flex; align-items: flex-start; gap: 16px; padding-bottom: 22px; margin-bottom: 24px; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
.footer-links .ft-label { font-family: var(--serif); font-weight: 700; font-size: 14px; color: var(--ink); white-space: nowrap; padding-top: 4px; }
.footer-links .ft-links { display: flex; flex-wrap: wrap; gap: 8px; flex: 1; }
.footer-links .ft-link { display: inline-block; padding: 5px 12px; border-radius: 6px; background: var(--card); border: 1px solid var(--line); font-size: 12.5px; color: var(--ink-soft); text-decoration: none; transition: .15s; }
.footer-links .ft-link:hover { color: var(--seal); border-color: var(--seal); }
.footer-topics .ft-tag:hover { color: var(--seal); border-color: var(--seal); background: rgba(192,39,45,.05); }
/* 页脚网格 */
.footer-grid { display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 28px; }
.footer-brand { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.footer-desc { font-size: 13px; color: var(--ink-soft); line-height: 1.8; margin-bottom: 14px; }
/* 社交媒体 */
.footer-social { display: flex; gap: 8px; margin-bottom: 14px; }
.footer-social .fs-item { width: 34px; height: 34px; border-radius: 50%; background: var(--card); border: 1px solid var(--line); display: inline-flex; align-items: center; justify-content: center; text-decoration: none; transition: .15s; font-family: var(--serif); font-size: 13px; color: var(--ink-soft); }
.footer-social .fs-svg { width: 18px; height: 18px; display: block; }
.footer-social .fs-item:hover { background: #fff; border-color: var(--seal); box-shadow: 0 2px 8px rgba(192, 39, 45, .18); transform: translateY(-1px); }
/* 联系方式 */
.footer-contact { font-size: 12.5px; color: var(--ink-soft); line-height: 2; }
.footer-col h4 { font-size: 13px; margin-bottom: 12px; letter-spacing: 1px; font-family: var(--serif); font-weight: 700; color: var(--ink); }
.footer-col a { display: block; font-size: 13px; color: var(--ink-soft); padding: 4px 0; text-decoration: none; transition: .15s; }
.footer-col a:hover { color: var(--seal); padding-left: 4px; }
.footer-rules { margin-top: 24px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 12px; color: var(--ink-soft); line-height: 1.8; }
.footer-copy { text-align: center; font-size: 12px; color: var(--ink-soft); padding: 14px 20px; border-top: 1px solid var(--line); display: flex; align-items: center; justify-content: center; gap: 10px; flex-wrap: wrap; }
.footer-copy a { color: var(--ink-soft); text-decoration: none; }
.footer-copy a:hover { color: var(--seal); }
.footer-copy .footer-divider { color: var(--line); }

/* 首页信息流两栏布局（桌面端两栏，移动端单列） */
.feed-grid { display: grid; grid-template-columns: 1fr 320px; gap: 22px; align-items: start; }

/* ================================================================
   底部导航 · 第三版标准移动端 Tab Bar
   ================================================================ */
.bottom-nav {
  display: none;
  position: fixed; bottom: 0; left: 0; right: 0;
  background: var(--ink);
  border-top: 2px solid var(--seal);
  z-index: 50;
  padding: 6px 0 calc(6px + env(safe-area-inset-bottom, 0px));
  box-shadow: 0 -2px 12px rgba(0,0,0,.15);
}
.bottom-nav a {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 3px;
  padding: 6px 2px;
  font-size: 11px;
  color: #8C8473;
  text-decoration: none;
  transition: color .15s;
  line-height: 1;
}
.bottom-nav a .bn-ic {
  font-size: 20px;
  line-height: 1;
  display: block;
}
.bottom-nav a.active {
  color: #fff;
}
.bottom-nav a.active .bn-ic {
  color: var(--seal);
  transform: translateY(-1px);
}
.bottom-nav a:active {
  opacity: .7;
}
/* 中间突出发布按钮 */
.bottom-nav a.bn-center {
  position: relative;
  padding-top: 0;
}
.bottom-nav a.bn-center .bn-plus {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--seal);
  color: #fff;
  font-size: 24px;
  font-weight: 700;
  display: flex;
  align-items: center;
  justify-content: center;
  margin-top: -22px;
  box-shadow: 0 4px 12px rgba(192,39,45,.45);
  border: 3px solid var(--ink);
  line-height: 1;
  transition: transform .15s;
}
.bottom-nav a.bn-center span:last-child {
  font-size: 10px;
  margin-top: 2px;
  color: #B9B09D;
}
.bottom-nav a.bn-center:active .bn-plus {
  transform: scale(.92);
}
.bottom-nav a.bn-center:hover .bn-plus {
  background: #A81F24;
}

/* Toast */
.toast-wrap { position: fixed; top: 18px; left: 50%; transform: translateX(-50%); z-index: 99; display: flex; flex-direction: column; gap: 8px; align-items: center; }
.toast { background: var(--ink); color: #fff; padding: 10px 20px; border-radius: 8px; font-size: 14px; box-shadow: 0 6px 20px rgba(0,0,0,0.25); animation: toastIn .2s; }
.toast.err { background: var(--seal); }
.toast.ok { background: #2E7D32; }
@keyframes toastIn { from { opacity: 0; transform: translateY(-8px);} to { opacity: 1; transform: translateY(0);} }

/* 空态 / 加载 */
.empty { text-align: center; color: var(--ink-soft); padding: 40px 0; font-size: 14px; }
.loading { text-align: center; color: var(--ink-soft); padding: 40px 0; }
.spinner { display: inline-block; width: 22px; height: 22px; border: 3px solid var(--line); border-top-color: var(--seal); border-radius: 50%; animation: spin .8s linear infinite; }
@keyframes spin { to { transform: rotate(360deg); } }

/* 静态内容页（关于/守则/协议/FAQ 等） */
.page-doc { max-width: 780px; margin: 0 auto; padding: 36px 20px 48px; }
.pd-head { border-bottom: 2px solid var(--seal); padding-bottom: 18px; margin-bottom: 26px; }
.pd-kicker { font-size: 11px; letter-spacing: 2px; color: var(--seal); font-family: var(--serif); margin-bottom: 8px; }
.pd-title { font-family: var(--serif); font-size: 30px; color: var(--ink); margin: 0 0 8px; line-height: 1.25; }
.pd-sub { color: var(--ink-soft); font-size: 14px; }
.pd-body { color: var(--ink); font-size: 14.5px; line-height: 1.9; }
.pd-sec { margin-bottom: 26px; }
.pd-sec h2 { font-family: var(--serif); font-size: 18px; color: var(--seal); margin: 0 0 10px; padding-left: 10px; border-left: 3px solid var(--seal); line-height: 1.3; }
.pd-sec p { margin: 0 0 10px; }
.pd-ul { margin: 0 0 10px; padding-left: 20px; }
.pd-ul li { margin-bottom: 6px; }
.pd-back { margin-top: 30px; padding-top: 16px; border-top: 1px dashed var(--line); }
.pd-back a { color: var(--seal); text-decoration: none; font-size: 14px; }
.pd-back a:hover { text-decoration: underline; }
.fd-form { max-width: 560px; }
.fd-form .field { margin-bottom: 16px; }
.fd-form label { display: block; font-size: 13px; color: var(--ink-soft); margin-bottom: 6px; }
.fd-form .input { width: 100%; box-sizing: border-box; }
.fd-form textarea.input { resize: vertical; min-height: 110px; }

/* 搜索框 */
.searchbar { display: flex; gap: 8px; margin-bottom: 20px; }
.searchbar .input { flex: 1; }

/* ================================================================
   第一版原型设计体系（V1 装修层）
   覆盖：指南/树洞/观察板块页头、帖子卡片、话题、帖子详情、发布、我的
   ================================================================ */

/* 顶部极简细条（对齐参考图：米白底细线，无深色块） */
.mast-docbar { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 6px 20px; background: transparent; color: var(--ink-soft); font-size: 11.5px; letter-spacing: 1px; border-bottom: 1px solid var(--line); overflow: hidden; white-space: nowrap; }
.mast-docbar .mast-brand-bar { color: var(--seal); font-weight: 700; letter-spacing: .16em; }
.mast-docbar .mast-mid-bar { color: var(--ink-soft); }
.mast-docbar .mast-right-bar { display: flex; align-items: center; gap: 6px; }
.mast-docbar .mast-dot { width: 6px; height: 6px; border-radius: 50%; background: var(--seal); animation: pulse 2s infinite; }
@keyframes pulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }
.mast-logo-seal { width: 38px; height: 38px; flex-shrink: 0; }
.mast-logo-img { width: 100%; height: 100%; display: block; }
.footer-logo { overflow: hidden; padding: 0; }
.footer-logo-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
.mast-avatar { width: 34px; height: 34px; border-radius: 50%; background: var(--seal); color: #fff; display: inline-flex; align-items: center; justify-content: center; font-weight: 700; font-size: 15px; font-family: var(--serif); cursor: pointer; border: 1px solid rgba(192,39,45,.35); overflow: hidden; }
.mast-avatar-img { width: 100%; height: 100%; object-fit: cover; border-radius: 50%; display: block; }
.mast-logout { background: none; border: 1px solid var(--line); color: var(--ink-soft); border-radius: 6px; padding: 5px 12px; font-size: 12.5px; cursor: pointer; }
.mast-logout:hover { color: var(--ink); border-color: var(--ink); }

/* 版块页头 plate-head */
.plate-head { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06), 0 10px 28px -14px rgba(28,25,19,.18); padding: 30px 34px; position: relative; overflow: hidden; margin-bottom: 20px; }
.plate-head::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 6px; background: var(--pc, var(--seal)); }
.plate-head .pg { font-size: 12px; letter-spacing: .26em; font-weight: 700; color: var(--pc, var(--seal)); }
.plate-head h1 { font-family: var(--serif); font-weight: 900; font-size: 32px; margin: 8px 0 10px; }
.plate-head .intro { color: var(--ink-soft); max-width: 720px; font-size: 15px; line-height: 1.7; }
.plate-head .chips { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 18px; }
.chip-v1 { display: inline-flex; align-items: center; gap: 6px; padding: 6px 13px; border-radius: 99px; border: 1.5px solid var(--line); font-size: 13px; color: var(--ink-soft); background: var(--paper-dark); transition: .18s; }
.chip-v1 b { font-family: var(--serif); font-size: 15px; color: var(--ink); }

/* 指南章节卡 */
.chapters { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin: 6px 0 22px; }
.chapt { border: 1px solid var(--line); border-radius: 12px; background: var(--card); padding: 16px 18px; box-shadow: 0 1px 2px rgba(28,25,19,.06); position: relative; overflow: hidden; }
.chapt::after { content: ""; position: absolute; right: -22px; top: -22px; width: 60px; height: 60px; border-radius: 50%; background: rgba(192,39,45,.06); }
.chapt .cn { font-family: var(--serif); font-weight: 900; font-size: 26px; color: var(--seal); }
.chapt .ct { font-family: var(--serif); font-weight: 700; font-size: 15px; margin: 4px 0 3px; }
.chapt .cd { font-size: 12.5px; color: var(--ink-soft); }
.chapt .cc { margin-top: 10px; font-size: 11.5px; color: var(--ink-soft); letter-spacing: .05em; }
.manual-note { margin: 0 0 22px; padding: 16px 20px; border-radius: 11px; background: var(--ink); color: #E6DFCC; display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.manual-note .mn-l { display: flex; align-items: center; gap: 12px; flex: 1; min-width: 240px; }
.manual-note .mn-t { font-family: var(--serif); font-size: 15px; font-weight: 700; }
.manual-note .mn-s { font-size: 12.5px; color: #B9B09A; }
.manual-note .mn-tag { font-size: 11px; border: 1px solid #6E6756; color: #C9C1AC; padding: 3px 8px; border-radius: 4px; letter-spacing: .12em; }

/* 树洞安全区 */
.safe-banner { margin: 0 0 22px; border-radius: 12px; padding: 16px 20px; background: rgba(180,100,31,.08); border: 1px solid rgba(180,100,31,.35); display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.safe-banner .sb-ic { color: var(--amber); font-size: 22px; }
.safe-banner .sb-t { font-weight: 700; font-size: 14.5px; color: var(--ink); }
.safe-banner .sb-s { font-size: 13px; color: var(--ink-soft); }
.vent-note { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--amber); font-weight: 600; }
@keyframes breathe { 0%,100% { opacity: .55; } 50% { opacity: 1; } }
.breathe { animation: breathe 2.4s infinite; }
.vent-line { display: flex; gap: 14px; margin: 18px 0; color: var(--ink-soft); font-size: 13px; align-items: center; text-align: center; }
.vent-line::before, .vent-line::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* 观察数据卡 + 特色文 */
.data-card { border: 1px solid var(--line); border-radius: 13px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 22px 24px; margin-bottom: 20px; }
.data-card .dc-t { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 6px; flex-wrap: wrap; }
.data-card .dc-t h3 { font-family: var(--serif); font-weight: 700; font-size: 17px; }
.data-card .note { font-size: 11.5px; color: var(--ink-soft); letter-spacing: .04em; }
.bars { display: flex; flex-direction: column; gap: 13px; margin-top: 16px; }
.bar-row { display: grid; grid-template-columns: 190px 1fr 44px; gap: 12px; align-items: center; font-size: 13px; }
.bar-row .bl { color: var(--ink-soft); text-align: right; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bar-track { display: block; height: 14px; border-radius: 7px; background: var(--paper-dark); overflow: hidden; }
.bar-fill { display: block; height: 100%; border-radius: 7px; background: var(--blue); width: 0; transition: width .9s cubic-bezier(.2,.7,.2,1); }
.bar-row:nth-child(1) .bar-fill { background: var(--seal); }
.bar-row:nth-child(2) .bar-fill { background: var(--amber); }
.bar-row .bv { font-family: var(--serif); font-weight: 700; color: var(--ink); }
.keywords { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 16px; }
.kw { border: 1px solid var(--line); border-radius: 99px; padding: 7px 15px; font-size: 13px; background: var(--paper-dark); }
.kw b { color: var(--blue); font-family: var(--serif); }
.feature-doc { border: 1px solid var(--line); border-radius: 14px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); overflow: hidden; display: grid; grid-template-columns: 1fr 1fr; margin-bottom: 22px; cursor: pointer; }
.feature-doc .f-img { min-height: 240px; position: relative; }
.feature-doc .f-img img { width: 100%; height: 100%; object-fit: cover; position: absolute; inset: 0; }
.feature-doc .f-body { padding: 28px 30px; display: flex; flex-direction: column; gap: 12px; justify-content: center; }
.feature-doc .f-body h3 { font-family: var(--serif); font-weight: 900; font-size: 23px; line-height: 1.35; color: var(--ink); }
.feature-doc .f-body .ex { color: var(--ink-soft); font-size: 14.5px; line-height: 1.7; }

/* 帖子卡片 doc */
.doclist { display: flex; flex-direction: column; gap: 16px; }
.doc { border: 1px solid var(--line); border-radius: 13px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 20px 22px; cursor: pointer; transition: .18s; position: relative; }
.doc:hover { border-color: #C8BFA8; box-shadow: 0 14px 30px -16px rgba(28,25,19,.25); transform: translateY(-2px); }
.doc .doc-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.doc .doc-no { font-size: 12px; color: var(--ink-soft); font-family: var(--serif); letter-spacing: .05em; }
.doc .pin { font-size: 11px; color: var(--seal); border: 1px solid var(--seal); padding: 2px 7px; border-radius: 4px; letter-spacing: .1em; }
.doc h3 { font-family: var(--serif); font-weight: 700; font-size: 19px; line-height: 1.4; margin-bottom: 8px; color: var(--ink); }
.doc h3:hover { color: var(--seal); }
.doc .ex { color: var(--ink-soft); font-size: 14px; margin-bottom: 12px; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.doc .tags { display: flex; gap: 7px; flex-wrap: wrap; margin-bottom: 14px; }
.tag-v1 { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 5px; font-size: 12px; color: var(--ink-soft); background: var(--paper-dark); border: 1px solid var(--line); }
.tag-v1.cat { border: 1px solid currentColor; background: transparent; font-weight: 700; color: var(--c, var(--seal)); }
.doc .doc-foot { display: flex; align-items: center; gap: 14px; color: var(--ink-soft); font-size: 12.5px; flex-wrap: wrap; }
.doc .who { display: flex; align-items: center; gap: 7px; min-width: 0; color: var(--ink-soft); }
.mini-av { width: 24px; height: 24px; border-radius: 50%; display: inline-flex; align-items: center; justify-content: center; font-size: 11px; color: #fff; flex-shrink: 0; font-family: var(--serif); }
.doc .acts { margin-left: auto; display: flex; gap: 4px; align-items: center; }
.act-v1 { display: inline-flex; align-items: center; gap: 5px; padding: 6px 9px; border-radius: 7px; font-size: 13px; color: var(--ink-soft); transition: .15s; }
.act-v1:hover { color: var(--seal); background: rgba(192,39,45,.07); }
.t-guide { --c: var(--seal); }
.t-vent { --c: var(--amber); }
.t-observe { --c: var(--blue); }
.doc.t-vent .tag-v1.cat { color: var(--amber); }
.doc.t-observe .tag-v1.cat { color: var(--blue); }
.doc.t-guide .tag-v1.cat { color: var(--seal); }

/* 侧栏 */
.side-v1 { display: flex; flex-direction: column; gap: 18px; position: sticky; top: 84px; }
.side-card { border: 1px solid var(--line); border-radius: 13px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 18px 20px; margin-bottom: 0; }
.side-card .sc-t { font-family: var(--serif); font-weight: 700; font-size: 16px; display: flex; align-items: center; gap: 8px; margin-bottom: 14px; color: var(--ink); }
.side-card .sc-t svg { color: var(--seal); }
.hotlist { list-style: none; counter-reset: hot; padding: 0; margin: 0; }
.hotlist li { counter-increment: hot; display: flex; gap: 12px; align-items: flex-start; padding: 9px 0; border-bottom: 1px dashed var(--line); cursor: pointer; }
.hotlist li:last-child { border-bottom: none; }
.hotlist li:hover .ht { color: var(--seal); }
.hotlist .idx { font-family: var(--serif); font-weight: 900; font-size: 18px; color: #C7BEA9; min-width: 20px; line-height: 1.2; }
.hotlist li:nth-child(-n+3) .idx { color: var(--seal); }
.hotlist .ht { font-size: 13.5px; color: var(--ink-soft); line-height: 1.45; font-weight: 500; }
.hotlist .hm { font-size: 11.5px; color: var(--ink-soft); margin-top: 2px; display: flex; gap: 10px; }
.stat-mini { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.stat-mini .sm { border: 1px solid var(--line); border-radius: 9px; padding: 11px 13px; background: var(--paper-dark); }
.stat-mini .sm .n { font-family: var(--serif); font-weight: 900; font-size: 20px; color: var(--ink); }
.stat-mini .sm .l { font-size: 12px; color: var(--ink-soft); }
.stat-mini .sm.red .n { color: var(--seal); }
.stat-mini .sm.blue .n { color: var(--blue); }
.stat-mini .sm.amber .n { color: var(--amber); }
.topic-cloud-v1 { display: flex; flex-wrap: wrap; gap: 8px; }
.topic-cloud-v1 .tag-v1 { font-size: 13px; padding: 6px 12px; cursor: pointer; }
.topic-cloud-v1 .tag-v1:hover { border-color: var(--ink); color: var(--ink); }
.topic-cloud-v1 .tag-v1.hot { font-weight: 700; color: var(--seal); border-color: var(--seal); }

/* 帖子详情 article */
.post-layout { display: grid; grid-template-columns: 1fr 300px; gap: 22px; align-items: start; }
.article { border: 1px solid var(--line); border-radius: 14px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 34px 40px; }
.article .a-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 16px; }
.article h1 { font-family: var(--serif); font-weight: 900; font-size: 30px; line-height: 1.35; margin: 6px 0 14px; color: var(--ink); }
.article .a-meta { display: flex; align-items: center; gap: 16px; color: var(--ink-soft); font-size: 13px; flex-wrap: wrap; padding-bottom: 18px; border-bottom: 1px solid var(--line); margin-bottom: 22px; }
.article .a-meta .who { display: flex; align-items: center; gap: 8px; color: var(--ink-soft); font-weight: 500; }
.article .content { font-size: 15.5px; line-height: 1.9; color: #33302A; white-space: pre-wrap; word-break: break-word; }
.article .a-tags { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 16px; }
.article .a-acts { display: flex; gap: 10px; flex-wrap: wrap; margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line); }
.aact { display: inline-flex; align-items: center; gap: 8px; padding: 11px 20px; border-radius: 10px; border: 1.5px solid var(--line); font-size: 14px; color: var(--ink-soft); transition: .16s; font-weight: 600; background: var(--card); cursor: pointer; }
.aact:hover { border-color: var(--ink); color: var(--ink); }
.aact.on { color: var(--seal); border-color: var(--seal); background: rgba(192,39,45,.05); }
.aact.on-heart { color: var(--amber); border-color: var(--amber); background: rgba(180,100,31,.06); }
.aact.on-book { color: var(--blue); border-color: var(--blue); background: rgba(47,96,120,.06); }
.aact.share { margin-left: auto; }
.rel-item { display: flex; justify-content: space-between; gap: 12px; padding: 11px 0; border-bottom: 1px dashed var(--line); cursor: pointer; }
.rel-item:last-child { border-bottom: none; }
.rel-item:hover .rt { color: var(--seal); }
.rel-item .rt { font-size: 14px; font-weight: 500; line-height: 1.5; color: var(--ink-soft); }
.rel-item .rv { font-size: 12px; color: var(--ink-soft); white-space: nowrap; flex-shrink: 0; }

/* 评论 */
.comments-v1 { margin-top: 26px; }
.comments-v1 h4 { font-family: var(--serif); font-weight: 700; font-size: 16px; margin-bottom: 14px; display: flex; align-items: center; gap: 8px; color: var(--ink); }
.comment-box-v1 { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 22px; }
.comment-box-v1 textarea { flex: 1 1 100%; border: 1.5px solid var(--line); border-radius: 10px; padding: 12px 14px; resize: vertical; min-height: 76px; background: var(--card); outline: none; font-size: 14px; transition: .16s; }
.comment-box-v1 textarea:focus { border-color: var(--ink); }
.cm-toolbar { position: relative; flex: 1 1 auto; display: flex; align-items: center; }
.cm-emoji-btn { border: 1px solid var(--line); background: var(--card); color: var(--ink); border-radius: 8px; padding: 7px 14px; font-size: 13.5px; cursor: pointer; transition: .16s; }
.cm-emoji-btn:hover { border-color: var(--seal); color: var(--seal); }
.cm-emoji-panel { position: absolute; left: 0; bottom: calc(100% + 8px); z-index: 60; display: grid; grid-template-columns: repeat(10, 1fr); gap: 4px; width: 360px; max-width: calc(100vw - 32px); background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 10px; box-shadow: 0 10px 32px rgba(0, 0, 0, .14); }
.cm-emoji-item { display: flex; align-items: center; justify-content: center; width: 30px; height: 30px; font-size: 19px; border-radius: 7px; cursor: pointer; transition: .14s; user-select: none; }
.cm-emoji-item:hover { background: rgba(192, 39, 45, .08); transform: scale(1.14); }
@media (max-width: 480px) { .cm-emoji-panel { grid-template-columns: repeat(8, 1fr); width: min(340px, calc(100vw - 40px)); } }
.cm { display: flex; gap: 12px; padding: 16px 0; border-bottom: 1px dashed var(--line); }
.cm .cm-body { flex: 1; min-width: 0; }
.cm .cm-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 4px; }
.cm .cm-name { font-weight: 700; font-size: 14px; color: var(--ink); }
.cm .cm-time { font-size: 12px; color: var(--ink-soft); }
.cm .cm-text { font-size: 14px; color: var(--ink-soft); line-height: 1.7; word-break: break-word; }
.cm .cm-anon { font-size: 11px; color: var(--amber); border: 1px solid var(--amber); padding: 1px 6px; border-radius: 4px; letter-spacing: .08em; }
.cm .cm-reply-to { color: var(--seal); font-weight: 700; }
.cm .cm-actions { display: flex; align-items: center; gap: 14px; margin-top: 8px; font-size: 12px; color: var(--ink-soft); }
.cm .cm-like { cursor: pointer; user-select: none; padding: 2px 8px; border: 1px solid var(--line); border-radius: 20px; transition: all .18s; }
.cm .cm-like:hover { border-color: var(--seal); color: var(--seal); }
.cm .cm-like.on { color: #fff; background: var(--seal); border-color: var(--seal); }
.cm .cm-like b { font-weight: 700; }
.cm .cm-reply-btn { cursor: pointer; opacity: .55; transition: opacity .18s; }
.cm .cm-reply-btn:hover { opacity: 1; color: var(--seal); }
.cm-reply-chip { align-items: center; gap: 6px; font-size: 12px; color: var(--ink-soft); background: rgba(192,39,45,.06); border: 1px dashed rgba(192,39,45,.35); border-radius: 6px; padding: 6px 10px; margin-bottom: 8px; }
.cm-reply-chip b { color: var(--seal); }

/* 话题页 */
.topic-hero { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 30px 36px; margin-bottom: 20px; }
.search-inline { display: flex; align-items: center; gap: 10px; border: 1.6px solid var(--line); border-radius: 10px; padding: 10px 16px; background: var(--card); margin-top: 18px; max-width: 520px; }
.search-inline:focus-within { border-color: var(--ink); }
.search-inline input { flex: 1; border: none; outline: none; background: transparent; font-size: 14.5px; }
.search-inline svg { color: var(--ink-soft); }
.tag-cloud { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; padding: 4px 0; }
.tag-cloud .tag-v1 { font-size: 14px; padding: 8px 16px; border-radius: 8px; cursor: pointer; transition: .15s; }
.tag-cloud .tag-v1:hover { border-color: var(--seal); color: var(--seal); }
.tag-cloud .s1 { font-size: 13px; }
.tag-cloud .s2 { font-size: 14.5px; }
.tag-cloud .s3 { font-size: 16px; font-weight: 700; }
.tag-cloud .s4 { font-size: 19px; font-weight: 900; color: var(--seal); border-color: var(--seal); }
.tag-v1.tag-topic { color: #2F6078; border-color: rgba(47,96,120,.35); background: rgba(47,96,120,.06); }
.tag-chip { display: inline-flex; align-items: center; padding: 3px 10px; border-radius: 5px; font-size: 12px; color: var(--seal); background: rgba(192,39,45,.06); border: 1px solid rgba(192,39,45,.3); }
.topic-list { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.topic-item { border: 1px solid var(--line); border-radius: 12px; background: var(--card); padding: 16px 18px; display: flex; justify-content: space-between; align-items: center; gap: 12px; box-shadow: 0 1px 2px rgba(28,25,19,.06); transition: .16s; cursor: pointer; }
.topic-item:hover { border-color: var(--seal); transform: translateY(-2px); }
.topic-item .ti-l { display: flex; flex-direction: column; gap: 3px; }
.topic-item .ti-t { font-family: var(--serif); font-weight: 700; font-size: 16px; color: var(--ink); }
.topic-item .ti-s { font-size: 12.5px; color: var(--ink-soft); }
.topic-item .follow { flex-shrink: 0; }

/* 发布 compose */
.compose-card { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06), 0 10px 28px -14px rgba(28,25,19,.18); max-width: 760px; margin: 0 auto; padding: 34px 38px; }
.cf-label { font-family: var(--serif); font-weight: 700; font-size: 14px; margin: 0 0 10px; display: flex; align-items: center; gap: 8px; color: var(--ink); }
.seg { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 22px; }
.seg button { padding: 12px; border: 1.6px solid var(--line); border-radius: 10px; font-size: 14.5px; font-weight: 600; color: var(--ink-soft); transition: .16s; background: var(--paper-dark); cursor: pointer; }
.seg button.on { color: #fff; background: var(--ink); border-color: var(--ink); }
.seg button .seg-s { display: block; font-size: 11.5px; font-weight: 400; color: var(--ink-soft); margin-top: 2px; }
.seg button.on .seg-s { color: #BDB5A1; }
.field-v1 { margin-bottom: 20px; }
.field-v1 input, .field-v1 textarea { width: 100%; border: 1.6px solid var(--line); border-radius: 10px; padding: 12px 15px; background: var(--card); outline: none; transition: .16s; font-size: 14.5px; }
.field-v1 input:focus, .field-v1 textarea:focus { border-color: var(--ink); }
.field-v1 textarea { min-height: 150px; resize: vertical; line-height: 1.7; }
.toggle { display: flex; align-items: center; gap: 10px; cursor: pointer; user-select: none; }
.toggle .sw { width: 46px; height: 26px; border-radius: 99px; background: var(--line); position: relative; transition: .2s; flex-shrink: 0; }
.toggle .sw::after { content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: .2s; box-shadow: 0 1px 3px rgba(0,0,0,.2); }
.toggle.on .sw { background: var(--amber); }
.toggle.on .sw::after { left: 23px; }
.compose-foot { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-top: 24px; flex-wrap: wrap; }

/* 我的 profile */
.profile-card { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06); padding: 34px; display: flex; gap: 26px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.pf-av { width: 84px; height: 84px; border-radius: 50%; background: var(--ink); color: #E8E1CF; display: inline-flex; align-items: center; justify-content: center; font-family: var(--serif); font-weight: 900; font-size: 34px; border: 3px solid var(--seal); flex-shrink: 0; }
.pf-av-wrap { flex-shrink: 0; }
.pf-av-wrap img { width: 84px; height: 84px; border-radius: 50%; object-fit: cover; border: 3px solid var(--seal); }
.pf-edit-av { display: flex; align-items: center; gap: 14px; margin-bottom: 14px; }
.pf-edit-av img, .pf-edit-av .pf-edit-av-letter { width: 64px; height: 64px; border-radius: 50%; object-fit: cover; border: 2px solid var(--seal); background: var(--ink); color: #E8E1CF; display: inline-flex; align-items: center; justify-content: center; font-family: var(--serif); font-weight: 900; font-size: 26px; flex-shrink: 0; }
.pf-edit-av-acts { flex: 1; min-width: 0; }
.f-label { display: block; font-size: 12px; color: var(--ink-soft); margin-bottom: 4px; letter-spacing: .05em; }
.interact-tabs { display: flex; gap: 6px; border-bottom: 2px solid var(--line); margin-bottom: 16px; flex-wrap: wrap; }
.interact-tabs .itab { padding: 10px 16px; font-size: 14px; color: var(--ink-soft); cursor: pointer; border-bottom: 2px solid transparent; margin-bottom: -2px; transition: all .18s; }
.interact-tabs .itab:hover { color: var(--ink); }
.interact-tabs .itab.on { color: var(--seal); border-bottom-color: var(--seal); font-weight: 700; }
.interact-panel { min-height: 120px; }
.it-row { display: flex; gap: 12px; padding: 14px 4px; border-bottom: 1px dashed var(--line); align-items: flex-start; }
.it-row .it-icon { font-size: 16px; color: var(--seal); margin-top: 2px; min-width: 22px; text-align: center; }
.it-row .it-main { flex: 1; min-width: 0; }
.it-row .it-head { font-size: 13px; color: var(--ink); line-height: 1.6; }
.it-row .it-head b { color: var(--ink); }
.it-row .it-text { font-size: 13px; color: var(--ink-soft); margin-top: 4px; line-height: 1.6; word-break: break-word; }
.topic-row { cursor: pointer; transition: background .15s; }
.topic-row:hover { background: rgba(192,39,45,.04); }
.topic-row .it-topic-name { font-family: var(--serif); font-size: 15px; color: var(--ink); }
.topic-row .it-badge { display: inline-block; margin-left: 8px; padding: 1px 8px; border-radius: 4px; font-size: 11px; font-weight: 600; color: var(--seal); background: rgba(192,39,45,.07); border: 1px solid rgba(192,39,45,.25); vertical-align: 1px; }
.topic-row .it-icon { font-size: 20px; font-weight: 900; line-height: 1; margin-top: 1px; }
.it-row .it-side { text-align: right; flex-shrink: 0; display: flex; flex-direction: column; gap: 4px; align-items: flex-end; }
.it-row .it-like { font-size: 12px; color: var(--seal); }
.it-row .it-time { font-size: 12px; color: var(--ink-soft); }
.it-row .it-lv { font-size: 11px; color: var(--seal); border: 1px solid rgba(192,39,45,.4); border-radius: 4px; padding: 0 5px; margin-left: 6px; }
.it-post { color: var(--seal); cursor: pointer; font-weight: 700; }
.it-post em { font-style: normal; font-weight: 400; color: var(--ink-soft); font-size: 12px; margin-left: 4px; }
.btn-sm { padding: 5px 12px; font-size: 12px; }
.pf-info { flex: 1; min-width: 220px; }
.pf-info .pf-name { font-family: var(--serif); font-weight: 900; font-size: 24px; color: var(--ink); }
.pf-info .pf-id { color: var(--ink-soft); font-size: 13px; margin: 3px 0 10px; letter-spacing: .05em; }
.pf-stats { display: flex; gap: 30px; flex-wrap: wrap; }
.pf-stats .ps .n { font-family: var(--serif); font-weight: 900; font-size: 22px; color: var(--ink); }
.pf-stats .ps .l { font-size: 12px; color: var(--ink-soft); }

/* 登录/表单 v1 */
.form-card-v1 { border: 1px solid var(--line); border-radius: 16px; background: var(--card); box-shadow: 0 1px 2px rgba(28,25,19,.06), 0 10px 28px -14px rgba(28,25,19,.18); max-width: 460px; margin: 30px auto; padding: 34px 38px; }
.form-switch { margin-top: 16px; font-size: 13.5px; color: var(--ink-soft); text-align: center; }
.form-switch a { color: var(--seal); font-weight: 700; }

/* 密码找回页 */
.forgot-tabs { border-bottom: 2px solid rgba(192,39,45,.15); margin-bottom: 20px; }
.forgot-tabs .ftab { flex: 1; padding: 10px 0; background: none; border: none; border-bottom: 3px solid transparent; margin-bottom: -2px; font-size: 14px; font-weight: 600; color: var(--ink-soft); cursor: pointer; }
.forgot-tabs .ftab.active { color: var(--seal); border-bottom-color: var(--seal); }

/* 响应式（第一版原型层） */
@media (max-width: 900px) {
  .chapters { grid-template-columns: repeat(2, 1fr); }
  .feature-doc { grid-template-columns: 1fr; }
  .topic-list { grid-template-columns: 1fr; }
  .post-layout { grid-template-columns: 1fr; }
  .side-v1 { position: static; }
  .plate-head { padding: 24px 22px; }
  .plate-head h1 { font-size: 26px; }
  .article { padding: 24px 20px; }
  .article h1 { font-size: 23px; }
  .compose-card { padding: 26px 20px; }
  .seg { grid-template-columns: 1fr; }
  .bar-row { grid-template-columns: 1fr 1fr 44px; }
}
@media (max-width: 480px) {
  .chapters { grid-template-columns: 1fr; }
  .form-card-v1 { padding: 26px 20px; margin: 20px auto; }
  .compose-card { padding: 22px 16px; }
  .topic-hero { padding: 22px 18px; }
}

/* 响应式 */
@media (max-width: 900px) {
  .grid-2 { grid-template-columns: 1fr; }
  .hero .inner { grid-template-columns: 1fr; min-height: 0; }
  .hero-copy { padding: 30px 24px; }
  .hero-img { min-height: 220px; order: 2; }
  .hero-seal { width: 150px; height: 150px; top: 10px; right: 10px; }
  .pillars { grid-template-columns: 1fr; }
  .topic-grid { grid-template-columns: 1fr; }
  .stat-grid { grid-template-columns: repeat(2, 1fr); }
  .admin-shell { grid-template-columns: 1fr; }
  .admin-side { display: none; }
  .footer-grid { grid-template-columns: 1fr 1fr 1fr; }
  .mast-nav { display: none; }
  .mast-sub { display: none; }
  .bottom-nav { display: flex; }
  .wrap { padding-bottom: 90px; }
  .feed-grid { grid-template-columns: 1fr; }
  .hero h1 { font-size: 28px; }
  /* 移动端：显示搜索按钮 */
  .mast-search-mob { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border: 1px solid var(--line); border-radius: 50%; background: var(--card); color: var(--ink); cursor: pointer; padding: 0; }
  .vip-summary { grid-template-columns: 1fr; }
  /* 移动端顶部细条：隐藏中间描述，只留品牌+状态 */
  .mast-docbar { padding: 5px 14px; gap: 8px; }
  .mast-docbar .mast-mid-bar { display: none; }
  .mast-docbar .mast-brand-bar { font-size: 10.5px; letter-spacing: .08em; }
  /* 移动端导航栏：紧凑布局 */
  .mast-inner { padding: 10px 14px; gap: 8px; }
  .mast-actions .btn { padding: 6px 10px !important; font-size: 12px; }
  .mast-logo-seal { width: 30px; height: 30px; font-size: 15px; }
  .mast-title { font-size: 17px; }
  .mast-sub { font-size: 9px; }
  /* 移动端页脚 */
  .footer-grid { grid-template-columns: 1fr 1fr 1fr; gap: 14px; }
  .footer-brand-col { grid-column: 1 / -1; }
  .footer-topics { flex-direction: column; gap: 10px; }
  .footer-inner { padding: 24px 16px; }
}
@media (max-width: 480px) {
  /* 快速导航 / 帮助中心 / 联系合作 三栏横向并排 */
  .footer-grid { grid-template-columns: 1fr 1fr 1fr; gap: 8px; }
  .footer-col h4 { font-size: 12px; margin-bottom: 8px; }
  .footer-col a { font-size: 11px; padding: 3px 0; }
  .post-detail-title { font-size: 21px; }
  /* 首页图表移动端紧凑 */
  .chart-ring { gap: 12px; }
  .ring-svg { width: 96px; height: 96px; }
  .cb-item { grid-template-columns: 96px 1fr; }
}

/* ========== 会员等级体系 ========== */
.lv-badge {
  display: inline-flex; align-items: center; gap: 3px;
  font-size: 10.5px; font-weight: 700; letter-spacing: .02em;
  padding: 2px 7px; border: 1px solid transparent; border-radius: 4px;
  background: #8C8473; color: #fff; vertical-align: middle;
  font-family: var(--serif);
}
.lv-badge.lv-2 { background: #2F6078; }
.lv-badge.lv-3 { background: #B4641F; }
.lv-badge.lv-4 { background: #C0272D; }
.lv-premium {
  display: inline-block; font-size: 10px; font-weight: 700;
  padding: 2px 6px; border-radius: 3px; margin-left: 4px;
  background: linear-gradient(135deg, #D4A84B, #B8860B);
  color: #fff; vertical-align: middle; letter-spacing: .05em;
}
/* 图文上传与渲染 */
.img-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.img-cell { position: relative; width: 96px; height: 96px; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); }
.img-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.img-del { position: absolute; top: 4px; right: 4px; width: 22px; height: 22px; border-radius: 50%; border: none; background: rgba(0,0,0,.6); color: #fff; font-size: 14px; line-height: 1; cursor: pointer; }
.img-add { display: inline-flex; align-items: center; justify-content: center; width: 96px; height: 96px; border: 1.5px dashed var(--line); border-radius: 8px; color: var(--ink-soft); font-size: 13px; cursor: pointer; background: var(--paper-dark); }
.img-add:hover { border-color: var(--seal); color: var(--seal); }
.card-img { position: relative; margin: 10px 0 8px; border-radius: 8px; overflow: hidden; border: 1px solid var(--line); }
.card-img img { width: 100%; max-height: 260px; object-fit: cover; display: block; }
.card-img-more { position: absolute; right: 8px; bottom: 8px; background: rgba(0,0,0,.55); color: #fff; font-size: 11px; padding: 2px 8px; border-radius: 4px; }
.a-images { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: 16px 0; }
.a-images img { width: 100%; border-radius: 8px; border: 1px solid var(--line); display: block; }
/* 个人中心等级 */
.pf-name-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pf-level-bar { margin: 12px 0; max-width: 360px; }
.plb-info { display: flex; justify-content: space-between; font-size: 12px; color: var(--ink-soft); margin-bottom: 6px; }
.plb-track { height: 8px; background: var(--line); border-radius: 4px; overflow: hidden; }
.plb-fill { height: 100%; background: linear-gradient(90deg, #B4641F, #C0272D); border-radius: 4px; transition: width .5s; }
.btn-vip {
  background: linear-gradient(135deg, #D4A84B, #B8860B) !important;
  color: #fff !important; border: none !important; font-weight: 700;
}
/* 顶部会员入口（SVG 五角星：米黄圆底） */
.mast-icon-btn {
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; border-radius: 50%;
  text-decoration: none; transition: .2s; position: relative;
}
.mast-icon-btn svg { width: 18px; height: 18px; fill: currentColor; }
.mast-vip-entry {
  background: linear-gradient(145deg, #F3E3B3, #E4C87A);
  border: 1.5px solid #C9A443; color: #7A5C14;
  box-shadow: 0 1px 3px rgba(160,128,40,.25), inset 0 1px 0 rgba(255,255,255,.6);
}
.mast-vip-entry:hover { transform: scale(1.1); box-shadow: 0 0 14px rgba(212,168,75,.55); }
/* 顶部私信入口（SVG 气泡：浅灰圆底） */
.mast-msg-entry {
  background: linear-gradient(145deg, #EFECE3, #DDD8CB);
  border: 1.5px solid #BDB5A0; color: #57534A;
  box-shadow: 0 1px 3px rgba(120,110,90,.18), inset 0 1px 0 rgba(255,255,255,.65);
}
.mast-msg-entry:hover { transform: scale(1.1); box-shadow: 0 0 12px rgba(150,140,115,.4); }
/* 顶部发布按钮（SVG ＋：红印章方钮） */
.mast-publish {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--seal); color: #fff; text-decoration: none;
  border-radius: 8px; padding: 8px 15px; font-size: 13.5px; font-weight: 600;
  letter-spacing: 1px; box-shadow: 0 2px 6px rgba(192,39,45,.35), inset 0 1px 0 rgba(255,255,255,.18);
  transition: .2s;
}
.mast-publish svg { width: 15px; height: 15px; fill: #fff; }
.mast-publish:hover { transform: translateY(-1px); box-shadow: 0 4px 10px rgba(192,39,45,.4); }
/* 会员中心 Hero */
.vip-hero {
  position: relative; border-radius: 12px; overflow: hidden;
  margin-bottom: 28px; border: 1px solid var(--line);
}
.vip-hero-bg {
  position: absolute; inset: 0;
  background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
}
.vip-hero-bg::before {
  content: ''; position: absolute; inset: 0;
  background: radial-gradient(circle at 20% 50%, rgba(212,168,75,.15), transparent 50%),
              radial-gradient(circle at 80% 20%, rgba(192,39,45,.1), transparent 40%);
}
.vip-hero-content {
  position: relative; z-index: 1; padding: 28px 24px;
  display: flex; align-items: center; gap: 20px; flex-wrap: wrap;
}
.vip-avatar {
  width: 64px; height: 64px; border-radius: 50%;
  background: linear-gradient(135deg, #D4A84B, #B8860B);
  color: #fff; font-size: 28px; font-weight: 900;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--serif); border: 3px solid rgba(255,255,255,.2);
  box-shadow: 0 0 20px rgba(212,168,75,.3);
}
.vip-user-info { flex: 1; min-width: 0; }
.vip-name-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 6px; }
.vip-name { font-size: 22px; font-weight: 900; color: #fff; font-family: var(--serif); overflow-wrap: anywhere; word-break: break-all; line-height: 1.35; }
.vip-exp-row { display: flex; justify-content: space-between; font-size: 12px; color: rgba(255,255,255,.6); margin-bottom: 8px; max-width: 320px; }
.vip-progress { height: 6px; background: rgba(255,255,255,.15); border-radius: 3px; overflow: hidden; max-width: 320px; }
.vip-progress-fill { height: 100%; background: linear-gradient(90deg, #D4A84B, #F0D78C); border-radius: 3px; }
.vip-stats { display: flex; gap: 24px; }
.vip-stats .n { font-size: 20px; font-weight: 900; color: #D4A84B; font-family: var(--serif); }
.vip-stats .l { font-size: 11px; color: rgba(255,255,255,.5); }
/* 特权列表 */
.vip-privileges {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 10px; margin-bottom: 28px;
}
.vp-item {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; background: var(--card);
  border: 1px solid var(--line); border-radius: 8px;
  font-size: 13.5px;
}
.vp-check { color: #52C41A; font-weight: 900; font-size: 15px; }
/* 等级卡片 */
.vip-levels {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 28px;
}
.vl-card {
  position: relative; padding: 20px 16px; text-align: center;
  background: var(--card); border: 1px solid var(--line); border-radius: 10px;
  transition: .2s;
}
.vl-card:hover { transform: translateY(-3px); box-shadow: 0 6px 20px rgba(0,0,0,.08); }
.vl-current { border: 2px solid var(--seal); background: rgba(192,39,45,.04); }
.vl-past { opacity: .55; }
.vl-icon {
  width: 48px; height: 48px; border-radius: 50%; margin: 0 auto 10px;
  border: 2px solid; display: flex; align-items: center; justify-content: center;
  font-size: 22px; font-weight: 900;
}
.vl-name { font-size: 15px; font-weight: 900; font-family: var(--serif); margin-bottom: 2px; }
.vl-en { font-size: 10px; color: var(--ink-soft); letter-spacing: .15em; margin-bottom: 8px; }
.vl-desc { font-size: 12px; color: var(--ink-soft); line-height: 1.5; margin-bottom: 8px; }
.vl-exp { font-size: 11px; color: var(--seal); font-weight: 700; }
.vl-tag {
  position: absolute; top: 8px; right: 8px;
  font-size: 10px; padding: 2px 8px; border-radius: 10px;
  background: var(--seal); color: #fff; font-weight: 700;
}
.vl-tag-past { background: var(--ink-soft); }
/* 付费会员 */
.vip-premium { display: flex; gap: 16px; justify-content: center; margin-bottom: 16px; }
.vpr-card {
  flex: 1; max-width: 220px; padding: 24px 20px; text-align: center;
  background: var(--card); border: 1px solid var(--line); border-radius: 12px;
  position: relative;
}
.vpr-featured {
  border: 2px solid #D4A84B;
  background: linear-gradient(180deg, rgba(212,168,75,.06), var(--card));
  transform: scale(1.03);
}
.vpr-badge {
  position: absolute; top: -10px; left: 50%; transform: translateX(-50%);
  background: linear-gradient(135deg, #D4A84B, #B8860B); color: #fff;
  font-size: 11px; font-weight: 700; padding: 3px 14px; border-radius: 10px;
}
.vpr-title { font-size: 16px; font-weight: 700; margin-bottom: 8px; font-family: var(--serif); }
.vpr-price { font-size: 32px; font-weight: 900; color: var(--seal); font-family: var(--serif); margin-bottom: 16px; }
.vpr-price span { font-size: 13px; color: var(--ink-soft); font-weight: 400; }
.btn-gold {
  background: linear-gradient(135deg, #D4A84B, #B8860B) !important;
  color: #fff !important; border: none !important; font-weight: 700;
  padding: 10px 28px !important; width: 100%;
}
.btn-gold:disabled { opacity: .5; cursor: not-allowed; }
.vip-premium-privileges {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 8px; margin-bottom: 16px;
}
.vpp-item { font-size: 13px; color: var(--ink-soft); padding: 6px 0; }
.vip-expire { text-align: center; font-size: 13px; color: #D4A84B; font-weight: 700; margin-bottom: 28px; }
/* 会员设置 */
.vip-settings { margin-bottom: 28px; }
.vs-row {
  display: flex; align-items: flex-start; justify-content: space-between;
  gap: 16px; padding: 18px 20px; background: var(--card);
  border: 1px solid var(--line); border-radius: 10px; margin-bottom: 12px;
}
.vs-info { flex: 1; }
.vs-title { font-size: 15px; font-weight: 700; margin-bottom: 4px; font-family: var(--serif); }
.vs-desc { font-size: 12.5px; color: var(--ink-soft); line-height: 1.6; margin-bottom: 10px; }
.vs-input-row { display: flex; gap: 8px; }
.vs-input-row input {
  flex: 1; padding: 8px 12px; border: 1px solid var(--line);
  border-radius: 6px; font-size: 13px; background: var(--paper);
}
.vs-input-row input:disabled { opacity: .5; }
.btn-sm { padding: 8px 16px !important; font-size: 13px !important; }
/* 开关 */
.vs-switch { position: relative; display: inline-block; width: 48px; height: 26px; flex-shrink: 0; margin-top: 4px; }
.vs-switch input { opacity: 0; width: 0; height: 0; }
.vs-slider {
  position: absolute; cursor: pointer; inset: 0;
  background: var(--line); border-radius: 26px; transition: .3s;
}
.vs-slider::before {
  content: ''; position: absolute; height: 20px; width: 20px;
  left: 3px; bottom: 3px; background: #fff; border-radius: 50%; transition: .3s;
  box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.vs-switch input:checked + .vs-slider { background: var(--seal); }
.vs-switch input:checked + .vs-slider::before { transform: translateX(22px); }
.vs-disabled { opacity: .4; cursor: not-allowed; }
.vs-disabled .vs-slider { cursor: not-allowed; }
/* EXP 获取指南 */
.vip-exp-guide { margin-bottom: 28px; }
.veg-item {
  display: grid; grid-template-columns: 1fr auto auto; gap: 16px;
  padding: 12px 18px; background: var(--card); border: 1px solid var(--line);
  border-radius: 8px; margin-bottom: 8px; align-items: center;
}
.veg-act { font-size: 14px; font-weight: 600; }
.veg-exp { font-size: 14px; color: var(--seal); font-weight: 700; font-family: var(--serif); }
.veg-limit { font-size: 12px; color: var(--ink-soft); }
/* 操盘手评论金色角标 */
.cm-gold-badge {
  display: inline-block; font-size: 10px; font-weight: 700;
  padding: 1px 6px; border-radius: 3px; margin-left: 6px;
  background: linear-gradient(135deg, #D4A84B, #B8860B);
  color: #fff; vertical-align: middle;
}
.cm-master .cm-name { color: #B8860B; font-weight: 700; }
.cm-hidden { opacity: .5; }
.cm-deleted-tag {
  font-size: 10px; color: var(--ink-soft); border: 1px solid var(--line);
  padding: 1px 5px; border-radius: 3px; margin-left: 6px;
}
/* 发帖等级提示 */
.compose-level-hint {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 12px 16px; background: rgba(180,100,31,.06);
  border: 1px solid rgba(180,100,31,.2); border-radius: 8px;
  margin-bottom: 20px;
}
.clh-text { font-size: 12.5px; color: var(--ink-soft); flex: 1; min-width: 0; overflow-wrap: anywhere; }
.clh-link { font-size: 12.5px; color: var(--seal); font-weight: 700; text-decoration: none; }
.clh-link:hover { text-decoration: underline; }

/* 会员体系移动端 */
@media (max-width: 768px) {
  .vip-levels { grid-template-columns: repeat(2, 1fr); }
  .vip-hero-content { padding: 20px 16px; flex-direction: column; align-items: flex-start; }
  .vip-user-info { width: 100%; }
  .vip-stats { gap: 16px; width: 100%; justify-content: space-around; }
  .vip-premium { flex-direction: column; align-items: center; }
  .vpr-card { max-width: 100%; width: 100%; }
  .vpr-featured { transform: none; }
  .veg-item { grid-template-columns: 1fr; gap: 4px; }
  .vs-row { flex-direction: column; }
}

/* ========== 帖子类型标签 ========== */
.pt-tag {
  display: inline-block; font-size: 10.5px; font-weight: 700;
  padding: 2px 7px; border-radius: 4px; margin-left: 6px;
  background: rgba(47,96,120,.1); color: #2F6078;
  border: 1px solid rgba(47,96,120,.2);
}

/* ========== 投票组件 ========== */
.poll-widget {
  margin: 20px 0; padding: 20px; background: var(--card);
  border: 1px solid var(--line); border-radius: 10px;
}
.pw-title { font-size: 15px; font-weight: 700; margin-bottom: 14px; font-family: var(--serif); }
.pw-options { display: flex; flex-direction: column; gap: 8px; }
.pw-opt-btn {
  padding: 12px 16px; text-align: left; border: 1px solid var(--line);
  border-radius: 8px; background: var(--paper); cursor: pointer;
  font-size: 14px; transition: .15s;
}
.pw-opt-btn:hover { border-color: var(--seal); background: rgba(192,39,45,.04); }
.pw-results { display: flex; flex-direction: column; gap: 12px; }
.pw-opt { position: relative; }
.pw-opt.voted .pw-opt-label { color: var(--seal); font-weight: 700; }
.pw-opt-label { font-size: 13.5px; margin-bottom: 5px; }
.pw-opt-bar { height: 8px; background: var(--line); border-radius: 4px; overflow: hidden; margin-bottom: 3px; }
.pw-opt-fill { height: 100%; background: linear-gradient(90deg, #B4641F, #C0272D); border-radius: 4px; transition: width .5s; }
.pw-opt-count { font-size: 11.5px; color: var(--ink-soft); }
.pw-total { margin-top: 12px; font-size: 12px; color: var(--ink-soft); text-align: right; }

/* ========== 视频播放器 ========== */
.video-player { margin: 20px 0; border-radius: 10px; overflow: hidden; border: 1px solid var(--line); }
.vp-frame { position: relative; padding-bottom: 56.25%; height: 0; background: #000; }
.vp-frame iframe, .vp-frame video { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; }

/* ========== 问答帖标识 ========== */
.qa-badge {
  margin: 16px 0; padding: 12px 16px; background: rgba(47,96,120,.08);
  border: 1px solid rgba(47,96,120,.2); border-radius: 8px;
  font-size: 13px; color: #2F6078; font-weight: 600;
}

/* ========== 私信页面 ========== */
.msg-list { display: flex; flex-direction: column; gap: 2px; }
.msg-item {
  display: flex; align-items: center; gap: 12px; padding: 14px 16px;
  background: var(--card); border: 1px solid var(--line); border-radius: 8px;
  text-decoration: none; transition: .15s; margin-bottom: 4px;
}
.msg-item:hover { border-color: var(--seal); background: rgba(192,39,45,.03); }
.msg-av {
  width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  color: #fff; font-size: 18px; font-weight: 700; font-family: var(--serif);
}
.msg-info { flex: 1; min-width: 0; }
.msg-name-row { display: flex; align-items: center; gap: 8px; margin-bottom: 3px; }
.msg-name { font-size: 14.5px; font-weight: 700; color: var(--ink); }
.msg-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px;
  background: var(--seal); color: #fff; font-size: 11px; font-weight: 700;
}
.msg-last { font-size: 12.5px; color: var(--ink-soft); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.msg-time { font-size: 11.5px; color: var(--ink-soft); flex-shrink: 0; }

/* 私信聊天页 */
.msg-chat { display: flex; flex-direction: column; height: calc(100vh - 200px); min-height: 500px; background: var(--card); border: 1px solid var(--line); border-radius: 12px; overflow: hidden; }
.mc-head { display: flex; align-items: center; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--line); background: var(--paper-dark); }
.mc-back { color: var(--ink-soft); text-decoration: none; font-size: 14px; }
.mc-back:hover { color: var(--seal); }
.mc-name { font-size: 16px; font-weight: 700; font-family: var(--serif); }
.mc-body { flex: 1; overflow-y: auto; padding: 20px; display: flex; flex-direction: column; gap: 12px; }
.mc-msg { display: flex; gap: 8px; max-width: 75%; }
.mc-msg.me { align-self: flex-end; flex-direction: row-reverse; }
.mc-av { width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 14px; font-weight: 700; }
.mc-bubble { padding: 10px 14px; border-radius: 12px; font-size: 14px; line-height: 1.5; word-break: break-word; }
.mc-msg.other .mc-bubble { background: var(--paper); border: 1px solid var(--line); border-bottom-left-radius: 4px; }
.mc-msg.me .mc-bubble { background: var(--seal); color: #fff; border-bottom-right-radius: 4px; }
.mc-input { display: flex; gap: 10px; padding: 14px 18px; border-top: 1px solid var(--line); background: var(--paper); }
.mc-input textarea { flex: 1; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 14px; resize: none; font-family: inherit; }
.mc-input textarea:focus { outline: none; border-color: var(--seal); }

/* 顶部私信入口（新 SVG 版样式见上，此处仅保留红点） */
.mast-msg-dot {
  position: absolute; top: 2px; right: 2px; width: 8px; height: 8px;
  border-radius: 50%; background: var(--seal); border: 1.5px solid var(--paper);
}

/* ========== 勋章墙 ========== */
.badge-wall { margin-bottom: 28px; }
.bw-summary { font-size: 13px; color: var(--ink-soft); margin-bottom: 14px; }
.bw-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(100px, 1fr)); gap: 12px; }
.bw-card {
  padding: 16px 10px; text-align: center; background: var(--card);
  border: 1px solid var(--line); border-radius: 10px; transition: .15s;
}
.bw-card.earned { border-color: rgba(192,39,45,.3); background: rgba(192,39,45,.03); }
.bw-card.locked { opacity: .45; filter: grayscale(.6); }
.bw-icon { font-size: 32px; margin-bottom: 8px; }
.bw-name { font-size: 12.5px; font-weight: 700; margin-bottom: 4px; font-family: var(--serif); }
.bw-rarity { font-size: 10.5px; font-weight: 600; }

/* ========== 发帖类型选择 ========== */
.poll-opt-row { display: flex; gap: 8px; margin-bottom: 8px; align-items: center; }
.poll-opt-input { flex: 1; padding: 8px 12px; border: 1px solid var(--line); border-radius: 6px; font-size: 13px; }
.poll-opt-del {
  width: 30px; height: 30px; border-radius: 50%; border: 1px solid var(--line);
  background: var(--paper); cursor: pointer; font-size: 16px; color: var(--ink-soft);
  display: flex; align-items: center; justify-content: center;
}
.poll-opt-del:hover { border-color: var(--seal); color: var(--seal); }

/* 移动端适配 */
@media (max-width: 768px) {
  .bw-grid { grid-template-columns: repeat(3, 1fr); }
  .msg-chat { height: calc(100vh - 160px); min-height: 400px; }
  .mc-msg { max-width: 85%; }
}

/* ========== 管理后台 ========== */
.admin-login-wrap { display:flex; align-items:center; justify-content:center; min-height:80vh; padding:40px 20px; }
.admin-login-card { width:100%; max-width:400px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:36px 32px; box-shadow:0 8px 32px rgba(0,0,0,.08); }
.alc-header { text-align:center; margin-bottom:28px; }
.alc-seal { width:56px; height:56px; margin:0 auto 14px; background:var(--seal); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:28px; font-weight:900; font-family:var(--serif); }
.alc-header h1 { font-size:20px; font-weight:800; margin:0 0 6px; font-family:var(--serif); }
.alc-header p { font-size:11px; color:var(--ink-soft); letter-spacing:.2em; margin:0; }
.alc-hint { margin-top:16px; font-size:12px; color:var(--ink-soft); text-align:center; }

.admin-layout { display:flex; min-height:100vh; background:var(--paper); }
.admin-sidebar { width:220px; background:#1a1a1a; color:#ccc; display:flex; flex-direction:column; flex-shrink:0; position:fixed; top:0; left:0; bottom:0; z-index:100; }
.as-brand { padding:18px 16px; border-bottom:1px solid #333; display:flex; align-items:center; gap:10px; }
.as-seal { width:36px; height:36px; background:var(--seal); color:#fff; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:18px; font-weight:900; font-family:var(--serif); flex-shrink:0; }
.as-brand-text { min-width:0; }
.as-title { font-size:14px; font-weight:700; color:#fff; font-family:var(--serif); }
.as-sub { font-size:9px; color:#888; letter-spacing:.15em; }
.as-menu { flex:1; overflow-y:auto; padding:8px 0; }
.as-group-head { display:flex; align-items:center; gap:8px; padding:10px 16px; cursor:pointer; color:#aaa; font-size:13px; transition:.15s; }
.as-group-head:hover { background:#2a2a2a; color:#fff; }
.as-group-head .as-icon { font-size:15px; }
.as-group-head .as-label { flex:1; }
.as-arrow { font-size:10px; color:#666; }
.as-submenu { background:#151515; }
.as-item { display:flex; align-items:center; gap:8px; padding:9px 16px 9px 40px; color:#999; text-decoration:none; font-size:13px; transition:.15s; }
.as-item:hover { background:#2a2a2a; color:#fff; }
.as-item.active { background:rgba(192,39,45,.2); color:#fff; border-left:3px solid var(--seal); padding-left:37px; }
.as-item .as-icon { font-size:14px; }
.as-footer { padding:14px 16px; border-top:1px solid #333; }
.as-user { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.as-user-av { width:32px; height:32px; border-radius:50%; background:var(--seal); color:#fff; display:flex; align-items:center; justify-content:center; font-size:14px; font-weight:700; flex-shrink:0; }
.as-user-info { min-width:0; flex:1; }
.as-user-name { font-size:13px; color:#fff; font-weight:600; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.as-user-role { font-size:10px; color:#888; }
.as-logout { width:100%; padding:6px; background:transparent; border:1px solid #444; color:#aaa; border-radius:6px; font-size:12px; cursor:pointer; transition:.15s; }
.as-logout:hover { border-color:var(--seal); color:var(--seal); }
.as-actions { display:flex; flex-direction:column; gap:6px; }
.as-btn { width:100%; padding:6px; background:transparent; border:1px solid #444; color:#aaa; border-radius:6px; font-size:12px; cursor:pointer; transition:.15s; }
.as-btn:hover { border-color:var(--seal); color:var(--seal); }
.checkbox-group { display:flex; flex-wrap:wrap; gap:8px 18px; padding:6px 0; }
.checkbox-item { display:flex; align-items:center; gap:5px; font-size:13px; color:var(--ink); cursor:pointer; }
.checkbox-item input { width:15px; height:15px; accent-color:var(--seal); cursor:pointer; }
.tag-ok { background:rgba(34,154,81,.12); color:#1a9a51; border-color:rgba(34,154,81,.35); }
.tag-del { background:rgba(200,45,45,.10); color:#c82d2d; border-color:rgba(200,45,45,.35); }
.tag-elite { background:rgba(201,158,20,.14); color:#a87f0a; border-color:rgba(201,158,20,.45); }
.btn-danger { background:#c82d2d; border-color:#c82d2d; color:#fff; }
.btn-danger:hover { background:#a82127; }
.table-ops { white-space:nowrap; }
.table-ops .btn { margin-right:4px; }
.hint { font-size:12px; color:var(--ink-soft); line-height:1.6; }
.muted { color:var(--ink-soft); }

.admin-main { flex:1; margin-left:220px; display:flex; flex-direction:column; min-width:0; }
.admin-topbar { height:56px; background:var(--card); border-bottom:1px solid var(--line); display:flex; align-items:center; justify-content:space-between; padding:0 24px; position:sticky; top:0; z-index:50; }
.admin-topbar h2 { font-size:16px; font-weight:700; margin:0; font-family:var(--serif); }
.at-link { color:var(--ink-soft); text-decoration:none; font-size:13px; }
.at-link:hover { color:var(--seal); }
.admin-content { padding:24px; flex:1; }

/* 数据看板 */
.dash-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:16px; margin-bottom:20px; }
.dc-card { background:var(--card); border:1px solid var(--line); border-radius:10px; padding:20px; border-left:4px solid; }
.dc-blue { border-left-color:#2F6078; }
.dc-green { border-left-color:#3a7d44; }
.dc-amber { border-left-color:#B4641F; }
.dc-red { border-left-color:var(--seal); }
.dc-pulse { animation:pulse 2s infinite; }
@keyframes pulse { 0%,100%{box-shadow:0 0 0 0 rgba(192,39,45,.3);} 50%{box-shadow:0 0 0 8px rgba(192,39,45,0);} }
.dc-label { font-size:12px; color:var(--ink-soft); margin-bottom:6px; }
.dc-value { font-size:32px; font-weight:800; font-family:var(--serif); }
.dc-sub { font-size:11px; color:var(--ink-soft); margin-top:4px; }

.dash-row { display:flex; gap:16px; }
.dash-col-2 { flex:2; display:flex; flex-direction:column; gap:16px; }
.dash-col-1 { flex:1; display:flex; flex-direction:column; gap:16px; }
.panel { background:var(--card); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.panel-head { padding:14px 18px; border-bottom:1px solid var(--line); }
.panel-head h3 { font-size:14px; font-weight:700; margin:0; font-family:var(--serif); }
.panel-body { padding:18px; }

.trend-chart { display:flex; align-items:flex-end; gap:12px; height:180px; padding:10px 0; }
.trend-col { flex:1; display:flex; flex-direction:column; align-items:center; gap:6px; height:100%; }
.trend-bars { display:flex; align-items:flex-end; gap:3px; height:140px; width:100%; justify-content:center; }
.trend-bar { width:14px; border-radius:3px 3px 0 0; min-height:2px; transition:height .3s; }
.trend-post { background:var(--seal); }
.trend-comment { background:#B4641F; }
.trend-label { font-size:10px; color:var(--ink-soft); }
.trend-legend { display:flex; gap:16px; justify-content:center; margin-top:8px; font-size:11px; color:var(--ink-soft); }
.tl-dot { display:inline-block; width:10px; height:10px; border-radius:2px; margin-right:4px; vertical-align:middle; }
.tl-post { background:var(--seal); }
.tl-comment { background:#B4641F; }

.recent-list { display:flex; flex-direction:column; gap:8px; }
.recent-item { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:6px; font-size:12px; }
.recent-item:hover { background:var(--paper); }
.ri-cat { padding:2px 8px; border-radius:4px; font-size:10px; font-weight:700; flex-shrink:0; }
.ri-guide { background:rgba(192,39,45,.1); color:var(--seal); }
.ri-vent { background:rgba(180,100,31,.1); color:#B4641F; }
.ri-observe { background:rgba(47,96,120,.1); color:#2F6078; }
.ri-title { flex:1; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ri-user { color:var(--ink-soft); flex-shrink:0; }
.ri-time { color:var(--ink-soft); flex-shrink:0; font-size:11px; }

.todo-list { display:flex; flex-direction:column; gap:8px; }
.todo-item { display:flex; align-items:center; gap:10px; padding:12px; border-radius:8px; background:var(--paper); text-decoration:none; color:var(--ink); transition:.15s; }
.todo-item:hover { background:rgba(192,39,45,.05); }
.todo-red { border:1px solid rgba(192,39,45,.3); }
.todo-icon { font-size:18px; }
.todo-text { flex:1; font-size:13px; }
.todo-count { font-size:18px; font-weight:800; color:var(--seal); }

.cat-stats { display:flex; flex-direction:column; gap:12px; }
.cs-row { display:flex; align-items:center; gap:10px; }
.cs-name { width:70px; font-size:12px; flex-shrink:0; }
.cs-bar { flex:1; height:16px; background:var(--paper); border-radius:8px; overflow:hidden; }
.cs-fill { height:100%; background:linear-gradient(90deg,var(--seal),#B4641F); border-radius:8px; transition:width .5s; }
.cs-count { width:30px; text-align:right; font-size:12px; font-weight:700; }

/* 筛选栏 */
.filter-bar { display:flex; gap:10px; margin-bottom:16px; flex-wrap:wrap; align-items:center; }
.input-sm { padding:6px 10px; font-size:13px; }
.btn-sm { padding:6px 14px; font-size:13px; }
.btn-xs { padding:3px 8px; font-size:11px; }
.btn-ok { background:#3a7d44; color:#fff; border-color:#3a7d44; }
.btn-err { background:var(--seal); color:#fff; border-color:var(--seal); }

/* 数据表格 */
.data-table { width:100%; border-collapse:collapse; font-size:13px; }
.data-table th { padding:10px 12px; text-align:left; background:var(--paper-dark); font-weight:700; font-size:12px; color:var(--ink-soft); border-bottom:1px solid var(--line); white-space:nowrap; }
.data-table td { padding:10px 12px; border-bottom:1px solid var(--line); vertical-align:middle; }
.data-table tr:hover { background:rgba(192,39,45,.02); }
.dt-title { max-width:280px; }
.dt-title a { color:var(--ink); text-decoration:none; font-weight:600; }
.dt-title a:hover { color:var(--seal); }
.dt-time { color:var(--ink-soft); font-size:12px; white-space:nowrap; }
.dt-actions { display:flex; gap:4px; flex-wrap:wrap; white-space:nowrap; }

.tag { display:inline-block; padding:1px 6px; border-radius:3px; font-size:10px; font-weight:700; margin-left:4px; }
.tag-gold { background:#D4A84B; color:#fff; }
.tag-red { background:var(--seal); color:#fff; }
.tag-guide { background:rgba(192,39,45,.1); color:var(--seal); }
.tag-vent { background:rgba(180,100,31,.1); color:#B4641F; }
.tag-observe { background:rgba(47,96,120,.1); color:#2F6078; }
.tag-log { background:rgba(47,96,120,.1); color:#2F6078; }
.lv-mini { display:inline-block; padding:1px 6px; border-radius:3px; font-size:10px; font-weight:700; margin-left:4px; }
.lv-1 { background:#8C8473; color:#fff; }
.lv-2 { background:#2F6078; color:#fff; }
.lv-3 { background:#B4641F; color:#fff; }
.lv-4 { background:var(--seal); color:#fff; }

.status { display:inline-block; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:700; }
.status-pending { background:#FFF3CD; color:#856404; }
.status-published { background:#D4EDDA; color:#155724; }
.status-rejected { background:#F8D7DA; color:#721C24; }
.status-hidden { background:#E2E3E5; color:#383D41; }

.pagination { padding:14px 0; text-align:center; font-size:13px; color:var(--ink-soft); display:flex; align-items:center; justify-content:center; gap:8px; flex-wrap:wrap; }
.pagination .pg-nav { display:inline-flex; gap:4px; align-items:center; flex-wrap:wrap; }
.pagination a.pg-link { display:inline-block; min-width:28px; padding:4px 8px; border:1px solid rgba(0,0,0,.12); border-radius:4px; color:var(--ink); background:var(--paper); cursor:pointer; text-decoration:none; font-size:12.5px; line-height:1.4; }
.pagination a.pg-link:hover { border-color:var(--seal); color:var(--seal); }
.pagination a.pg-link.on { background:var(--seal); border-color:var(--seal); color:#fff; font-weight:600; }
.pagination .pg-dot { color:var(--ink-soft); padding:0 2px; }
.load-more-wrap { text-align:center; padding:6px 0 18px; }
.load-more-btn { max-width:340px; margin:0 auto; }
.load-more-end { padding:14px 0; letter-spacing:.05em; }

/* 精华/回收站 */
.elite-list { display:flex; flex-direction:column; gap:10px; }
.elite-item { display:flex; align-items:center; gap:10px; padding:12px; background:var(--paper); border-radius:8px; }
.ei-tag { background:#D4A84B; color:#fff; padding:2px 8px; border-radius:4px; font-size:11px; font-weight:700; flex-shrink:0; }
.ei-title { flex:1; font-weight:600; text-decoration:none; color:var(--ink); }
.ei-title:hover { color:var(--seal); }
.ei-meta { color:var(--ink-soft); font-size:12px; flex-shrink:0; }

/* 用户详情弹窗 */
.modal-overlay { position:fixed; inset:0; background:rgba(0,0,0,.5); display:flex; align-items:center; justify-content:center; z-index:1000; padding:20px; }
.modal { background:var(--card); border-radius:12px; max-width:700px; width:100%; max-height:85vh; overflow-y:auto; }
.modal-head { display:flex; align-items:center; justify-content:space-between; padding:16px 20px; border-bottom:1px solid var(--line); }
.modal-head h3 { margin:0; font-size:16px; font-family:var(--serif); }
.modal-close { background:none; border:none; font-size:24px; cursor:pointer; color:var(--ink-soft); }
.modal-body { padding:20px; }
.modal-foot { display:flex; justify-content:flex-end; gap:12px; margin-top:20px; }
.chk { display:flex; align-items:center; gap:6px; font-size:13px; color:var(--ink-soft); cursor:pointer; }
.chk input { width:16px; height:16px; accent-color:var(--seal); }
.ud-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-bottom:20px; }
.ud-section h4 { font-size:13px; font-weight:700; margin:0 0 10px; color:var(--ink-soft); border-bottom:1px solid var(--line); padding-bottom:6px; }
.ud-row { display:flex; justify-content:space-between; padding:4px 0; font-size:13px; }
.ud-posts { display:flex; flex-direction:column; gap:6px; }
.ud-post { display:flex; justify-content:space-between; padding:6px 10px; background:var(--paper); border-radius:6px; font-size:12px; }
.ud-post a { color:var(--ink); text-decoration:none; flex:1; }
.ud-post a:hover { color:var(--seal); }

/* 等级管理 */
.level-cards { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-bottom:20px; }
.lvl-card { border:2px solid; border-radius:10px; overflow:hidden; background:var(--card); }
.lvl-head { padding:14px; color:#fff; display:flex; align-items:center; gap:10px; }
.lvl-icon { font-size:24px; }
.lvl-name { font-size:14px; font-weight:800; font-family:var(--serif); }
.lvl-exp { font-size:11px; opacity:.85; }
.lvl-perms { padding:12px; }
.lvl-perm { display:flex; align-items:center; gap:6px; font-size:12px; padding:3px 0; }
.lvl-check { color:#3a7d44; font-weight:700; }
.exp-rules { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.exp-rule { display:flex; gap:10px; padding:12px; background:var(--paper); border-radius:8px; }
.er-icon { font-size:24px; }
.exp-rule strong { font-size:13px; display:block; }
.exp-rule div:last-child { font-size:11px; color:var(--ink-soft); }

/* 举报 */
.report-list { display:flex; flex-direction:column; gap:12px; }
.report-card { background:var(--card); border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.rc-head { display:flex; align-items:center; gap:10px; padding:12px 16px; background:var(--paper-dark); border-bottom:1px solid var(--line); }
.rc-type { font-weight:700; font-size:13px; }
.rc-reason { background:rgba(192,39,45,.1); color:var(--seal); padding:2px 8px; border-radius:4px; font-size:11px; font-weight:700; }
.rc-time { margin-left:auto; color:var(--ink-soft); font-size:12px; }
.rc-body { padding:14px 16px; }
.rc-row { font-size:13px; margin-bottom:6px; }
.rc-row span { color:var(--ink-soft); }
.rc-row a { color:var(--ink); text-decoration:none; }
.rc-row a:hover { color:var(--seal); }
.rc-actions { display:flex; gap:8px; padding:12px 16px; border-top:1px solid var(--line); background:var(--paper); }

/* 版块管理 */
.board-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-bottom:20px; }
.sec-mini { font-size: 13px; font-weight: 700; color: var(--ink); margin: 6px 0 10px; padding-left: 9px; border-left: 3px solid var(--seal); font-family: var(--serif); }
.board-card { border:2px solid; border-radius:10px; overflow:hidden; background:var(--card); }
.bc-head { padding:14px; color:#fff; display:flex; align-items:center; gap:10px; }
.bc-icon { font-size:22px; }
.bc-name { font-size:15px; font-weight:800; font-family:var(--serif); }
.bc-key { font-size:11px; opacity:.8; }
.bc-status { margin-left:auto; background:rgba(255,255,255,.2); padding:2px 8px; border-radius:4px; font-size:11px; }
.bc-desc { padding:14px; font-size:13px; color:var(--ink-soft); min-height:50px; }
.bc-actions { display:flex; gap:6px; padding:10px 14px; border-top:1px solid var(--line); }

/* 公告 */
.ann-form { display:flex; flex-direction:column; gap:10px; }
.ann-opts { display:flex; gap:10px; align-items:center; }
.ann-list { display:flex; flex-direction:column; gap:10px; }
.ann-item { border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.ann-important { border-color:var(--seal); }
.ann-head { display:flex; align-items:center; gap:10px; padding:10px 14px; background:var(--paper-dark); }
.ann-tag { padding:2px 8px; border-radius:4px; font-size:10px; font-weight:700; background:var(--seal); color:#fff; }
.ann-important .ann-tag { background:var(--seal); }
.ann-title { font-weight:700; font-size:14px; flex:1; }
.ann-time { color:var(--ink-soft); font-size:12px; }
.ann-status { font-size:11px; font-weight:700; }
.ann-status.on { color:#3a7d44; }
.ann-status.off { color:var(--ink-soft); }
.ann-content { padding:12px 14px; font-size:13px; color:var(--ink-soft); }
.ann-actions { display:flex; gap:6px; padding:8px 14px; border-top:1px solid var(--line); }

/* 话题 */
.topic-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; }
.topic-card { padding:14px; background:var(--paper); border:1px solid var(--line); border-radius:8px; }
.tc-name { font-size:14px; font-weight:700; margin-bottom:4px; color:var(--seal); }
.tc-desc { font-size:12px; color:var(--ink-soft); margin-bottom:8px; min-height:32px; }
.tc-meta { font-size:11px; color:var(--ink-soft); }

/* 导出 */
.export-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; }
.export-card { padding:24px; background:var(--card); border:1px solid var(--line); border-radius:10px; text-align:center; }
.ec-icon { font-size:40px; margin-bottom:12px; }
.export-card h3 { font-size:16px; margin:0 0 8px; font-family:var(--serif); }
.export-card p { font-size:12px; color:var(--ink-soft); margin:0 0 16px; }

/* 敏感词 */
.sw-list { display:flex; flex-direction:column; gap:6px; }
.sw-item { display:flex; align-items:center; gap:12px; padding:10px 14px; background:var(--paper); border-radius:8px; }
.sw-word { font-weight:700; font-size:14px; min-width:120px; }
.sw-level { padding:2px 8px; border-radius:4px; font-size:11px; font-weight:700; }
.sw-red { background:#F8D7DA; color:#721C24; }
.sw-orange { background:#FFF3CD; color:#856404; }
.sw-yellow { background:#E2E3E5; color:#383D41; }
.sw-hits { color:var(--ink-soft); font-size:12px; flex:1; }

/* 站点设置 */
.setting-form { max-width:600px; }
.setting-row { display:flex; align-items:center; gap:16px; margin-bottom:14px; }
.setting-row label { width:120px; font-size:13px; font-weight:600; flex-shrink:0; }
.setting-row .input { flex:1; }
.setting-actions { margin-top:20px; padding-left:136px; }

/* 举报弹窗 */
.modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.5); display: flex; align-items: center; justify-content: center; z-index: 9999; }
.modal-box { background: var(--paper); border: 2px solid var(--ink); border-radius: 8px; padding: 24px; max-width: 480px; width: 90%; box-shadow: 0 8px 32px rgba(0,0,0,0.2); }
.modal-title { font-size: 18px; font-weight: 700; color: var(--ink); margin-bottom: 16px; padding-bottom: 12px; border-bottom: 1px solid var(--line); }
.modal-body { margin-bottom: 20px; }
.modal-actions { display: flex; gap: 12px; justify-content: flex-end; }
.report-reasons { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.report-reason { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 6px; cursor: pointer; transition: all 0.2s; }
.report-reason:hover { border-color: var(--red); background: rgba(192,39,45,0.05); }
.report-reason input { accent-color: var(--red); }
.report-reason span { font-size: 14px; color: var(--ink); }
.cm-report { cursor: pointer; opacity: 0.4; transition: opacity 0.2s; font-size: 13px; margin-left: auto; }
.cm-report:hover { opacity: 1; color: var(--red); }
.aact.report { color: #8C8473; }
.aact.report:hover { color: var(--red); }
.search-bar-inline { display: flex; gap: 10px; margin-bottom: 20px; max-width: 600px; }
.search-bar-inline .input { flex: 1; }

/* 后台可编辑界面样式 */
.lvl-input { background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.4); border-radius: 4px; padding: 4px 8px; color: #fff !important; font-size: 13px; }
.lvl-input:focus { outline: none; border-color: #fff; background: rgba(255,255,255,0.3); }
.lvl-input::placeholder { color: rgba(255,255,255,0.6); }
.lvl-name-input { font-weight: 600; font-size: 15px; }
.lvl-exp-input { color: #fff; font-size: 12px; }
.lvl-perms-input { background: rgba(0,0,0,0.1); border: 1px solid rgba(0,0,0,0.15); color: #333; font-size: 12px; resize: vertical; }
.lvl-color-picker { width: 30px; height: 24px; border: none; border-radius: 4px; cursor: pointer; padding: 0; }
.lvl-color-row { display: flex; align-items: center; gap: 8px; margin-top: 8px; font-size: 12px; color: #666; }
.bc-icon-input { text-align: center; font-size: 18px; }
.bc-name-input { font-weight: 600; }
.bc-key-input { font-size: 12px; opacity: 0.9; }
.bc-desc-input { background: rgba(0,0,0,0.05); border: 1px solid rgba(0,0,0,0.1); color: #333; font-size: 12px; resize: vertical; margin: 8px 0; }
.bc-status-select { background: rgba(255,255,255,0.2); border: 1px solid rgba(255,255,255,0.3); color: #fff; border-radius: 4px; padding: 2px 6px; font-size: 12px; }
.bc-status-select option { color: #333; }
.tc-name-input { font-weight: 600; font-size: 15px; background: transparent; border: 1px solid transparent; }
.tc-name-input:focus { border-color: currentColor; background: rgba(255,255,255,0.5); }
.tc-desc-input { background: rgba(0,0,0,0.05); border: 1px solid rgba(0,0,0,0.1); color: #333; font-size: 12px; padding: 4px 8px; border-radius: 4px; }
.tc-color-picker { width: 24px; height: 20px; border: none; border-radius: 3px; cursor: pointer; padding: 0; vertical-align: middle; }
.tc-actions { display: flex; align-items: center; gap: 8px; margin-top: 8px; flex-wrap: wrap; }
.threshold-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; }
.threshold-item { display: flex; flex-direction: column; gap: 4px; }
.threshold-item label { font-size: 12px; color: #666; }
.exp-rules-config { display: flex; flex-direction: column; gap: 10px; }
.exp-rule-config { display: flex; align-items: center; justify-content: space-between; padding: 8px 12px; background: #f9f9f9; border-radius: 6px; }
.er-label { font-weight: 500; font-size: 14px; }
.er-inputs { display: flex; gap: 16px; }
.er-inputs label { font-size: 12px; color: #666; display: flex; align-items: center; gap: 4px; }

/* 后台响应式 */
@media (max-width: 1024px) {
  .dash-cards { grid-template-columns:repeat(2,1fr); }
  .level-cards { grid-template-columns:repeat(2,1fr); }
  .board-grid { grid-template-columns:1fr; }
  .export-grid { grid-template-columns:1fr; }
}
@media (max-width: 768px) {
  .admin-sidebar { width:60px; }
  .as-brand-text, .as-label, .as-submenu, .as-user-info, .as-footer .as-logout { display:none; }
  .as-item { padding:12px; justify-content:center; }
  .as-group-head { padding:12px; justify-content:center; }
  .as-group-head .as-label, .as-arrow { display:none; }
  .admin-main { margin-left:60px; }
  .dash-cards { grid-template-columns:1fr; }
  .dash-row { flex-direction:column; }
  .level-cards { grid-template-columns:1fr; }
  .ud-grid { grid-template-columns:1fr; }
}

/* ============ 前台分页条（替代加载更多） ============ */
.pager-wrap { display:flex; align-items:center; justify-content:center; gap:14px; margin-top:20px; padding:6px 0 14px; flex-wrap:wrap; }
.pager-wrap .pg-info { font-size:12.5px; color:var(--ink-soft); font-family:var(--serif); letter-spacing:.05em; }
.pager-wrap .pg-nav { display:inline-flex; gap:7px; flex-wrap:wrap; }
.pager-wrap .pg-link { display:inline-flex; align-items:center; justify-content:center; min-width:32px; height:32px; padding:0 10px; border:1px solid var(--line); border-radius:7px; background:var(--card); color:var(--ink); font-size:13px; font-family:var(--serif); text-decoration:none; transition:.15s; }
.pager-wrap .pg-link:hover { border-color:var(--seal); color:var(--seal); }
.pager-wrap .pg-link.on { background:var(--seal); border-color:var(--seal); color:#fff; font-weight:700; }
.pager-wrap .pg-dot { color:var(--ink-soft); }
.pager-wrap.pg-loading { opacity:.5; pointer-events:none; }

/* ============ 首页防错位加固 ============ */
.feed-grid .feed-cta { grid-column:1; width:100%; box-sizing:border-box; }
.doc { min-width:0; }
.doc .ex { word-break:break-word; }
@media (max-width:1080px) { .pillars { grid-template-columns:repeat(2,1fr); } }
@media (max-width:720px) { .pillars { grid-template-columns:1fr; } }
/* 首页分页条归位：feed-grid 网格子项修正，强制回到列表列 */
.feed-grid > .pager-wrap { grid-column: 1; width: 100%; box-sizing: border-box; }
/* 首页右侧侧栏（热榜）与左侧列表顶部对齐 */
.feed-grid > .side-v1 { grid-column: 2; grid-row: 1 / span 3; align-self: start; }
