/* ============================================================
   member.css —— 成员端页面级布局样式
   （登录/绑定/首页曦流/聚合页/五版块/个人中心）
   全部使用 tokens.css 变量；版块差异经 body[data-theme] 生效
   ============================================================ */

/* ============ 登录页 P-00 ============ */
.login-wrap {
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  padding: var(--space-8) var(--space-6);
  background:
    radial-gradient(circle at 80% 12%, var(--theme-soft), transparent 55%),
    radial-gradient(circle at 10% 85%, var(--theme-soft), transparent 55%),
    var(--bg-soft);
}
.login-logo {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-top: 9vh;
}
.login-logo .logo-mark {
  width: 84px; height: 84px;
  border-radius: 30% 70% 55% 45% / 45% 40% 60% 55%;
  background: var(--theme-soft);
  border: 3px dashed var(--theme-primary);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-serif);
  font-weight: 700;
  font-size: 26px;
  color: var(--theme-primary);
  transform: rotate(-4deg);
}
.login-logo h1 { margin-top: var(--space-5); font-family: var(--font-serif); font-size: 30px; letter-spacing: 2px; }
.login-logo .sub { margin-top: 4px; color: var(--ink-2); font-size: var(--text-14); }
.login-foot { margin-top: auto; text-align: center; }
.login-foot .tip { font-size: var(--text-12); color: var(--ink-3); margin-top: var(--space-3); }

/* 登录 loading（静默授权模拟） */
.login-loading {
  position: fixed; inset: 0; z-index: 90;
  background: var(--bg-soft);
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: var(--space-4);
}
.login-loading .ring {
  width: 52px; height: 52px;
  border: 4px solid var(--theme-soft);
  border-top-color: var(--theme-primary);
  border-radius: 50%;
  animation: spin 0.9s linear infinite;
}
.login-loading p { color: var(--ink-2); font-size: var(--text-14); }

/* ============ 绑定向导 P-01 ============ */
.wizard { padding: var(--space-5) var(--space-4); }
.wizard-steps {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-2);
  margin-bottom: var(--space-6);
}
.wizard-steps .step {
  width: 26px; height: 26px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: var(--text-12); font-weight: 700;
  background: #EDE7D9; color: var(--ink-3);
}
.wizard-steps .step.on { background: var(--theme-primary); color: #fff; }
.wizard-steps .step.done { background: var(--theme-soft); color: var(--theme-primary-strong); }
.wizard-steps .bar { width: 34px; height: 2px; background: #E5DECC; }
.wizard-steps .bar.on { background: var(--theme-primary); }

.wizard-card { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-card); box-shadow: var(--shadow-card); padding: var(--space-5); }
.wizard-card h2 { font-family: var(--font-serif); font-size: var(--text-22, 22px); margin-bottom: var(--space-2); }
.wizard-card .desc { font-size: var(--text-14); color: var(--ink-2); margin-bottom: var(--space-5); }

/* ① 身份展示：姓名打码 */
.id-card {
  background: var(--theme-tint);
  border: 1.5px dashed var(--line-strong);
  border-radius: var(--radius-card);
  padding: var(--space-5);
  text-align: center;
}
.id-card .masked-name { font-family: var(--font-serif); font-size: 26px; font-weight: 700; letter-spacing: 4px; }
.id-card .src-tip { margin-top: var(--space-2); font-size: var(--text-12); color: var(--ink-3); }
.id-card .masked-avatar {
  width: 64px; height: 64px;
  margin: 0 auto var(--space-3);
  border-radius: 50%;
  background: linear-gradient(135deg, #D9D2C0, #B9B09A);
  display: flex; align-items: center; justify-content: center;
  font-size: 24px; color: #fff;
}

/* 花名联想下拉 */
.suggest-list {
  margin-top: var(--space-2);
  background: var(--card);
  border: 1px solid var(--line-strong);
  border-radius: var(--radius-sm);
  max-height: 200px;
  overflow-y: auto;
  box-shadow: var(--shadow-float);
  display: none;
}
.suggest-list.show { display: block; }
.suggest-list li { padding: 10px 12px; font-size: var(--text-15, 15px); border-bottom: 1px solid var(--line); }
.suggest-list li:last-child { border-bottom: none; }
.suggest-list li:active { background: var(--theme-soft); }
.suggest-list .none { color: var(--ink-3); font-size: var(--text-13, 13px); }

/* ③ 匹配结果 */
.match-loading { text-align: center; padding: var(--space-8) 0; }
.match-loading .ring { width: 44px; height: 44px; margin: 0 auto var(--space-4); border: 4px solid var(--theme-soft); border-top-color: var(--theme-primary); border-radius: 50%; animation: spin 0.9s linear infinite; }
.match-result { text-align: center; }
.match-result .big-emoji { font-size: 48px; margin-bottom: var(--space-3); }
.match-result h2 { font-family: var(--font-serif); margin-bottom: var(--space-2); }
.match-result p { color: var(--ink-2); font-size: var(--text-14); margin-bottom: var(--space-5); }
.candidate-list { margin: var(--space-4) 0; text-align: left; }
.candidate-list li {
  display: flex; align-items: center; gap: var(--space-3);
  padding: var(--space-3);
  border: 1.5px solid var(--line);
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-2);
  font-size: var(--text-16);
}
.candidate-list li:active { border-color: var(--theme-primary); background: var(--theme-soft); }
.candidate-list li .pick { margin-left: auto; color: var(--theme-primary); }

/* ============ 无权限页 P-02 ============ */
.blocked-wrap { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: var(--space-8) var(--space-6); text-align: center; }
.blocked-wrap .big-emoji { font-size: 52px; margin-bottom: var(--space-4); }
.blocked-wrap h1 { font-family: var(--font-serif); font-size: var(--text-24); margin-bottom: var(--space-2); }
.blocked-wrap p { color: var(--ink-2); font-size: var(--text-14); max-width: 30em; margin-bottom: var(--space-6); }
.blocked-wrap .btns { display: flex; flex-direction: column; gap: var(--space-3); width: 100%; max-width: 280px; }

/* 核验申请表单 */
.verify-form { margin-top: var(--space-5); text-align: left; }

/* ============ 首页 P-03 / 今日曦流 ============ */
.home-head {
  display: flex;
  align-items: center;
  padding: var(--space-4) var(--space-4) var(--space-3);
  background: var(--theme-tint);
  border-bottom: 1px solid var(--line);
  position: sticky; top: 0; z-index: 30;
}
.home-head h1 { font-family: var(--font-serif); font-size: var(--text-24); flex: 1; }
.home-head .sub { font-size: var(--text-12); color: var(--ink-3); }

/* 曦流卡片（中立底色 + 类型色标 4px 侧条，禁止四色铺满 —— 交互设计 §5.2） */
.feed-card {
  position: relative;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: var(--space-4);
  margin-bottom: var(--space-3);
  overflow: hidden;
  cursor: pointer;
  transition: transform 0.15s var(--ease);
}
.feed-card:active { transform: scale(0.985); }
.feed-card::before {
  content: "";
  position: absolute;
  left: 0; top: 14px; bottom: 14px;
  width: 4px;
  border-radius: 0 2px 2px 0;
  background: var(--feed-color, var(--line-strong));
}
.feed-card--xjy { --feed-color: var(--feed-xjy); }
.feed-card--night { --feed-color: var(--feed-night); }
.feed-card--praise { --feed-color: var(--feed-praise); }
.feed-card--person { --feed-color: var(--feed-person); }
.feed-card--sign { --feed-color: var(--feed-sign); }

.feed-card .f-top { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-2); }
.feed-card .f-type { font-size: var(--text-12); font-weight: 700; color: var(--feed-color); }
.feed-card .f-time { margin-left: auto; font-size: var(--text-12); color: var(--ink-3); }
.feed-card .f-title { font-size: var(--text-16); font-weight: 700; line-height: 1.5; }
.feed-card .f-text { font-size: var(--text-14); color: var(--ink-2); margin-top: 4px; }
.feed-card .f-meta { display: flex; align-items: center; gap: var(--space-3); margin-top: var(--space-3); font-size: var(--text-12); color: var(--ink-3); }
.feed-card .f-meta .id-name { font-size: var(--text-13, 13px); }
.feed-card .f-meta .stat { display: inline-flex; align-items: center; gap: 2px; }

/* 精选/置顶/新一期角标 */
.corner-tag {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  font-size: var(--text-12);
  font-weight: 700;
}
.corner-tag--pinned { background: var(--danger-soft); color: var(--danger); }
.corner-tag--featured { background: var(--theme-soft); color: var(--theme-primary-strong); }
.corner-tag--new { background: #F7ECD9; color: var(--warn); }

/* 曦流图片占位（CSS 渐变，无网络图） */
.img-ph {
  border-radius: var(--radius-sm);
  aspect-ratio: 16 / 9;
  background: linear-gradient(135deg, var(--g1, #E8E2D2), var(--g2, #CFC5AC));
  display: flex; align-items: center; justify-content: center;
  font-size: 28px;
  color: rgba(255, 255, 255, 0.9);
  margin-top: var(--space-3);
}
.img-ph--thumb { aspect-ratio: 1 / 1; margin-top: 0; font-size: 20px; }
.img-ph--banner { aspect-ratio: 16 / 9; margin-top: 0; }

/* 新内容提示条 */
.fresh-tip {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  margin: var(--space-3) var(--space-4) 0;
  padding: 8px;
  border-radius: var(--radius-pill);
  background: var(--theme-primary);
  color: #fff;
  font-size: var(--text-13, 13px);
  box-shadow: var(--shadow-float);
  position: relative;
  z-index: 5;
}

/* 日签入口卡（固定首位） */
.sign-entry {
  background: linear-gradient(135deg, var(--theme-soft), var(--theme-tint));
  border: 1.5px dashed var(--theme-primary);
}
.sign-entry .s-sign { font-family: var(--font-serif); font-size: var(--text-18); font-weight: 700; color: var(--theme-primary-strong); margin-top: 2px; }

/* 消息中心视图 */
.msg-group-title { font-size: var(--text-13, 13px); color: var(--ink-3); font-weight: 600; margin: var(--space-4) 0 var(--space-2); }
.msg-item { display: flex; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.msg-item:last-child { border-bottom: none; }
.msg-item .msg-ico {
  width: 40px; height: 40px; flex-shrink: 0;
  border-radius: var(--radius-sm);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--text-20);
  background: var(--theme-soft);
}
.msg-item .msg-body { flex: 1; min-width: 0; }
.msg-item .msg-title { font-size: var(--text-15, 15px); font-weight: 600; display: flex; align-items: center; gap: 6px; }
.msg-item .msg-text { font-size: var(--text-14); color: var(--ink-2); margin-top: 2px; }
.msg-item .msg-time { font-size: var(--text-12); color: var(--ink-3); margin-top: 2px; }
.msg-item.unread .msg-title::after { content: ""; width: 8px; height: 8px; border-radius: 50%; background: #E0523F; flex-shrink: 0; }

/* ============ 文化体验聚合页 P-04 ============ */
.culture-hero {
  margin: var(--space-4) calc(-1 * var(--space-4)) var(--space-4);
  padding: var(--space-5) var(--space-4);
  background:
    radial-gradient(circle at 90% 10%, var(--theme-soft), transparent 60%),
    var(--theme-tint);
  border-bottom: 1px solid var(--line);
}
.culture-hero h1 { font-family: var(--font-serif); font-size: var(--text-24); }
.culture-hero p { font-size: var(--text-14); color: var(--ink-2); margin-top: 4px; }

.group-label {
  display: flex;
  align-items: center;
  gap: var(--space-2);
  margin: var(--space-5) 0 var(--space-3);
  font-size: var(--text-14);
  font-weight: 700;
  color: var(--ink-2);
}
.group-label::after { content: ""; flex: 1; height: 1px; background: var(--line); }

/* 参与型大卡 */
.entry-card {
  display: flex;
  align-items: center;
  gap: var(--space-4);
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-card);
  padding: var(--space-5);
  margin-bottom: var(--space-3);
  cursor: pointer;
  transition: transform 0.15s var(--ease), border-color 0.2s;
}
.entry-card:active { transform: scale(0.985); }
.entry-card--lg { border-left: 5px solid var(--ec-color); }
.entry-card--lg .sticker { width: 56px; height: 56px; font-size: var(--text-18); }
.entry-card--xjy { --ec-color: var(--feed-xjy); }
.entry-card--praise { --ec-color: var(--feed-praise); }
.entry-card--night { --ec-color: var(--feed-night); }
.entry-card--person { --ec-color: var(--feed-person); }
.entry-card--sign { --ec-color: var(--feed-sign); }
.entry-card .ec-body { flex: 1; min-width: 0; }
.entry-card .ec-name { font-family: var(--font-serif); font-size: var(--text-20); font-weight: 700; display: flex; align-items: center; gap: var(--space-2); }
.entry-card .ec-desc { font-size: var(--text-14); color: var(--ink-2); margin-top: 2px; }
.entry-card .ec-arrow { color: var(--ink-3); font-size: var(--text-18); }

/* 仪式入口（每日一签独立） */
.entry-card--sign {
  border: 1.5px dashed var(--feed-sign);
  background: linear-gradient(135deg, var(--card), #FBF3E2);
}

/* ============ 曦游记 P-05 ============ */
/* 指南卡 */
.guide-card {
  background: linear-gradient(135deg, var(--theme-soft), var(--theme-tint));
  border: 1.5px dashed var(--theme-primary);
  border-radius: var(--radius-card);
  padding: var(--space-4);
  margin-bottom: var(--space-4);
}
.guide-card h3 { font-size: var(--text-16); display: flex; align-items: center; gap: var(--space-2); }
.guide-card p { font-size: var(--text-14); color: var(--ink-2); margin: var(--space-2) 0 var(--space-3); }
.guide-card .btns { display: flex; gap: var(--space-3); }
.guide-card .btns .btn { flex: 1; padding: 8px 0; font-size: var(--text-14); }

/* 列表卡片 */
.xjy-card { cursor: pointer; }
.xjy-card .xjy-imgs { display: flex; gap: 6px; margin-top: var(--space-3); overflow-x: auto; }
.xjy-card .xjy-imgs .img-ph { min-width: 120px; aspect-ratio: 1; margin-top: 0; }
.xjy-card .xjy-foot { display: flex; align-items: center; gap: var(--space-4); margin-top: var(--space-3); font-size: var(--text-13, 13px); color: var(--ink-3); }
.xjy-card .xjy-foot .stat { display: inline-flex; align-items: center; gap: 2px; }

/* 发布页 */
.publish-imgs { display: flex; flex-wrap: wrap; gap: var(--space-2); }
.publish-imgs .img-box { position: relative; width: 96px; height: 96px; }
.publish-imgs .img-box .del {
  position: absolute; top: -6px; right: -6px;
  width: 22px; height: 22px;
  border-radius: 50%;
  background: rgba(40, 35, 25, 0.75);
  color: #fff; font-size: var(--text-12);
  display: flex; align-items: center; justify-content: center;
}
.add-img {
  width: 96px; height: 96px;
  border: 1.5px dashed var(--line-strong);
  border-radius: var(--radius-sm);
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 2px;
  color: var(--ink-3);
  font-size: var(--text-12);
}
.add-img .plus { font-size: 26px; line-height: 1; }
.add-img:disabled { opacity: 0.5; }

/* 可见性开关 */
.vis-switch { display: flex; background: var(--theme-tint); border-radius: var(--radius-pill); padding: 4px; gap: 4px; }
.vis-switch button {
  flex: 1;
  padding: 8px 0;
  border-radius: var(--radius-pill);
  font-size: var(--text-14);
  color: var(--ink-2);
  transition: all 0.2s var(--ease);
}
.vis-switch button.on { background: var(--card); color: var(--theme-primary-strong); font-weight: 600; box-shadow: var(--shadow-card); }

/* 详情页 */
.xjy-detail-body { padding: var(--space-4) var(--space-4) 0; }
.xjy-author { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-4) 0; border-bottom: 1px solid var(--line); }
.xjy-author .who { flex: 1; }
.xjy-author .who .id-name { font-size: var(--text-16); }
.xjy-author .who .time { font-size: var(--text-12); color: var(--ink-3); }
.xjy-content { padding: var(--space-4) 0; }
.xjy-content .feeling {
  margin-top: var(--space-4);
  padding: var(--space-3);
  background: var(--theme-tint);
  border-left: 3px solid var(--theme-primary);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  font-size: var(--text-14);
  color: var(--theme-primary-strong);
}
.xjy-content .feeling::before { content: "「一句话感悟」"; display: block; font-size: var(--text-12); color: var(--ink-3); margin-bottom: 2px; }

/* 评论区 */
.comment-box { display: flex; gap: var(--space-2); padding: var(--space-3) 0; }
.comment-box .input { flex: 1; padding: 8px 14px; font-size: var(--text-14); border-radius: var(--radius-pill); }
.comment-box .send { color: var(--theme-primary-strong); font-weight: 600; font-size: var(--text-14); padding: 0 6px; }
.comment-item { padding: var(--space-3) 0; border-bottom: 1px solid var(--line); }
.comment-item:last-child { border-bottom: none; }
.comment-item .c-head { display: flex; align-items: center; gap: var(--space-2); }
.comment-item .c-head .id-name { font-size: var(--text-14); }
.comment-item .c-head .time { font-size: var(--text-12); color: var(--ink-3); }
.comment-item .c-text { font-size: var(--text-15, 15px); margin-top: 4px; }
.comment-item .c-act { display: flex; gap: var(--space-4); margin-top: 4px; font-size: var(--text-12); color: var(--ink-3); }
.comment-item .reply-item { margin-top: var(--space-2); padding: var(--space-2) var(--space-3); background: var(--theme-tint); border-radius: var(--radius-sm); font-size: var(--text-14); }

/* 底栏（详情操作） */
.detail-bar {
  position: fixed;
  bottom: 0;
  left: 50%;
  transform: translateX(-50%);
  width: 100%;
  max-width: var(--app-max);
  background: var(--card);
  border-top: 1px solid var(--line);
  display: flex;
  align-items: center;
  padding: 8px var(--space-4) calc(8px + env(safe-area-inset-bottom));
  gap: var(--space-5);
  z-index: 40;
}
.detail-bar .act { display: flex; flex-direction: column; align-items: center; gap: 1px; font-size: var(--text-12); color: var(--ink-2); flex: 1; }
.detail-bar .act .ico { font-size: var(--text-20); line-height: 1.2; }
.detail-bar .act.on { color: var(--theme-primary); }

/* 撤回占位 / 隐藏占位 */
.withdrawn-ph { text-align: center; padding: var(--space-8) var(--space-5); }
.withdrawn-ph .big-emoji { font-size: 44px; margin-bottom: var(--space-3); }
.withdrawn-ph h2 { font-family: var(--font-serif); margin-bottom: var(--space-2); }
.withdrawn-ph p { color: var(--ink-2); font-size: var(--text-14); }

/* ============ 无限夜话 P-06 ============ */
.night-stage { padding: var(--space-6) var(--space-5) 0; text-align: center; position: relative; }
.night-stage .sticker { margin-bottom: var(--space-4); transform: rotate(-6deg); }
.night-quote {
  position: relative;
  padding: var(--space-8) var(--space-5);
  background: var(--card);
  min-height: 220px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  box-shadow: var(--shadow-card);
}
.night-quote .q-text { font-family: var(--font-serif); font-size: var(--text-24); line-height: 1.7; font-weight: 700; }
.night-quote .q-src { margin-top: var(--space-5); font-size: var(--text-14); color: var(--ink-2); }
.night-quote .q-period { margin-top: 2px; font-size: var(--text-14); color: var(--ink-2); }
.night-quote .q-tags { margin-top: var(--space-4); display: flex; justify-content: center; gap: var(--space-2); }
.night-quote .featured-corner {
  position: absolute;
  top: -10px; right: 16px;
  transform: rotate(3deg);
  background: var(--theme-primary);
  color: #fff;
  font-size: var(--text-12);
  font-weight: 700;
  padding: 3px 10px;
  border-radius: var(--radius-pill);
  box-shadow: var(--shadow-card);
}
/* 翻页过渡 */
.night-quote.fade-out { animation: quoteOut 0.22s var(--ease) forwards; }
.night-quote.fade-in { animation: quoteIn 0.3s var(--ease); }
@keyframes quoteOut { to { opacity: 0; transform: translateX(-16px); } }
@keyframes quoteIn { from { opacity: 0; transform: translateX(16px); } to { opacity: 1; transform: none; } }

/* ============ 夸夸温泉 P-07 ============ */
.praise-card { cursor: pointer; }
.praise-card .p-head { display: flex; align-items: center; gap: var(--space-2); margin-bottom: var(--space-3); }
.praise-card .p-head .arrow { color: var(--ink-3); font-size: var(--text-14); }
.praise-card .p-text { font-size: var(--text-16); line-height: 1.6; }
.praise-card .p-rel { margin-top: var(--space-3); font-size: var(--text-13, 13px); color: var(--ink-2); display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.praise-card .p-foot { display: flex; align-items: center; gap: var(--space-4); margin-top: var(--space-4); }
.praise-card .p-foot .like { display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-14); color: var(--ink-2); }
.praise-card .p-foot .like.liked { color: var(--theme-primary); }
.praise-card .p-menu { margin-left: auto; color: var(--ink-3); font-size: var(--text-18); padding: 0 4px; }

/* 等你接住横幅 */
.accept-banner {
  margin-top: var(--space-3);
  background: linear-gradient(135deg, var(--theme-soft), var(--theme-tint));
  border: 1.5px dashed var(--theme-primary);
  border-radius: var(--radius-card);
  padding: var(--space-3);
}
.accept-banner .ab-title { font-size: var(--text-14); font-weight: 700; color: var(--theme-primary-strong); margin-bottom: var(--space-2); display: flex; align-items: center; gap: 6px; }
.accept-banner .btn { width: 100%; }

/* 已接住 */
.accepted-line { display: inline-flex; align-items: center; gap: 4px; color: #3E7A52; font-size: var(--text-13, 13px); font-weight: 600; }

/* 多选对象 chips */
.chips { display: flex; flex-wrap: wrap; gap: var(--space-2); margin-top: var(--space-2); }
.chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  background: var(--theme-soft);
  color: var(--theme-primary-strong);
  border-radius: var(--radius-pill);
  font-size: var(--text-14);
  font-weight: 600;
}
.chip .x { color: var(--theme-primary); font-weight: 700; }

/* ============ 公约纪 P-08 ============ */
/* 内部内容请勿外传 —— 固定横幅 */
.no-export-banner {
  position: sticky;
  top: 52px;
  z-index: 29;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 5px;
  background: #EAD9CE;
  color: #8C3B2D;
  font-size: var(--text-12);
  font-weight: 600;
  border-bottom: 1px solid #DDB9AE;
}

.person-cover {
  background: var(--theme-tint);
  margin: 0 calc(-1 * var(--space-4)) var(--space-4);
  padding: var(--space-6) var(--space-4);
  text-align: center;
  border-bottom: 1px solid var(--line);
}
.person-cover .sticker { margin: 0 auto var(--space-3); }
.person-cover h1 { font-family: var(--font-serif); font-size: var(--text-24); }
.person-cover .who { color: var(--theme-primary-strong); font-size: var(--text-14); margin-top: 2px; }

.section-block { margin-bottom: var(--space-5); }
.section-block h3 {
  font-family: var(--font-serif);
  font-size: var(--text-18);
  margin-bottom: var(--space-3);
  display: flex;
  align-items: center;
  gap: var(--space-2);
}
.section-block h3::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--theme-primary); }
.section-block p { font-size: var(--text-15, 15px); color: var(--ink); }

/* 语录摘录卡 */
.quote-strip {
  background: var(--theme-soft);
  border-left: 3px solid var(--theme-primary);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding: var(--space-3);
  font-family: var(--font-serif);
  font-size: var(--text-16);
  margin-bottom: var(--space-2);
}

/* 对谈对话体 */
.dialog { display: flex; gap: var(--space-3); margin-bottom: var(--space-3); }
.dialog .who { flex-shrink: 0; width: 64px; font-size: var(--text-13, 13px); font-weight: 700; color: var(--theme-primary-strong); padding-top: 4px; }
.dialog .bubble {
  flex: 1;
  background: var(--card);
  border: 1px solid var(--line);
  border-radius: 4px 14px 14px 14px;
  padding: var(--space-3);
  font-size: var(--text-15, 15px);
}
.dialog--me .bubble { background: var(--theme-tint); border-radius: 14px 4px 14px 14px; }
.dialog--me .who { text-align: right; }

/* 追问标签 */
.ask-tag {
  display: inline-block;
  font-size: var(--text-12);
  font-weight: 700;
  color: #8C3B2D;
  background: #F3E2DA;
  padding: 1px 7px;
  border-radius: var(--radius-pill);
  margin-right: 6px;
  vertical-align: 1px;
}

/* 禁止复制（技术尽力而为） */
.no-copy { -webkit-user-select: none; user-select: none; }

/* ============ 每日一签 P-09 / 分享卡 P-10 ============ */
.sign-modal-card {
  text-align: center;
  padding: var(--space-6) var(--space-5);
  background:
    radial-gradient(circle at 50% 0%, var(--theme-soft), transparent 70%),
    var(--card);
  border-radius: var(--radius-card);
  border: 1px solid var(--line);
  position: relative;
}
.sign-modal-card .close-x {
  position: absolute; top: 10px; right: 12px;
  font-size: var(--text-18); color: var(--ink-3);
  width: 32px; height: 32px; border-radius: 50%;
}
.sign-modal-card .sticker { margin: 0 auto var(--space-3); transform: rotate(-4deg); }
.sign-modal-card .s-text { font-family: var(--font-serif); font-size: var(--text-22, 22px); font-weight: 700; line-height: 1.8; margin: var(--space-4) 0 var(--space-2); }
.sign-modal-card .s-meta { font-size: var(--text-13, 13px); color: var(--ink-3); }
.sign-modal-card .s-acts { display: flex; gap: var(--space-3); margin-top: var(--space-5); }
.sign-modal-card .s-acts .btn { flex: 1; padding: 10px 0; }

/* 分享卡预览（3:4 竖版，CSS 渲染 —— 演示服务端脱敏产物） */
.share-card {
  width: 300px;
  aspect-ratio: 3 / 4;
  margin: 0 auto;
  border-radius: 18px;
  background:
    radial-gradient(circle at 85% 12%, var(--theme-soft), transparent 55%),
    radial-gradient(circle at 12% 88%, var(--theme-soft), transparent 55%),
    #FFFDF6;
  border: 2px solid var(--line-strong);
  box-shadow: var(--shadow-float);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: var(--space-6);
  text-align: center;
  position: relative;
  overflow: hidden;
}
.share-card::before, .share-card::after {
  content: "";
  position: absolute;
  width: 90px; height: 90px;
  border: 1.5px dashed var(--theme-primary);
  opacity: 0.35;
  border-radius: 40% 60% 55% 45% / 50% 45% 55% 50%;
}
.share-card::before { top: -30px; left: -30px; }
.share-card::after { bottom: -30px; right: -30px; }
.share-card .sticker { width: 56px; height: 56px; font-size: var(--text-18); margin-bottom: var(--space-4); }
.share-card .sc-text { font-family: var(--font-serif); font-size: var(--text-20); font-weight: 700; line-height: 1.8; }
.share-card .sc-meta { margin-top: var(--space-4); font-size: var(--text-12); color: var(--ink-3); }
.share-card .sc-foot { margin-top: var(--space-6); font-size: var(--text-12); color: var(--ink-3); letter-spacing: 2px; }

/* 脱敏说明折叠区 */
.desensitize-note { font-size: var(--text-12); color: var(--ink-3); background: var(--theme-tint); border-radius: var(--radius-sm); padding: var(--space-3); margin-top: var(--space-3); }

/* ============ 个人中心 P-12 ============ */
.profile-head {
  background: var(--theme-tint);
  border-bottom: 1px solid var(--line);
  padding: var(--space-5) var(--space-4);
  display: flex;
  align-items: center;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}
.profile-head .who h1 { font-family: var(--font-serif); font-size: var(--text-24); }
.profile-head .who .sub { font-size: var(--text-13, 13px); color: var(--ink-2); margin-top: 2px; }

/* 我的内容 tabs */
.my-tabs { display: flex; background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-pill); padding: 4px; margin-bottom: var(--space-4); }
.my-tabs button { flex: 1; padding: 8px 0; font-size: var(--text-14); border-radius: var(--radius-pill); color: var(--ink-2); }
.my-tabs button.on { background: var(--theme-primary); color: #fff; font-weight: 600; }

.my-subtabs { display: flex; gap: var(--space-4); margin-bottom: var(--space-3); font-size: var(--text-14); color: var(--ink-3); }
.my-subtabs button.on { color: var(--theme-primary-strong); font-weight: 700; border-bottom: 2px solid var(--theme-primary); padding-bottom: 4px; }

.setting-group { background: var(--card); border: 1px solid var(--line); border-radius: var(--radius-card); overflow: hidden; margin-bottom: var(--space-4); }
.setting-group .set-row { display: flex; align-items: center; gap: var(--space-3); padding: var(--space-3) var(--space-4); border-bottom: 1px solid var(--line); }
.setting-group .set-row:last-child { border-bottom: none; }
.setting-group .set-row .label { flex: 1; font-size: var(--text-15, 15px); }
.setting-group .set-row .value { color: var(--ink-2); font-size: var(--text-14); }
.setting-group .set-row .arrow { color: var(--ink-3); }

/* 收藏条目 */
.fav-item { display: flex; gap: var(--space-3); padding: var(--space-3) 0; border-bottom: 1px solid var(--line); align-items: flex-start; }
.fav-item:last-child { border-bottom: none; }
.fav-item .fav-ico { width: 40px; height: 40px; flex-shrink: 0; border-radius: var(--radius-sm); display: flex; align-items: center; justify-content: center; font-size: var(--text-18); background: var(--theme-soft); }
.fav-item .fav-body { flex: 1; min-width: 0; }
.fav-item .fav-title { font-size: var(--text-15, 15px); font-weight: 600; }
.fav-item .fav-sub { font-size: var(--text-13, 13px); color: var(--ink-2); margin-top: 2px; }

/* 悬浮发布按钮 */
.fab {
  position: fixed;
  right: calc(50% - var(--app-max) / 2 + 18px);
  bottom: 76px;
  width: 52px; height: 52px;
  border-radius: 50%;
  background: var(--theme-primary);
  color: #fff;
  font-size: 26px;
  box-shadow: var(--shadow-float);
  display: flex; align-items: center; justify-content: center;
  z-index: 45;
}
@media (min-width: 520px) {
  .fab { right: calc(50% - 222px); }
}

/* 存在底部导航时，底栏/FAB 上移让位（App.nav 注入 has-tabbar） */
body.has-tabbar .detail-bar { bottom: 58px; }
body.has-tabbar .fab { bottom: 134px; }
body.has-tabbar .page { padding-bottom: calc(134px + env(safe-area-inset-bottom)); }
